diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
index 38f3a91c8fe..52fe3cd148c 100644
--- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
+++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
@@ -33,6 +33,12 @@ class FiscalYear(Document):
self.validate_dates()
self.validate_overlap()
+ def on_update(self):
+ frappe.cache().delete_key("fiscal_years")
+
+ def on_trash(self):
+ frappe.cache().delete_key("fiscal_years")
+
def validate_dates(self):
self.validate_from_to_dates("year_start_date", "year_end_date")
if self.is_short_year:
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index 640ad3d9ad2..cc3b616d601 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -303,10 +303,6 @@ erpnext.accounts.JournalEntry = class JournalEntry extends frappe.ui.form.Contro
erpnext.accounts.dimensions.setup_dimension_filters(this.frm, this.frm.doctype);
}
- onload_post_render() {
- this.frm.get_field("accounts").grid.set_multiple_add("account");
- }
-
load_defaults() {
//this.frm.show_print_first = true;
if (this.frm.doc.__islocal && this.frm.doc.company) {
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.json b/erpnext/accounts/doctype/journal_entry/journal_entry.json
index 29e6c1fb638..45e9c4eab85 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.json
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.json
@@ -10,18 +10,15 @@
"field_order": [
"entry_type_and_date",
"company",
- "is_system_generated",
- "title",
"voucher_type",
- "naming_series",
- "process_deferred_accounting",
- "reversal_of",
"column_break1",
- "from_template",
+ "naming_series",
"posting_date",
- "finance_book",
+ "multi_currency",
"apply_tds",
"tax_withholding_category",
+ "is_system_generated",
+ "amended_from",
"section_break_tcvw",
"for_all_stock_asset_accounts",
"column_break_wpau",
@@ -30,52 +27,60 @@
"get_balance_for_periodic_accounting",
"2_add_edit_gl_entries",
"accounts",
- "section_break99",
- "cheque_no",
- "cheque_date",
- "user_remark",
- "column_break99",
+ "section_break_ouaq",
"total_debit",
+ "column_break_cixu",
"total_credit",
"difference",
"get_balance",
- "multi_currency",
- "total_amount_currency",
- "total_amount",
- "total_amount_in_words",
+ "section_break99",
+ "cheque_no",
+ "cheque_date",
+ "clearance_date",
+ "column_break_oizh",
+ "user_remark",
+ "subscription_section",
+ "auto_repeat",
+ "tax_withholding_tab",
"section_tax_withholding_entry",
"tax_withholding_group",
"ignore_tax_withholding_threshold",
"override_tax_withholding_entries",
"tax_withholding_entries",
+ "more_info_tab",
"reference",
- "clearance_date",
- "remark",
- "inter_company_journal_entry_reference",
"column_break98",
"bill_no",
"bill_date",
"due_date",
+ "column_break_isfa",
+ "inter_company_journal_entry_reference",
+ "process_deferred_accounting",
+ "reversal_of",
+ "payment_order",
+ "stock_entry",
+ "printing_settings",
+ "pay_to_recd_from",
+ "letter_head",
+ "select_print_heading",
+ "column_break_35",
+ "total_amount_currency",
+ "total_amount",
+ "total_amount_in_words",
"write_off",
"write_off_based_on",
"get_outstanding_invoices",
"column_break_30",
"write_off_amount",
- "printing_settings",
- "pay_to_recd_from",
- "column_break_35",
- "letter_head",
- "select_print_heading",
"addtional_info",
- "mode_of_payment",
- "payment_order",
- "party_not_required",
- "column_break3",
"is_opening",
- "stock_entry",
- "subscription_section",
- "auto_repeat",
- "amended_from"
+ "finance_book",
+ "from_template",
+ "title",
+ "column_break3",
+ "remark",
+ "mode_of_payment",
+ "party_not_required"
],
"fields": [
{
@@ -155,6 +160,7 @@
{
"fieldname": "2_add_edit_gl_entries",
"fieldtype": "Section Break",
+ "hide_border": 1,
"oldfieldtype": "Section Break",
"options": "fa fa-table"
},
@@ -202,10 +208,6 @@
"oldfieldtype": "Small Text",
"print_hide": 1
},
- {
- "fieldname": "column_break99",
- "fieldtype": "Column Break"
- },
{
"fieldname": "total_debit",
"fieldtype": "Currency",
@@ -429,7 +431,7 @@
"collapsible": 1,
"fieldname": "addtional_info",
"fieldtype": "Section Break",
- "label": "More Information",
+ "label": "Additional Info",
"oldfieldtype": "Section Break",
"options": "fa fa-file-text"
},
@@ -476,7 +478,7 @@
{
"fieldname": "subscription_section",
"fieldtype": "Section Break",
- "label": "Subscription Section"
+ "label": "Subscription"
},
{
"allow_on_submit": 1,
@@ -593,12 +595,10 @@
"no_copy": 1
},
{
- "collapsible": 1,
"collapsible_depends_on": "eval: doc.apply_tds && doc.docstatus == 0",
"depends_on": "eval: doc.apply_tds",
"fieldname": "section_tax_withholding_entry",
- "fieldtype": "Section Break",
- "label": "Tax Withholding Entry"
+ "fieldtype": "Section Break"
},
{
"fieldname": "tax_withholding_group",
@@ -624,6 +624,33 @@
"label": "Tax Withholding Entries",
"options": "Tax Withholding Entry",
"read_only_depends_on": "eval: !doc.override_tax_withholding_entries"
+ },
+ {
+ "fieldname": "more_info_tab",
+ "fieldtype": "Tab Break",
+ "label": "More Info"
+ },
+ {
+ "fieldname": "section_break_ouaq",
+ "fieldtype": "Section Break"
+ },
+ {
+ "fieldname": "column_break_cixu",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "column_break_oizh",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "column_break_isfa",
+ "fieldtype": "Column Break"
+ },
+ {
+ "depends_on": "eval: doc.apply_tds",
+ "fieldname": "tax_withholding_tab",
+ "fieldtype": "Tab Break",
+ "label": "Tax Withholding"
}
],
"icon": "fa fa-file-text",
@@ -638,7 +665,7 @@
"table_fieldname": "payment_entries"
}
],
- "modified": "2026-02-03 14:40:39.944524",
+ "modified": "2026-02-16 16:06:10.468482",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Journal Entry",
diff --git a/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json b/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
index d027a38e08d..6eaec414e16 100644
--- a/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
+++ b/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
@@ -43,7 +43,7 @@
"fields": [
{
"bold": 1,
- "columns": 2,
+ "columns": 4,
"fieldname": "account",
"fieldtype": "Link",
"in_global_search": 1,
@@ -191,7 +191,6 @@
{
"fieldname": "reference_name",
"fieldtype": "Dynamic Link",
- "in_list_view": 1,
"label": "Reference Name",
"no_copy": 1,
"options": "reference_type",
@@ -294,7 +293,7 @@
"idx": 1,
"istable": 1,
"links": [],
- "modified": "2026-02-19 17:01:22.642454",
+ "modified": "2026-02-16 16:04:16.022407",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Journal Entry Account",
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index b7cd768a829..c68672466c2 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -1065,8 +1065,12 @@ class PaymentEntry(AccountsController):
total_allocated_amount += flt(d.allocated_amount)
base_total_allocated_amount += self.calculate_base_allocated_amount_for_reference(d)
- self.total_allocated_amount = abs(total_allocated_amount)
- self.base_total_allocated_amount = abs(base_total_allocated_amount)
+ self.total_allocated_amount = flt(
+ abs(total_allocated_amount), self.precision("total_allocated_amount")
+ )
+ self.base_total_allocated_amount = flt(
+ abs(base_total_allocated_amount), self.precision("base_total_allocated_amount")
+ )
def set_unallocated_amount(self):
self.unallocated_amount = 0
diff --git a/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.js b/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.js
index bea821fed40..afb8f179fe3 100644
--- a/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.js
+++ b/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.js
@@ -4,19 +4,6 @@
frappe.ui.form.on("POS Closing Entry", {
onload: async function (frm) {
frm.ignore_doctypes_on_cancel_all = ["POS Invoice Merge Log", "Sales Invoice"];
- frm.set_query("pos_profile", function (doc) {
- return {
- filters: { user: doc.user },
- };
- });
-
- frm.set_query("user", function (doc) {
- return {
- query: "erpnext.accounts.doctype.pos_closing_entry.pos_closing_entry.get_cashiers",
- filters: { parent: doc.pos_profile },
- };
- });
-
frm.set_query("pos_opening_entry", function (doc) {
return { filters: { status: "Open", docstatus: 1 } };
});
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
index 406e3fa7537..ff57c811c58 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
@@ -159,15 +159,16 @@
"language",
"column_break_84",
"select_print_heading",
+ "utm_analytics_section",
+ "utm_source",
+ "utm_medium",
+ "column_break_bhao",
+ "utm_campaign",
"more_information",
"inter_company_invoice_reference",
"customer_group",
"is_discounted",
"col_break23",
- "utm_source",
- "utm_campaign",
- "utm_medium",
- "column_break_gpiw",
"status",
"more_info",
"debit_to",
@@ -1541,10 +1542,6 @@
"fieldtype": "Check",
"label": "Update Billed Amount in Delivery Note"
},
- {
- "fieldname": "column_break_gpiw",
- "fieldtype": "Column Break"
- },
{
"fieldname": "utm_medium",
"fieldtype": "Link",
@@ -1612,12 +1609,22 @@
"no_copy": 1,
"options": "Item Wise Tax Detail",
"print_hide": 1
+ },
+ {
+ "collapsible": 1,
+ "fieldname": "utm_analytics_section",
+ "fieldtype": "Section Break",
+ "label": "UTM Analytics"
+ },
+ {
+ "fieldname": "column_break_bhao",
+ "fieldtype": "Column Break"
}
],
"icon": "fa fa-file-text",
"is_submittable": 1,
"links": [],
- "modified": "2026-01-29 21:20:51.376875",
+ "modified": "2026-02-10 14:23:07.181782",
"modified_by": "Administrator",
"module": "Accounts",
"name": "POS Invoice",
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.json b/erpnext/accounts/doctype/pos_profile/pos_profile.json
index c0e5c895403..78d568b60b1 100644
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.json
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.json
@@ -12,9 +12,6 @@
"disabled",
"column_break_9",
"warehouse",
- "utm_source",
- "utm_campaign",
- "utm_medium",
"company_address",
"section_break_15",
"applicable_for_users",
@@ -61,7 +58,13 @@
"accounting_dimensions_section",
"cost_center",
"dimension_col_break",
- "project"
+ "project",
+ "utm_analytics_section",
+ "utm_source",
+ "column_break_tvls",
+ "utm_campaign",
+ "column_break_xygw",
+ "utm_medium"
],
"fields": [
{
@@ -430,6 +433,20 @@
"fieldname": "allow_partial_payment",
"fieldtype": "Check",
"label": "Allow Partial Payment"
+ },
+ {
+ "fieldname": "column_break_tvls",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "column_break_xygw",
+ "fieldtype": "Column Break"
+ },
+ {
+ "collapsible": 1,
+ "fieldname": "utm_analytics_section",
+ "fieldtype": "Section Break",
+ "label": "Campaign"
}
],
"grid_page_length": 50,
@@ -458,7 +475,7 @@
"link_fieldname": "pos_profile"
}
],
- "modified": "2025-06-24 11:19:19.834905",
+ "modified": "2026-02-10 14:24:48.597412",
"modified_by": "Administrator",
"module": "Accounts",
"name": "POS Profile",
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
index 5a4f3ca3249..810c50852c5 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
@@ -346,8 +346,7 @@ def apply_pricing_rule(args, doc=None):
args = frappe._dict(args)
- if not args.transaction_type:
- set_transaction_type(args)
+ set_transaction_type(args)
# list of dictionaries
out = []
@@ -683,23 +682,23 @@ def remove_pricing_rules(item_list):
return out
-def set_transaction_type(args):
- if args.transaction_type:
+def set_transaction_type(pricing_ctx: frappe._dict) -> None:
+ if pricing_ctx.transaction_type in ["buying", "selling"]:
return
- if args.doctype in ("Opportunity", "Quotation", "Sales Order", "Delivery Note", "Sales Invoice"):
- args.transaction_type = "selling"
- elif args.doctype in (
+ if pricing_ctx.doctype in ("Opportunity", "Quotation", "Sales Order", "Delivery Note", "Sales Invoice"):
+ pricing_ctx.transaction_type = "selling"
+ elif pricing_ctx.doctype in (
"Material Request",
"Supplier Quotation",
"Purchase Order",
"Purchase Receipt",
"Purchase Invoice",
):
- args.transaction_type = "buying"
- elif args.customer:
- args.transaction_type = "selling"
+ pricing_ctx.transaction_type = "buying"
+ elif pricing_ctx.customer:
+ pricing_ctx.transaction_type = "selling"
else:
- args.transaction_type = "buying"
+ pricing_ctx.transaction_type = "buying"
@frappe.whitelist()
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
index bfe52e8c7b1..da4d71ebd87 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
@@ -219,16 +219,17 @@
"column_break_140",
"to_date",
"update_auto_repeat_reference",
+ "utm_analytics_section",
+ "utm_source",
+ "utm_medium",
+ "column_break_ixxw",
+ "utm_campaign",
+ "utm_content",
"more_information",
"status",
"remarks",
"customer_group",
"column_break_imbx",
- "utm_source",
- "utm_campaign",
- "utm_medium",
- "utm_content",
- "col_break23",
"is_internal_customer",
"represents_company",
"inter_company_invoice_reference",
@@ -270,6 +271,7 @@
"oldfieldtype": "Link",
"options": "Customer",
"print_hide": 1,
+ "reqd": 1,
"search_index": 1
},
{
@@ -798,8 +800,7 @@
"hide_seconds": 1,
"label": "Time Sheets",
"options": "Sales Invoice Timesheet",
- "print_hide": 1,
- "read_only": 1
+ "print_hide": 1
},
{
"default": "0",
@@ -1632,13 +1633,6 @@
"no_copy": 1,
"read_only": 1
},
- {
- "fieldname": "col_break23",
- "fieldtype": "Column Break",
- "hide_days": 1,
- "hide_seconds": 1,
- "width": "50%"
- },
{
"default": "Draft",
"fieldname": "status",
@@ -2313,6 +2307,16 @@
{
"fieldname": "column_break_rdks",
"fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "column_break_ixxw",
+ "fieldtype": "Column Break"
+ },
+ {
+ "collapsible": 1,
+ "fieldname": "utm_analytics_section",
+ "fieldtype": "Section Break",
+ "label": "UTM Analytics"
}
],
"grid_page_length": 50,
@@ -2326,7 +2330,7 @@
"link_fieldname": "consolidated_invoice"
}
],
- "modified": "2026-02-23 14:29:00.301842",
+ "modified": "2026-02-28 17:58:56.453076",
"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..d586d091707 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -119,7 +119,7 @@ class SalesInvoice(SellingController):
cost_center: DF.Link | None
coupon_code: DF.Link | None
currency: DF.Link
- customer: DF.Link | None
+ customer: DF.Link
customer_address: DF.Link | None
customer_group: DF.Link | None
customer_name: DF.SmallText | None
diff --git a/erpnext/accounts/report/accounts_payable/test_accounts_payable.py b/erpnext/accounts/report/accounts_payable/test_accounts_payable.py
index d07b0aa43ad..8da40ea3aa4 100644
--- a/erpnext/accounts/report/accounts_payable/test_accounts_payable.py
+++ b/erpnext/accounts/report/accounts_payable/test_accounts_payable.py
@@ -1,6 +1,6 @@
import frappe
from frappe.tests import IntegrationTestCase
-from frappe.utils import today
+from frappe.utils import add_days, today
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
from erpnext.accounts.report.accounts_payable.accounts_payable import execute
@@ -57,3 +57,66 @@ class TestAccountsPayable(AccountsTestMixin, IntegrationTestCase):
if not do_not_submit:
pi = pi.submit()
return pi
+
+ def test_payment_terms_template_filters(self):
+ from erpnext.controllers.accounts_controller import get_payment_terms
+
+ payment_term1 = frappe.get_doc(
+ {"doctype": "Payment Term", "payment_term_name": "_Test 50% on 15 Days"}
+ ).insert()
+ payment_term2 = frappe.get_doc(
+ {"doctype": "Payment Term", "payment_term_name": "_Test 50% on 30 Days"}
+ ).insert()
+
+ template = frappe.get_doc(
+ {
+ "doctype": "Payment Terms Template",
+ "template_name": "_Test 50-50",
+ "terms": [
+ {
+ "doctype": "Payment Terms Template Detail",
+ "due_date_based_on": "Day(s) after invoice date",
+ "payment_term": payment_term1.name,
+ "description": "_Test 50-50",
+ "invoice_portion": 50,
+ "credit_days": 15,
+ },
+ {
+ "doctype": "Payment Terms Template Detail",
+ "due_date_based_on": "Day(s) after invoice date",
+ "payment_term": payment_term2.name,
+ "description": "_Test 50-50",
+ "invoice_portion": 50,
+ "credit_days": 30,
+ },
+ ],
+ }
+ )
+ template.insert()
+
+ filters = {
+ "company": self.company,
+ "report_date": today(),
+ "range": "30, 60, 90, 120",
+ "based_on_payment_terms": 1,
+ "payment_terms_template": template.name,
+ "ageing_based_on": "Posting Date",
+ }
+
+ pi = self.create_purchase_invoice(do_not_submit=True)
+ pi.payment_terms_template = template.name
+ schedule = get_payment_terms(template.name)
+ pi.set("payment_schedule", [])
+
+ for row in schedule:
+ row["due_date"] = add_days(pi.posting_date, row.get("credit_days", 0))
+ pi.append("payment_schedule", row)
+
+ pi.save()
+ pi.submit()
+
+ report = execute(filters)
+ row = report[1][0]
+
+ self.assertEqual(len(report[1]), 2)
+ self.assertEqual([pi.name, payment_term1.payment_term_name], [row.voucher_no, row.payment_term])
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index 0b4f59d6aae..e29ed79cc49 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -1035,9 +1035,8 @@ class ReceivablePayableReport:
self,
):
self.customer = qb.DocType("Customer")
-
if self.filters.get("customer_group"):
- groups = get_customer_group_with_children(self.filters.customer_group)
+ groups = get_party_group_with_children("Customer", self.filters.customer_group)
customers = (
qb.from_(self.customer)
.select(self.customer.name)
@@ -1049,14 +1048,18 @@ class ReceivablePayableReport:
self.get_hierarchical_filters("Territory", "territory")
if self.filters.get("payment_terms_template"):
- self.qb_selection_filter.append(
- self.ple.party.isin(
- qb.from_(self.customer)
- .select(self.customer.name)
- .where(self.customer.payment_terms == self.filters.get("payment_terms_template"))
- )
+ customer_ptt = self.ple.party.isin(
+ qb.from_(self.customer)
+ .select(self.customer.name)
+ .where(self.customer.payment_terms == self.filters.get("payment_terms_template"))
)
+ si_ptt = self.add_payment_term_template_filters("Sales Invoice")
+
+ sales_ptt = self.ple.against_voucher_no.isin(si_ptt)
+
+ self.qb_selection_filter.append(Criterion.any([customer_ptt, sales_ptt]))
+
if self.filters.get("sales_partner"):
self.qb_selection_filter.append(
self.ple.party.isin(
@@ -1081,14 +1084,53 @@ class ReceivablePayableReport:
)
if self.filters.get("payment_terms_template"):
- self.qb_selection_filter.append(
- self.ple.party.isin(
- qb.from_(supplier)
- .select(supplier.name)
- .where(supplier.payment_terms == self.filters.get("supplier_group"))
- )
+ supplier_ptt = self.ple.party.isin(
+ qb.from_(supplier)
+ .select(supplier.name)
+ .where(supplier.payment_terms == self.filters.get("payment_terms_template"))
)
+ pi_ptt = self.add_payment_term_template_filters("Purchase Invoice")
+
+ purchase_ptt = self.ple.against_voucher_no.isin(pi_ptt)
+
+ self.qb_selection_filter.append(Criterion.any([supplier_ptt, purchase_ptt]))
+
+ def add_payment_term_template_filters(self, dtype):
+ voucher_type = qb.DocType(dtype)
+
+ ptt = (
+ qb.from_(voucher_type)
+ .select(voucher_type.name)
+ .where(voucher_type.payment_terms_template == self.filters.get("payment_terms_template"))
+ .where(voucher_type.company == self.filters.company)
+ )
+
+ if dtype == "Purchase Invoice":
+ party = "Supplier"
+ party_group_type = "supplier_group"
+ acc_type = "credit_to"
+ else:
+ party = "Customer"
+ party_group_type = "customer_group"
+ acc_type = "debit_to"
+
+ if self.filters.get(party_group_type):
+ party_groups = get_party_group_with_children(party, self.filters.get(party_group_type))
+ ptt = ptt.where((voucher_type[party_group_type]).isin(party_groups))
+
+ if self.filters.party:
+ ptt = ptt.where((voucher_type[party.lower()]).isin(self.filters.party))
+
+ if self.filters.cost_center:
+ cost_centers = get_cost_centers_with_children(self.filters.cost_center)
+ ptt = ptt.where(voucher_type.cost_center.isin(cost_centers))
+
+ if self.filters.party_account:
+ ptt = ptt.where(voucher_type[acc_type] == self.filters.party_account)
+
+ return ptt
+
def get_hierarchical_filters(self, doctype, key):
lft, rgt = frappe.db.get_value(doctype, self.filters.get(key), ["lft", "rgt"])
@@ -1330,20 +1372,26 @@ class ReceivablePayableReport:
self.err_journals = [x[0] for x in results] if results else []
-def get_customer_group_with_children(customer_groups):
- if not isinstance(customer_groups, list):
- customer_groups = [d.strip() for d in customer_groups.strip().split(",") if d]
+def get_party_group_with_children(party, party_groups):
+ if party not in ("Customer", "Supplier"):
+ return []
- all_customer_groups = []
- for d in customer_groups:
- if frappe.db.exists("Customer Group", d):
- lft, rgt = frappe.db.get_value("Customer Group", d, ["lft", "rgt"])
- children = frappe.get_all("Customer Group", filters={"lft": [">=", lft], "rgt": ["<=", rgt]})
- all_customer_groups += [c.name for c in children]
+ group_dtype = f"{party} Group"
+ if not isinstance(party_groups, list):
+ party_groups = [d.strip() for d in party_groups.strip().split(",") if d]
+
+ all_party_groups = []
+ for d in party_groups:
+ if frappe.db.exists(group_dtype, d):
+ lft, rgt = frappe.db.get_value(group_dtype, d, ["lft", "rgt"])
+ children = frappe.get_all(
+ group_dtype, filters={"lft": [">=", lft], "rgt": ["<=", rgt]}, pluck="name"
+ )
+ all_party_groups += children
else:
- frappe.throw(_("Customer Group: {0} does not exist").format(d))
+ frappe.throw(_("{0}: {1} does not exist").format(group_dtype, d))
- return list(set(all_customer_groups))
+ return list(set(all_party_groups))
class InitSQLProceduresForAR:
diff --git a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
index afaba697fb1..907840e8ff4 100644
--- a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
@@ -1139,3 +1139,66 @@ class TestAccountsReceivable(AccountsTestMixin, IntegrationTestCase):
self.assertEqual(len(report[1]), 1)
row = report[1][0]
self.assertEqual(expected_data_after_payment, [row.voucher_no, row.cost_center, row.outstanding])
+
+ def test_payment_terms_template_filters(self):
+ from erpnext.controllers.accounts_controller import get_payment_terms
+
+ payment_term1 = frappe.get_doc(
+ {"doctype": "Payment Term", "payment_term_name": "_Test 50% on 15 Days"}
+ ).insert()
+ payment_term2 = frappe.get_doc(
+ {"doctype": "Payment Term", "payment_term_name": "_Test 50% on 30 Days"}
+ ).insert()
+
+ template = frappe.get_doc(
+ {
+ "doctype": "Payment Terms Template",
+ "template_name": "_Test 50-50",
+ "terms": [
+ {
+ "doctype": "Payment Terms Template Detail",
+ "due_date_based_on": "Day(s) after invoice date",
+ "payment_term": payment_term1.name,
+ "description": "_Test 50-50",
+ "invoice_portion": 50,
+ "credit_days": 15,
+ },
+ {
+ "doctype": "Payment Terms Template Detail",
+ "due_date_based_on": "Day(s) after invoice date",
+ "payment_term": payment_term2.name,
+ "description": "_Test 50-50",
+ "invoice_portion": 50,
+ "credit_days": 30,
+ },
+ ],
+ }
+ )
+ template.insert()
+
+ filters = {
+ "company": self.company,
+ "report_date": today(),
+ "range": "30, 60, 90, 120",
+ "based_on_payment_terms": 1,
+ "payment_terms_template": template.name,
+ "ageing_based_on": "Posting Date",
+ }
+
+ si = self.create_sales_invoice(no_payment_schedule=True, do_not_submit=True)
+ si.payment_terms_template = template.name
+ schedule = get_payment_terms(template.name)
+ si.set("payment_schedule", [])
+
+ for row in schedule:
+ row["due_date"] = add_days(si.posting_date, row.get("credit_days", 0))
+ si.append("payment_schedule", row)
+
+ si.save()
+ si.submit()
+
+ report = execute(filters)
+ row = report[1][0]
+
+ self.assertEqual(len(report[1]), 2)
+ self.assertEqual([si.name, payment_term1.payment_term_name], [row.voucher_no, row.payment_term])
diff --git a/erpnext/accounts/report/budget_variance_report/budget_variance_report.py b/erpnext/accounts/report/budget_variance_report/budget_variance_report.py
index 6c245acf8d8..f41ba74388b 100644
--- a/erpnext/accounts/report/budget_variance_report/budget_variance_report.py
+++ b/erpnext/accounts/report/budget_variance_report/budget_variance_report.py
@@ -5,6 +5,7 @@ import frappe
from frappe import _
from frappe.utils import add_months, flt, formatdate
+from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_dimensions
from erpnext.accounts.utils import get_fiscal_year
from erpnext.controllers.trends import get_period_date_ranges
@@ -13,6 +14,8 @@ def execute(filters=None):
if not filters:
filters = {}
+ validate_filters(filters)
+
columns = get_columns(filters)
if filters.get("budget_against_filter"):
dimensions = filters.get("budget_against_filter")
@@ -31,6 +34,10 @@ def execute(filters=None):
return columns, data, None, chart_data
+def validate_filters(filters):
+ validate_budget_dimensions(filters)
+
+
def get_budget_records(filters, dimensions):
budget_against_field = frappe.scrub(filters["budget_against"])
@@ -51,7 +58,7 @@ def get_budget_records(filters, dimensions):
b.company = %s
AND b.docstatus = 1
AND b.budget_against = %s
- AND b.{budget_against_field} IN ({', '.join(['%s'] * len(dimensions))})
+ AND b.{budget_against_field} IN ({", ".join(["%s"] * len(dimensions))})
AND (
b.from_fiscal_year <= %s
AND b.to_fiscal_year >= %s
@@ -404,6 +411,17 @@ def get_budget_dimensions(filters):
) # nosec
+def validate_budget_dimensions(filters):
+ dimensions = [d.get("document_type") for d in get_dimensions(with_cost_center_and_project=True)[0]]
+ if filters.get("budget_against") and filters.get("budget_against") not in dimensions:
+ frappe.throw(
+ title=_("Invalid Accounting Dimension"),
+ msg=_("{0} is not a valid Accounting Dimension.").format(
+ frappe.bold(filters.get("budget_against"))
+ ),
+ )
+
+
def build_comparison_chart_data(filters, columns, data):
if not data:
return None
diff --git a/erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.js b/erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.js
index 65f2e3b905a..df023f91c02 100644
--- a/erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.js
+++ b/erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.js
@@ -86,6 +86,12 @@ frappe.query_reports["Consolidated Trial Balance"] = {
fieldtype: "Check",
default: 1,
},
+ {
+ fieldname: "show_net_values",
+ label: __("Show net values in opening and closing columns"),
+ fieldtype: "Check",
+ default: 1,
+ },
{
fieldname: "show_group_accounts",
label: __("Show Group Accounts"),
diff --git a/erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py b/erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py
index 78201ca63c6..fc4affad3a7 100644
--- a/erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py
+++ b/erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py
@@ -14,6 +14,7 @@ from erpnext.accounts.report.financial_statements import (
)
from erpnext.accounts.report.trial_balance.trial_balance import (
accumulate_values_into_parents,
+ calculate_total_row,
calculate_values,
get_opening_balances,
hide_group_accounts,
@@ -44,7 +45,6 @@ def execute(filters: dict | None = None):
def validate_filters(filters):
validate_companies(filters)
- filters.show_net_values = True
tb_validate_filters(filters)
@@ -99,16 +99,20 @@ def get_data(filters) -> list[list]:
tb_data = get_company_wise_tb_data(company_filter, reporting_currency, ignore_reporting_currency)
consolidate_trial_balance_data(data, tb_data)
- for d in data:
- prepare_opening_closing(d)
-
- total_row = calculate_total_row(data, reporting_currency)
-
- data.extend([{}, total_row])
+ if filters.get("show_net_values"):
+ prepare_opening_closing_for_ctb(data)
if not filters.get("show_group_accounts"):
data = hide_group_accounts(data)
+ total_row = calculate_total_row(
+ data, reporting_currency, show_group_accounts=filters.get("show_group_accounts")
+ )
+
+ calculate_foreign_currency_translation_reserve(total_row, data, filters=filters)
+
+ data.extend([total_row])
+
if filters.get("presentation_currency"):
update_to_presentation_currency(
data,
@@ -207,10 +211,6 @@ def prepare_companywise_tb_data(accounts, filters, parent_children_map, reportin
data = []
for d in accounts:
- # Prepare opening closing for group account
- if parent_children_map.get(d.account) and filters.get("show_net_values"):
- prepare_opening_closing(d)
-
has_value = False
row = {
"account": d.name,
@@ -242,35 +242,9 @@ def prepare_companywise_tb_data(accounts, filters, parent_children_map, reportin
return data
-def calculate_total_row(data, reporting_currency):
- total_row = {
- "account": "'" + _("Total") + "'",
- "account_name": "'" + _("Total") + "'",
- "warn_if_negative": True,
- "opening_debit": 0.0,
- "opening_credit": 0.0,
- "debit": 0.0,
- "credit": 0.0,
- "closing_debit": 0.0,
- "closing_credit": 0.0,
- "parent_account": None,
- "indent": 0,
- "has_value": True,
- "currency": reporting_currency,
- }
-
- for d in data:
- if not d.get("parent_account"):
- for field in value_fields:
- total_row[field] += d[field]
-
- if data:
- calculate_foreign_currency_translation_reserve(total_row, data)
-
- return total_row
-
-
-def calculate_foreign_currency_translation_reserve(total_row, data):
+def calculate_foreign_currency_translation_reserve(total_row, data, filters):
+ if not data or not total_row:
+ return
opening_dr_cr_diff = total_row["opening_debit"] - total_row["opening_credit"]
dr_cr_diff = total_row["debit"] - total_row["credit"]
@@ -289,7 +263,7 @@ def calculate_foreign_currency_translation_reserve(total_row, data):
"root_type": data[idx].get("root_type"),
"account_type": "Equity",
"parent_account": data[idx].get("account"),
- "indent": data[idx].get("indent") + 1,
+ "indent": data[idx].get("indent") + 1 if filters.get("show_group_accounts") else 0,
"has_value": True,
"currency": total_row.get("currency"),
}
@@ -297,7 +271,8 @@ def calculate_foreign_currency_translation_reserve(total_row, data):
fctr_row["closing_debit"] = fctr_row["opening_debit"] + fctr_row["debit"]
fctr_row["closing_credit"] = fctr_row["opening_credit"] + fctr_row["credit"]
- prepare_opening_closing(fctr_row)
+ if filters.get("show_net_values"):
+ prepare_opening_closing(fctr_row)
data.insert(idx + 1, fctr_row)
@@ -396,6 +371,11 @@ def update_to_presentation_currency(data, from_currency, to_currency, date, igno
d.update(currency=to_currency)
+def prepare_opening_closing_for_ctb(data):
+ for d in data:
+ prepare_opening_closing(d)
+
+
def get_columns():
return [
{
diff --git a/erpnext/accounts/report/trial_balance/trial_balance.py b/erpnext/accounts/report/trial_balance/trial_balance.py
index 66185c94297..186a9eb71f0 100644
--- a/erpnext/accounts/report/trial_balance/trial_balance.py
+++ b/erpnext/accounts/report/trial_balance/trial_balance.py
@@ -390,7 +390,7 @@ def calculate_values(
prepare_opening_closing(d)
-def calculate_total_row(accounts, company_currency):
+def calculate_total_row(data, company_currency, show_group_accounts=True):
total_row = {
"account": "'" + _("Total") + "'",
"account_name": "'" + _("Total") + "'",
@@ -407,10 +407,16 @@ def calculate_total_row(accounts, company_currency):
"currency": company_currency,
}
- for d in accounts:
- if not d.parent_account:
- for field in value_fields:
- total_row[field] += d[field]
+ def sum_value_fields(row):
+ for field in value_fields:
+ total_row[field] += row[field]
+
+ for d in data:
+ if not show_group_accounts:
+ sum_value_fields(d)
+
+ elif show_group_accounts and not d.get("parent_account"):
+ sum_value_fields(d)
return total_row
@@ -456,11 +462,13 @@ def prepare_data(accounts, filters, parent_children_map, company_currency):
row["has_value"] = has_value
data.append(row)
- total_row = calculate_total_row(accounts, company_currency)
-
if not filters.get("show_group_accounts"):
data = hide_group_accounts(data)
+ total_row = calculate_total_row(
+ data, company_currency, show_group_accounts=filters.get("show_group_accounts")
+ )
+
data.extend([{}, total_row])
return data
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json
index 3dd4d927255..212a034763a 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.json
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.json
@@ -17,6 +17,7 @@
"order_confirmation_date",
"column_break_7",
"transaction_date",
+ "transaction_time",
"schedule_date",
"column_break1",
"company",
@@ -1311,6 +1312,14 @@
{
"fieldname": "section_break_tnkm",
"fieldtype": "Section Break"
+ },
+ {
+ "default": "Now",
+ "depends_on": "is_internal_supplier",
+ "fieldname": "transaction_time",
+ "fieldtype": "Time",
+ "label": "Time",
+ "mandatory_depends_on": "is_internal_supplier"
}
],
"grid_page_length": 50,
@@ -1318,7 +1327,7 @@
"idx": 105,
"is_submittable": 1,
"links": [],
- "modified": "2026-02-23 14:22:33.323946",
+ "modified": "2026-03-02 00:40:47.119584",
"modified_by": "Administrator",
"module": "Buying",
"name": "Purchase Order",
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 1f945da1682..aaace54db63 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -166,6 +166,7 @@ class PurchaseOrder(BuyingController):
total_qty: DF.Float
total_taxes_and_charges: DF.Currency
transaction_date: DF.Date
+ transaction_time: DF.Time | None
# end: auto-generated types
def __init__(self, *args, **kwargs):
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
index 335bb28b0fb..3171ad595b1 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -250,10 +250,17 @@ frappe.ui.form.on("Request for Quotation", {
"subject",
])
.then((r) => {
- frm.set_value(
- "message_for_supplier",
- r.message.use_html ? r.message.response_html : r.message.response
- );
+ if (r.message.use_html) {
+ frm.set_value({
+ mfs_html: r.message.response_html,
+ use_html: 1,
+ });
+ } else {
+ frm.set_value({
+ message_for_supplier: r.message.response,
+ use_html: 0,
+ });
+ }
frm.set_value("subject", r.message.subject);
});
}
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
index 005078584bb..a10497702ce 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
@@ -31,7 +31,9 @@
"send_document_print",
"sec_break_email_2",
"subject",
+ "use_html",
"message_for_supplier",
+ "mfs_html",
"terms_section_break",
"incoterm",
"named_place",
@@ -142,12 +144,13 @@
{
"allow_on_submit": 1,
"default": "Please supply the specified items at the best possible rates",
+ "depends_on": "eval:doc.use_html == 0",
"fieldname": "message_for_supplier",
"fieldtype": "Text Editor",
"in_list_view": 1,
"label": "Message for Supplier",
- "print_hide": 1,
- "reqd": 1
+ "mandatory_depends_on": "eval:doc.use_html == 0",
+ "print_hide": 1
},
{
"collapsible": 1,
@@ -324,6 +327,22 @@
"label": "Subject",
"not_nullable": 1,
"reqd": 1
+ },
+ {
+ "allow_on_submit": 1,
+ "depends_on": "eval:doc.use_html == 1",
+ "fieldname": "mfs_html",
+ "fieldtype": "Code",
+ "label": "Message for Supplier",
+ "mandatory_depends_on": "eval:doc.use_html == 1",
+ "print_hide": 1
+ },
+ {
+ "default": "0",
+ "fieldname": "use_html",
+ "fieldtype": "Check",
+ "hidden": 1,
+ "label": "Use HTML"
}
],
"grid_page_length": 50,
@@ -331,7 +350,7 @@
"index_web_pages_for_search": 1,
"is_submittable": 1,
"links": [],
- "modified": "2026-01-06 10:31:08.747043",
+ "modified": "2026-03-01 23:38:48.079274",
"modified_by": "Administrator",
"module": "Buying",
"name": "Request for Quotation",
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
index 95727472112..38ab9af4eab 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -47,7 +47,8 @@ class RequestforQuotation(BuyingController):
incoterm: DF.Link | None
items: DF.Table[RequestforQuotationItem]
letter_head: DF.Link | None
- message_for_supplier: DF.TextEditor
+ message_for_supplier: DF.TextEditor | None
+ mfs_html: DF.Code | None
named_place: DF.Data | None
naming_series: DF.Literal["PUR-RFQ-.YYYY.-"]
opportunity: DF.Link | None
@@ -61,6 +62,7 @@ class RequestforQuotation(BuyingController):
tc_name: DF.Link | None
terms: DF.TextEditor | None
transaction_date: DF.Date
+ use_html: DF.Check
vendor: DF.Link | None
# end: auto-generated types
@@ -100,8 +102,16 @@ class RequestforQuotation(BuyingController):
["use_html", "response", "response_html", "subject"],
as_dict=True,
)
- if not self.message_for_supplier:
- self.message_for_supplier = data.response_html if data.use_html else data.response
+
+ self.use_html = data.use_html
+
+ if data.use_html:
+ if not self.mfs_html:
+ self.mfs_html = data.response_html
+ else:
+ if not self.message_for_supplier:
+ self.message_for_supplier = data.response
+
if not self.subject:
self.subject = data.subject
@@ -304,7 +314,10 @@ class RequestforQuotation(BuyingController):
else:
sender = frappe.session.user not in STANDARD_USERS and frappe.session.user or None
- rendered_message = frappe.render_template(self.message_for_supplier, doc_args)
+ message_template = self.mfs_html if self.use_html else self.message_for_supplier
+ # nosemgrep: frappe-semgrep-rules.rules.security.frappe-ssti
+ rendered_message = frappe.render_template(message_template, doc_args)
+
subject_source = (
self.subject
or frappe.get_value("Email Template", self.email_template, "subject")
diff --git a/erpnext/buying/report/procurement_tracker/procurement_tracker.py b/erpnext/buying/report/procurement_tracker/procurement_tracker.py
index 6f610d2dc20..10169c554fb 100644
--- a/erpnext/buying/report/procurement_tracker/procurement_tracker.py
+++ b/erpnext/buying/report/procurement_tracker/procurement_tracker.py
@@ -165,7 +165,7 @@ def get_data(filters):
"cost_center": po.cost_center,
"project": po.project,
"requesting_site": po.warehouse,
- "requestor": po.owner,
+ "requestor": mr_record.get("owner", po.owner),
"material_request_no": po.material_request,
"item_code": po.item_code,
"quantity": flt(po.qty),
diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py
index 5deaeca975c..e3c571e71d8 100644
--- a/erpnext/controllers/sales_and_purchase_return.py
+++ b/erpnext/controllers/sales_and_purchase_return.py
@@ -1012,7 +1012,14 @@ def get_serial_batches_based_on_bundle(doctype, field, _bundle_ids):
if doctype == "Packed Item":
if key is None:
- key = frappe.get_cached_value("Packed Item", row.voucher_detail_no, field)
+ key = frappe.get_cached_value(
+ "Packed Item",
+ {"parent_detail_docname": row.voucher_detail_no, "item_code": row.item_code},
+ field,
+ )
+ if key is None:
+ key = frappe.get_cached_value("Packed Item", row.voucher_detail_no, field)
+
if row.voucher_type == "Delivery Note":
key = frappe.get_cached_value("Delivery Note Item", key, "dn_detail")
elif row.voucher_type == "Sales Invoice":
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 6db30b41a8a..742d8627fdf 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -333,9 +333,10 @@ class SellingController(StockController):
if is_internal_customer or not is_stock_item:
continue
- if item.get("incoming_rate") and item.base_net_rate < (
+ rate_field = "valuation_rate" if self.doctype in ["Sales Order", "Quotation"] else "incoming_rate"
+ if item.get(rate_field) and item.base_net_rate < (
valuation_rate := flt(
- item.incoming_rate * (item.conversion_factor or 1), item.precision("base_net_rate")
+ item.get(rate_field) * (item.conversion_factor or 1), item.precision("base_net_rate")
)
):
throw_message(
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index 7ff2c4061f2..5436cd3e54f 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -63,6 +63,8 @@ class StockController(AccountsController):
if not self.get("is_return"):
self.validate_inspection()
+
+ self.validate_warehouse_of_sabb()
self.validate_serialized_batch()
self.clean_serial_nos()
self.validate_customer_provided_item()
@@ -75,6 +77,45 @@ class StockController(AccountsController):
super().on_update()
self.check_zero_rate()
+ def validate_warehouse_of_sabb(self):
+ if self.is_internal_transfer():
+ return
+
+ doc_before_save = self.get_doc_before_save()
+
+ for row in self.items:
+ if not row.get("serial_and_batch_bundle"):
+ continue
+
+ sabb_details = frappe.db.get_value(
+ "Serial and Batch Bundle",
+ row.serial_and_batch_bundle,
+ ["type_of_transaction", "warehouse", "has_serial_no"],
+ as_dict=True,
+ )
+ if not sabb_details:
+ continue
+
+ if sabb_details.type_of_transaction != "Outward":
+ continue
+
+ warehouse = row.get("warehouse") or row.get("s_warehouse")
+ if sabb_details.warehouse != warehouse:
+ frappe.throw(
+ _(
+ "Row #{0}: Warehouse {1} does not match with the warehouse {2} in Serial and Batch Bundle {3}."
+ ).format(row.idx, warehouse, sabb_details.warehouse, row.serial_and_batch_bundle)
+ )
+
+ if self.doctype == "Stock Reconciliation":
+ continue
+
+ if sabb_details.has_serial_no and doc_before_save and doc_before_save.get("items"):
+ prev_row = doc_before_save.get("items", {"idx": row.idx})
+ if prev_row and prev_row[0].serial_and_batch_bundle != row.serial_and_batch_bundle:
+ sabb_doc = frappe.get_doc("Serial and Batch Bundle", row.serial_and_batch_bundle)
+ sabb_doc.validate_serial_no_status()
+
def reset_conversion_factor(self):
for row in self.get("items"):
if row.uom != row.stock_uom:
@@ -2087,7 +2128,9 @@ def check_item_quality_inspection(doctype, items):
@frappe.whitelist()
-def make_quality_inspections(doctype, docname, items, inspection_type):
+def make_quality_inspections(
+ company: str, doctype: str, docname: str, items: str | list, inspection_type: str
+):
if isinstance(items, str):
items = json.loads(items)
@@ -2106,6 +2149,7 @@ def make_quality_inspections(doctype, docname, items, inspection_type):
quality_inspection = frappe.get_doc(
{
+ "company": company,
"doctype": "Quality Inspection",
"inspection_type": inspection_type,
"inspected_by": frappe.session.user,
diff --git a/erpnext/crm/doctype/lead/lead.json b/erpnext/crm/doctype/lead/lead.json
index c4b0133e96e..925a60913f6 100644
--- a/erpnext/crm/doctype/lead/lead.json
+++ b/erpnext/crm/doctype/lead/lead.json
@@ -52,13 +52,12 @@
"country",
"column_break2",
"contact_html",
- "section_break_analytics",
+ "utm_analytics_section",
"utm_source",
- "utm_content",
+ "utm_medium",
"column_break_gkxo",
"utm_campaign",
- "column_break_gqka",
- "utm_medium",
+ "utm_content",
"qualification_tab",
"qualification_status",
"column_break_64",
@@ -504,10 +503,6 @@
"fieldname": "column_break_gkxo",
"fieldtype": "Column Break"
},
- {
- "fieldname": "column_break_gqka",
- "fieldtype": "Column Break"
- },
{
"fieldname": "utm_content",
"fieldtype": "Data",
@@ -537,7 +532,8 @@
"options": "UTM Campaign"
},
{
- "fieldname": "section_break_analytics",
+ "collapsible": 1,
+ "fieldname": "utm_analytics_section",
"fieldtype": "Section Break",
"label": "Analytics"
}
@@ -547,7 +543,7 @@
"idx": 5,
"image_field": "image",
"links": [],
- "modified": "2025-06-26 11:02:01.158901",
+ "modified": "2026-02-10 14:36:37.157961",
"modified_by": "Administrator",
"module": "CRM",
"name": "Lead",
diff --git a/erpnext/crm/doctype/opportunity/opportunity.js b/erpnext/crm/doctype/opportunity/opportunity.js
index 74251e21b3c..1bda0e5568f 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.js
+++ b/erpnext/crm/doctype/opportunity/opportunity.js
@@ -307,6 +307,21 @@ erpnext.crm.Opportunity = class Opportunity extends frappe.ui.form.Controller {
};
});
+ this.frm.set_query("uom", "items", function (doc, cdt, cdn) {
+ let row = locals[cdt][cdn];
+
+ if (!row.item_code) {
+ return;
+ }
+
+ return {
+ query: "erpnext.controllers.queries.get_item_uom_query",
+ filters: {
+ item_code: row.item_code,
+ },
+ };
+ });
+
me.frm.set_query("contact_person", erpnext.queries["contact_query"]);
if (me.frm.doc.opportunity_from == "Lead") {
diff --git a/erpnext/crm/doctype/opportunity/opportunity.json b/erpnext/crm/doctype/opportunity/opportunity.json
index cf8f36e04c7..50f8eb9aabf 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.json
+++ b/erpnext/crm/doctype/opportunity/opportunity.json
@@ -44,13 +44,12 @@
"column_break_17",
"opportunity_amount",
"base_opportunity_amount",
- "section_break_analytics",
+ "utm_analytics_section",
"utm_source",
- "utm_content",
+ "utm_medium",
"column_break_emai",
"utm_campaign",
- "column_break_whcu",
- "utm_medium",
+ "utm_content",
"more_info",
"company",
"transaction_date",
@@ -629,15 +628,6 @@
"options": "UTM Campaign",
"print_hide": 1
},
- {
- "fieldname": "section_break_analytics",
- "fieldtype": "Section Break",
- "label": "Analytics"
- },
- {
- "fieldname": "column_break_whcu",
- "fieldtype": "Column Break"
- },
{
"fieldname": "utm_medium",
"fieldtype": "Link",
@@ -650,13 +640,19 @@
"fieldtype": "Data",
"label": "Content",
"print_hide": 1
+ },
+ {
+ "collapsible": 1,
+ "fieldname": "utm_analytics_section",
+ "fieldtype": "Section Break",
+ "label": "Analytics"
}
],
"grid_page_length": 50,
"icon": "fa fa-info-sign",
"idx": 195,
"links": [],
- "modified": "2025-08-11 13:35:39.476016",
+ "modified": "2026-02-10 14:36:01.387984",
"modified_by": "Administrator",
"module": "CRM",
"name": "Opportunity",
diff --git a/erpnext/crm/frappe_crm_api.py b/erpnext/crm/frappe_crm_api.py
index 0bf78429b36..86521586b28 100644
--- a/erpnext/crm/frappe_crm_api.py
+++ b/erpnext/crm/frappe_crm_api.py
@@ -59,7 +59,9 @@ def create_prospect_against_crm_deal():
)
pass
- create_contacts(json.loads(doc.contacts), prospect.company_name, "Prospect", prospect_name)
+ if doc.contacts and len(doc.contacts):
+ create_contacts(json.loads(doc.contacts), prospect.company_name, "Prospect", prospect_name)
+
create_address("Prospect", prospect_name, doc.address)
frappe.response["message"] = prospect_name
diff --git a/erpnext/locale/main.pot b/erpnext/locale/main.pot
index af2482560fe..7d4ba39e4a8 100644
--- a/erpnext/locale/main.pot
+++ b/erpnext/locale/main.pot
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ERPNext VERSION\n"
"Report-Msgid-Bugs-To: hello@frappe.io\n"
-"POT-Creation-Date: 2026-02-22 09:43+0000\n"
-"PO-Revision-Date: 2026-02-22 09:43+0000\n"
+"POT-Creation-Date: 2026-03-01 09:43+0000\n"
+"PO-Revision-Date: 2026-03-01 09:43+0000\n"
"Last-Translator: hello@frappe.io\n"
"Language-Team: hello@frappe.io\n"
"MIME-Version: 1.0\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n"
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1475
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1485
msgid ""
"\n"
"\t\t\tThe Batch {0} of an item {1} has negative stock in the warehouse {2}{3}.\n"
@@ -288,7 +288,7 @@ msgstr ""
#: erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py:24
#: erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py:127
-#: erpnext/stock/report/stock_analytics/stock_analytics.py:312
+#: erpnext/stock/report/stock_analytics/stock_analytics.py:322
msgid "'From Date' is required"
msgstr ""
@@ -315,7 +315,7 @@ msgstr ""
#: erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py:27
#: erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py:129
-#: erpnext/stock/report/stock_analytics/stock_analytics.py:318
+#: erpnext/stock/report/stock_analytics/stock_analytics.py:328
msgid "'To Date' is required"
msgstr ""
@@ -914,11 +914,11 @@ msgstr ""
msgid "Your Shortcuts"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:1008
+#: erpnext/accounts/doctype/payment_request/payment_request.py:1133
msgid "Grand Total: {0}"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:1009
+#: erpnext/accounts/doctype/payment_request/payment_request.py:1134
msgid "Outstanding Amount: {0}"
msgstr ""
@@ -973,7 +973,7 @@ msgstr ""
msgid "A - C"
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:329
+#: erpnext/selling/doctype/customer/customer.py:353
msgid "A Customer Group exists with same name please change the Customer name or rename the Customer Group"
msgstr ""
@@ -1182,7 +1182,7 @@ msgstr ""
#. Label of the qty (Float) field in DocType 'Purchase Receipt Item'
#. Label of the qty (Float) field in DocType 'Subcontracting Receipt Item'
-#: erpnext/public/js/controllers/transaction.js:2807
+#: erpnext/public/js/controllers/transaction.js:2914
#: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json
#: erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json
msgid "Accepted Quantity"
@@ -1346,9 +1346,9 @@ msgstr ""
#: erpnext/accounts/doctype/bank_account/bank_account.json
#: erpnext/accounts/doctype/ledger_merge/ledger_merge.json
#: erpnext/accounts/doctype/ledger_merge_accounts/ledger_merge_accounts.json
-#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:409
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:389
#: erpnext/accounts/report/financial_statements.py:678
-#: erpnext/accounts/report/trial_balance/trial_balance.py:480
+#: erpnext/accounts/report/trial_balance/trial_balance.py:488
msgid "Account Name"
msgstr ""
@@ -1359,9 +1359,9 @@ msgstr ""
#. Label of the account_number (Data) field in DocType 'Account'
#: erpnext/accounts/doctype/account/account.json
#: erpnext/accounts/doctype/account/account_tree.js:133
-#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:416
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:396
#: erpnext/accounts/report/financial_statements.py:685
-#: erpnext/accounts/report/trial_balance/trial_balance.py:487
+#: erpnext/accounts/report/trial_balance/trial_balance.py:495
msgid "Account Number"
msgstr ""
@@ -1563,7 +1563,7 @@ msgstr ""
msgid "Account: {0} can only be updated via Stock Transactions"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2709
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2721
msgid "Account: {0} is not permitted under Payment Entry"
msgstr ""
@@ -1893,7 +1893,7 @@ msgstr ""
#: erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js:193
#: erpnext/assets/doctype/asset_repair/asset_repair.js:171
-#: erpnext/buying/doctype/supplier/supplier.js:92
+#: erpnext/buying/doctype/supplier/supplier.js:98
#: erpnext/public/js/controllers/stock_controller.js:88
#: erpnext/public/js/utils/ledger_preview.js:8
#: erpnext/selling/doctype/customer/customer.js:173
@@ -1906,6 +1906,11 @@ msgstr ""
msgid "Accounting Masters"
msgstr ""
+#. Title of the Module Onboarding 'Accounting Onboarding'
+#: erpnext/accounts/module_onboarding/accounting_onboarding/accounting_onboarding.json
+msgid "Accounting Onboarding"
+msgstr ""
+
#. Name of a DocType
#. Label of a Link in the Invoicing Workspace
#. Label of a Workspace Sidebar Item
@@ -1954,7 +1959,7 @@ msgstr ""
#: erpnext/setup/doctype/email_digest/email_digest.json
#: erpnext/setup/doctype/incoterm/incoterm.json
#: erpnext/setup/doctype/supplier_group/supplier_group.json
-#: erpnext/setup/install.py:337
+#: erpnext/setup/install.py:368
msgid "Accounts"
msgstr ""
@@ -1989,7 +1994,7 @@ msgstr ""
#: erpnext/accounts/doctype/journal_entry/journal_entry.json
#: erpnext/accounts/report/accounts_payable/accounts_payable.json
#: erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js:113
-#: erpnext/buying/doctype/supplier/supplier.js:104
+#: erpnext/buying/doctype/supplier/supplier.js:110
#: erpnext/workspace_sidebar/financial_reports.json
#: erpnext/workspace_sidebar/invoicing.json
#: erpnext/workspace_sidebar/payments.json
@@ -2497,7 +2502,7 @@ msgstr ""
msgid "Actual qty in stock"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1542
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1545
#: erpnext/public/js/controllers/accounts.js:197
msgid "Actual type tax cannot be included in Item rate in row {0}"
msgstr ""
@@ -2736,7 +2741,7 @@ msgstr ""
msgid "Added On"
msgstr ""
-#: erpnext/buying/doctype/supplier/supplier.py:134
+#: erpnext/buying/doctype/supplier/supplier.py:135
msgid "Added Supplier Role to User {0}."
msgstr ""
@@ -2802,14 +2807,15 @@ msgstr ""
#. Label of the section_break_49 (Section Break) field in DocType 'POS Invoice'
#. Label of the section_break_44 (Section Break) field in DocType 'Purchase
#. Invoice'
-#. Label of the section_break_49 (Section Break) field in DocType 'Sales
-#. Invoice'
+#. Label of the additional_discount_section (Section Break) field in DocType
+#. 'Sales Invoice'
#. Label of the discount_section (Section Break) field in DocType 'Purchase
#. Order'
#. Label of the section_break_41 (Section Break) field in DocType 'Supplier
#. Quotation'
#. Label of the section_break_44 (Section Break) field in DocType 'Quotation'
-#. Label of the section_break_48 (Section Break) field in DocType 'Sales Order'
+#. Label of the additional_discount_section (Section Break) field in DocType
+#. 'Sales Order'
#. Label of the section_break_49 (Section Break) field in DocType 'Delivery
#. Note'
#. Label of the section_break_42 (Section Break) field in DocType 'Purchase
@@ -2835,6 +2841,7 @@ msgstr ""
#. Label of the discount_amount (Currency) field in DocType 'Supplier
#. Quotation'
#. Label of the discount_amount (Currency) field in DocType 'Quotation'
+#. Label of the base_discount_amount (Currency) field in DocType 'Sales Order'
#. Label of the discount_amount (Currency) field in DocType 'Sales Order'
#. Label of the discount_amount (Currency) field in DocType 'Delivery Note'
#. Label of the discount_amount (Currency) field in DocType 'Purchase Receipt'
@@ -2861,7 +2868,6 @@ msgstr ""
#. Label of the base_discount_amount (Currency) field in DocType 'Supplier
#. Quotation'
#. Label of the base_discount_amount (Currency) field in DocType 'Quotation'
-#. Label of the base_discount_amount (Currency) field in DocType 'Sales Order'
#. Label of the base_discount_amount (Currency) field in DocType 'Delivery
#. Note'
#. Label of the base_discount_amount (Currency) field in DocType 'Purchase
@@ -2872,13 +2878,12 @@ msgstr ""
#: erpnext/buying/doctype/purchase_order/purchase_order.json
#: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
#: erpnext/selling/doctype/quotation/quotation.json
-#: erpnext/selling/doctype/sales_order/sales_order.json
#: erpnext/stock/doctype/delivery_note/delivery_note.json
#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
msgid "Additional Discount Amount (Company Currency)"
msgstr ""
-#: erpnext/controllers/taxes_and_totals.py:791
+#: erpnext/controllers/taxes_and_totals.py:796
msgid "Additional Discount Amount ({discount_amount}) cannot exceed the total before such discount ({total_before_discount})"
msgstr ""
@@ -2915,6 +2920,7 @@ msgstr ""
msgid "Additional Discount Percentage"
msgstr ""
+#. Label of the addtional_info (Section Break) field in DocType 'Journal Entry'
#. Label of the additional_info_section (Section Break) field in DocType
#. 'Purchase Invoice'
#. Label of the more_information (Section Break) field in DocType 'Sales
@@ -2930,6 +2936,7 @@ msgstr ""
#. Label of the more_info (Section Break) field in DocType 'Delivery Note'
#. Label of the additional_info_section (Section Break) field in DocType
#. 'Purchase Receipt'
+#: erpnext/accounts/doctype/journal_entry/journal_entry.json
#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.json
#: erpnext/assets/doctype/asset/asset.json
@@ -3179,13 +3186,16 @@ msgstr ""
msgid "Advance Amount"
msgstr ""
-#. Label of the advance_paid (Currency) field in DocType 'Purchase Order'
#. Label of the advance_paid (Currency) field in DocType 'Sales Order'
-#: erpnext/buying/doctype/purchase_order/purchase_order.json
#: erpnext/selling/doctype/sales_order/sales_order.json
msgid "Advance Paid"
msgstr ""
+#. Label of the advance_paid (Currency) field in DocType 'Purchase Order'
+#: erpnext/buying/doctype/purchase_order/purchase_order.json
+msgid "Advance Paid (Company Currency)"
+msgstr ""
+
#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:75
#: erpnext/selling/doctype/sales_order/sales_order_list.js:122
msgid "Advance Payment"
@@ -3256,7 +3266,7 @@ msgstr ""
msgid "Advance amount"
msgstr ""
-#: erpnext/controllers/taxes_and_totals.py:928
+#: erpnext/controllers/taxes_and_totals.py:933
msgid "Advance amount cannot be greater than {0} {1}"
msgstr ""
@@ -3574,7 +3584,7 @@ msgstr ""
#: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:165
#: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:185
#: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py:166
-#: erpnext/accounts/utils.py:1554 erpnext/public/js/setup_wizard.js:184
+#: erpnext/accounts/utils.py:1555 erpnext/public/js/setup_wizard.js:184
msgid "All Accounts"
msgstr ""
@@ -3747,7 +3757,7 @@ msgstr ""
msgid "All items have already been transferred for this Work Order."
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2915
+#: erpnext/public/js/controllers/transaction.js:3022
msgid "All items in this document already have a linked Quality Inspection."
msgstr ""
@@ -3792,7 +3802,7 @@ msgstr ""
msgid "Allocate Advances Automatically (FIFO)"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:931
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:935
msgid "Allocate Payment Amount"
msgstr ""
@@ -3802,7 +3812,7 @@ msgstr ""
msgid "Allocate Payment Based On Payment Terms"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1732
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1735
msgid "Allocate Payment Request"
msgstr ""
@@ -3828,7 +3838,7 @@ msgstr ""
#. Payment Entries'
#: erpnext/accounts/doctype/bank_transaction/bank_transaction.json
#: erpnext/accounts/doctype/bank_transaction_payments/bank_transaction_payments.json
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1723
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1726
#: erpnext/accounts/doctype/payment_reconciliation_allocation/payment_reconciliation_allocation.json
#: erpnext/accounts/doctype/process_payment_reconciliation_log_allocations/process_payment_reconciliation_log_allocations.json
#: erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json
@@ -3854,11 +3864,11 @@ msgstr ""
msgid "Allocated amount"
msgstr ""
-#: erpnext/accounts/utils.py:657
+#: erpnext/accounts/utils.py:658
msgid "Allocated amount cannot be greater than unadjusted amount"
msgstr ""
-#: erpnext/accounts/utils.py:655
+#: erpnext/accounts/utils.py:656
msgid "Allocated amount cannot be negative"
msgstr ""
@@ -3960,7 +3970,7 @@ msgstr ""
msgid "Allow Item To Be Added Multiple Times in a Transaction"
msgstr ""
-#: erpnext/controllers/selling_controller.py:847
+#: erpnext/controllers/selling_controller.py:854
msgid "Allow Item to Be Added Multiple Times in a Transaction"
msgstr ""
@@ -4380,6 +4390,7 @@ msgstr ""
#. Invoice'
#. Label of the amount (Currency) field in DocType 'Payment Reconciliation
#. Payment'
+#. Label of the amount (Currency) field in DocType 'Payment Reference'
#. Label of the grand_total (Currency) field in DocType 'Payment Request'
#. Option for the 'Discount Type' (Select) field in DocType 'Payment Schedule'
#. Option for the 'Discount Type' (Select) field in DocType 'Payment Term'
@@ -4466,7 +4477,7 @@ msgstr ""
#: erpnext/accounts/doctype/bank_guarantee/bank_guarantee.json
#: erpnext/accounts/doctype/budget_distribution/budget_distribution.json
#: erpnext/accounts/doctype/cashier_closing_payments/cashier_closing_payments.json
-#: erpnext/accounts/doctype/journal_entry/journal_entry.js:627
+#: erpnext/accounts/doctype/journal_entry/journal_entry.js:623
#: erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
#: erpnext/accounts/doctype/payment_entry/payment_entry.json
#: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.json
@@ -4474,6 +4485,7 @@ msgstr ""
#: erpnext/accounts/doctype/payment_reconciliation_allocation/payment_reconciliation_allocation.json
#: erpnext/accounts/doctype/payment_reconciliation_invoice/payment_reconciliation_invoice.json
#: erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json
+#: erpnext/accounts/doctype/payment_reference/payment_reference.json
#: erpnext/accounts/doctype/payment_request/payment_request.json
#: erpnext/accounts/doctype/payment_schedule/payment_schedule.json
#: erpnext/accounts/doctype/payment_term/payment_term.json
@@ -4521,6 +4533,7 @@ msgstr ""
#: erpnext/manufacturing/doctype/bom_item/bom_item.json
#: erpnext/manufacturing/doctype/bom_scrap_item/bom_scrap_item.json
#: erpnext/manufacturing/doctype/work_order_item/work_order_item.json
+#: erpnext/public/js/controllers/transaction.js:506
#: erpnext/selling/doctype/quotation/quotation.js:316
#: erpnext/selling/doctype/quotation_item/quotation_item.json
#: erpnext/selling/doctype/sales_order_item/sales_order_item.json
@@ -4673,19 +4686,19 @@ msgstr ""
msgid "Amount to Bill"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1243
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1255
msgid "Amount {0} {1} against {2} {3}"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1254
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1266
msgid "Amount {0} {1} deducted against {2}"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1218
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1230
msgid "Amount {0} {1} transferred from {2} to {3}"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1224
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1236
msgid "Amount {0} {1} {2} {3}"
msgstr ""
@@ -4724,7 +4737,7 @@ msgstr ""
msgid "An Item Group is a way to classify items based on types."
msgstr ""
-#: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py:527
+#: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py:535
msgid "An error has been appeared while reposting item valuation via {0}"
msgstr ""
@@ -4745,6 +4758,12 @@ msgstr ""
msgid "Analyst"
msgstr ""
+#. Label of the analytics_section (Section Break) field in DocType 'Accounts
+#. Settings'
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+msgid "Analytical Accounting"
+msgstr ""
+
#: erpnext/public/js/utils.js:93
msgid "Annual Billing: {0}"
msgstr ""
@@ -4784,7 +4803,7 @@ msgstr ""
msgid "Another Cost Center Allocation record {0} applicable from {1}, hence this allocation will be applicable upto {2}"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:758
+#: erpnext/accounts/doctype/payment_request/payment_request.py:883
msgid "Another Payment Request is already processed"
msgstr ""
@@ -5040,6 +5059,12 @@ msgstr ""
msgid "Apply SLA for Resolution Time"
msgstr ""
+#. Description of the 'Enable Discounts and Margin' (Check) field in DocType
+#. 'Accounts Settings'
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+msgid "Apply discounts and margins on products"
+msgstr ""
+
#. Label of the apply_restriction_on_values (Check) field in DocType
#. 'Accounting Dimension Filter'
#: erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.json
@@ -5775,7 +5800,7 @@ msgstr ""
#. Title of a Workspace Sidebar
#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
#: erpnext/accounts/doctype/finance_book/finance_book_dashboard.py:9
-#: erpnext/accounts/report/balance_sheet/balance_sheet.py:249
+#: erpnext/accounts/report/balance_sheet/balance_sheet.py:250
#: erpnext/assets/doctype/asset_capitalization/asset_capitalization.json
#: erpnext/assets/doctype/asset_movement/asset_movement.json
#: erpnext/assets/workspace/assets/assets.json erpnext/desktop_icon/assets.json
@@ -5783,6 +5808,11 @@ msgstr ""
msgid "Assets"
msgstr ""
+#. Title of the Module Onboarding 'Asset Onboarding'
+#: erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json
+msgid "Assets Setup"
+msgstr ""
+
#: erpnext/controllers/buying_controller.py:1048
msgid "Assets not created for {item_code}. You will have to create asset manually."
msgstr ""
@@ -5819,7 +5849,7 @@ msgstr ""
msgid "At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} in the warehouse {4}."
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1358
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1368
msgid "At Row {0}: In Serial and Batch Bundle {1} must have docstatus as 1 and not 0"
msgstr ""
@@ -5876,7 +5906,7 @@ msgstr ""
msgid "At row #{0}: you have selected the Difference Account {1}, which is a Cost of Goods Sold type account. Please select a different account"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1120
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1130
msgid "At row {0}: Batch No is mandatory for Item {1}"
msgstr ""
@@ -5884,11 +5914,11 @@ msgstr ""
msgid "At row {0}: Parent Row No cannot be set for item {1}"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1105
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1115
msgid "At row {0}: Qty is mandatory for the batch {1}"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1112
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1122
msgid "At row {0}: Serial No is mandatory for Item {1}"
msgstr ""
@@ -6154,7 +6184,7 @@ msgstr ""
msgid "Auto Reserve Stock for Sales Order on Purchase"
msgstr ""
-#: erpnext/accounts/doctype/accounts_settings/accounts_settings.py:148
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.py:185
msgid "Auto Tax Settings Error"
msgstr ""
@@ -6243,6 +6273,12 @@ msgstr ""
msgid "Available"
msgstr ""
+#. Label of the available__future_inventory_section (Section Break) field in
+#. DocType 'Bin'
+#: erpnext/stock/doctype/bin/bin.json
+msgid "Available / Future Inventory"
+msgstr ""
+
#. Label of the actual_batch_qty (Float) field in DocType 'Delivery Note Item'
#: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
msgid "Available Batch Qty at From Warehouse"
@@ -6376,7 +6412,7 @@ msgstr ""
#: erpnext/stock/report/stock_ageing/stock_ageing.py:170
#: erpnext/stock/report/stock_ageing/stock_ageing.py:204
-#: erpnext/stock/report/stock_balance/stock_balance.py:517
+#: erpnext/stock/report/stock_balance/stock_balance.py:548
msgid "Average Age"
msgstr ""
@@ -6494,7 +6530,7 @@ msgstr ""
#: erpnext/selling/doctype/sales_order/sales_order.js:1415
#: erpnext/stock/doctype/material_request/material_request.js:351
#: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:689
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:706
#: erpnext/stock/report/bom_search/bom_search.py:38
#: erpnext/subcontracting/doctype/subcontracting_inward_order_item/subcontracting_inward_order_item.json
#: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:525
@@ -6750,7 +6786,7 @@ msgstr ""
msgid "BOM and Finished Good Quantity is mandatory for Disassembly"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:1327
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:1344
msgid "BOM and Manufacturing Quantity are required"
msgstr ""
@@ -6761,7 +6797,7 @@ msgid "BOM and Production"
msgstr ""
#: erpnext/stock/doctype/material_request/material_request.js:386
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:741
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:758
msgid "BOM does not contain any stock item"
msgstr ""
@@ -6875,7 +6911,7 @@ msgstr ""
#: erpnext/stock/report/available_batch_report/available_batch_report.py:63
#: erpnext/stock/report/available_serial_no/available_serial_no.py:126
#: erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py:84
-#: erpnext/stock/report/stock_balance/stock_balance.py:445
+#: erpnext/stock/report/stock_balance/stock_balance.py:476
#: erpnext/stock/report/stock_ledger/stock_ledger.py:251
msgid "Balance Qty"
msgstr ""
@@ -6940,7 +6976,7 @@ msgstr ""
#: erpnext/stock/report/available_serial_no/available_serial_no.py:174
#: erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py:86
-#: erpnext/stock/report/stock_balance/stock_balance.py:452
+#: erpnext/stock/report/stock_balance/stock_balance.py:483
#: erpnext/stock/report/stock_ledger/stock_ledger.py:308
msgid "Balance Value"
msgstr ""
@@ -7064,7 +7100,7 @@ msgstr ""
msgid "Bank Account Type"
msgstr ""
-#: erpnext/accounts/doctype/bank_transaction/bank_transaction.py:381
+#: erpnext/accounts/doctype/bank_transaction/bank_transaction.py:382
msgid "Bank Account {} in Bank Transaction {} is not matching with Bank Account {}"
msgstr ""
@@ -7515,7 +7551,7 @@ msgstr ""
#: erpnext/manufacturing/doctype/job_card/job_card.json
#: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:89
#: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:115
-#: erpnext/public/js/controllers/transaction.js:2833
+#: erpnext/public/js/controllers/transaction.js:2940
#: erpnext/public/js/utils/barcode_scanner.js:281
#: erpnext/public/js/utils/serial_no_batch_selector.js:438
#: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
@@ -7546,19 +7582,19 @@ msgstr ""
msgid "Batch No"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1123
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1133
msgid "Batch No is mandatory"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3285
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3321
msgid "Batch No {0} does not exists"
msgstr ""
-#: erpnext/stock/utils.py:618
+#: erpnext/stock/utils.py:619
msgid "Batch No {0} is linked with Item {1} which has serial no. Please scan serial no instead."
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:438
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:448
msgid "Batch No {0} is not present in the original {1} {2}, hence you can't return it against the {1} {2}"
msgstr ""
@@ -7573,7 +7609,7 @@ msgstr ""
msgid "Batch Nos"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1876
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1886
msgid "Batch Nos are created successfully"
msgstr ""
@@ -7627,7 +7663,7 @@ msgstr ""
msgid "Batch and Serial No"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:896
+#: erpnext/manufacturing/doctype/work_order/work_order.py:897
msgid "Batch not created for item {} since it does not have a batch series."
msgstr ""
@@ -7710,10 +7746,12 @@ msgstr ""
#. Label of a Card Break in the Manufacturing Workspace
#. Label of a Link in the Manufacturing Workspace
+#. Label of a Workspace Sidebar Item
#: erpnext/manufacturing/doctype/bom/bom.py:1318
#: erpnext/manufacturing/workspace/manufacturing/manufacturing.json
#: erpnext/stock/doctype/material_request/material_request.js:139
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:675
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:692
+#: erpnext/workspace_sidebar/subcontracting.json
msgid "Bill of Materials"
msgstr ""
@@ -7919,7 +7957,7 @@ msgstr ""
msgid "Billing Zipcode"
msgstr ""
-#: erpnext/accounts/party.py:609
+#: erpnext/accounts/party.py:597
msgid "Billing currency must be equal to either default company's currency or party account currency"
msgstr ""
@@ -8526,6 +8564,11 @@ msgstr ""
msgid "Buying Settings"
msgstr ""
+#. Title of the Module Onboarding 'Buying Onboarding'
+#: erpnext/buying/module_onboarding/buying_onboarding/buying_onboarding.json
+msgid "Buying Setup"
+msgstr ""
+
#. Label of the buying_and_selling_tab (Tab Break) field in DocType 'Company'
#: erpnext/setup/doctype/company/company.json
msgid "Buying and Selling"
@@ -8848,7 +8891,7 @@ msgstr ""
msgid "Can be approved by {0}"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:2504
+#: erpnext/manufacturing/doctype/work_order/work_order.py:2500
msgid "Can not close Work Order. Since {0} Job Cards are in Work In Progress state."
msgstr ""
@@ -8877,11 +8920,11 @@ msgid "Can not filter based on Voucher No, if grouped by Voucher"
msgstr ""
#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1378
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2863
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2875
msgid "Can only make payment against unbilled {0}"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1514
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1517
#: erpnext/controllers/accounts_controller.py:3175
#: erpnext/public/js/controllers/accounts.js:103
msgid "Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total'"
@@ -8947,7 +8990,7 @@ msgstr ""
msgid "Cannot Optimize Route as Driver Address is Missing."
msgstr ""
-#: erpnext/setup/doctype/employee/employee.py:182
+#: erpnext/setup/doctype/employee/employee.py:181
msgid "Cannot Relieve Employee"
msgstr ""
@@ -8955,7 +8998,7 @@ msgstr ""
msgid "Cannot Resubmit Ledger entries for vouchers in Closed fiscal year."
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:202
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:204
msgid "Cannot add child table {0} to deletion list. Child tables are automatically deleted with their parent DocTypes."
msgstr ""
@@ -8987,7 +9030,7 @@ msgstr ""
msgid "Cannot cancel as processing of cancelled documents is pending."
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1081
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1075
msgid "Cannot cancel because submitted Stock Entry {0} exists"
msgstr ""
@@ -9081,7 +9124,7 @@ msgstr ""
msgid "Cannot deduct when category is for 'Valuation' or 'Valuation and Total'"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1829
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1832
msgid "Cannot delete Exchange Gain/Loss row"
msgstr ""
@@ -9093,12 +9136,12 @@ msgstr ""
msgid "Cannot delete an item which has been ordered"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:195
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:780
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:197
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:782
msgid "Cannot delete protected core DocType: {0}"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:211
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:213
msgid "Cannot delete virtual DocType: {0}. Virtual DocTypes do not have database tables."
msgstr ""
@@ -9119,6 +9162,10 @@ msgstr ""
msgid "Cannot ensure delivery by Serial No as Item {0} is added with and without Ensure Delivery by Serial No."
msgstr ""
+#: erpnext/accounts/doctype/payment_request/payment_request.js:111
+msgid "Cannot fetch selected rows for submitted Payment Request"
+msgstr ""
+
#: erpnext/public/js/utils/barcode_scanner.js:62
msgid "Cannot find Item or Warehouse with this Barcode"
msgstr ""
@@ -9131,7 +9178,7 @@ msgstr ""
msgid "Cannot find a default warehouse for item {0}. Please set one in the Item Master or in Stock Settings."
msgstr ""
-#: erpnext/accounts/party.py:1075
+#: erpnext/accounts/party.py:1063
msgid "Cannot merge {0} '{1}' into '{2}' as both have existing accounting entries in different currencies for company '{3}'."
msgstr ""
@@ -9139,11 +9186,11 @@ msgstr ""
msgid "Cannot produce more Item {0} than Sales Order quantity {1} {2}"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1436
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1426
msgid "Cannot produce more item for {0}"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1440
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1430
msgid "Cannot produce more than {0} items for {1}"
msgstr ""
@@ -9155,7 +9202,7 @@ msgstr ""
msgid "Cannot reduce quantity than ordered or purchased quantity"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1527
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1530
#: erpnext/controllers/accounts_controller.py:3190
#: erpnext/public/js/controllers/accounts.js:120
msgid "Cannot refer row number greater than or equal to current row number for this Charge type"
@@ -9169,12 +9216,12 @@ msgstr ""
msgid "Cannot retrieve link token. Check Error Log for more information"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1520
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1698
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1811
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1523
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1701
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1823
#: erpnext/controllers/accounts_controller.py:3180
#: erpnext/public/js/controllers/accounts.js:112
-#: erpnext/public/js/controllers/taxes_and_totals.js:524
+#: erpnext/public/js/controllers/taxes_and_totals.js:531
msgid "Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for first row"
msgstr ""
@@ -9202,11 +9249,11 @@ msgstr ""
msgid "Cannot set the field {0} for copying in variants"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:264
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:266
msgid "Cannot start deletion. Another deletion {0} is already queued/running. Please wait for it to complete."
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1921
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1933
msgid "Cannot {0} from {1} without any negative outstanding invoice"
msgstr ""
@@ -9225,12 +9272,6 @@ msgstr ""
msgid "Capacity"
msgstr ""
-#. Label of the capacity_in_days_section (Section Break) field in DocType
-#. 'Item'
-#: erpnext/stock/doctype/item/item.json
-msgid "Capacity (In Days)"
-msgstr ""
-
#: erpnext/stock/page/warehouse_capacity_summary/warehouse_capacity_summary.js:69
msgid "Capacity (Stock UOM)"
msgstr ""
@@ -9241,7 +9282,7 @@ msgstr ""
msgid "Capacity Planning"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1067
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1061
msgid "Capacity Planning Error, planned start time can not be same as end time"
msgstr ""
@@ -9598,7 +9639,7 @@ msgstr ""
msgid "Change this date manually to setup the next synchronization start date"
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:133
+#: erpnext/selling/doctype/customer/customer.py:157
msgid "Changed customer name to '{}' as '{}' already exists."
msgstr ""
@@ -9620,7 +9661,7 @@ msgstr ""
msgid "Channel Partner"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2240
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2252
#: erpnext/controllers/accounts_controller.py:3243
msgid "Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount"
msgstr ""
@@ -9807,7 +9848,7 @@ msgstr ""
#. Label of the reference_date (Date) field in DocType 'Payment Entry'
#: erpnext/accounts/doctype/payment_entry/payment_entry.json
-#: erpnext/public/js/controllers/transaction.js:2744
+#: erpnext/public/js/controllers/transaction.js:2851
msgid "Cheque/Reference Date"
msgstr ""
@@ -9861,12 +9902,12 @@ msgstr ""
#. Label of the child_row_reference (Data) field in DocType 'Quality
#. Inspection'
-#: erpnext/public/js/controllers/transaction.js:2839
+#: erpnext/public/js/controllers/transaction.js:2946
#: erpnext/stock/doctype/quality_inspection/quality_inspection.json
msgid "Child Row Reference"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:205
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:207
msgid "Child Table Not Allowed"
msgstr ""
@@ -10029,7 +10070,7 @@ msgstr ""
msgid "Closed Documents"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:2427
+#: erpnext/manufacturing/doctype/work_order/work_order.py:2423
msgid "Closed Work Order can not be stopped or Re-opened"
msgstr ""
@@ -10042,14 +10083,14 @@ msgstr ""
msgid "Closing"
msgstr ""
-#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:465
-#: erpnext/accounts/report/trial_balance/trial_balance.py:536
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:445
+#: erpnext/accounts/report/trial_balance/trial_balance.py:544
#: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:226
msgid "Closing (Cr)"
msgstr ""
-#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:458
-#: erpnext/accounts/report/trial_balance/trial_balance.py:529
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:438
+#: erpnext/accounts/report/trial_balance/trial_balance.py:537
#: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:219
msgid "Closing (Dr)"
msgstr ""
@@ -10184,8 +10225,8 @@ msgstr ""
#. Label of the sales_team_section_break (Section Break) field in DocType 'POS
#. Invoice'
-#. Label of the sales_team_section_break (Section Break) field in DocType
-#. 'Sales Invoice'
+#. Label of the commission_section (Section Break) field in DocType 'Sales
+#. Invoice'
#. Label of the sales_team_section_break (Section Break) field in DocType
#. 'Sales Order'
#. Label of the sales_team_section_break (Section Break) field in DocType
@@ -10261,7 +10302,7 @@ msgstr ""
msgid "Communication Medium Type"
msgstr ""
-#: erpnext/setup/install.py:97
+#: erpnext/setup/install.py:98
msgid "Compact Item Print"
msgstr ""
@@ -10652,8 +10693,8 @@ msgstr ""
#: erpnext/setup/doctype/employee/employee_tree.js:8
#: erpnext/setup/doctype/employee_external_work_history/employee_external_work_history.json
#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.json
-#: erpnext/setup/doctype/vehicle/vehicle.json erpnext/setup/install.py:156
-#: erpnext/setup/install.py:165 erpnext/setup/workspace/home/home.json
+#: erpnext/setup/doctype/vehicle/vehicle.json erpnext/setup/install.py:157
+#: erpnext/setup/install.py:166 erpnext/setup/workspace/home/home.json
#: erpnext/stock/dashboard_chart_source/stock_value_by_item_group/stock_value_by_item_group.js:8
#: erpnext/stock/dashboard_chart_source/warehouse_wise_stock_value/warehouse_wise_stock_value.js:8
#: erpnext/stock/doctype/bin/bin.json
@@ -10704,7 +10745,7 @@ msgstr ""
#: erpnext/stock/report/stock_analytics/stock_analytics.js:41
#: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.js:7
#: erpnext/stock/report/stock_balance/stock_balance.js:8
-#: erpnext/stock/report/stock_balance/stock_balance.py:506
+#: erpnext/stock/report/stock_balance/stock_balance.py:537
#: erpnext/stock/report/stock_ledger/stock_ledger.js:8
#: erpnext/stock/report/stock_ledger/stock_ledger.py:358
#: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.js:18
@@ -10860,7 +10901,7 @@ msgid "Company Field"
msgstr ""
#. Label of the company_logo (Attach Image) field in DocType 'Company'
-#: erpnext/public/js/print.js:64 erpnext/setup/doctype/company/company.json
+#: erpnext/public/js/print.js:75 erpnext/setup/doctype/company/company.json
msgid "Company Logo"
msgstr ""
@@ -10891,7 +10932,7 @@ msgid "Company currencies of both the companies should match for Inter Company T
msgstr ""
#: erpnext/stock/doctype/material_request/material_request.js:380
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:735
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:752
msgid "Company field is required"
msgstr ""
@@ -11034,7 +11075,7 @@ msgstr ""
msgid "Completed Qty"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1350
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1344
msgid "Completed Qty cannot be greater than 'Qty to Manufacture'"
msgstr ""
@@ -11130,6 +11171,11 @@ msgstr ""
msgid "Conditions will be applied on all the selected items combined. "
msgstr ""
+#. Label of an action in the Onboarding Step 'Review Chart of Accounts'
+#: erpnext/accounts/onboarding_step/chart_of_accounts/chart_of_accounts.json
+msgid "Configure Chart of Accounts"
+msgstr ""
+
#: erpnext/public/js/bom_configurator/bom_configurator.bundle.js:56
msgid "Configure Product Assembly"
msgstr ""
@@ -11273,7 +11319,7 @@ msgstr ""
msgid "Consolidated Trial Balance can be generated for Companies having same root Company."
msgstr ""
-#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:153
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:157
msgid "Consolidated Trial balance could not be generated as Exchange Rate from {0} to {1} is not available for {2}."
msgstr ""
@@ -11356,7 +11402,7 @@ msgstr ""
msgid "Consumed Qty"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1729
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1720
msgid "Consumed Qty cannot be greater than Reserved Qty for item {0}"
msgstr ""
@@ -12252,12 +12298,50 @@ msgstr ""
msgid "Cr"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Asset Category'
+#: erpnext/assets/onboarding_step/create_asset_category/create_asset_category.json
+msgid "Create Asset Category"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Asset Item'
+#: erpnext/assets/onboarding_step/create_asset_item/create_asset_item.json
+msgid "Create Asset Item"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Asset Location'
+#: erpnext/assets/onboarding_step/create_asset_location/create_asset_location.json
+msgid "Create Asset Location"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Bill of Materials'
+#: erpnext/manufacturing/onboarding_step/create_bill_of_materials/create_bill_of_materials.json
+#: erpnext/subcontracting/onboarding_step/create_bill_of_materials/create_bill_of_materials.json
+msgid "Create Bill of Materials"
+msgstr ""
+
#. Label of the create_chart_of_accounts_based_on (Select) field in DocType
#. 'Company'
#: erpnext/setup/doctype/company/company.json
msgid "Create Chart Of Accounts Based On"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Customer'
+#: erpnext/selling/onboarding_step/create_customer/create_customer.json
+msgid "Create Customer"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Delivery Note'
+#: erpnext/selling/onboarding_step/create_delivery_note/create_delivery_note.json
+#: erpnext/stock/onboarding_step/create_delivery_note/create_delivery_note.json
+msgid "Create Delivery Note"
+msgstr ""
+
#: erpnext/stock/doctype/delivery_note/delivery_note_list.js:63
msgid "Create Delivery Trip"
msgstr ""
@@ -12278,6 +12362,22 @@ msgstr ""
msgid "Create Employee records."
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Existing Asset'
+#: erpnext/assets/onboarding_step/create_existing_asset/create_existing_asset.json
+msgid "Create Existing Asset"
+msgstr ""
+
+#. Label of an action in the Onboarding Step 'Create Finished Goods'
+#: erpnext/manufacturing/onboarding_step/create_finished_goods/create_finished_goods.json
+msgid "Create Finished Good"
+msgstr ""
+
+#. Title of an Onboarding Step
+#: erpnext/manufacturing/onboarding_step/create_finished_goods/create_finished_goods.json
+msgid "Create Finished Goods"
+msgstr ""
+
#. Label of the is_grouped_asset (Check) field in DocType 'Item'
#: erpnext/stock/doctype/item/item.json
msgid "Create Grouped Asset"
@@ -12291,6 +12391,14 @@ msgstr ""
msgid "Create Invoices"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Item'
+#: erpnext/buying/onboarding_step/create_item/create_item.json
+#: erpnext/selling/onboarding_step/create_item/create_item.json
+#: erpnext/stock/onboarding_step/create_item/create_item.json
+msgid "Create Item"
+msgstr ""
+
#: erpnext/manufacturing/doctype/work_order/work_order.js:206
msgid "Create Job Card"
msgstr ""
@@ -12322,7 +12430,7 @@ msgstr ""
msgid "Create Ledger Entries for Change Amount"
msgstr ""
-#: erpnext/buying/doctype/supplier/supplier.js:218
+#: erpnext/buying/doctype/supplier/supplier.js:216
#: erpnext/selling/doctype/customer/customer.js:285
msgid "Create Link"
msgstr ""
@@ -12353,6 +12461,16 @@ msgstr ""
msgid "Create New Lead"
msgstr ""
+#. Label of an action in the Onboarding Step 'Create Operations'
+#: erpnext/manufacturing/onboarding_step/create_operations/create_operations.json
+msgid "Create Operation"
+msgstr ""
+
+#. Title of an Onboarding Step
+#: erpnext/manufacturing/onboarding_step/create_operations/create_operations.json
+msgid "Create Operations"
+msgstr ""
+
#: erpnext/crm/doctype/lead/lead.js:161
msgid "Create Opportunity"
msgstr ""
@@ -12361,7 +12479,10 @@ msgstr ""
msgid "Create POS Opening Entry"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Payment Entry'
#: erpnext/accounts/doctype/payment_request/payment_request.js:66
+#: erpnext/accounts/onboarding_step/create_payment_entry/create_payment_entry.json
msgid "Create Payment Entry"
msgstr ""
@@ -12369,6 +12490,10 @@ msgstr ""
msgid "Create Payment Entry for Consolidated POS Invoices."
msgstr ""
+#: erpnext/public/js/controllers/transaction.js:513
+msgid "Create Payment Request"
+msgstr ""
+
#: erpnext/manufacturing/doctype/work_order/work_order.js:766
msgid "Create Pick List"
msgstr ""
@@ -12377,10 +12502,25 @@ msgstr ""
msgid "Create Print Format"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Project'
+#: erpnext/projects/onboarding_step/create_project/create_project.json
+msgid "Create Project"
+msgstr ""
+
#: erpnext/crm/doctype/lead/lead_list.js:8
msgid "Create Prospect"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Purchase Invoice'
+#: erpnext/buying/onboarding_step/create_purchase_invoice/create_purchase_invoice.json
+msgid "Create Purchase Invoice"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Purchase Order'
+#: erpnext/buying/onboarding_step/create_purchase_order/create_purchase_order.json
#: erpnext/selling/doctype/sales_order/sales_order.js:1668
#: erpnext/utilities/activation.py:106
msgid "Create Purchase Order"
@@ -12390,10 +12530,28 @@ msgstr ""
msgid "Create Purchase Orders"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Purchase Receipt'
+#: erpnext/stock/onboarding_step/create_purchase_receipt/create_purchase_receipt.json
+msgid "Create Purchase Receipt"
+msgstr ""
+
#: erpnext/utilities/activation.py:88
msgid "Create Quotation"
msgstr ""
+#. Label of an action in the Onboarding Step 'Create Raw Materials'
+#: erpnext/manufacturing/onboarding_step/create_raw_materials/create_raw_materials.json
+#: erpnext/subcontracting/onboarding_step/create_raw_materials/create_raw_materials.json
+msgid "Create Raw Material"
+msgstr ""
+
+#. Title of an Onboarding Step
+#: erpnext/manufacturing/onboarding_step/create_raw_materials/create_raw_materials.json
+#: erpnext/subcontracting/onboarding_step/create_raw_materials/create_raw_materials.json
+msgid "Create Raw Materials"
+msgstr ""
+
#. Label of the create_receiver_list (Button) field in DocType 'SMS Center'
#: erpnext/selling/doctype/sms_center/sms_center.json
msgid "Create Receiver List"
@@ -12408,12 +12566,19 @@ msgstr ""
msgid "Create Reposting Entry"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Sales Invoice'
+#: erpnext/accounts/onboarding_step/create_sales_invoice/create_sales_invoice.json
#: erpnext/projects/doctype/timesheet/timesheet.js:55
#: erpnext/projects/doctype/timesheet/timesheet.js:231
#: erpnext/projects/doctype/timesheet/timesheet.js:235
+#: erpnext/selling/onboarding_step/create_sales_invoice/create_sales_invoice.json
msgid "Create Sales Invoice"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Sales Order'
+#: erpnext/selling/onboarding_step/create_sales_order/create_sales_order.json
#: erpnext/utilities/activation.py:97
msgid "Create Sales Order"
msgstr ""
@@ -12422,23 +12587,75 @@ msgstr ""
msgid "Create Sales Orders to help you plan your work and deliver on-time"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Service Item'
+#: erpnext/subcontracting/onboarding_step/create_service_item/create_service_item.json
+msgid "Create Service Item"
+msgstr ""
+
#: erpnext/stock/dashboard/item_dashboard.js:283
#: erpnext/stock/doctype/material_request/material_request.js:500
msgid "Create Stock Entry"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Subcontracted Item'
+#: erpnext/subcontracting/onboarding_step/create_subcontracted_item/create_subcontracted_item.json
+msgid "Create Subcontracted Item"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Subcontracting Order'
+#: erpnext/subcontracting/onboarding_step/create_subcontracting_order/create_subcontracting_order.json
+msgid "Create Subcontracting Order"
+msgstr ""
+
+#. Title of an Onboarding Step
+#: erpnext/subcontracting/onboarding_step/create_subcontracting_po/create_subcontracting_po.json
+msgid "Create Subcontracting PO"
+msgstr ""
+
+#. Label of an action in the Onboarding Step 'Create Subcontracting PO'
+#: erpnext/subcontracting/onboarding_step/create_subcontracting_po/create_subcontracting_po.json
+msgid "Create Subcontracting Purchase Order"
+msgstr ""
+
+#. Title of an Onboarding Step
+#: erpnext/buying/onboarding_step/create_supplier/create_supplier.json
+msgid "Create Supplier"
+msgstr ""
+
#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:184
msgid "Create Supplier Quotation"
msgstr ""
+#. Label of an action in the Onboarding Step 'Create Tasks'
+#: erpnext/projects/onboarding_step/create_tasks/create_tasks.json
+msgid "Create Task"
+msgstr ""
+
+#. Title of an Onboarding Step
+#: erpnext/projects/onboarding_step/create_tasks/create_tasks.json
+msgid "Create Tasks"
+msgstr ""
+
#: erpnext/setup/doctype/company/company.js:157
msgid "Create Tax Template"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Timesheet'
+#: erpnext/projects/onboarding_step/create_timesheet/create_timesheet.json
#: erpnext/utilities/activation.py:128
msgid "Create Timesheet"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Transfer Entry'
+#: erpnext/stock/onboarding_step/create_transfer_entry/create_transfer_entry.json
+msgid "Create Transfer Entry"
+msgstr ""
+
#. Label of the create_user (Button) field in DocType 'Employee'
#: erpnext/setup/doctype/employee/employee.json
#: erpnext/utilities/activation.py:117
@@ -12463,6 +12680,17 @@ msgstr ""
msgid "Create Variants"
msgstr ""
+#. Label of an action in the Onboarding Step 'Setup Warehouse'
+#: erpnext/stock/onboarding_step/setup_warehouse/setup_warehouse.json
+msgid "Create Warehouses"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Create Work Order'
+#: erpnext/manufacturing/onboarding_step/create_work_order/create_work_order.json
+msgid "Create Work Order"
+msgstr ""
+
#: erpnext/manufacturing/doctype/plant_floor/plant_floor.js:10
msgid "Create Workstation"
msgstr ""
@@ -12472,7 +12700,7 @@ msgstr ""
msgid "Create a variant with the template image."
msgstr ""
-#: erpnext/stock/stock_ledger.py:2013
+#: erpnext/stock/stock_ledger.py:2011
msgid "Create an incoming stock transaction for the Item."
msgstr ""
@@ -12480,6 +12708,11 @@ msgstr ""
msgid "Create customer quotes"
msgstr ""
+#. Label of an action in the Onboarding Step 'Create Delivery Note'
+#: erpnext/selling/onboarding_step/create_delivery_note/create_delivery_note.json
+msgid "Create delivery note"
+msgstr ""
+
#. Label of the create_pr_in_draft_status (Check) field in DocType 'Accounts
#. Settings'
#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -12492,6 +12725,11 @@ msgstr ""
msgid "Create missing customer or supplier."
msgstr ""
+#. Label of an action in the Onboarding Step 'Create Supplier'
+#: erpnext/buying/onboarding_step/create_supplier/create_supplier.json
+msgid "Create supplier"
+msgstr ""
+
#: erpnext/public/js/bulk_transaction_processing.js:14
msgid "Create {0} {1} ?"
msgstr ""
@@ -12539,7 +12777,7 @@ msgid "Creating Purchase Order ..."
msgstr ""
#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js:704
-#: erpnext/buying/doctype/purchase_order/purchase_order.js:518
+#: erpnext/buying/doctype/purchase_order/purchase_order.js:497
#: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:73
msgid "Creating Purchase Receipt ..."
msgstr ""
@@ -12557,7 +12795,7 @@ msgstr ""
msgid "Creating Subcontracting Inward Order ..."
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.js:533
+#: erpnext/buying/doctype/purchase_order/purchase_order.js:512
msgid "Creating Subcontracting Order ..."
msgstr ""
@@ -12604,11 +12842,11 @@ msgstr ""
#: erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html:11
#: erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:84
#: erpnext/accounts/report/cheques_and_deposits_incorrectly_cleared/cheques_and_deposits_incorrectly_cleared.py:146
-#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:451
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:431
#: erpnext/accounts/report/general_ledger/general_ledger.html:93
#: erpnext/accounts/report/purchase_register/purchase_register.py:241
#: erpnext/accounts/report/sales_register/sales_register.py:277
-#: erpnext/accounts/report/trial_balance/trial_balance.py:522
+#: erpnext/accounts/report/trial_balance/trial_balance.py:530
#: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:212
#: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:34
msgid "Credit"
@@ -12622,7 +12860,7 @@ msgstr ""
msgid "Credit ({0})"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.js:641
+#: erpnext/accounts/doctype/journal_entry/journal_entry.js:637
msgid "Credit Account"
msgstr ""
@@ -12700,7 +12938,7 @@ msgstr ""
msgid "Credit Limit"
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:606
+#: erpnext/selling/doctype/customer/customer.py:630
msgid "Credit Limit Crossed"
msgstr ""
@@ -12793,16 +13031,16 @@ msgstr ""
msgid "Credit in Company Currency"
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:572
-#: erpnext/selling/doctype/customer/customer.py:627
+#: erpnext/selling/doctype/customer/customer.py:596
+#: erpnext/selling/doctype/customer/customer.py:651
msgid "Credit limit has been crossed for customer {0} ({1}/{2})"
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:358
+#: erpnext/selling/doctype/customer/customer.py:382
msgid "Credit limit is already defined for the Company {0}"
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:626
+#: erpnext/selling/doctype/customer/customer.py:650
msgid "Credit limit reached for customer {0}"
msgstr ""
@@ -12857,7 +13095,7 @@ msgstr ""
msgid "Criteria weights must add up to 100%"
msgstr ""
-#: erpnext/accounts/doctype/accounts_settings/accounts_settings.py:135
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.py:172
msgid "Cron Interval should be between 1 and 59 Min"
msgstr ""
@@ -12984,9 +13222,9 @@ msgstr ""
msgid "Currency filters are currently unsupported in Custom Financial Report."
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1588
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1656
-#: erpnext/accounts/utils.py:2455
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1600
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1668
+#: erpnext/accounts/utils.py:2456
msgid "Currency for {0} must be {1}"
msgstr ""
@@ -13132,11 +13370,6 @@ msgstr ""
msgid "Current Stock"
msgstr ""
-#. Label of the current_time (Int) field in DocType 'Job Card'
-#: erpnext/manufacturing/doctype/job_card/job_card.json
-msgid "Current Time"
-msgstr ""
-
#. Label of the current_valuation_rate (Currency) field in DocType 'Stock
#. Reconciliation Item'
#: erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json
@@ -13278,7 +13511,7 @@ msgstr ""
#: erpnext/accounts/report/sales_register/sales_register.py:187
#: erpnext/assets/doctype/asset/asset.json
#: erpnext/buying/doctype/purchase_order/purchase_order.json
-#: erpnext/buying/doctype/supplier/supplier.js:186
+#: erpnext/buying/doctype/supplier/supplier.js:184
#: erpnext/crm/doctype/contract/contract.json
#: erpnext/crm/doctype/lead/lead.js:32
#: erpnext/crm/doctype/opportunity/opportunity.js:99
@@ -13731,7 +13964,7 @@ msgstr ""
#. Label of the customer_pos_id (Data) field in DocType 'Customer'
#: erpnext/selling/doctype/customer/customer.json
-msgid "Customer POS id"
+msgid "Customer POS ID"
msgstr ""
#. Label of the portal_users (Table) field in DocType 'Customer'
@@ -14018,7 +14251,7 @@ msgstr ""
msgid "Date of Birth"
msgstr ""
-#: erpnext/setup/doctype/employee/employee.py:147
+#: erpnext/setup/doctype/employee/employee.py:146
msgid "Date of Birth cannot be greater than today."
msgstr ""
@@ -14173,11 +14406,11 @@ msgstr ""
#: erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html:10
#: erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:77
#: erpnext/accounts/report/cheques_and_deposits_incorrectly_cleared/cheques_and_deposits_incorrectly_cleared.py:139
-#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:444
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:424
#: erpnext/accounts/report/general_ledger/general_ledger.html:92
#: erpnext/accounts/report/purchase_register/purchase_register.py:240
#: erpnext/accounts/report/sales_register/sales_register.py:276
-#: erpnext/accounts/report/trial_balance/trial_balance.py:515
+#: erpnext/accounts/report/trial_balance/trial_balance.py:523
#: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:205
#: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:27
msgid "Debit"
@@ -14197,7 +14430,7 @@ msgstr ""
msgid "Debit / Credit Note Posting Date"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.js:631
+#: erpnext/accounts/doctype/journal_entry/journal_entry.js:627
msgid "Debit Account"
msgstr ""
@@ -14311,11 +14544,11 @@ msgstr ""
msgid "Debtor Turnover Ratio"
msgstr ""
-#: erpnext/accounts/party.py:616
+#: erpnext/accounts/party.py:604
msgid "Debtor/Creditor"
msgstr ""
-#: erpnext/accounts/party.py:619
+#: erpnext/accounts/party.py:607
msgid "Debtor/Creditor Advance"
msgstr ""
@@ -14444,7 +14677,7 @@ msgstr ""
msgid "Default BOM ({0}) must be active for this item or its template"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:2229
+#: erpnext/manufacturing/doctype/work_order/work_order.py:2220
msgid "Default BOM for {0} not found"
msgstr ""
@@ -14452,7 +14685,7 @@ msgstr ""
msgid "Default BOM not found for FG Item {0}"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:2226
+#: erpnext/manufacturing/doctype/work_order/work_order.py:2217
msgid "Default BOM not found for Item {0} and Project {1}"
msgstr ""
@@ -14814,11 +15047,14 @@ msgstr ""
msgid "Default Valuation Method"
msgstr ""
+#. Label of the default_warehouse_section (Section Break) field in DocType
+#. 'BOM'
#. Label of the default_warehouse (Link) field in DocType 'Item Default'
#. Label of the section_break_jwgn (Section Break) field in DocType 'Stock
#. Entry'
#. Label of the set_warehouse (Link) field in DocType 'Stock Reconciliation'
#. Label of the default_warehouse (Link) field in DocType 'Stock Settings'
+#: erpnext/manufacturing/doctype/bom/bom.json
#: erpnext/stock/doctype/item_default/item_default.json
#: erpnext/stock/doctype/stock_entry/stock_entry.json
#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json
@@ -15028,8 +15264,8 @@ msgstr ""
msgid "Deleting {0} and all associated Common Code documents..."
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1097
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1116
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1099
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1118
msgid "Deletion in Progress!"
msgstr ""
@@ -15894,7 +16130,7 @@ msgstr ""
msgid "Disabled Account Selected"
msgstr ""
-#: erpnext/stock/utils.py:422
+#: erpnext/stock/utils.py:423
msgid "Disabled Warehouse {0} cannot be used for this transaction."
msgstr ""
@@ -16142,7 +16378,7 @@ msgstr ""
msgid "Discount must be less than 100"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:3341
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:3353
msgid "Discount of {} applied as per Payment Term"
msgstr ""
@@ -16490,8 +16726,8 @@ msgstr ""
msgid "Do you want to submit the stock entry?"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:180
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:443
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:182
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:445
msgid "DocType {0} does not exist"
msgstr ""
@@ -16542,7 +16778,7 @@ msgstr ""
msgid "Document Type already used as a dimension"
msgstr ""
-#: erpnext/setup/install.py:188
+#: erpnext/setup/install.py:189
msgid "Documentation"
msgstr ""
@@ -16725,11 +16961,11 @@ msgstr ""
msgid "Drops existing SQL Procedures and Function setup by Accounts Receivable report"
msgstr ""
-#: erpnext/accounts/party.py:702
+#: erpnext/accounts/party.py:690
msgid "Due Date cannot be after {0}"
msgstr ""
-#: erpnext/accounts/party.py:678
+#: erpnext/accounts/party.py:666
msgid "Due Date cannot be before {0}"
msgstr ""
@@ -16792,7 +17028,7 @@ msgstr ""
msgid "Duplicate Customer Group"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:188
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:190
msgid "Duplicate DocType"
msgstr ""
@@ -16826,6 +17062,10 @@ msgstr ""
msgid "Duplicate POS Invoices found"
msgstr ""
+#: erpnext/accounts/doctype/payment_request/payment_request.py:133
+msgid "Duplicate Payment Schedule selected"
+msgstr ""
+
#: erpnext/projects/doctype/project/project.js:83
msgid "Duplicate Project with Tasks"
msgstr ""
@@ -16850,7 +17090,7 @@ msgstr ""
msgid "Duplicate entry against the item code {0} and manufacturer {1}"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:187
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:189
msgid "Duplicate entry: {0}{1}"
msgstr ""
@@ -16962,7 +17202,7 @@ msgstr ""
msgid "Earliest"
msgstr ""
-#: erpnext/stock/report/stock_balance/stock_balance.py:518
+#: erpnext/stock/report/stock_balance/stock_balance.py:549
msgid "Earliest Age"
msgstr ""
@@ -17358,10 +17598,14 @@ msgstr ""
msgid "Employee User Id"
msgstr ""
-#: erpnext/setup/doctype/employee/employee.py:214
+#: erpnext/setup/doctype/employee/employee.py:213
msgid "Employee cannot report to himself."
msgstr ""
+#: erpnext/setup/doctype/employee/employee.py:445
+msgid "Employee is required"
+msgstr ""
+
#: erpnext/assets/doctype/asset_movement/asset_movement.py:109
msgid "Employee is required while issuing Asset {0}"
msgstr ""
@@ -17371,10 +17615,14 @@ msgstr ""
msgid "Employee {0} does not belong to the company {1}"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:359
+#: erpnext/manufacturing/doctype/job_card/job_card.py:357
msgid "Employee {0} is currently working on another workstation. Please assign another employee."
msgstr ""
+#: erpnext/setup/doctype/employee/employee.py:470
+msgid "Employee {0} not found"
+msgstr ""
+
#: erpnext/manufacturing/doctype/workstation/workstation.js:351
msgid "Employees"
msgstr ""
@@ -17383,7 +17631,7 @@ msgstr ""
msgid "Empty"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:752
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:754
msgid "Empty To Delete List"
msgstr ""
@@ -17392,6 +17640,12 @@ msgstr ""
msgid "Ems(Pica)"
msgstr ""
+#. Label of the enable_accounting_dimensions (Check) field in DocType 'Accounts
+#. Settings'
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+msgid "Enable Accounting Dimensions"
+msgstr ""
+
#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1721
msgid "Enable Allow Partial Reservation in the Stock Settings to reserve partial stock."
msgstr ""
@@ -17461,6 +17715,12 @@ msgstr ""
msgid "Enable Discount Accounting for Selling"
msgstr ""
+#. Label of the enable_discounts_and_margin (Check) field in DocType 'Accounts
+#. Settings'
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+msgid "Enable Discounts and Margin"
+msgstr ""
+
#. Label of the enable_european_access (Check) field in DocType 'Plaid
#. Settings'
#: erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.json
@@ -17491,6 +17751,12 @@ msgstr ""
msgid "Enable Item-wise Inventory Account"
msgstr ""
+#. Label of the enable_loyalty_point_program (Check) field in DocType 'Accounts
+#. Settings'
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+msgid "Enable Loyalty Point Program"
+msgstr ""
+
#. Label of the enable_parallel_reposting (Check) field in DocType 'Stock
#. Reposting Settings'
#: erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.json
@@ -17508,18 +17774,40 @@ msgstr ""
msgid "Enable Provisional Accounting For Non Stock Items"
msgstr ""
+#. Label of the enable_separate_reposting_for_gl (Check) field in DocType
+#. 'Stock Reposting Settings'
+#: erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.json
+msgid "Enable Separate Reposting for GL"
+msgstr ""
+
#. Label of the enable_stock_reservation (Check) field in DocType 'Stock
#. Settings'
#: erpnext/stock/doctype/stock_settings/stock_settings.json
msgid "Enable Stock Reservation"
msgstr ""
+#. Label of the enable_utm (Check) field in DocType 'Selling Settings'
+#: erpnext/selling/doctype/selling_settings/selling_settings.json
+msgid "Enable UTM"
+msgstr ""
+
+#. Description of the 'Enable UTM' (Check) field in DocType 'Selling Settings'
+#: erpnext/selling/doctype/selling_settings/selling_settings.json
+msgid "Enable Urchin Tracking Module parameters in Quotation, Sales Order, Sales Invoice, POS Invoice, Lead, and Delivery Note."
+msgstr ""
+
#. Label of the enable_youtube_tracking (Check) field in DocType 'Video
#. Settings'
#: erpnext/utilities/doctype/video_settings/video_settings.json
msgid "Enable YouTube Tracking"
msgstr ""
+#. Description of the 'Enable Accounting Dimensions' (Check) field in DocType
+#. 'Accounts Settings'
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+msgid "Enable cost center, projects and other custom accounting dimensions"
+msgstr ""
+
#. Description of the 'Consider Rejected Warehouses' (Check) field in DocType
#. 'Pick List'
#: erpnext/stock/doctype/pick_list/pick_list.json
@@ -17541,6 +17829,12 @@ msgstr ""
msgid "Enable to apply SLA on every {0}"
msgstr ""
+#. Label of the enable_tracking_sales_commissions (Check) field in DocType
+#. 'Selling Settings'
+#: erpnext/selling/doctype/selling_settings/selling_settings.json
+msgid "Enable tracking sales commissions"
+msgstr ""
+
#. Description of the 'Fetch Timesheet in Sales Invoice' (Check) field in
#. DocType 'Projects Settings'
#: erpnext/projects/doctype/projects_settings/projects_settings.json
@@ -17664,7 +17958,7 @@ msgstr ""
msgid "Enter API key in Google Settings."
msgstr ""
-#: erpnext/public/js/print.js:51
+#: erpnext/public/js/print.js:62
msgid "Enter Company Details"
msgstr ""
@@ -17802,7 +18096,7 @@ msgstr ""
#: erpnext/accounts/doctype/ledger_merge/ledger_merge.json
#: erpnext/accounts/report/account_balance/account_balance.js:29
#: erpnext/accounts/report/account_balance/account_balance.js:45
-#: erpnext/accounts/report/balance_sheet/balance_sheet.py:253
+#: erpnext/accounts/report/balance_sheet/balance_sheet.py:254
#: erpnext/setup/setup_wizard/operations/install_fixtures.py:306
msgid "Equity"
msgstr ""
@@ -17854,7 +18148,7 @@ msgstr ""
msgid "Error while processing deferred accounting for {0}"
msgstr ""
-#: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py:523
+#: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py:531
msgid "Error while reposting item valuation"
msgstr ""
@@ -17865,7 +18159,7 @@ msgid ""
"\t\t\t\t\tPlease correct the dates accordingly."
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:983
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:987
msgid "Error: {0} is mandatory field"
msgstr ""
@@ -17927,7 +18221,7 @@ msgstr ""
msgid "Example: ABCD.#####. If series is set and Batch No is not mentioned in transactions, then automatic batch number will be created based on this series. If you always want to explicitly mention Batch No for this item, leave this blank. Note: this setting will take priority over the Naming Series Prefix in Stock Settings."
msgstr ""
-#: erpnext/stock/stock_ledger.py:2279
+#: erpnext/stock/stock_ledger.py:2275
msgid "Example: Serial No {0} reserved in {1}."
msgstr ""
@@ -17941,7 +18235,7 @@ msgstr ""
msgid "Excess Materials Consumed"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1117
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1115
msgid "Excess Transfer"
msgstr ""
@@ -18082,7 +18376,7 @@ msgstr ""
msgid "Excise Entry"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:1395
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:1412
msgid "Excise Invoice"
msgstr ""
@@ -18268,7 +18562,7 @@ msgstr ""
#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:605
#: erpnext/accounts/report/account_balance/account_balance.js:28
#: erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:89
-#: erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py:182
+#: erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py:183
#: erpnext/accounts/report/profitability_analysis/profitability_analysis.py:199
msgid "Expense"
msgstr ""
@@ -18441,7 +18735,7 @@ msgstr ""
msgid "Extra Consumed Qty"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:256
+#: erpnext/manufacturing/doctype/job_card/job_card.py:254
msgid "Extra Job Card Quantity"
msgstr ""
@@ -18656,16 +18950,10 @@ msgid "Fetch Value From"
msgstr ""
#: erpnext/stock/doctype/material_request/material_request.js:372
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:712
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:729
msgid "Fetch exploded BOM (including sub-assemblies)"
msgstr ""
-#. Description of the 'Get Items from Open Material Requests' (Button) field in
-#. DocType 'Purchase Order'
-#: erpnext/buying/doctype/purchase_order/purchase_order.json
-msgid "Fetch items based on Default Supplier."
-msgstr ""
-
#: erpnext/selling/page/point_of_sale/pos_item_details.js:455
msgid "Fetched only {0} available serial numbers."
msgstr ""
@@ -18683,7 +18971,7 @@ msgid "Fetching Sales Orders..."
msgstr ""
#: erpnext/accounts/doctype/dunning/dunning.js:135
-#: erpnext/public/js/controllers/transaction.js:1489
+#: erpnext/public/js/controllers/transaction.js:1588
msgid "Fetching exchange rates ..."
msgstr ""
@@ -18691,7 +18979,7 @@ msgstr ""
msgid "Fetching..."
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:222
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:224
msgid "Field '{0}' is not a valid Company link field for DocType {1}"
msgstr ""
@@ -18713,15 +19001,15 @@ msgstr ""
msgid "Fields will be copied over only at time of creation."
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1064
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1066
msgid "File does not belong to this Transaction Deletion Record"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1058
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1060
msgid "File not found"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1072
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1074
msgid "File not found on server"
msgstr ""
@@ -19180,7 +19468,7 @@ msgstr ""
msgid "Fiscal Year Details"
msgstr ""
-#: erpnext/accounts/doctype/fiscal_year/fiscal_year.py:47
+#: erpnext/accounts/doctype/fiscal_year/fiscal_year.py:53
msgid "Fiscal Year End Date should be one year after Fiscal Year Start Date"
msgstr ""
@@ -19324,7 +19612,7 @@ msgstr ""
msgid "Following Material Requests have been raised automatically based on Item's re-order level"
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:797
+#: erpnext/selling/doctype/customer/customer.py:821
msgid "Following fields are mandatory to create address:"
msgstr ""
@@ -19496,7 +19784,7 @@ msgstr ""
msgid "For operation {0} at row {1}, please add raw materials or set a BOM against it."
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:2574
+#: erpnext/manufacturing/doctype/work_order/work_order.py:2570
msgid "For operation {0}: Quantity ({1}) can not be greater than pending quantity({2})"
msgstr ""
@@ -19522,7 +19810,7 @@ msgstr ""
msgid "For reference"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1549
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1552
#: erpnext/public/js/controllers/accounts.js:204
msgid "For row {0} in {1}. To include {2} in Item rate, rows {3} must also be included"
msgstr ""
@@ -19550,7 +19838,7 @@ msgstr ""
msgid "For the item {0}, the consumed quantity should be {1} according to the BOM {2}."
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:1299
+#: erpnext/public/js/controllers/transaction.js:1398
msgctxt "Clear payment terms template and/or payment schedule when due date is changed"
msgid "For the new {0} to take effect, would you like to clear the current {1}?"
msgstr ""
@@ -19587,8 +19875,8 @@ msgstr ""
msgid "Forecasting"
msgstr ""
-#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:280
-#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:281
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:254
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:255
#: erpnext/accounts/report/consolidated_trial_balance/test_consolidated_trial_balance.py:88
msgid "Foreign Currency Translation Reserve"
msgstr ""
@@ -19627,7 +19915,7 @@ msgstr ""
msgid "Forum URL"
msgstr ""
-#: erpnext/setup/install.py:200
+#: erpnext/setup/install.py:201
msgid "Frappe School"
msgstr ""
@@ -19841,11 +20129,6 @@ msgstr ""
msgid "From Invoice Date"
msgstr ""
-#. Label of the lead_name (Link) field in DocType 'Customer'
-#: erpnext/selling/doctype/customer/customer.json
-msgid "From Lead"
-msgstr ""
-
#. Label of the from_no (Int) field in DocType 'Share Balance'
#. Label of the from_no (Int) field in DocType 'Share Transfer'
#: erpnext/accounts/doctype/share_balance/share_balance.json
@@ -19853,11 +20136,6 @@ msgstr ""
msgid "From No"
msgstr ""
-#. Label of the opportunity_name (Link) field in DocType 'Customer'
-#: erpnext/selling/doctype/customer/customer.json
-msgid "From Opportunity"
-msgstr ""
-
#. Label of the from_case_no (Int) field in DocType 'Packing Slip'
#: erpnext/stock/doctype/packing_slip/packing_slip.json
msgid "From Package No."
@@ -19877,11 +20155,6 @@ msgstr ""
msgid "From Posting Date"
msgstr ""
-#. Label of the prospect_name (Link) field in DocType 'Customer'
-#: erpnext/selling/doctype/customer/customer.json
-msgid "From Prospect"
-msgstr ""
-
#. Label of the from_range (Float) field in DocType 'Item Attribute'
#. Label of the from_range (Float) field in DocType 'Item Variant Attribute'
#: erpnext/stock/doctype/item_attribute/item_attribute.json
@@ -20290,7 +20563,7 @@ msgstr ""
msgid "General Ledger"
msgstr ""
-#: erpnext/stock/doctype/warehouse/warehouse.js:77
+#: erpnext/stock/doctype/warehouse/warehouse.js:82
msgctxt "Warehouse"
msgid "General Ledger"
msgstr ""
@@ -20349,7 +20622,7 @@ msgstr ""
msgid "Generate To Delete List"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:470
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:472
msgid "Generate To Delete list first"
msgstr ""
@@ -20454,8 +20727,8 @@ msgstr ""
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:325
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:359
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:1125
-#: erpnext/buying/doctype/purchase_order/purchase_order.js:561
-#: erpnext/buying/doctype/purchase_order/purchase_order.js:584
+#: erpnext/buying/doctype/purchase_order/purchase_order.js:540
+#: erpnext/buying/doctype/purchase_order/purchase_order.js:563
#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:376
#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:398
#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:443
@@ -20480,7 +20753,7 @@ msgstr ""
#: erpnext/stock/doctype/stock_entry/stock_entry.js:398
#: erpnext/stock/doctype/stock_entry/stock_entry.js:431
#: erpnext/stock/doctype/stock_entry/stock_entry.js:522
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:679
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:696
#: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:164
msgid "Get Items From"
msgstr ""
@@ -20496,8 +20769,8 @@ msgid "Get Items for Purchase Only"
msgstr ""
#: erpnext/stock/doctype/material_request/material_request.js:346
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:715
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:728
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:732
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:745
msgid "Get Items from BOM"
msgstr ""
@@ -20505,12 +20778,6 @@ msgstr ""
msgid "Get Items from Material Requests against this Supplier"
msgstr ""
-#. Label of the get_items_from_open_material_requests (Button) field in DocType
-#. 'Purchase Order'
-#: erpnext/buying/doctype/purchase_order/purchase_order.json
-msgid "Get Items from Open Material Requests"
-msgstr ""
-
#: erpnext/public/js/controllers/buying.js:604
msgid "Get Items from Product Bundle"
msgstr ""
@@ -20597,10 +20864,6 @@ msgstr ""
msgid "Get Sub Assembly Items"
msgstr ""
-#: erpnext/buying/doctype/supplier/supplier.js:115
-msgid "Get Supplier Group Details"
-msgstr ""
-
#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:457
#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:477
msgid "Get Suppliers"
@@ -20763,6 +21026,7 @@ msgstr ""
#. Option for the 'Apply Discount On' (Select) field in DocType 'Pricing Rule'
#. Option for the 'Apply Additional Discount On' (Select) field in DocType
#. 'Purchase Invoice'
+#. Label of the base_grand_total (Currency) field in DocType 'Purchase Invoice'
#. Label of the grand_total (Currency) field in DocType 'Purchase Invoice'
#. Option for the 'Apply Additional Discount On' (Select) field in DocType
#. 'Sales Invoice'
@@ -20771,6 +21035,7 @@ msgstr ""
#. 'Subscription'
#. Option for the 'Apply Additional Discount On' (Select) field in DocType
#. 'Purchase Order'
+#. Label of the base_grand_total (Currency) field in DocType 'Purchase Order'
#. Label of the grand_total (Currency) field in DocType 'Purchase Order'
#. Option for the 'Apply Additional Discount On' (Select) field in DocType
#. 'Supplier Quotation'
@@ -20782,16 +21047,19 @@ msgstr ""
#. Label of the grand_total (Currency) field in DocType 'Quotation'
#. Option for the 'Apply Additional Discount On' (Select) field in DocType
#. 'Sales Order'
+#. Label of the base_grand_total (Currency) field in DocType 'Sales Order'
#. Label of the grand_total (Currency) field in DocType 'Sales Order'
#. Option for the 'Based On' (Select) field in DocType 'Authorization Rule'
#. Option for the 'Apply Additional Discount On' (Select) field in DocType
#. 'Delivery Note'
+#. Label of the base_grand_total (Currency) field in DocType 'Delivery Note'
#. Label of the grand_total (Currency) field in DocType 'Delivery Note'
#. Label of the grand_total (Currency) field in DocType 'Delivery Stop'
#. Label of the grand_total (Currency) field in DocType 'Landed Cost Purchase
#. Receipt'
#. Option for the 'Apply Additional Discount On' (Select) field in DocType
#. 'Purchase Receipt'
+#. Label of the base_grand_total (Currency) field in DocType 'Purchase Receipt'
#. Label of the grand_total (Currency) field in DocType 'Purchase Receipt'
#: erpnext/accounts/doctype/dunning/dunning.json
#: erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json
@@ -20826,26 +21094,19 @@ msgstr ""
msgid "Grand Total"
msgstr ""
-#. Label of the base_grand_total (Currency) field in DocType 'POS Invoice'
-#. Label of the base_grand_total (Currency) field in DocType 'Purchase Invoice'
#. Label of the base_grand_total (Currency) field in DocType 'Sales Invoice'
-#. Label of the base_grand_total (Currency) field in DocType 'Purchase Order'
+#: erpnext/accounts/doctype/sales_invoice/sales_invoice.json
+msgid "Grand Total (Company Currency"
+msgstr ""
+
+#. Label of the base_grand_total (Currency) field in DocType 'POS Invoice'
#. Label of the base_grand_total (Currency) field in DocType 'Supplier
#. Quotation'
#. Label of the base_grand_total (Currency) field in DocType 'Quotation'
-#. Label of the base_grand_total (Currency) field in DocType 'Sales Order'
-#. Label of the base_grand_total (Currency) field in DocType 'Delivery Note'
-#. Label of the base_grand_total (Currency) field in DocType 'Purchase Receipt'
#: erpnext/accounts/doctype/pos_invoice/pos_invoice.json
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
-#: erpnext/accounts/doctype/sales_invoice/sales_invoice.json
#: erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py:169
-#: erpnext/buying/doctype/purchase_order/purchase_order.json
#: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
#: erpnext/selling/doctype/quotation/quotation.json
-#: erpnext/selling/doctype/sales_order/sales_order.json
-#: erpnext/stock/doctype/delivery_note/delivery_note.json
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
msgid "Grand Total (Company Currency)"
msgstr ""
@@ -20853,6 +21114,10 @@ msgstr ""
msgid "Grand Total (Transaction Currency)"
msgstr ""
+#: erpnext/accounts/doctype/payment_request/payment_request.py:125
+msgid "Grand Total must match sum of Payment References"
+msgstr ""
+
#. Label of the grant_commission (Check) field in DocType 'POS Invoice Item'
#. Label of the grant_commission (Check) field in DocType 'Sales Invoice Item'
#. Label of the grant_commission (Check) field in DocType 'Sales Order Item'
@@ -20866,7 +21131,7 @@ msgstr ""
msgid "Grant Commission"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:902
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:906
msgid "Greater Than Amount"
msgstr ""
@@ -21006,7 +21271,7 @@ msgstr ""
msgid "Group by Voucher"
msgstr ""
-#: erpnext/stock/utils.py:416
+#: erpnext/stock/utils.py:417
msgid "Group node warehouse is not allowed to select for transactions"
msgstr ""
@@ -21282,7 +21547,7 @@ msgstr ""
msgid "Here are the error logs for the aforementioned failed depreciation entries: {0}"
msgstr ""
-#: erpnext/stock/stock_ledger.py:1998
+#: erpnext/stock/stock_ledger.py:1996
msgid "Here are the options to proceed:"
msgstr ""
@@ -21310,7 +21575,7 @@ msgstr ""
msgid "Hertz"
msgstr ""
-#: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py:525
+#: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py:533
msgid "Hi,"
msgstr ""
@@ -21772,7 +22037,7 @@ msgstr ""
#. Description of the 'Allow Internal Transfers at Arm's Length Price' (Check)
#. field in DocType 'Stock Settings'
#: erpnext/stock/doctype/stock_settings/stock_settings.json
-msgid "If enabled, the item rate won't adjust to the valuation rate during internal transfers, but accounting will still use the valuation rate."
+msgid "If enabled, the item rate won't adjust to the valuation rate during internal transfers, but accounting will still use the valuation rate. This will allow the user to specify a different rate for printing or taxation purposes."
msgstr ""
#. Description of the 'Validate Material Transfer Warehouses' (Check) field in
@@ -21867,7 +22132,7 @@ msgstr ""
msgid "If no taxes are set, and Taxes and Charges Template is selected, the system will automatically apply the taxes from the chosen template."
msgstr ""
-#: erpnext/stock/stock_ledger.py:2008
+#: erpnext/stock/stock_ledger.py:2006
msgid "If not, you can Cancel / Submit this entry"
msgstr ""
@@ -21896,7 +22161,7 @@ msgstr ""
msgid "If the account is frozen, entries are allowed to restricted users."
msgstr ""
-#: erpnext/stock/stock_ledger.py:2001
+#: erpnext/stock/stock_ledger.py:1999
msgid "If the item is transacting as a Zero Valuation Rate item in this entry, please enable 'Allow Zero Valuation Rate' in the {0} Item table."
msgstr ""
@@ -22208,7 +22473,7 @@ msgstr ""
msgid "Import Successful"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:562
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:564
msgid "Import Summary"
msgstr ""
@@ -22288,7 +22553,7 @@ msgstr ""
#: erpnext/stock/report/available_serial_no/available_serial_no.py:112
#: erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py:82
-#: erpnext/stock/report/stock_balance/stock_balance.py:473
+#: erpnext/stock/report/stock_balance/stock_balance.py:504
#: erpnext/stock/report/stock_ledger/stock_ledger.py:237
msgid "In Qty"
msgstr ""
@@ -22320,19 +22585,25 @@ msgstr ""
msgid "In Transit Warehouse"
msgstr ""
-#: erpnext/stock/report/stock_balance/stock_balance.py:479
+#: erpnext/stock/report/stock_balance/stock_balance.py:510
msgid "In Value"
msgstr ""
#. Label of the in_words (Small Text) field in DocType 'Payment Entry'
#. Label of the in_words (Data) field in DocType 'POS Invoice'
+#. Label of the base_in_words (Data) field in DocType 'Purchase Invoice'
#. Label of the in_words (Data) field in DocType 'Purchase Invoice'
+#. Label of the base_in_words (Small Text) field in DocType 'Sales Invoice'
#. Label of the in_words (Small Text) field in DocType 'Sales Invoice'
+#. Label of the base_in_words (Data) field in DocType 'Purchase Order'
#. Label of the in_words (Data) field in DocType 'Purchase Order'
#. Label of the in_words (Data) field in DocType 'Supplier Quotation'
#. Label of the in_words (Data) field in DocType 'Quotation'
+#. Label of the base_in_words (Data) field in DocType 'Sales Order'
#. Label of the in_words (Data) field in DocType 'Sales Order'
+#. Label of the base_in_words (Data) field in DocType 'Delivery Note'
#. Label of the in_words (Data) field in DocType 'Delivery Note'
+#. Label of the base_in_words (Data) field in DocType 'Purchase Receipt'
#. Label of the in_words (Data) field in DocType 'Purchase Receipt'
#. Label of the in_words (Data) field in DocType 'Subcontracting Receipt'
#: erpnext/accounts/doctype/payment_entry/payment_entry.json
@@ -22351,24 +22622,12 @@ msgstr ""
#. Label of the base_in_words (Small Text) field in DocType 'Payment Entry'
#. Label of the base_in_words (Data) field in DocType 'POS Invoice'
-#. Label of the base_in_words (Data) field in DocType 'Purchase Invoice'
-#. Label of the base_in_words (Small Text) field in DocType 'Sales Invoice'
-#. Label of the base_in_words (Data) field in DocType 'Purchase Order'
#. Label of the base_in_words (Data) field in DocType 'Supplier Quotation'
#. Label of the base_in_words (Data) field in DocType 'Quotation'
-#. Label of the base_in_words (Data) field in DocType 'Sales Order'
-#. Label of the base_in_words (Data) field in DocType 'Delivery Note'
-#. Label of the base_in_words (Data) field in DocType 'Purchase Receipt'
#: erpnext/accounts/doctype/payment_entry/payment_entry.json
#: erpnext/accounts/doctype/pos_invoice/pos_invoice.json
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
-#: erpnext/accounts/doctype/sales_invoice/sales_invoice.json
-#: erpnext/buying/doctype/purchase_order/purchase_order.json
#: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
#: erpnext/selling/doctype/quotation/quotation.json
-#: erpnext/selling/doctype/sales_order/sales_order.json
-#: erpnext/stock/doctype/delivery_note/delivery_note.json
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
msgid "In Words (Company Currency)"
msgstr ""
@@ -22377,23 +22636,20 @@ msgstr ""
msgid "In Words (Export) will be visible once you save the Delivery Note."
msgstr ""
-#. Description of the 'In Words (Company Currency)' (Data) field in DocType
-#. 'Delivery Note'
+#. Description of the 'In Words' (Data) field in DocType 'Delivery Note'
#: erpnext/stock/doctype/delivery_note/delivery_note.json
msgid "In Words will be visible once you save the Delivery Note."
msgstr ""
#. Description of the 'In Words (Company Currency)' (Data) field in DocType
#. 'POS Invoice'
-#. Description of the 'In Words (Company Currency)' (Small Text) field in
-#. DocType 'Sales Invoice'
+#. Description of the 'In Words' (Small Text) field in DocType 'Sales Invoice'
#: erpnext/accounts/doctype/pos_invoice/pos_invoice.json
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.json
msgid "In Words will be visible once you save the Sales Invoice."
msgstr ""
-#. Description of the 'In Words (Company Currency)' (Data) field in DocType
-#. 'Sales Order'
+#. Description of the 'In Words' (Data) field in DocType 'Sales Order'
#: erpnext/selling/doctype/sales_order/sales_order.json
msgid "In Words will be visible once you save the Sales Order."
msgstr ""
@@ -22664,7 +22920,7 @@ msgstr ""
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:439
#: erpnext/accounts/report/account_balance/account_balance.js:27
#: erpnext/accounts/report/financial_statements.py:773
-#: erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py:180
+#: erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py:181
#: erpnext/accounts/report/profitability_analysis/profitability_analysis.py:192
msgid "Income"
msgstr ""
@@ -22951,7 +23207,7 @@ msgid "Inspected By"
msgstr ""
#: erpnext/controllers/stock_controller.py:1453
-#: erpnext/manufacturing/doctype/job_card/job_card.py:817
+#: erpnext/manufacturing/doctype/job_card/job_card.py:815
msgid "Inspection Rejected"
msgstr ""
@@ -22975,7 +23231,7 @@ msgid "Inspection Required before Purchase"
msgstr ""
#: erpnext/controllers/stock_controller.py:1438
-#: erpnext/manufacturing/doctype/job_card/job_card.py:798
+#: erpnext/manufacturing/doctype/job_card/job_card.py:796
msgid "Inspection Submission"
msgstr ""
@@ -23055,11 +23311,11 @@ msgstr ""
#: erpnext/stock/doctype/pick_list/pick_list.py:1019
#: erpnext/stock/doctype/stock_entry/stock_entry.py:957
#: erpnext/stock/serial_batch_bundle.py:1197 erpnext/stock/stock_ledger.py:1710
-#: erpnext/stock/stock_ledger.py:2170
+#: erpnext/stock/stock_ledger.py:2166
msgid "Insufficient Stock"
msgstr ""
-#: erpnext/stock/stock_ledger.py:2185
+#: erpnext/stock/stock_ledger.py:2181
msgid "Insufficient Stock for Batch"
msgstr ""
@@ -23195,7 +23451,7 @@ msgstr ""
msgid "Interest Income"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2975
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2987
msgid "Interest and/or dunning fee"
msgstr ""
@@ -23217,10 +23473,10 @@ msgstr ""
#. Label of the internal_customer_section (Section Break) field in DocType
#. 'Customer'
#: erpnext/selling/doctype/customer/customer.json
-msgid "Internal Customer"
+msgid "Internal Customer Accounting"
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:230
+#: erpnext/selling/doctype/customer/customer.py:254
msgid "Internal Customer for company {0} already exists"
msgstr ""
@@ -23243,10 +23499,10 @@ msgstr ""
#. Label of the internal_supplier_section (Section Break) field in DocType
#. 'Supplier'
#: erpnext/buying/doctype/supplier/supplier.json
-msgid "Internal Supplier"
+msgid "Internal Supplier Accounting"
msgstr ""
-#: erpnext/buying/doctype/supplier/supplier.py:182
+#: erpnext/buying/doctype/supplier/supplier.py:181
msgid "Internal Supplier for company {0} already exists"
msgstr ""
@@ -23306,11 +23562,11 @@ msgid "Invalid Account"
msgstr ""
#: erpnext/accounts/doctype/payment_entry/payment_entry.py:400
-#: erpnext/accounts/doctype/payment_request/payment_request.py:879
+#: erpnext/accounts/doctype/payment_request/payment_request.py:1004
msgid "Invalid Allocated Amount"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:124
+#: erpnext/accounts/doctype/payment_request/payment_request.py:147
msgid "Invalid Amount"
msgstr ""
@@ -23326,11 +23582,11 @@ msgstr ""
msgid "Invalid Barcode. There is no Item attached to this barcode."
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:3099
+#: erpnext/public/js/controllers/transaction.js:3206
msgid "Invalid Blanket Order for the selected Customer and Item"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:496
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:498
msgid "Invalid CSV format. Expected column: doctype_name"
msgstr ""
@@ -23338,7 +23594,7 @@ msgstr ""
msgid "Invalid Child Procedure"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:225
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:227
msgid "Invalid Company Field"
msgstr ""
@@ -23360,7 +23616,7 @@ msgstr ""
msgid "Invalid Discount"
msgstr ""
-#: erpnext/controllers/taxes_and_totals.py:798
+#: erpnext/controllers/taxes_and_totals.py:803
msgid "Invalid Discount Amount"
msgstr ""
@@ -23489,7 +23745,7 @@ msgstr ""
msgid "Invalid Warehouse"
msgstr ""
-#: erpnext/accounts/doctype/bank_transaction/bank_transaction.py:398
+#: erpnext/accounts/doctype/bank_transaction/bank_transaction.py:399
msgid "Invalid amount in accounting entries of {} {} for Account {}: {}"
msgstr ""
@@ -23497,7 +23753,7 @@ msgstr ""
msgid "Invalid condition expression"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1053
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1055
msgid "Invalid file URL"
msgstr ""
@@ -23513,7 +23769,7 @@ msgstr ""
msgid "Invalid naming series (. missing) for {0}"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:547
+#: erpnext/accounts/doctype/payment_request/payment_request.py:570
msgid "Invalid parameter. 'dn' should be of type str"
msgstr ""
@@ -23550,7 +23806,7 @@ msgid "Invalid {0}: {1}"
msgstr ""
#. Label of the inventory_section (Tab Break) field in DocType 'Item'
-#: erpnext/setup/install.py:327 erpnext/stock/doctype/item/item.json
+#: erpnext/setup/install.py:358 erpnext/stock/doctype/item/item.json
msgid "Inventory"
msgstr ""
@@ -23589,6 +23845,12 @@ msgstr ""
msgid "Inventory Turnover Ratio"
msgstr ""
+#. Label of the inventory_valuation_section (Section Break) field in DocType
+#. 'Item'
+#: erpnext/stock/doctype/item/item.json
+msgid "Inventory Valuation"
+msgstr ""
+
#: erpnext/setup/setup_wizard/data/industry_type.txt:29
msgid "Investment Banking"
msgstr ""
@@ -24447,7 +24709,7 @@ msgstr ""
msgid "It can take upto few hours for accurate stock values to be visible after merging items."
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2501
+#: erpnext/public/js/controllers/transaction.js:2608
msgid "It is needed to fetch Item Details."
msgstr ""
@@ -24506,7 +24768,7 @@ msgstr ""
#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:33
#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:204
#: erpnext/buying/workspace/buying/buying.json
-#: erpnext/controllers/taxes_and_totals.py:1207
+#: erpnext/controllers/taxes_and_totals.py:1212
#: erpnext/manufacturing/doctype/blanket_order/blanket_order.json
#: erpnext/manufacturing/doctype/bom/bom.js:1058
#: erpnext/manufacturing/doctype/bom/bom.json
@@ -24563,8 +24825,8 @@ msgstr ""
#: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.js:28
#: erpnext/stock/report/stock_ageing/stock_ageing.js:46
#: erpnext/stock/report/stock_analytics/stock_analytics.js:15
-#: erpnext/stock/report/stock_analytics/stock_analytics.py:28
-#: erpnext/stock/report/stock_balance/stock_balance.py:400
+#: erpnext/stock/report/stock_analytics/stock_analytics.py:43
+#: erpnext/stock/report/stock_balance/stock_balance.py:431
#: erpnext/stock/report/stock_ledger/stock_ledger.py:207
#: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.js:27
#: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:51
@@ -24580,10 +24842,11 @@ msgstr ""
#: erpnext/templates/form_grid/stock_entry_grid.html:8
#: erpnext/templates/generators/bom.html:19
#: erpnext/templates/pages/material_request_info.html:42
-#: erpnext/templates/pages/order.html:94 erpnext/workspace_sidebar/buying.json
-#: erpnext/workspace_sidebar/home.json
+#: erpnext/templates/pages/order.html:94 erpnext/workspace_sidebar/assets.json
+#: erpnext/workspace_sidebar/buying.json erpnext/workspace_sidebar/home.json
#: erpnext/workspace_sidebar/manufacturing.json
#: erpnext/workspace_sidebar/selling.json erpnext/workspace_sidebar/stock.json
+#: erpnext/workspace_sidebar/subcontracting.json
#: erpnext/workspace_sidebar/subscription.json
msgid "Item"
msgstr ""
@@ -24810,7 +25073,7 @@ msgstr ""
#: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:86
#: erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.py:119
#: erpnext/projects/doctype/timesheet/timesheet.js:214
-#: erpnext/public/js/controllers/transaction.js:2795
+#: erpnext/public/js/controllers/transaction.js:2902
#: erpnext/public/js/stock_reservation.js:112
#: erpnext/public/js/stock_reservation.js:318 erpnext/public/js/utils.js:488
#: erpnext/public/js/utils.js:645
@@ -25072,9 +25335,9 @@ msgstr ""
#: erpnext/stock/report/product_bundle_balance/product_bundle_balance.py:100
#: erpnext/stock/report/stock_ageing/stock_ageing.py:141
#: erpnext/stock/report/stock_analytics/stock_analytics.js:8
-#: erpnext/stock/report/stock_analytics/stock_analytics.py:37
+#: erpnext/stock/report/stock_analytics/stock_analytics.py:52
#: erpnext/stock/report/stock_balance/stock_balance.js:32
-#: erpnext/stock/report/stock_balance/stock_balance.py:408
+#: erpnext/stock/report/stock_balance/stock_balance.py:439
#: erpnext/stock/report/stock_ledger/stock_ledger.js:71
#: erpnext/stock/report/stock_ledger/stock_ledger.py:265
#: erpnext/stock/report/stock_projected_qty/stock_projected_qty.js:39
@@ -25292,7 +25555,7 @@ msgstr ""
#: erpnext/manufacturing/report/production_planning_report/production_planning_report.py:371
#: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:92
#: erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py:138
-#: erpnext/public/js/controllers/transaction.js:2801
+#: erpnext/public/js/controllers/transaction.js:2908
#: erpnext/public/js/utils.js:740
#: erpnext/selling/doctype/quotation_item/quotation_item.json
#: erpnext/selling/doctype/sales_order/sales_order.js:1252
@@ -25332,8 +25595,8 @@ msgstr ""
#: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:131
#: erpnext/stock/report/serial_no_and_batch_traceability/serial_no_and_batch_traceability.py:440
#: erpnext/stock/report/stock_ageing/stock_ageing.py:138
-#: erpnext/stock/report/stock_analytics/stock_analytics.py:30
-#: erpnext/stock/report/stock_balance/stock_balance.py:406
+#: erpnext/stock/report/stock_analytics/stock_analytics.py:45
+#: erpnext/stock/report/stock_balance/stock_balance.py:437
#: erpnext/stock/report/stock_ledger/stock_ledger.py:213
#: erpnext/stock/report/stock_projected_qty/stock_projected_qty.py:110
#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:31
@@ -25598,7 +25861,7 @@ msgstr ""
msgid "Item Variants updated"
msgstr ""
-#: erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.py:85
+#: erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.py:86
msgid "Item Warehouse based reposting has been enabled."
msgstr ""
@@ -25672,8 +25935,11 @@ msgstr ""
#. Label of the section_break_rrrx (Section Break) field in DocType 'Sales
#. Forecast'
+#. Label of the item_and_warehouse_section (Section Break) field in DocType
+#. 'Bin'
#. Option for the 'Based On' (Select) field in DocType 'Repost Item Valuation'
#: erpnext/manufacturing/doctype/sales_forecast/sales_forecast.json
+#: erpnext/stock/doctype/bin/bin.json
#: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json
msgid "Item and Warehouse"
msgstr ""
@@ -25735,7 +26001,7 @@ msgstr ""
msgid "Item valuation rate is recalculated considering landed cost voucher amount"
msgstr ""
-#: erpnext/stock/utils.py:531
+#: erpnext/stock/utils.py:532
msgid "Item valuation reposting in progress. Report might show incorrect item valuation."
msgstr ""
@@ -25768,7 +26034,7 @@ msgstr ""
msgid "Item {0} does not exist."
msgstr ""
-#: erpnext/controllers/selling_controller.py:844
+#: erpnext/controllers/selling_controller.py:851
msgid "Item {0} entered multiple times."
msgstr ""
@@ -26037,7 +26303,7 @@ msgstr ""
#: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
#: erpnext/manufacturing/doctype/bom/bom.json
#: erpnext/manufacturing/doctype/job_card/job_card.json
-#: erpnext/manufacturing/doctype/job_card/job_card.py:982
+#: erpnext/manufacturing/doctype/job_card/job_card.py:980
#: erpnext/manufacturing/doctype/operation/operation.json
#: erpnext/manufacturing/doctype/work_order/work_order.js:396
#: erpnext/manufacturing/doctype/work_order/work_order.json
@@ -26101,7 +26367,7 @@ msgstr ""
msgid "Job Card and Capacity Planning"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1458
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1456
msgid "Job Card {0} has been completed"
msgstr ""
@@ -26177,7 +26443,7 @@ msgstr ""
msgid "Job Worker Warehouse"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:2627
+#: erpnext/manufacturing/doctype/work_order/work_order.py:2623
msgid "Job card {0} created"
msgstr ""
@@ -26204,7 +26470,7 @@ msgstr ""
msgid "Journal Entries"
msgstr ""
-#: erpnext/accounts/utils.py:1063
+#: erpnext/accounts/utils.py:1064
msgid "Journal Entries {0} are un-linked"
msgstr ""
@@ -26393,7 +26659,7 @@ msgstr ""
msgid "Kilowatt-Hour"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:984
+#: erpnext/manufacturing/doctype/job_card/job_card.py:982
msgid "Kindly cancel the Manufacturing Entries first against the work order {0}."
msgstr ""
@@ -26599,7 +26865,7 @@ msgstr ""
msgid "Latest"
msgstr ""
-#: erpnext/stock/report/stock_balance/stock_balance.py:519
+#: erpnext/stock/report/stock_balance/stock_balance.py:550
msgid "Latest Age"
msgstr ""
@@ -26616,6 +26882,7 @@ msgstr ""
#. Name of a DocType
#. Option for the 'Status' (Select) field in DocType 'Lead'
#. Label of the lead (Link) field in DocType 'Prospect Lead'
+#. Label of the lead_name (Link) field in DocType 'Customer'
#. Label of a Link in the Home Workspace
#. Label of the lead (Link) field in DocType 'Issue'
#. Label of a Workspace Sidebar Item
@@ -26627,7 +26894,9 @@ msgstr ""
#: erpnext/crm/report/lead_details/lead_details.py:18
#: erpnext/crm/report/prospects_engaged_but_not_converted/prospects_engaged_but_not_converted.js:8
#: erpnext/crm/report/prospects_engaged_but_not_converted/prospects_engaged_but_not_converted.py:28
-#: erpnext/public/js/communication.js:25 erpnext/setup/workspace/home/home.json
+#: erpnext/public/js/communication.js:25
+#: erpnext/selling/doctype/customer/customer.json
+#: erpnext/setup/workspace/home/home.json
#: erpnext/support/doctype/issue/issue.json erpnext/workspace_sidebar/crm.json
msgid "Lead"
msgstr ""
@@ -26739,10 +27008,22 @@ msgstr ""
msgid "Leads help you get business, add all your contacts and more as your leads"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Learn Asset'
+#: erpnext/assets/onboarding_step/learn_asset/learn_asset.json
+msgid "Learn Asset"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Learn Subcontracting'
+#: erpnext/subcontracting/onboarding_step/learn_subcontracting/learn_subcontracting.json
+msgid "Learn Subcontracting"
+msgstr ""
+
#. Description of the 'Enable Common Party Accounting' (Check) field in DocType
#. 'Accounts Settings'
#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
-msgid "Learn about Common Party"
+msgid "Learn about Common Party"
msgstr ""
#. Label of the leave_encashed (Select) field in DocType 'Employee'
@@ -26842,7 +27123,7 @@ msgstr ""
msgid "Length (cm)"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:907
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:911
msgid "Less Than Amount"
msgstr ""
@@ -26871,7 +27152,7 @@ msgstr ""
msgid "Lft"
msgstr ""
-#: erpnext/accounts/report/balance_sheet/balance_sheet.py:251
+#: erpnext/accounts/report/balance_sheet/balance_sheet.py:252
msgid "Liabilities"
msgstr ""
@@ -26947,7 +27228,7 @@ msgstr ""
msgid "Link existing Quality Procedure."
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.js:603
+#: erpnext/buying/doctype/purchase_order/purchase_order.js:582
msgid "Link to Material Request"
msgstr ""
@@ -26956,7 +27237,7 @@ msgstr ""
msgid "Link to Material Requests"
msgstr ""
-#: erpnext/buying/doctype/supplier/supplier.js:127
+#: erpnext/buying/doctype/supplier/supplier.js:125
msgid "Link with Customer"
msgstr ""
@@ -26985,12 +27266,12 @@ msgstr ""
msgid "Linked with submitted documents"
msgstr ""
-#: erpnext/buying/doctype/supplier/supplier.js:212
+#: erpnext/buying/doctype/supplier/supplier.js:210
#: erpnext/selling/doctype/customer/customer.js:279
msgid "Linking Failed"
msgstr ""
-#: erpnext/buying/doctype/supplier/supplier.js:211
+#: erpnext/buying/doctype/supplier/supplier.js:209
msgid "Linking to Customer Failed. Please try again."
msgstr ""
@@ -27697,6 +27978,12 @@ msgstr ""
msgid "Manage cost of operations"
msgstr ""
+#. Description of the 'Enable tracking sales commissions' (Check) field in
+#. DocType 'Selling Settings'
+#: erpnext/selling/doctype/selling_settings/selling_settings.json
+msgid "Manage sales partner's and sales team's commissions"
+msgstr ""
+
#: erpnext/utilities/activation.py:95
msgid "Manage your orders"
msgstr ""
@@ -27921,11 +28208,12 @@ msgstr ""
#: erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json
#: erpnext/manufacturing/workspace/manufacturing/manufacturing.json
#: erpnext/selling/doctype/sales_order/sales_order_dashboard.py:29
-#: erpnext/setup/doctype/company/company.json erpnext/setup/install.py:332
+#: erpnext/setup/doctype/company/company.json erpnext/setup/install.py:363
#: erpnext/setup/setup_wizard/data/industry_type.txt:31
#: erpnext/stock/doctype/batch/batch.json erpnext/stock/doctype/item/item.json
#: erpnext/stock/doctype/item_lead_time/item_lead_time.json
#: erpnext/stock/doctype/material_request/material_request_dashboard.py:18
+#: erpnext/stock/doctype/pick_list/pick_list_dashboard.py:20
#: erpnext/subcontracting/doctype/subcontracting_inward_order/subcontracting_inward_order_dashboard.py:13
#: erpnext/workspace_sidebar/manufacturing.json
msgid "Manufacturing"
@@ -27984,6 +28272,11 @@ msgstr ""
msgid "Manufacturing Settings"
msgstr ""
+#. Title of the Module Onboarding 'Manufacturing Onboarding'
+#: erpnext/manufacturing/module_onboarding/manufacturing_onboarding/manufacturing_onboarding.json
+msgid "Manufacturing Setup"
+msgstr ""
+
#. Label of the manufacturing_time_in_mins (Int) field in DocType 'Item Lead
#. Time'
#. Label of the manufacturing_time_tab (Tab Break) field in DocType 'Item Lead
@@ -28196,7 +28489,7 @@ msgstr ""
msgid "Material Consumption for Manufacture"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:559
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:576
msgid "Material Consumption is not set in Manufacturing Settings."
msgstr ""
@@ -28262,7 +28555,7 @@ msgstr ""
#. Service Item'
#. Label of a Workspace Sidebar Item
#: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
-#: erpnext/buying/doctype/purchase_order/purchase_order.js:540
+#: erpnext/buying/doctype/purchase_order/purchase_order.js:519
#: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:357
#: erpnext/buying/doctype/request_for_quotation_item/request_for_quotation_item.json
@@ -28505,8 +28798,8 @@ msgstr ""
msgid "Materials are already received against the {0} {1}"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:183
-#: erpnext/manufacturing/doctype/job_card/job_card.py:838
+#: erpnext/manufacturing/doctype/job_card/job_card.py:181
+#: erpnext/manufacturing/doctype/job_card/job_card.py:836
msgid "Materials needs to be transferred to the work in progress warehouse for the job card {0}"
msgstr ""
@@ -28656,7 +28949,7 @@ msgstr ""
msgid "Megawatt"
msgstr ""
-#: erpnext/stock/stock_ledger.py:2014
+#: erpnext/stock/stock_ledger.py:2012
msgid "Mention Valuation Rate in the Item master."
msgstr ""
@@ -28743,7 +29036,7 @@ msgstr ""
msgid "Messages greater than 160 characters will be split into multiple messages"
msgstr ""
-#: erpnext/setup/install.py:127
+#: erpnext/setup/install.py:128
msgid "Messaging CRM Campaign"
msgstr ""
@@ -29044,7 +29337,7 @@ msgstr ""
msgid "Missing Cost Center"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1132
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1144
msgid "Missing Default in Company"
msgstr ""
@@ -29068,6 +29361,10 @@ msgstr ""
msgid "Missing Item"
msgstr ""
+#: erpnext/setup/doctype/employee/employee.py:445
+msgid "Missing Parameter"
+msgstr ""
+
#: erpnext/utilities/__init__.py:53
msgid "Missing Payments App"
msgstr ""
@@ -29085,7 +29382,7 @@ msgid "Missing required filter: {0}"
msgstr ""
#: erpnext/manufacturing/doctype/bom/bom.py:1183
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1462
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1452
msgid "Missing value"
msgstr ""
@@ -29329,7 +29626,7 @@ msgstr ""
msgid "Multi-level BOM Creator"
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:403
+#: erpnext/selling/doctype/customer/customer.py:427
msgid "Multiple Loyalty Programs found for Customer {}. Please select manually."
msgstr ""
@@ -29372,7 +29669,7 @@ msgid "Music"
msgstr ""
#. Label of the must_be_whole_number (Check) field in DocType 'UOM'
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1409
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1399
#: erpnext/setup/doctype/uom/uom.json
#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:267
#: erpnext/utilities/transaction_base.py:566
@@ -29452,7 +29749,7 @@ msgstr ""
msgid "Naming Series is mandatory"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:934
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:936
msgid "Naming series '{0}' for DocType '{1}' does not contain standard '.' or '{{' separator. Using fallback extraction."
msgstr ""
@@ -29500,7 +29797,7 @@ msgstr ""
msgid "Negative Quantity is not allowed"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1492
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1502
#: erpnext/stock/serial_batch_bundle.py:1520
msgid "Negative Stock Error"
msgstr ""
@@ -29609,7 +29906,7 @@ msgid "Net Change in Accounts Receivable"
msgstr ""
#: erpnext/accounts/report/cash_flow/cash_flow.py:134
-#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:254
+#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:257
msgid "Net Change in Cash"
msgstr ""
@@ -29642,7 +29939,7 @@ msgstr ""
msgid "Net Profit Ratio"
msgstr ""
-#: erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py:184
+#: erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py:185
msgid "Net Profit/Loss"
msgstr ""
@@ -29984,7 +30281,7 @@ msgstr ""
msgid "New Workplace"
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:368
+#: erpnext/selling/doctype/customer/customer.py:392
msgid "New credit limit is less than current outstanding amount for the customer. Credit limit has to be atleast {0}"
msgstr ""
@@ -30064,7 +30361,7 @@ msgstr ""
msgid "No Delivery Note selected for Customer {}"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:751
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:753
msgid "No DocTypes in To Delete list. Please generate or import the list before submitting."
msgstr ""
@@ -30080,7 +30377,7 @@ msgstr ""
msgid "No Item with Serial No {0}"
msgstr ""
-#: erpnext/controllers/subcontracting_controller.py:1484
+#: erpnext/controllers/subcontracting_controller.py:1488
msgid "No Items selected for transfer."
msgstr ""
@@ -30350,7 +30647,7 @@ msgstr ""
msgid "No outstanding invoices require exchange rate revaluation"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2415
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2427
msgid "No outstanding {0} found for the {1} {2} which qualify the filters you have specified."
msgstr ""
@@ -30358,6 +30655,10 @@ msgstr ""
msgid "No pending Material Requests found to link for the given items."
msgstr ""
+#: erpnext/public/js/controllers/transaction.js:468
+msgid "No pending payment schedules available."
+msgstr ""
+
#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:502
msgid "No primary email found for customer: {0}"
msgstr ""
@@ -30474,8 +30775,8 @@ msgid "None of the items have any change in quantity or value."
msgstr ""
#. Name of a UOM
-#: erpnext/setup/setup_wizard/data/uom_data.json erpnext/stock/utils.py:683
-#: erpnext/stock/utils.py:685
+#: erpnext/setup/setup_wizard/data/uom_data.json erpnext/stock/utils.py:684
+#: erpnext/stock/utils.py:686
msgid "Nos"
msgstr ""
@@ -30575,7 +30876,7 @@ msgstr ""
msgid "Note: Automatic log deletion only applies to logs of type Update Cost"
msgstr ""
-#: erpnext/accounts/party.py:697
+#: erpnext/accounts/party.py:685
msgid "Note: Due Date exceeds allowed {0} credit days by {1} day(s)"
msgstr ""
@@ -30957,6 +31258,11 @@ msgstr ""
msgid "On-machine press checks"
msgstr ""
+#. Title of the Module Onboarding 'Stock Onboarding'
+#: erpnext/selling/module_onboarding/stock_onboarding/stock_onboarding.json
+msgid "Onboarding for Stock!"
+msgstr ""
+
#. Description of the 'Release Date' (Date) field in DocType 'Purchase Invoice'
#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
msgid "Once set, this invoice will be on hold till the set date"
@@ -31002,7 +31308,7 @@ msgstr ""
msgid "Only CSV and Excel files can be used to for importing data. Please check the file format you are trying to upload"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1067
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1069
msgid "Only CSV files are allowed"
msgstr ""
@@ -31214,14 +31520,14 @@ msgstr ""
msgid "Opening & Closing"
msgstr ""
-#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:437
-#: erpnext/accounts/report/trial_balance/trial_balance.py:508
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:417
+#: erpnext/accounts/report/trial_balance/trial_balance.py:516
#: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:198
msgid "Opening (Cr)"
msgstr ""
-#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:430
-#: erpnext/accounts/report/trial_balance/trial_balance.py:501
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:410
+#: erpnext/accounts/report/trial_balance/trial_balance.py:509
#: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:191
msgid "Opening (Dr)"
msgstr ""
@@ -31350,7 +31656,7 @@ msgid "Opening Purchase Invoices have been created."
msgstr ""
#: erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py:81
-#: erpnext/stock/report/stock_balance/stock_balance.py:459
+#: erpnext/stock/report/stock_balance/stock_balance.py:490
msgid "Opening Qty"
msgstr ""
@@ -31370,7 +31676,7 @@ msgstr ""
msgid "Opening Time"
msgstr ""
-#: erpnext/stock/report/stock_balance/stock_balance.py:466
+#: erpnext/stock/report/stock_balance/stock_balance.py:497
msgid "Opening Value"
msgstr ""
@@ -31488,7 +31794,7 @@ msgstr ""
msgid "Operation Time"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1468
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1458
msgid "Operation Time must be greater than 0 for Operation {0}"
msgstr ""
@@ -31507,11 +31813,11 @@ msgstr ""
msgid "Operation {0} added multiple times in the work order {1}"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1231
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1229
msgid "Operation {0} does not belong to the work order {1}"
msgstr ""
-#: erpnext/manufacturing/doctype/workstation/workstation.py:432
+#: erpnext/manufacturing/doctype/workstation/workstation.py:433
msgid "Operation {0} longer than any available working hours in workstation {1}, break down the operation into multiple operations"
msgstr ""
@@ -31583,6 +31889,7 @@ msgstr ""
#. Option for the 'Status' (Select) field in DocType 'Lead'
#. Name of a DocType
#. Label of the opportunity (Link) field in DocType 'Prospect Opportunity'
+#. Label of the opportunity_name (Link) field in DocType 'Customer'
#. Label of the opportunity (Link) field in DocType 'Quotation'
#. Label of a Workspace Sidebar Item
#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:381
@@ -31596,6 +31903,7 @@ msgstr ""
#: erpnext/crm/report/lead_details/lead_details.js:36
#: erpnext/crm/report/lost_opportunity/lost_opportunity.py:17
#: erpnext/public/js/communication.js:35
+#: erpnext/selling/doctype/customer/customer.json
#: erpnext/selling/doctype/quotation/quotation.js:155
#: erpnext/selling/doctype/quotation/quotation.json
#: erpnext/workspace_sidebar/crm.json
@@ -31953,12 +32261,12 @@ msgstr ""
#: erpnext/stock/report/available_serial_no/available_serial_no.py:119
#: erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py:83
-#: erpnext/stock/report/stock_balance/stock_balance.py:481
+#: erpnext/stock/report/stock_balance/stock_balance.py:512
#: erpnext/stock/report/stock_ledger/stock_ledger.py:244
msgid "Out Qty"
msgstr ""
-#: erpnext/stock/report/stock_balance/stock_balance.py:487
+#: erpnext/stock/report/stock_balance/stock_balance.py:518
msgid "Out Value"
msgstr ""
@@ -32045,7 +32353,7 @@ msgstr ""
#: erpnext/accounts/doctype/cashier_closing/cashier_closing.json
#: erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json
#: erpnext/accounts/doctype/opening_invoice_creation_tool_item/opening_invoice_creation_tool_item.json
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:899
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:903
#: erpnext/accounts/doctype/payment_reconciliation_invoice/payment_reconciliation_invoice.json
#: erpnext/accounts/doctype/payment_request/payment_request.json
#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:300
@@ -32720,7 +33028,7 @@ msgstr ""
msgid "Paid Amount After Tax (Company Currency)"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1928
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1940
msgid "Paid Amount cannot be greater than total negative outstanding amount {0}"
msgstr ""
@@ -33345,7 +33653,7 @@ msgstr ""
msgid "Party Type"
msgstr ""
-#: erpnext/accounts/party.py:826
+#: erpnext/accounts/party.py:814
msgid "Party Type and Party can only be set for Receivable / Payable account
{0}"
msgstr ""
@@ -33358,7 +33666,7 @@ msgid "Party Type and Party is required for Receivable / Payable account {0}"
msgstr ""
#: erpnext/accounts/doctype/payment_entry/payment_entry.py:520
-#: erpnext/accounts/party.py:427
+#: erpnext/accounts/party.py:415
msgid "Party Type is mandatory"
msgstr ""
@@ -33575,7 +33883,7 @@ msgstr ""
msgid "Payment Entries"
msgstr ""
-#: erpnext/accounts/utils.py:1150
+#: erpnext/accounts/utils.py:1151
msgid "Payment Entries {0} are un-linked"
msgstr ""
@@ -33615,16 +33923,16 @@ msgstr ""
msgid "Payment Entry Reference"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:453
+#: erpnext/accounts/doctype/payment_request/payment_request.py:476
msgid "Payment Entry already exists"
msgstr ""
-#: erpnext/accounts/utils.py:649
+#: erpnext/accounts/utils.py:650
msgid "Payment Entry has been modified after you pulled it. Please pull it again."
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:131
-#: erpnext/accounts/doctype/payment_request/payment_request.py:559
+#: erpnext/accounts/doctype/payment_request/payment_request.py:154
+#: erpnext/accounts/doctype/payment_request/payment_request.py:636
msgid "Payment Entry is already created"
msgstr ""
@@ -33662,7 +33970,7 @@ msgstr ""
msgid "Payment Gateway Account"
msgstr ""
-#: erpnext/accounts/utils.py:1436
+#: erpnext/accounts/utils.py:1437
msgid "Payment Gateway Account not created, please create one manually."
msgstr ""
@@ -33709,6 +34017,12 @@ msgstr ""
msgid "Payment Mode"
msgstr ""
+#. Label of the payment_options_section (Section Break) field in DocType
+#. 'Accounts Settings'
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+msgid "Payment Options"
+msgstr ""
+
#. Label of the payment_order (Link) field in DocType 'Journal Entry'
#. Label of the payment_order (Link) field in DocType 'Payment Entry'
#. Name of a DocType
@@ -33772,7 +34086,7 @@ msgid "Payment Received"
msgstr ""
#. Label of a Workspace Sidebar Item
-#: erpnext/workspace_sidebar/payments.json
+#: erpnext/workspace_sidebar/invoicing.json
msgid "Payment Reconciliaition"
msgstr ""
@@ -33782,7 +34096,7 @@ msgstr ""
#. Label of a Workspace Sidebar Item
#: erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
#: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.json
-#: erpnext/workspace_sidebar/invoicing.json
+#: erpnext/workspace_sidebar/payments.json
msgid "Payment Reconciliation"
msgstr ""
@@ -33813,7 +34127,11 @@ msgstr ""
#. Label of the payment_reference (Data) field in DocType 'Payment Order
#. Reference'
+#. Name of a DocType
+#. Label of the payment_reference (Table) field in DocType 'Payment Request'
#: erpnext/accounts/doctype/payment_order_reference/payment_order_reference.json
+#: erpnext/accounts/doctype/payment_reference/payment_reference.json
+#: erpnext/accounts/doctype/payment_request/payment_request.json
msgid "Payment Reference"
msgstr ""
@@ -33833,7 +34151,7 @@ msgstr ""
#. Name of a DocType
#. Label of a Workspace Sidebar Item
#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1723
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1726
#: erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json
#: erpnext/accounts/doctype/payment_order/payment_order.js:19
#: erpnext/accounts/doctype/payment_order/payment_order.json
@@ -33860,11 +34178,11 @@ msgstr ""
msgid "Payment Request Type"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:632
+#: erpnext/accounts/doctype/payment_request/payment_request.py:709
msgid "Payment Request for {0}"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:574
+#: erpnext/accounts/doctype/payment_request/payment_request.py:650
msgid "Payment Request is already created"
msgstr ""
@@ -33872,7 +34190,7 @@ msgstr ""
msgid "Payment Request took too long to respond. Please try requesting for payment again."
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:544
+#: erpnext/accounts/doctype/payment_request/payment_request.py:567
msgid "Payment Requests cannot be created against: {0}"
msgstr ""
@@ -33883,6 +34201,7 @@ msgid "Payment Requests made from Sales / Purchase Invoice will be put in Draft
msgstr ""
#. Label of the payment_schedule (Data) field in DocType 'Overdue Payment'
+#. Label of the payment_schedule (Link) field in DocType 'Payment Reference'
#. Name of a DocType
#. Label of the payment_schedule (Table) field in DocType 'POS Invoice'
#. Label of the payment_schedule (Table) field in DocType 'Purchase Invoice'
@@ -33891,6 +34210,7 @@ msgstr ""
#. Label of the payment_schedule (Table) field in DocType 'Quotation'
#. Label of the payment_schedule (Table) field in DocType 'Sales Order'
#: erpnext/accounts/doctype/overdue_payment/overdue_payment.json
+#: erpnext/accounts/doctype/payment_reference/payment_reference.json
#: erpnext/accounts/doctype/payment_schedule/payment_schedule.json
#: erpnext/accounts/doctype/pos_invoice/pos_invoice.json
#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -33902,12 +34222,21 @@ msgstr ""
msgid "Payment Schedule"
msgstr ""
+#: erpnext/accounts/doctype/payment_request/payment_request.py:589
+msgid "Payment Schedule based Payment Requests cannot be created because a Payment Entry already exists for this document."
+msgstr ""
+
+#: erpnext/public/js/controllers/transaction.js:478
+msgid "Payment Schedules"
+msgstr ""
+
#: erpnext/accounts/print_format/sales_invoice_print/sales_invoice_print.html:123
msgid "Payment Status"
msgstr ""
#. Label of the payment_term (Link) field in DocType 'Overdue Payment'
#. Label of the payment_term (Link) field in DocType 'Payment Entry Reference'
+#. Label of the payment_term (Link) field in DocType 'Payment Reference'
#. Label of the payment_term (Link) field in DocType 'Payment Schedule'
#. Name of a DocType
#. Label of the payment_term (Link) field in DocType 'Payment Terms Template
@@ -33916,12 +34245,14 @@ msgstr ""
#. Label of a Workspace Sidebar Item
#: erpnext/accounts/doctype/overdue_payment/overdue_payment.json
#: erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json
+#: erpnext/accounts/doctype/payment_reference/payment_reference.json
#: erpnext/accounts/doctype/payment_schedule/payment_schedule.json
#: erpnext/accounts/doctype/payment_term/payment_term.json
#: erpnext/accounts/doctype/payment_terms_template_detail/payment_terms_template_detail.json
#: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1214
#: erpnext/accounts/report/gross_profit/gross_profit.py:449
#: erpnext/accounts/workspace/invoicing/invoicing.json
+#: erpnext/public/js/controllers/transaction.js:492
#: erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:30
#: erpnext/workspace_sidebar/accounts_setup.json
msgid "Payment Term"
@@ -34026,7 +34357,7 @@ msgstr ""
msgid "Payment URL"
msgstr ""
-#: erpnext/accounts/utils.py:1138
+#: erpnext/accounts/utils.py:1139
msgid "Payment Unlink Error"
msgstr ""
@@ -34063,6 +34394,7 @@ msgstr ""
msgid "Payment term {0} not used in {1}"
msgstr ""
+#. Label of the payments_tab (Tab Break) field in DocType 'Accounts Settings'
#. Label of the payments (Table) field in DocType 'Cashier Closing'
#. Label of the payments (Table) field in DocType 'Payment Reconciliation'
#. Label of the payments_section (Section Break) field in DocType 'POS Invoice'
@@ -34078,6 +34410,7 @@ msgstr ""
#. Label of a Desktop Icon
#. Label of a Workspace Sidebar Item
#. Title of a Workspace Sidebar
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
#: erpnext/accounts/doctype/cashier_closing/cashier_closing.json
#: erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:286
@@ -34507,7 +34840,7 @@ msgstr ""
#. Label of the phone_no (Data) field in DocType 'Company'
#. Label of the phone_no (Data) field in DocType 'Warehouse'
-#: erpnext/public/js/print.js:66 erpnext/setup/doctype/company/company.json
+#: erpnext/public/js/print.js:77 erpnext/setup/doctype/company/company.json
#: erpnext/stock/doctype/warehouse/warehouse.json
msgid "Phone No"
msgstr ""
@@ -34887,11 +35220,11 @@ msgstr ""
msgid "Please Set Supplier Group in Buying Settings."
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1894
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1897
msgid "Please Specify Account"
msgstr ""
-#: erpnext/buying/doctype/supplier/supplier.py:128
+#: erpnext/buying/doctype/supplier/supplier.py:129
msgid "Please add 'Supplier' role to user {0}."
msgstr ""
@@ -34947,7 +35280,7 @@ msgstr ""
msgid "Please cancel and amend the Payment Entry"
msgstr ""
-#: erpnext/accounts/utils.py:1137
+#: erpnext/accounts/utils.py:1138
msgid "Please cancel payment entry manually first"
msgstr ""
@@ -34973,7 +35306,7 @@ msgstr ""
msgid "Please check either with operations or FG Based Operating Cost."
msgstr ""
-#: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py:531
+#: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py:539
msgid "Please check the error message and take necessary actions to fix the error and then restart the reposting again."
msgstr ""
@@ -34998,7 +35331,7 @@ msgstr ""
msgid "Please click on 'Generate Schedule' to get schedule"
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:598
+#: erpnext/selling/doctype/customer/customer.py:622
msgid "Please contact any of the following users to extend the credit limits for {0}: {1}"
msgstr ""
@@ -35006,7 +35339,7 @@ msgstr ""
msgid "Please contact any of the following users to {} this transaction."
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:591
+#: erpnext/selling/doctype/customer/customer.py:615
msgid "Please contact your administrator to extend the credit limits for {0}."
msgstr ""
@@ -35070,7 +35403,7 @@ msgstr ""
msgid "Please enable {0} in the {1}."
msgstr ""
-#: erpnext/controllers/selling_controller.py:846
+#: erpnext/controllers/selling_controller.py:853
msgid "Please enable {} in {} to allow same item in multiple rows"
msgstr ""
@@ -35128,7 +35461,7 @@ msgstr ""
msgid "Please enter Item Code to get Batch Number"
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2956
+#: erpnext/public/js/controllers/transaction.js:3063
msgid "Please enter Item Code to get batch no"
msgstr ""
@@ -35225,7 +35558,7 @@ msgstr ""
msgid "Please enter quantity for item {0}"
msgstr ""
-#: erpnext/setup/doctype/employee/employee.py:184
+#: erpnext/setup/doctype/employee/employee.py:183
msgid "Please enter relieving date."
msgstr ""
@@ -35253,11 +35586,11 @@ msgstr ""
msgid "Please enter valid Financial Year Start and End Dates"
msgstr ""
-#: erpnext/setup/doctype/employee/employee.py:222
+#: erpnext/setup/doctype/employee/employee.py:221
msgid "Please enter {0}"
msgstr ""
-#: erpnext/public/js/utils/party.js:322
+#: erpnext/public/js/utils/party.js:344
msgid "Please enter {0} first"
msgstr ""
@@ -35281,7 +35614,7 @@ msgstr ""
msgid "Please fix overlapping time slots for {0}."
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:270
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:272
msgid "Please generate To Delete list before submitting"
msgstr ""
@@ -35293,7 +35626,7 @@ msgstr ""
msgid "Please import accounts against parent company or enable {} in company master."
msgstr ""
-#: erpnext/setup/doctype/employee/employee.py:181
+#: erpnext/setup/doctype/employee/employee.py:180
msgid "Please make sure the employees above report to another Active employee."
msgstr ""
@@ -35355,8 +35688,8 @@ msgstr ""
msgid "Please select Template Type to download template"
msgstr ""
-#: erpnext/controllers/taxes_and_totals.py:804
-#: erpnext/public/js/controllers/taxes_and_totals.js:782
+#: erpnext/controllers/taxes_and_totals.py:809
+#: erpnext/public/js/controllers/taxes_and_totals.js:796
msgid "Please select Apply Discount On"
msgstr ""
@@ -35380,13 +35713,13 @@ msgstr ""
msgid "Please select Category first"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1505
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1508
#: erpnext/public/js/controllers/accounts.js:94
#: erpnext/public/js/controllers/accounts.js:145
msgid "Please select Charge Type first"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.js:494
+#: erpnext/accounts/doctype/journal_entry/journal_entry.js:490
msgid "Please select Company"
msgstr ""
@@ -35395,7 +35728,7 @@ msgstr ""
msgid "Please select Company and Posting Date to getting entries"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.js:736
+#: erpnext/accounts/doctype/journal_entry/journal_entry.js:732
#: erpnext/manufacturing/doctype/plant_floor/plant_floor.js:28
msgid "Please select Company first"
msgstr ""
@@ -35440,11 +35773,11 @@ msgstr ""
msgid "Please select Periodic Accounting Entry Difference Account"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:517
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:518
msgid "Please select Posting Date before selecting Party"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.js:737
+#: erpnext/accounts/doctype/journal_entry/journal_entry.js:733
msgid "Please select Posting Date first"
msgstr ""
@@ -35484,7 +35817,7 @@ msgstr ""
msgid "Please select a BOM"
msgstr ""
-#: erpnext/accounts/party.py:429
+#: erpnext/accounts/party.py:417
#: erpnext/stock/doctype/pick_list/pick_list.py:1617
msgid "Please select a Company"
msgstr ""
@@ -35493,7 +35826,7 @@ msgstr ""
#: erpnext/manufacturing/doctype/bom/bom.js:680
#: erpnext/manufacturing/doctype/bom/bom.py:276
#: erpnext/public/js/controllers/accounts.js:277
-#: erpnext/public/js/controllers/transaction.js:3255
+#: erpnext/public/js/controllers/transaction.js:3362
msgid "Please select a Company first."
msgstr ""
@@ -35517,7 +35850,7 @@ msgstr ""
msgid "Please select a Warehouse"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1572
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1570
msgid "Please select a Work Order first."
msgstr ""
@@ -35586,6 +35919,10 @@ msgstr ""
msgid "Please select at least one row with difference value"
msgstr ""
+#: erpnext/public/js/controllers/transaction.js:519
+msgid "Please select at least one schedule."
+msgstr ""
+
#: erpnext/selling/doctype/sales_order/sales_order.js:1296
msgid "Please select atleast one item to continue"
msgstr ""
@@ -35667,7 +36004,7 @@ msgstr ""
msgid "Please select weekly off day"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1222
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1226
#: erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py:616
msgid "Please select {0} first"
msgstr ""
@@ -35790,7 +36127,7 @@ msgstr ""
msgid "Please set a default Holiday List for Company {0}"
msgstr ""
-#: erpnext/setup/doctype/employee/employee.py:273
+#: erpnext/setup/doctype/employee/employee.py:272
msgid "Please set a default Holiday List for Employee {0} or Company {1}"
msgstr ""
@@ -35839,7 +36176,7 @@ msgstr ""
msgid "Please set default Cash or Bank account in Mode of Payments {}"
msgstr ""
-#: erpnext/accounts/utils.py:2450
+#: erpnext/accounts/utils.py:2451
msgid "Please set default Exchange Gain/Loss Account in Company {}"
msgstr ""
@@ -35860,7 +36197,7 @@ msgid "Please set default inventory account for item {0}, or their item group or
msgstr ""
#: erpnext/accounts/doctype/payment_entry/payment_entry.py:278
-#: erpnext/accounts/utils.py:1159
+#: erpnext/accounts/utils.py:1160
msgid "Please set default {0} in Company {1}"
msgstr ""
@@ -35876,7 +36213,7 @@ msgstr ""
msgid "Please set opening number of booked depreciations"
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2644
+#: erpnext/public/js/controllers/transaction.js:2751
msgid "Please set recurring after saving"
msgstr ""
@@ -35892,11 +36229,11 @@ msgstr ""
msgid "Please set the Item Code first"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1635
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1633
msgid "Please set the Target Warehouse in the Job Card"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1639
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1637
msgid "Please set the WIP Warehouse in the Job Card"
msgstr ""
@@ -35931,7 +36268,7 @@ msgstr ""
msgid "Please set {0} in BOM Creator {1}"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1129
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1141
msgid "Please set {0} in Company {1} to account for Exchange Gain / Loss"
msgstr ""
@@ -36127,7 +36464,7 @@ msgstr ""
#: erpnext/accounts/doctype/journal_entry/journal_entry.json
#: erpnext/accounts/doctype/loyalty_point_entry/loyalty_point_entry.json
#: erpnext/accounts/doctype/opening_invoice_creation_tool_item/opening_invoice_creation_tool_item.json
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:886
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:890
#: erpnext/accounts/doctype/payment_entry/payment_entry.json
#: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.json
#: erpnext/accounts/doctype/payment_order/payment_order.json
@@ -36203,7 +36540,7 @@ msgstr ""
msgid "Posting Date cannot be future date"
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:1005
+#: erpnext/public/js/controllers/transaction.js:1104
msgid "Posting Date will change to today's date as Edit Posting Date and Time is unchecked. Are you sure want to proceed?"
msgstr ""
@@ -36419,7 +36756,7 @@ msgid "Preview Required Materials"
msgstr ""
#: erpnext/accounts/report/balance_sheet/balance_sheet.py:181
-#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:139
+#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:142
msgid "Previous Financial Year is not closed"
msgstr ""
@@ -36893,7 +37230,7 @@ msgstr ""
msgid "Print Receipt on Order Complete"
msgstr ""
-#: erpnext/setup/install.py:104
+#: erpnext/setup/install.py:105
msgid "Print UOM after Quantity"
msgstr ""
@@ -36911,7 +37248,7 @@ msgstr ""
msgid "Print settings updated in respective print format"
msgstr ""
-#: erpnext/setup/install.py:111
+#: erpnext/setup/install.py:112
msgid "Print taxes with zero amount"
msgstr ""
@@ -37338,6 +37675,15 @@ msgstr ""
msgid "Production Item"
msgstr ""
+#. Label of the production_item_info_section (Section Break) field in DocType
+#. 'BOM'
+#. Label of the production_item_info_section (Section Break) field in DocType
+#. 'Work Order'
+#: erpnext/manufacturing/doctype/bom/bom.json
+#: erpnext/manufacturing/doctype/work_order/work_order.json
+msgid "Production Item Info"
+msgstr ""
+
#. Label of the production_plan (Link) field in DocType 'Purchase Order Item'
#. Name of a DocType
#. Label of the production_plan (Link) field in DocType 'Work Order'
@@ -37536,11 +37882,6 @@ msgstr ""
msgid "Project Name"
msgstr ""
-#. Label of a Workspace Sidebar Item
-#: erpnext/workspace_sidebar/projects.json
-msgid "Project Profitability"
-msgstr ""
-
#: erpnext/templates/pages/projects.html:112
msgid "Project Progress:"
msgstr ""
@@ -37718,6 +38059,11 @@ msgstr ""
msgid "Projects Settings"
msgstr ""
+#. Title of the Module Onboarding 'Projects Onboarding'
+#: erpnext/projects/module_onboarding/projects_onboarding/projects_onboarding.json
+msgid "Projects Setup"
+msgstr ""
+
#. Name of a role
#: erpnext/projects/doctype/activity_cost/activity_cost.json
#: erpnext/projects/doctype/activity_type/activity_type.json
@@ -37791,10 +38137,13 @@ msgstr ""
#. Name of a DocType
#. Label of a Link in the CRM Workspace
+#. Label of the prospect_name (Link) field in DocType 'Customer'
#. Label of a Workspace Sidebar Item
#: erpnext/crm/doctype/lead/lead.js:36 erpnext/crm/doctype/lead/lead.js:62
#: erpnext/crm/doctype/prospect/prospect.json
-#: erpnext/crm/workspace/crm/crm.json erpnext/workspace_sidebar/crm.json
+#: erpnext/crm/workspace/crm/crm.json
+#: erpnext/selling/doctype/customer/customer.json
+#: erpnext/workspace_sidebar/crm.json
msgid "Prospect"
msgstr ""
@@ -37830,8 +38179,8 @@ msgstr ""
msgid "Prospects Engaged But Not Converted"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:196
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:781
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:198
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:783
msgid "Protected DocType"
msgstr ""
@@ -37912,7 +38261,7 @@ msgstr ""
#: erpnext/accounts/doctype/tax_rule/tax_rule.json
#: erpnext/manufacturing/doctype/material_request_plan_item/material_request_plan_item.json
#: erpnext/projects/doctype/project/project_dashboard.py:16
-#: erpnext/setup/doctype/company/company.py:463 erpnext/setup/install.py:346
+#: erpnext/setup/doctype/company/company.py:463 erpnext/setup/install.py:377
#: erpnext/stock/doctype/item/item.json
#: erpnext/stock/doctype/item_lead_time/item_lead_time.json
#: erpnext/stock/doctype/item_reorder/item_reorder.json
@@ -38695,11 +39044,11 @@ msgstr ""
msgid "Qty To Manufacture"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1405
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1395
msgid "Qty To Manufacture ({0}) cannot be a fraction for the UOM {2}. To allow this, disable '{1}' in the UOM {2}."
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:253
+#: erpnext/manufacturing/doctype/job_card/job_card.py:251
msgid "Qty To Manufacture in the job card cannot be greater than Qty To Manufacture in the work order for the operation {0}.
Solution: Either you can reduce the Qty To Manufacture in the job card or set the 'Overproduction Percentage For Work Order' in the {1}."
msgstr ""
@@ -38802,7 +39151,7 @@ msgid "Qty to Fetch"
msgstr ""
#: erpnext/manufacturing/doctype/job_card/job_card.js:304
-#: erpnext/manufacturing/doctype/job_card/job_card.py:874
+#: erpnext/manufacturing/doctype/job_card/job_card.py:872
msgid "Qty to Manufacture"
msgstr ""
@@ -38935,6 +39284,7 @@ msgstr ""
#. Label of the quality_inspection (Link) field in DocType 'Sales Invoice Item'
#. Label of the quality_inspection_section_break (Section Break) field in
#. DocType 'BOM'
+#. Label of the quality_inspection_tab (Tab Break) field in DocType 'BOM'
#. Label of the quality_inspection (Link) field in DocType 'Job Card'
#. Label of the quality_inspection_section (Section Break) field in DocType
#. 'Job Card'
@@ -39032,22 +39382,22 @@ msgstr ""
msgid "Quality Inspection Template Name"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:783
+#: erpnext/manufacturing/doctype/job_card/job_card.py:781
msgid "Quality Inspection is required for the item {0} before completing the job card {1}"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:794
-#: erpnext/manufacturing/doctype/job_card/job_card.py:803
+#: erpnext/manufacturing/doctype/job_card/job_card.py:792
+#: erpnext/manufacturing/doctype/job_card/job_card.py:801
msgid "Quality Inspection {0} is not submitted for the item: {1}"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:813
-#: erpnext/manufacturing/doctype/job_card/job_card.py:822
+#: erpnext/manufacturing/doctype/job_card/job_card.py:811
+#: erpnext/manufacturing/doctype/job_card/job_card.py:820
msgid "Quality Inspection {0} is rejected for the item: {1}"
msgstr ""
#: erpnext/public/js/controllers/transaction.js:384
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:197
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:196
msgid "Quality Inspection(s)"
msgstr ""
@@ -39200,7 +39550,7 @@ msgstr ""
#: erpnext/stock/doctype/material_request_item/material_request_item.json
#: erpnext/stock/doctype/packing_slip_item/packing_slip_item.json
#: erpnext/stock/doctype/pick_list_item/pick_list_item.json
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:708
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:725
#: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
#: erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json
#: erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py:36
@@ -39343,11 +39693,11 @@ msgstr ""
msgid "Quantity to Manufacture"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:2567
+#: erpnext/manufacturing/doctype/work_order/work_order.py:2563
msgid "Quantity to Manufacture can not be zero for the operation {0}"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1397
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1387
msgid "Quantity to Manufacture must be greater than 0."
msgstr ""
@@ -39379,7 +39729,7 @@ msgid "Quart Liquid (US)"
msgstr ""
#: erpnext/selling/report/sales_analytics/sales_analytics.py:437
-#: erpnext/stock/report/stock_analytics/stock_analytics.py:115
+#: erpnext/stock/report/stock_analytics/stock_analytics.py:125
msgid "Quarter {0} {1}"
msgstr ""
@@ -39388,11 +39738,11 @@ msgstr ""
msgid "Query Route String"
msgstr ""
-#: erpnext/accounts/doctype/accounts_settings/accounts_settings.py:139
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.py:176
msgid "Queue Size should be between 5 and 100"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.js:625
+#: erpnext/accounts/doctype/journal_entry/journal_entry.js:621
msgid "Quick Journal Entry"
msgstr ""
@@ -39527,6 +39877,12 @@ msgstr ""
msgid "Quoted Amount"
msgstr ""
+#. Label of the rfq_and_purchase_order_settings_section (Section Break) field
+#. in DocType 'Supplier'
+#: erpnext/buying/doctype/supplier/supplier.json
+msgid "RFQ and Purchase Order Settings"
+msgstr ""
+
#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.py:119
msgid "RFQs are not allowed for {0} due to a scorecard standing of {1}"
msgstr ""
@@ -40134,7 +40490,7 @@ msgstr ""
msgid "Reason for Failure"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.js:700
+#: erpnext/buying/doctype/purchase_order/purchase_order.js:679
#: erpnext/selling/doctype/sales_order/sales_order.js:1760
msgid "Reason for Hold"
msgstr ""
@@ -40585,7 +40941,7 @@ msgstr ""
msgid "Reference #{0} dated {1}"
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2757
+#: erpnext/public/js/controllers/transaction.js:2864
msgid "Reference Date for Early Payment Discount"
msgstr ""
@@ -40623,7 +40979,7 @@ msgstr ""
msgid "Reference No & Reference Date is required for {0}"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1210
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1222
msgid "Reference No and Reference Date is mandatory for Bank transaction"
msgstr ""
@@ -40702,6 +41058,7 @@ msgstr ""
#. Label of the references_section (Section Break) field in DocType 'Purchase
#. Order Item'
#. Label of the sb_references (Section Break) field in DocType 'Contract'
+#. Label of the references_section (Section Break) field in DocType 'Customer'
#. Label of the references_section (Section Break) field in DocType
#. 'Subcontracting Order Item'
#: erpnext/accounts/doctype/fiscal_year/fiscal_year_dashboard.py:10
@@ -40715,6 +41072,7 @@ msgstr ""
#: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
#: erpnext/crm/doctype/contract/contract.json
#: erpnext/projects/doctype/timesheet/timesheet_dashboard.py:7
+#: erpnext/selling/doctype/customer/customer.json
#: erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json
msgid "References"
msgstr ""
@@ -41140,7 +41498,7 @@ msgstr ""
msgid "Report Type is mandatory"
msgstr ""
-#: erpnext/setup/install.py:206
+#: erpnext/setup/install.py:207
msgid "Report an Issue"
msgstr ""
@@ -41643,6 +42001,12 @@ msgstr ""
msgid "Reserved Batch Conflict"
msgstr ""
+#. Label of the reserved_inventory_section (Section Break) field in DocType
+#. 'Bin'
+#: erpnext/stock/doctype/bin/bin.json
+msgid "Reserved Inventory"
+msgstr ""
+
#. Label of the reserved_qty (Float) field in DocType 'Bin'
#. Label of the reserved_qty (Float) field in DocType 'Stock Reservation Entry'
#. Label of the stock_reserved_qty (Float) field in DocType 'Subcontracting
@@ -41703,7 +42067,7 @@ msgstr ""
msgid "Reserved Quantity for Production"
msgstr ""
-#: erpnext/stock/stock_ledger.py:2285
+#: erpnext/stock/stock_ledger.py:2281
msgid "Reserved Serial No."
msgstr ""
@@ -41718,14 +42082,14 @@ msgstr ""
#: erpnext/stock/doctype/bin/bin.json
#: erpnext/stock/doctype/pick_list/pick_list.js:168
#: erpnext/stock/report/reserved_stock/reserved_stock.json
-#: erpnext/stock/report/stock_balance/stock_balance.py:499
-#: erpnext/stock/stock_ledger.py:2269
+#: erpnext/stock/report/stock_balance/stock_balance.py:530
+#: erpnext/stock/stock_ledger.py:2265
#: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:205
#: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:333
msgid "Reserved Stock"
msgstr ""
-#: erpnext/stock/stock_ledger.py:2314
+#: erpnext/stock/stock_ledger.py:2310
msgid "Reserved Stock for Batch"
msgstr ""
@@ -42265,11 +42629,46 @@ msgstr ""
msgid "Review"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Review Accounts Settings'
+#: erpnext/accounts/onboarding_step/review_accounts_settings/review_accounts_settings.json
+msgid "Review Accounts Settings"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Review Buying Settings'
+#: erpnext/buying/onboarding_step/review_buying_settings/review_buying_settings.json
+msgid "Review Buying Settings"
+msgstr ""
+
+#. Title of an Onboarding Step
+#: erpnext/accounts/onboarding_step/chart_of_accounts/chart_of_accounts.json
+msgid "Review Chart of Accounts"
+msgstr ""
+
#. Label of the review_date (Date) field in DocType 'Task'
#: erpnext/projects/doctype/task/task.json
msgid "Review Date"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Review Manufacturing Settings'
+#: erpnext/manufacturing/onboarding_step/review_manufacturing_settings/review_manufacturing_settings.json
+msgid "Review Manufacturing Settings"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Review Selling Settings'
+#: erpnext/selling/onboarding_step/review_selling_settings/review_selling_settings.json
+msgid "Review Selling Settings"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'Review Stock Settings'
+#: erpnext/stock/onboarding_step/review_stock_settings/review_stock_settings.json
+msgid "Review Stock Settings"
+msgstr ""
+
#. Label of a Card Break in the Quality Workspace
#: erpnext/quality_management/workspace/quality/quality.json
msgid "Review and Action"
@@ -42461,13 +42860,21 @@ msgid "Round Tax Amount Row-wise"
msgstr ""
#. Label of the rounded_total (Currency) field in DocType 'POS Invoice'
+#. Label of the base_rounded_total (Currency) field in DocType 'Purchase
+#. Invoice'
#. Label of the rounded_total (Currency) field in DocType 'Purchase Invoice'
+#. Label of the base_rounded_total (Currency) field in DocType 'Sales Invoice'
#. Label of the rounded_total (Currency) field in DocType 'Sales Invoice'
+#. Label of the base_rounded_total (Currency) field in DocType 'Purchase Order'
#. Label of the rounded_total (Currency) field in DocType 'Purchase Order'
#. Label of the rounded_total (Currency) field in DocType 'Supplier Quotation'
#. Label of the rounded_total (Currency) field in DocType 'Quotation'
+#. Label of the base_rounded_total (Currency) field in DocType 'Sales Order'
#. Label of the rounded_total (Currency) field in DocType 'Sales Order'
+#. Label of the base_rounded_total (Currency) field in DocType 'Delivery Note'
#. Label of the rounded_total (Currency) field in DocType 'Delivery Note'
+#. Label of the base_rounded_total (Currency) field in DocType 'Purchase
+#. Receipt'
#. Label of the rounded_total (Currency) field in DocType 'Purchase Receipt'
#: erpnext/accounts/doctype/pos_invoice/pos_invoice.json
#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -42484,40 +42891,38 @@ msgid "Rounded Total"
msgstr ""
#. Label of the base_rounded_total (Currency) field in DocType 'POS Invoice'
-#. Label of the base_rounded_total (Currency) field in DocType 'Purchase
-#. Invoice'
-#. Label of the base_rounded_total (Currency) field in DocType 'Sales Invoice'
-#. Label of the base_rounded_total (Currency) field in DocType 'Purchase Order'
#. Label of the base_rounded_total (Currency) field in DocType 'Supplier
#. Quotation'
#. Label of the base_rounded_total (Currency) field in DocType 'Quotation'
-#. Label of the base_rounded_total (Currency) field in DocType 'Sales Order'
-#. Label of the base_rounded_total (Currency) field in DocType 'Delivery Note'
-#. Label of the base_rounded_total (Currency) field in DocType 'Purchase
-#. Receipt'
#: erpnext/accounts/doctype/pos_invoice/pos_invoice.json
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
-#: erpnext/accounts/doctype/sales_invoice/sales_invoice.json
-#: erpnext/buying/doctype/purchase_order/purchase_order.json
#: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
#: erpnext/selling/doctype/quotation/quotation.json
-#: erpnext/selling/doctype/sales_order/sales_order.json
-#: erpnext/stock/doctype/delivery_note/delivery_note.json
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
msgid "Rounded Total (Company Currency)"
msgstr ""
#. Label of the rounding_adjustment (Currency) field in DocType 'POS Invoice'
+#. Label of the base_rounding_adjustment (Currency) field in DocType 'Purchase
+#. Invoice'
#. Label of the rounding_adjustment (Currency) field in DocType 'Purchase
#. Invoice'
+#. Label of the base_rounding_adjustment (Currency) field in DocType 'Sales
+#. Invoice'
#. Label of the rounding_adjustment (Currency) field in DocType 'Sales Invoice'
+#. Label of the base_rounding_adjustment (Currency) field in DocType 'Purchase
+#. Order'
#. Label of the rounding_adjustment (Currency) field in DocType 'Purchase
#. Order'
#. Label of the rounding_adjustment (Currency) field in DocType 'Supplier
#. Quotation'
#. Label of the rounding_adjustment (Currency) field in DocType 'Quotation'
+#. Label of the base_rounding_adjustment (Currency) field in DocType 'Sales
+#. Order'
#. Label of the rounding_adjustment (Currency) field in DocType 'Sales Order'
+#. Label of the base_rounding_adjustment (Currency) field in DocType 'Delivery
+#. Note'
#. Label of the rounding_adjustment (Currency) field in DocType 'Delivery Note'
+#. Label of the base_rounding_adjustment (Currency) field in DocType 'Purchase
+#. Receipt'
#. Label of the rounding_adjustment (Currency) field in DocType 'Purchase
#. Receipt'
#: erpnext/accounts/doctype/pos_invoice/pos_invoice.json
@@ -42540,28 +42945,10 @@ msgstr ""
#. Label of the base_rounding_adjustment (Currency) field in DocType 'POS
#. Invoice'
-#. Label of the base_rounding_adjustment (Currency) field in DocType 'Purchase
-#. Invoice'
-#. Label of the base_rounding_adjustment (Currency) field in DocType 'Sales
-#. Invoice'
-#. Label of the base_rounding_adjustment (Currency) field in DocType 'Purchase
-#. Order'
#. Label of the base_rounding_adjustment (Currency) field in DocType
#. 'Quotation'
-#. Label of the base_rounding_adjustment (Currency) field in DocType 'Sales
-#. Order'
-#. Label of the base_rounding_adjustment (Currency) field in DocType 'Delivery
-#. Note'
-#. Label of the base_rounding_adjustment (Currency) field in DocType 'Purchase
-#. Receipt'
#: erpnext/accounts/doctype/pos_invoice/pos_invoice.json
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
-#: erpnext/accounts/doctype/sales_invoice/sales_invoice.json
-#: erpnext/buying/doctype/purchase_order/purchase_order.json
#: erpnext/selling/doctype/quotation/quotation.json
-#: erpnext/selling/doctype/sales_order/sales_order.json
-#: erpnext/stock/doctype/delivery_note/delivery_note.json
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
msgid "Rounding Adjustment (Company Currency)"
msgstr ""
@@ -42744,7 +43131,7 @@ msgstr ""
msgid "Row #{0}: Cannot set Rate if the billed amount is greater than the amount for Item {1}."
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1112
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1110
msgid "Row #{0}: Cannot transfer more than Required Qty {1} for Item {2} against Job Card {3}"
msgstr ""
@@ -42891,7 +43278,7 @@ msgstr ""
msgid "Row #{0}: From Date cannot be before To Date"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:864
+#: erpnext/manufacturing/doctype/job_card/job_card.py:862
msgid "Row #{0}: From Time and To Time fields are required"
msgstr ""
@@ -43058,11 +43445,11 @@ msgstr ""
msgid "Row #{0}: Rate must be same as {1}: {2} ({3} / {4})"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1254
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1258
msgid "Row #{0}: Reference Document Type must be one of Purchase Order, Purchase Invoice or Journal Entry"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1240
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1244
msgid "Row #{0}: Reference Document Type must be one of Sales Order, Sales Invoice, Journal Entry or Dunning"
msgstr ""
@@ -43364,7 +43751,7 @@ msgstr ""
msgid "Row No {0}: Warehouse is required. Please set a Default Warehouse for Item {1} and Company {2}"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:731
+#: erpnext/manufacturing/doctype/job_card/job_card.py:729
msgid "Row {0} : Operation is required against the raw material item {1}"
msgstr ""
@@ -43446,7 +43833,7 @@ msgstr ""
msgid "Row {0}: Debit entry can not be linked with a {1}"
msgstr ""
-#: erpnext/controllers/selling_controller.py:868
+#: erpnext/controllers/selling_controller.py:875
msgid "Row {0}: Delivery Warehouse ({1}) and Customer Warehouse ({2}) can not be same"
msgstr ""
@@ -43463,7 +43850,7 @@ msgid "Row {0}: Either Delivery Note Item or Packed Item reference is mandatory.
msgstr ""
#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1012
-#: erpnext/controllers/taxes_and_totals.py:1335
+#: erpnext/controllers/taxes_and_totals.py:1340
msgid "Row {0}: Exchange Rate is mandatory"
msgstr ""
@@ -43495,7 +43882,7 @@ msgstr ""
msgid "Row {0}: From Time and To Time is mandatory."
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:308
+#: erpnext/manufacturing/doctype/job_card/job_card.py:306
#: erpnext/projects/doctype/timesheet/timesheet.py:225
msgid "Row {0}: From Time and To Time of {1} is overlapping with {2}"
msgstr ""
@@ -43504,7 +43891,7 @@ msgstr ""
msgid "Row {0}: From Warehouse is mandatory for internal transfers"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:299
+#: erpnext/manufacturing/doctype/job_card/job_card.py:297
msgid "Row {0}: From time must be less than to time"
msgstr ""
@@ -43520,7 +43907,7 @@ msgstr ""
msgid "Row {0}: Item Tax template updated as per validity and rate applied"
msgstr ""
-#: erpnext/controllers/selling_controller.py:633
+#: erpnext/controllers/selling_controller.py:640
msgid "Row {0}: Item rate has been updated as per valuation rate since its an internal stock transfer"
msgstr ""
@@ -43810,7 +44197,7 @@ msgstr ""
msgid "SLA Paused On"
msgstr ""
-#: erpnext/public/js/utils.js:1164
+#: erpnext/public/js/utils.js:1168
msgid "SLA is on hold since {0}"
msgstr ""
@@ -43909,9 +44296,10 @@ msgstr ""
#: erpnext/setup/doctype/company/company.py:649
#: erpnext/setup/doctype/company/company_dashboard.py:9
#: erpnext/setup/doctype/sales_person/sales_person_dashboard.py:12
-#: erpnext/setup/install.py:341
+#: erpnext/setup/install.py:372
#: erpnext/setup/setup_wizard/operations/install_fixtures.py:297
#: erpnext/stock/doctype/item/item.json
+#: erpnext/stock/doctype/pick_list/pick_list_dashboard.py:16
msgid "Sales"
msgstr ""
@@ -44613,6 +45001,11 @@ msgstr ""
msgid "Sales Tax Withholding Category"
msgstr ""
+#. Label of a Workspace Sidebar Item
+#: erpnext/workspace_sidebar/accounts_setup.json
+msgid "Sales Taxes"
+msgstr ""
+
#. Label of the taxes (Table) field in DocType 'POS Invoice'
#. Label of the taxes (Table) field in DocType 'Sales Invoice'
#. Name of a DocType
@@ -44657,7 +45050,8 @@ msgstr ""
#. Label of the section_break2 (Section Break) field in DocType 'POS Invoice'
#. Label of the sales_team (Table) field in DocType 'POS Invoice'
-#. Label of the section_break2 (Section Break) field in DocType 'Sales Invoice'
+#. Label of the sales_team_section (Section Break) field in DocType 'Sales
+#. Invoice'
#. Label of the sales_team (Table) field in DocType 'Customer'
#. Label of the sales_team_tab (Tab Break) field in DocType 'Customer'
#. Label of the section_break1 (Section Break) field in DocType 'Sales Order'
@@ -44750,7 +45144,7 @@ msgstr ""
#. Label of the sample_size (Float) field in DocType 'Quality Inspection'
#: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:93
-#: erpnext/public/js/controllers/transaction.js:2814
+#: erpnext/public/js/controllers/transaction.js:2921
#: erpnext/stock/doctype/quality_inspection/quality_inspection.json
msgid "Sample Size"
msgstr ""
@@ -44856,6 +45250,10 @@ msgstr ""
msgid "Schedule Date"
msgstr ""
+#: erpnext/public/js/controllers/transaction.js:486
+msgid "Schedule Name"
+msgstr ""
+
#. Label of the scheduled_date (Date) field in DocType 'Maintenance Schedule
#. Detail'
#: erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js:118
@@ -45160,7 +45558,7 @@ msgstr ""
msgid "Select Company"
msgstr ""
-#: erpnext/public/js/print.js:102
+#: erpnext/public/js/print.js:113
msgid "Select Company Address"
msgstr ""
@@ -45225,7 +45623,7 @@ msgstr ""
msgid "Select Items based on Delivery Date"
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2853
+#: erpnext/public/js/controllers/transaction.js:2960
msgid "Select Items for Quality Inspection"
msgstr ""
@@ -45255,6 +45653,10 @@ msgstr ""
msgid "Select Loyalty Program"
msgstr ""
+#: erpnext/public/js/controllers/transaction.js:473
+msgid "Select Payment Schedule"
+msgstr ""
+
#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:407
msgid "Select Possible Supplier"
msgstr ""
@@ -45322,7 +45724,7 @@ msgstr ""
msgid "Select a Company this Employee belongs to."
msgstr ""
-#: erpnext/buying/doctype/supplier/supplier.js:182
+#: erpnext/buying/doctype/supplier/supplier.js:180
msgid "Select a Customer"
msgstr ""
@@ -45366,7 +45768,7 @@ msgstr ""
msgid "Select at least one value from each of the attributes."
msgstr ""
-#: erpnext/public/js/utils/party.js:357
+#: erpnext/public/js/utils/party.js:379
msgid "Select company first"
msgstr ""
@@ -45562,6 +45964,11 @@ msgstr ""
msgid "Selling Settings"
msgstr ""
+#. Title of the Module Onboarding 'Selling Onboarding'
+#: erpnext/selling/module_onboarding/selling_onboarding/selling_onboarding.json
+msgid "Selling Setup"
+msgstr ""
+
#: erpnext/accounts/doctype/pricing_rule/pricing_rule.py:214
msgid "Selling must be checked, if Applicable For is selected as {0}"
msgstr ""
@@ -45610,7 +46017,7 @@ msgid "Send Emails to Suppliers"
msgstr ""
#. Label of the send_sms (Button) field in DocType 'SMS Center'
-#: erpnext/public/js/controllers/transaction.js:589
+#: erpnext/public/js/controllers/transaction.js:688
#: erpnext/selling/doctype/sms_center/sms_center.json
msgid "Send SMS"
msgstr ""
@@ -45670,6 +46077,11 @@ msgstr ""
msgid "Serial & Batch Item Settings"
msgstr ""
+#. Label of the section_break_jcmx (Section Break) field in DocType 'Job Card'
+#: erpnext/manufacturing/doctype/job_card/job_card.json
+msgid "Serial / Batch"
+msgstr ""
+
#. Label of the serial_and_batch_bundle (Link) field in DocType 'Stock
#. Reconciliation Item'
#. Label of the serial_and_batch_bundle (Link) field in DocType 'Subcontracting
@@ -45741,7 +46153,7 @@ msgstr ""
#: erpnext/manufacturing/doctype/job_card/job_card.json
#: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:74
#: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:114
-#: erpnext/public/js/controllers/transaction.js:2827
+#: erpnext/public/js/controllers/transaction.js:2934
#: erpnext/public/js/utils/serial_no_batch_selector.js:421
#: erpnext/selling/doctype/installation_note_item/installation_note_item.json
#: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
@@ -45802,7 +46214,7 @@ msgstr ""
msgid "Serial No Range"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2539
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2549
msgid "Serial No Reserved"
msgstr ""
@@ -45859,7 +46271,7 @@ msgstr ""
msgid "Serial No and Batch Traceability"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1115
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1125
msgid "Serial No is mandatory"
msgstr ""
@@ -45888,11 +46300,11 @@ msgstr ""
msgid "Serial No {0} does not exist"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3279
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3315
msgid "Serial No {0} does not exists"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:359
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:369
msgid "Serial No {0} is already Delivered. You cannot use them again in Manufacture / Repack entry."
msgstr ""
@@ -45904,7 +46316,7 @@ msgstr ""
msgid "Serial No {0} is already assigned to customer {1}. Can only be returned against the customer {1}"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:431
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:441
msgid "Serial No {0} is not present in the {1} {2}, hence you can't return it against the {1} {2}"
msgstr ""
@@ -45942,15 +46354,15 @@ msgstr ""
msgid "Serial Nos and Batches"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1825
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1835
msgid "Serial Nos are created successfully"
msgstr ""
-#: erpnext/stock/stock_ledger.py:2275
+#: erpnext/stock/stock_ledger.py:2271
msgid "Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding."
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:365
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:375
msgid "Serial Nos {0} are already Delivered. You cannot use them again in Manufacture / Repack entry."
msgstr ""
@@ -46026,11 +46438,11 @@ msgstr ""
msgid "Serial and Batch Bundle"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2047
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2057
msgid "Serial and Batch Bundle created"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2119
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2129
msgid "Serial and Batch Bundle updated"
msgstr ""
@@ -46086,7 +46498,7 @@ msgstr ""
msgid "Serial and Batch Summary"
msgstr ""
-#: erpnext/stock/utils.py:395
+#: erpnext/stock/utils.py:396
msgid "Serial number {0} entered more than once"
msgstr ""
@@ -46152,7 +46564,7 @@ msgstr ""
#: erpnext/accounts/doctype/budget/budget.json
#: erpnext/accounts/doctype/cashier_closing/cashier_closing.json
#: erpnext/accounts/doctype/dunning/dunning.json
-#: erpnext/accounts/doctype/journal_entry/journal_entry.js:659
+#: erpnext/accounts/doctype/journal_entry/journal_entry.js:655
#: erpnext/accounts/doctype/journal_entry/journal_entry.json
#: erpnext/accounts/doctype/journal_entry_template/journal_entry_template.json
#: erpnext/accounts/doctype/payment_entry/payment_entry.json
@@ -46208,7 +46620,7 @@ msgstr ""
msgid "Series for Asset Depreciation Entry (Journal Entry)"
msgstr ""
-#: erpnext/buying/doctype/supplier/supplier.py:142
+#: erpnext/buying/doctype/supplier/supplier.py:143
msgid "Series is mandatory"
msgstr ""
@@ -46397,12 +46809,12 @@ msgid "Service Stop Date"
msgstr ""
#: erpnext/accounts/deferred_revenue.py:45
-#: erpnext/public/js/controllers/transaction.js:1671
+#: erpnext/public/js/controllers/transaction.js:1770
msgid "Service Stop Date cannot be after Service End Date"
msgstr ""
#: erpnext/accounts/deferred_revenue.py:42
-#: erpnext/public/js/controllers/transaction.js:1668
+#: erpnext/public/js/controllers/transaction.js:1767
msgid "Service Stop Date cannot be before Service Start Date"
msgstr ""
@@ -46737,7 +47149,7 @@ msgid "Setting up company"
msgstr ""
#: erpnext/manufacturing/doctype/bom/bom.py:1182
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1461
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1451
msgid "Setting {0} is required"
msgstr ""
@@ -46757,6 +47169,21 @@ msgstr ""
msgid "Settled"
msgstr ""
+#. Label of an action in the Onboarding Step 'Setup Sales taxes'
+#: erpnext/accounts/onboarding_step/setup_sales_taxes/setup_sales_taxes.json
+msgid "Setup Sales Taxes"
+msgstr ""
+
+#. Title of an Onboarding Step
+#: erpnext/accounts/onboarding_step/setup_sales_taxes/setup_sales_taxes.json
+msgid "Setup Sales taxes"
+msgstr ""
+
+#. Title of an Onboarding Step
+#: erpnext/stock/onboarding_step/setup_warehouse/setup_warehouse.json
+msgid "Setup Warehouse"
+msgstr ""
+
#: erpnext/public/js/setup_wizard.js:25
msgid "Setup your organization"
msgstr ""
@@ -47161,7 +47588,7 @@ msgstr ""
msgid "Show GL Balance"
msgstr ""
-#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.js:91
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.js:97
#: erpnext/accounts/report/trial_balance/trial_balance.js:117
msgid "Show Group Accounts"
msgstr ""
@@ -47300,6 +47727,7 @@ msgstr ""
msgid "Show negative values as positive (for expenses in P&L)"
msgstr ""
+#: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.js:91
#: erpnext/accounts/report/trial_balance/trial_balance.js:111
msgid "Show net values in opening and closing columns"
msgstr ""
@@ -47312,7 +47740,7 @@ msgstr ""
msgid "Show only the Immediate Upcoming Term"
msgstr ""
-#: erpnext/stock/utils.py:557
+#: erpnext/stock/utils.py:558
msgid "Show pending entries"
msgstr ""
@@ -47460,7 +47888,7 @@ msgstr ""
msgid "Skip Material Transfer to WIP Warehouse"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:561
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:563
msgid "Skipped {0} DocType(s):
{1}"
msgstr ""
@@ -47609,7 +48037,7 @@ msgstr ""
#: erpnext/selling/doctype/sales_order_item/sales_order_item.json
#: erpnext/stock/dashboard/item_dashboard.js:227
#: erpnext/stock/doctype/material_request_item/material_request_item.json
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:699
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:716
#: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
msgid "Source Warehouse"
msgstr ""
@@ -47729,7 +48157,7 @@ msgstr ""
msgid "Split Quantity must be less than Asset Quantity"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2441
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2453
msgid "Splitting {0} {1} into {2} rows as per Payment Terms"
msgstr ""
@@ -47787,7 +48215,7 @@ msgstr ""
msgid "Stale Days"
msgstr ""
-#: erpnext/accounts/doctype/accounts_settings/accounts_settings.py:109
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.py:146
msgid "Stale Days should start from 1."
msgstr ""
@@ -47913,11 +48341,6 @@ msgstr ""
msgid "Start date should be less than end date for task {0}"
msgstr ""
-#. Label of the started_time (Datetime) field in DocType 'Job Card'
-#: erpnext/manufacturing/doctype/job_card/job_card.json
-msgid "Started Time"
-msgstr ""
-
#: erpnext/utilities/bulk_transaction.py:44
msgid "Started a background job to create {1} {0}. {2}"
msgstr ""
@@ -47956,6 +48379,11 @@ msgstr ""
msgid "Status Illustration"
msgstr ""
+#. Label of the section_break_dfoc (Section Break) field in DocType 'Job Card'
+#: erpnext/manufacturing/doctype/job_card/job_card.json
+msgid "Status and Reference"
+msgstr ""
+
#: erpnext/projects/doctype/project/project.py:712
msgid "Status must be Cancelled or Completed"
msgstr ""
@@ -48049,7 +48477,7 @@ msgstr ""
#. Label of a Workspace Sidebar Item
#: erpnext/selling/doctype/quotation_item/quotation_item.json
#: erpnext/stock/doctype/item/item.js:90
-#: erpnext/stock/doctype/warehouse/warehouse.js:61
+#: erpnext/stock/doctype/warehouse/warehouse.js:62
#: erpnext/stock/report/stock_balance/stock_balance.json
#: erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py:107
#: erpnext/stock/workspace/stock/stock.json
@@ -48171,7 +48599,7 @@ msgstr ""
msgid "Stock Entry {0} created"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1498
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1496
msgid "Stock Entry {0} has created"
msgstr ""
@@ -48444,7 +48872,7 @@ msgstr ""
#: erpnext/controllers/subcontracting_inward_controller.py:1003
#: erpnext/manufacturing/doctype/production_plan/production_plan.py:2234
-#: erpnext/manufacturing/doctype/work_order/work_order.py:2109
+#: erpnext/manufacturing/doctype/work_order/work_order.py:2100
#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1777
msgid "Stock Reservation Entries Created"
msgstr ""
@@ -48509,7 +48937,7 @@ msgstr ""
#. Name of a DocType
#. Label of a Link in the Stock Workspace
#. Label of a Workspace Sidebar Item
-#: erpnext/selling/doctype/selling_settings/selling_settings.py:94
+#: erpnext/selling/doctype/selling_settings/selling_settings.py:115
#: erpnext/setup/doctype/company/company.json
#: erpnext/setup/workspace/erpnext_settings/erpnext_settings.json
#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:675
@@ -48520,6 +48948,11 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
+#. Title of the Module Onboarding 'Stock Onboarding'
+#: erpnext/stock/module_onboarding/stock_onboarding/stock_onboarding.json
+msgid "Stock Setup"
+msgstr ""
+
#. Label of the stock_summary_tab (Tab Break) field in DocType 'Plant Floor'
#. Label of the stock_summary (HTML) field in DocType 'Plant Floor'
#. Label of a Link in the Stock Workspace
@@ -48620,7 +49053,7 @@ msgstr ""
#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json
#: erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py:35
#: erpnext/stock/report/reserved_stock/reserved_stock.py:110
-#: erpnext/stock/report/stock_balance/stock_balance.py:438
+#: erpnext/stock/report/stock_balance/stock_balance.py:469
#: erpnext/stock/report/stock_ledger/stock_ledger.py:215
#: erpnext/subcontracting/doctype/subcontracting_inward_order_item/subcontracting_inward_order_item.json
#: erpnext/subcontracting/doctype/subcontracting_inward_order_received_item/subcontracting_inward_order_received_item.json
@@ -48786,7 +49219,7 @@ msgstr ""
msgid "Stock will be reserved on submission of Purchase Receipt created against Material Request for Sales Order."
msgstr ""
-#: erpnext/stock/utils.py:548
+#: erpnext/stock/utils.py:549
msgid "Stock/Accounts can not be frozen as processing of backdated entries is going on. Please try again later."
msgstr ""
@@ -48801,7 +49234,7 @@ msgstr ""
msgid "Stop Reason"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1071
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1065
msgid "Stopped Work Order cannot be cancelled, Unstop it first to cancel"
msgstr ""
@@ -49221,6 +49654,11 @@ msgstr ""
msgid "Subcontracting Settings"
msgstr ""
+#. Title of the Module Onboarding 'Subcontracting Onboarding'
+#: erpnext/subcontracting/module_onboarding/subcontracting_onboarding/subcontracting_onboarding.json
+msgid "Subcontracting Setup"
+msgstr ""
+
#. Label of the subdivision (Autocomplete) field in DocType 'Holiday List'
#: erpnext/setup/doctype/holiday_list/holiday_list.json
msgid "Subdivision"
@@ -49255,6 +49693,8 @@ msgstr ""
msgid "Submit your Quotation"
msgstr ""
+#. Label of the subscription_section (Section Break) field in DocType 'Journal
+#. Entry'
#. Label of the subscription (Link) field in DocType 'Process Subscription'
#. Label of the subscription_section (Section Break) field in DocType 'Purchase
#. Invoice'
@@ -49267,6 +49707,7 @@ msgstr ""
#. Label of a Desktop Icon
#. Title of a Workspace Sidebar
#. Label of a Workspace Sidebar Item
+#: erpnext/accounts/doctype/journal_entry/journal_entry.json
#: erpnext/accounts/doctype/process_subscription/process_subscription.json
#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice_dashboard.py:26
@@ -49337,8 +49778,6 @@ msgstr ""
msgid "Subscription Price Based On"
msgstr ""
-#. Label of the subscription_section (Section Break) field in DocType 'Journal
-#. Entry'
#. Label of the subscription_section (Section Break) field in DocType 'Payment
#. Entry'
#. Label of the subscription_section (Section Break) field in DocType 'Payment
@@ -49347,7 +49786,6 @@ msgstr ""
#. Invoice'
#. Label of the subscription_section (Section Break) field in DocType 'Delivery
#. Note'
-#: erpnext/accounts/doctype/journal_entry/journal_entry.json
#: erpnext/accounts/doctype/payment_entry/payment_entry.json
#: erpnext/accounts/doctype/payment_request/payment_request.json
#: erpnext/accounts/doctype/pos_invoice/pos_invoice.json
@@ -49433,7 +49871,7 @@ msgstr ""
msgid "Successfully imported {0} records."
msgstr ""
-#: erpnext/buying/doctype/supplier/supplier.js:204
+#: erpnext/buying/doctype/supplier/supplier.js:202
msgid "Successfully linked to Customer"
msgstr ""
@@ -49826,6 +50264,8 @@ msgid "Supplier Number At Customer"
msgstr ""
#. Label of the supplier_numbers (Table) field in DocType 'Customer'
+#. Label of the supplier_numbers_section (Section Break) field in DocType
+#. 'Customer'
#: erpnext/selling/doctype/customer/customer.json
msgid "Supplier Numbers"
msgstr ""
@@ -49872,7 +50312,7 @@ msgstr ""
#. Label of a Link in the Buying Workspace
#. Label of the supplier_quotation (Link) field in DocType 'Quotation'
#. Label of a Workspace Sidebar Item
-#: erpnext/buying/doctype/purchase_order/purchase_order.js:565
+#: erpnext/buying/doctype/purchase_order/purchase_order.js:544
#: erpnext/buying/doctype/purchase_order/purchase_order.json
#: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:40
@@ -50350,7 +50790,7 @@ msgstr ""
#: erpnext/stock/dashboard/item_dashboard.js:234
#: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
#: erpnext/stock/doctype/material_request_item/material_request_item.json
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:705
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:722
#: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
msgid "Target Warehouse"
msgstr ""
@@ -50378,7 +50818,7 @@ msgstr ""
msgid "Target Warehouse is required before Submit"
msgstr ""
-#: erpnext/controllers/selling_controller.py:874
+#: erpnext/controllers/selling_controller.py:881
msgid "Target Warehouse is set for some items but the customer is not an internal customer."
msgstr ""
@@ -50715,6 +51155,12 @@ msgstr ""
msgid "Tax Type"
msgstr ""
+#. Label of the tax_withholding_tab (Tab Break) field in DocType 'Journal
+#. Entry'
+#: erpnext/accounts/doctype/journal_entry/journal_entry.json
+msgid "Tax Withholding"
+msgstr ""
+
#. Name of a DocType
#: erpnext/accounts/doctype/tax_withholding_account/tax_withholding_account.json
msgid "Tax Withholding Account"
@@ -50773,8 +51219,6 @@ msgstr ""
msgid "Tax Withholding Entries"
msgstr ""
-#. Label of the section_tax_withholding_entry (Section Break) field in DocType
-#. 'Journal Entry'
#. Label of the section_tax_withholding_entry (Section Break) field in DocType
#. 'Payment Entry'
#. Label of the section_tax_withholding_entry (Section Break) field in DocType
@@ -50782,7 +51226,6 @@ msgstr ""
#. Label of the section_tax_withholding_entry (Section Break) field in DocType
#. 'Sales Invoice'
#. Name of a DocType
-#: erpnext/accounts/doctype/journal_entry/journal_entry.json
#: erpnext/accounts/doctype/payment_entry/payment_entry.json
#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.json
@@ -50856,7 +51299,7 @@ msgstr ""
#. Detail'
#: erpnext/accounts/doctype/item_wise_tax_detail/item_wise_tax_detail.json
#: erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py:157
-#: erpnext/controllers/taxes_and_totals.py:1207
+#: erpnext/controllers/taxes_and_totals.py:1212
msgid "Taxable Amount"
msgstr ""
@@ -51429,7 +51872,7 @@ msgstr ""
msgid "The Loyalty Program isn't valid for the selected company"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:981
+#: erpnext/accounts/doctype/payment_request/payment_request.py:1106
msgid "The Payment Request {0} is already paid, cannot process payment twice"
msgstr ""
@@ -51453,7 +51896,7 @@ msgstr ""
msgid "The Serial No at Row #{0}: {1} is not available in warehouse {2}."
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2536
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2546
msgid "The Serial No {0} is reserved against the {1} {2} and cannot be used for any other transaction."
msgstr ""
@@ -51471,11 +51914,11 @@ msgstr ""
msgid "The account head under Liability or Equity, in which Profit/Loss will be booked"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:876
+#: erpnext/accounts/doctype/payment_request/payment_request.py:1001
msgid "The allocated amount is greater than the outstanding amount of Payment Request {0}"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:175
+#: erpnext/accounts/doctype/payment_request/payment_request.py:198
msgid "The amount of {0} set in this payment request is different from the calculated amount of all payment plans: {1}. Make sure this is correct before submitting the document."
msgstr ""
@@ -51483,7 +51926,7 @@ msgstr ""
msgid "The batch {0} is already reserved in {1} {2}. So, cannot proceed with the {3} {4}, which is created against the {5} {6}."
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1304
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1302
msgid "The completed quantity {0} of an operation {1} cannot be greater than the completed quantity {2} of a previous operation {3}."
msgstr ""
@@ -51560,7 +52003,7 @@ msgstr ""
msgid "The following deleted attributes exist in Variants but not in the Template. You can either delete the Variants or keep the attribute(s) in template."
msgstr ""
-#: erpnext/setup/doctype/employee/employee.py:176
+#: erpnext/setup/doctype/employee/employee.py:175
msgid "The following employees are currently still reporting to {0}:"
msgstr ""
@@ -51568,6 +52011,12 @@ msgstr ""
msgid "The following invalid Pricing Rules are deleted:"
msgstr ""
+#: erpnext/accounts/doctype/payment_request/payment_request.py:622
+msgid ""
+"The following payment schedule(s) already exist:\n"
+"{0}"
+msgstr ""
+
#: erpnext/assets/doctype/asset_repair/asset_repair.py:112
msgid "The following rows are duplicates:"
msgstr ""
@@ -51647,7 +52096,7 @@ msgstr ""
msgid "The parent account {0} does not exists in the uploaded template"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:164
+#: erpnext/accounts/doctype/payment_request/payment_request.py:187
msgid "The payment gateway account in plan {0} is different from the payment gateway account in this payment request"
msgstr ""
@@ -51806,11 +52255,11 @@ msgstr ""
msgid "The warehouse where your Items will be transferred when you begin production. Group Warehouse can also be selected as a Work in Progress warehouse."
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:877
+#: erpnext/manufacturing/doctype/job_card/job_card.py:875
msgid "The {0} ({1}) must be equal to {2} ({3})"
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:3294
+#: erpnext/public/js/controllers/transaction.js:3401
msgid "The {0} contains Unit Price Items."
msgstr ""
@@ -51826,7 +52275,7 @@ msgstr ""
msgid "The {0} {1} does not match with the {0} {2} in the {3} {4}"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:980
+#: erpnext/manufacturing/doctype/job_card/job_card.py:978
msgid "The {0} {1} is used to calculate the valuation cost for the finished good {2}."
msgstr ""
@@ -51870,7 +52319,7 @@ msgstr ""
msgid "There can be multiple tiered collection factor based on the total spent. But the conversion factor for redemption will always be same for all the tier."
msgstr ""
-#: erpnext/accounts/party.py:587
+#: erpnext/accounts/party.py:575
msgid "There can only be 1 Account per Company in {0} {1}"
msgstr ""
@@ -51911,7 +52360,7 @@ msgstr ""
msgid "There was an issue connecting to Plaid's authentication server. Check browser console for more information"
msgstr ""
-#: erpnext/accounts/utils.py:1135
+#: erpnext/accounts/utils.py:1136
msgid "There were issues unlinking payment entry {0}."
msgstr ""
@@ -52162,7 +52611,7 @@ msgstr ""
msgid "This will restrict user access to other employee records"
msgstr ""
-#: erpnext/controllers/selling_controller.py:875
+#: erpnext/controllers/selling_controller.py:882
msgid "This {} will be treated as material transfer."
msgstr ""
@@ -52273,7 +52722,7 @@ msgstr ""
msgid "Time in mins."
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:856
+#: erpnext/manufacturing/doctype/job_card/job_card.py:854
msgid "Time logs are required for {0} {1}"
msgstr ""
@@ -52630,7 +53079,7 @@ msgstr ""
msgid "To cancel this Sales Invoice you need to cancel the POS Closing Entry {}."
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:118
+#: erpnext/accounts/doctype/payment_request/payment_request.py:139
msgid "To create a Payment Request reference document is required"
msgstr ""
@@ -52648,7 +53097,7 @@ msgstr ""
msgid "To include sub-assembly costs and scrap items in Finished Goods on a work order without using a job card, when the 'Use Multi-Level BOM' option is enabled."
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2231
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2243
#: erpnext/controllers/accounts_controller.py:3234
msgid "To include tax in row {0} in Item rate, taxes in rows {1} must also be included"
msgstr ""
@@ -52723,26 +53172,6 @@ msgstr ""
msgid "Too many columns. Export the report and print it using a spreadsheet application."
msgstr ""
-#. Label of a Card Break in the Manufacturing Workspace
-#. Label of the tools (Column Break) field in DocType 'Email Digest'
-#. Label of a Card Break in the Stock Workspace
-#. Label of a Workspace Sidebar Item
-#: erpnext/buying/doctype/purchase_order/purchase_order.js:599
-#: erpnext/buying/doctype/purchase_order/purchase_order.js:675
-#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:61
-#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:148
-#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:452
-#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:461
-#: erpnext/buying/doctype/supplier_quotation/supplier_quotation.js:84
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:123
-#: erpnext/manufacturing/workspace/manufacturing/manufacturing.json
-#: erpnext/setup/doctype/email_digest/email_digest.json
-#: erpnext/stock/workspace/stock/stock.json
-#: erpnext/workspace_sidebar/manufacturing.json
-#: erpnext/workspace_sidebar/stock.json
-msgid "Tools"
-msgstr ""
-
#. Name of a UOM
#: erpnext/setup/setup_wizard/data/uom_data.json
msgid "Torr"
@@ -52954,12 +53383,12 @@ msgstr ""
#. Label of the total_completed_qty (Float) field in DocType 'Job Card'
#: erpnext/manufacturing/doctype/job_card/job_card.json
-#: erpnext/manufacturing/doctype/job_card/job_card.py:873
+#: erpnext/manufacturing/doctype/job_card/job_card.py:871
#: erpnext/manufacturing/report/job_card_summary/job_card_summary.py:174
msgid "Total Completed Qty"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:190
+#: erpnext/manufacturing/doctype/job_card/job_card.py:188
msgid "Total Completed Qty is required for Job Card {0}, please start and complete the job card before submission"
msgstr ""
@@ -53228,7 +53657,7 @@ msgstr ""
msgid "Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:143
+#: erpnext/accounts/doctype/payment_request/payment_request.py:166
msgid "Total Payment Request amount cannot be greater than {0} amount"
msgstr ""
@@ -53528,7 +53957,7 @@ msgstr ""
msgid "Total allocated percentage for sales team should be 100"
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:168
+#: erpnext/selling/doctype/customer/customer.py:192
msgid "Total contribution percentage should be equal to 100"
msgstr ""
@@ -53557,8 +53986,8 @@ msgstr ""
msgid "Total quantity in delivery schedule cannot be greater than the item quantity"
msgstr ""
-#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:746
-#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:747
+#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:756
+#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:757
#: erpnext/accounts/report/financial_statements.py:352
#: erpnext/accounts/report/financial_statements.py:353
msgid "Total {0} ({1})"
@@ -53576,6 +54005,27 @@ msgstr ""
msgid "Total(Qty)"
msgstr ""
+#. Label of the base_totals_section (Section Break) field in DocType 'Purchase
+#. Invoice'
+#. Label of the base_totals_section (Section Break) field in DocType 'Sales
+#. Invoice'
+#. Label of the base_totals_section (Section Break) field in DocType 'Purchase
+#. Order'
+#. Label of the base_totals_section (Section Break) field in DocType 'Sales
+#. Order'
+#. Label of the base_totals_section (Section Break) field in DocType 'Delivery
+#. Note'
+#. Label of the base_totals_section (Section Break) field in DocType 'Purchase
+#. Receipt'
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+#: erpnext/accounts/doctype/sales_invoice/sales_invoice.json
+#: erpnext/buying/doctype/purchase_order/purchase_order.json
+#: erpnext/selling/doctype/sales_order/sales_order.json
+#: erpnext/stock/doctype/delivery_note/delivery_note.json
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
+msgid "Totals (Company Currency)"
+msgstr ""
+
#: erpnext/stock/doctype/item/item_dashboard.py:33
msgid "Traceability"
msgstr ""
@@ -53685,11 +54135,11 @@ msgstr ""
msgid "Transaction Deletion Record To Delete"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1098
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1100
msgid "Transaction Deletion Record {0} is already running. {1}"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1117
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1119
msgid "Transaction Deletion Record {0} is currently deleting {1}. Cannot save documents until deletion completes."
msgstr ""
@@ -53751,7 +54201,7 @@ msgstr ""
msgid "Transaction Type"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:153
+#: erpnext/accounts/doctype/payment_request/payment_request.py:176
msgid "Transaction currency must be same as Payment Gateway currency"
msgstr ""
@@ -53775,11 +54225,11 @@ msgstr ""
msgid "Transaction from which tax is withheld"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:849
+#: erpnext/manufacturing/doctype/job_card/job_card.py:847
msgid "Transaction not allowed against stopped Work Order {0}"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1236
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1248
msgid "Transaction reference no {0} dated {1}"
msgstr ""
@@ -54216,7 +54666,7 @@ msgstr ""
#: erpnext/stock/report/item_prices/item_prices.py:55
#: erpnext/stock/report/product_bundle_balance/product_bundle_balance.py:94
#: erpnext/stock/report/stock_ageing/stock_ageing.py:178
-#: erpnext/stock/report/stock_analytics/stock_analytics.py:44
+#: erpnext/stock/report/stock_analytics/stock_analytics.py:59
#: erpnext/stock/report/stock_projected_qty/stock_projected_qty.py:134
#: erpnext/stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py:60
#: erpnext/subcontracting/doctype/subcontracting_inward_order_service_item/subcontracting_inward_order_service_item.json
@@ -54311,6 +54761,24 @@ msgstr ""
msgid "URL can only be a string"
msgstr ""
+#. Label of the utm_analytics_section (Section Break) field in DocType 'POS
+#. Invoice'
+#. Label of the utm_analytics_section (Section Break) field in DocType 'Sales
+#. Invoice'
+#. Label of the utm_analytics_section (Section Break) field in DocType
+#. 'Quotation'
+#. Label of the utm_analytics_section (Section Break) field in DocType 'Sales
+#. Order'
+#. Label of the utm_analytics_section (Section Break) field in DocType
+#. 'Delivery Note'
+#: erpnext/accounts/doctype/pos_invoice/pos_invoice.json
+#: erpnext/accounts/doctype/sales_invoice/sales_invoice.json
+#: erpnext/selling/doctype/quotation/quotation.json
+#: erpnext/selling/doctype/sales_order/sales_order.json
+#: erpnext/stock/doctype/delivery_note/delivery_note.json
+msgid "UTM Analytics"
+msgstr ""
+
#. Option for the 'Data Fetch Method' (Select) field in DocType 'Accounts
#. Settings'
#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -54326,7 +54794,7 @@ msgstr ""
msgid "UnReconcile Allocations"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:464
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:466
msgid "Unable to fetch DocType details. Please contact system administrator."
msgstr ""
@@ -54343,7 +54811,7 @@ msgstr ""
msgid "Unable to find score starting at {0}. You need to have standing scores covering 0 to 100"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1029
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1023
msgid "Unable to find the time slot in the next {0} days for the operation {1}. Please increase the 'Capacity Planning For (Days)' in the {2}."
msgstr ""
@@ -54374,8 +54842,8 @@ msgstr ""
#: erpnext/accounts/report/balance_sheet/balance_sheet.py:83
#: erpnext/accounts/report/balance_sheet/balance_sheet.py:84
-#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:87
-#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:88
+#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:90
+#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:91
msgid "Unclosed Fiscal Years Profit / Loss (Credit)"
msgstr ""
@@ -54415,7 +54883,7 @@ msgstr ""
msgid "Under Working Hours table, you can add start and end times for a Workstation. For example, a Workstation may be active from 9 am to 1 pm, then 2 pm to 5 pm. You can also specify the working hours based on shifts. While scheduling a Work Order, the system will check for the availability of the Workstation based on the working hours specified."
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:933
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:935
msgid "Unexpected Naming Series Pattern"
msgstr ""
@@ -54625,7 +55093,7 @@ msgstr ""
msgid "Unsecured Loans"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1727
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:1730
msgid "Unset Matched Payment Request"
msgstr ""
@@ -54820,7 +55288,7 @@ msgstr ""
msgid "Update Rate and Availability"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.js:588
+#: erpnext/buying/doctype/purchase_order/purchase_order.js:567
msgid "Update Rate as per Last Purchase"
msgstr ""
@@ -54894,7 +55362,7 @@ msgstr ""
msgid "Updating Work Order status"
msgstr ""
-#: erpnext/public/js/print.js:140
+#: erpnext/public/js/print.js:151
msgid "Updating details."
msgstr ""
@@ -55107,7 +55575,7 @@ msgstr ""
msgid "Used with Financial Report Template"
msgstr ""
-#: erpnext/setup/install.py:194
+#: erpnext/setup/install.py:195
msgid "User Forum"
msgstr ""
@@ -55118,7 +55586,7 @@ msgstr ""
#. Label of the user_remark (Small Text) field in DocType 'Journal Entry'
#. Label of the user_remark (Small Text) field in DocType 'Journal Entry
#. Account'
-#: erpnext/accounts/doctype/journal_entry/journal_entry.js:655
+#: erpnext/accounts/doctype/journal_entry/journal_entry.js:651
#: erpnext/accounts/doctype/journal_entry/journal_entry.json
#: erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
msgid "User Remark"
@@ -55133,7 +55601,7 @@ msgstr ""
msgid "User has not applied rule on the invoice {0}"
msgstr ""
-#: erpnext/setup/doctype/employee/employee.py:191
+#: erpnext/setup/doctype/employee/employee.py:190
msgid "User {0} does not exist"
msgstr ""
@@ -55141,15 +55609,15 @@ msgstr ""
msgid "User {0} doesn't have any default POS Profile. Check Default at Row {1} for this User."
msgstr ""
-#: erpnext/setup/doctype/employee/employee.py:208
+#: erpnext/setup/doctype/employee/employee.py:207
msgid "User {0} is already assigned to Employee {1}"
msgstr ""
-#: erpnext/setup/doctype/employee/employee.py:246
+#: erpnext/setup/doctype/employee/employee.py:245
msgid "User {0}: Removed Employee Self Service role as there is no mapped employee."
msgstr ""
-#: erpnext/setup/doctype/employee/employee.py:241
+#: erpnext/setup/doctype/employee/employee.py:240
msgid "User {0}: Removed Employee role as there is no mapped employee."
msgstr ""
@@ -55157,18 +55625,18 @@ msgstr ""
msgid "User {} is disabled. Please select valid user/cashier"
msgstr ""
-#. Description of the 'Track Semi Finished Goods' (Check) field in DocType
-#. 'BOM'
-#: erpnext/manufacturing/doctype/bom/bom.json
-msgid "Users can consume raw materials and add semi-finished goods or final finished goods against the operation using job cards."
-msgstr ""
-
#. Description of the 'Set Landed Cost Based on Purchase Invoice Rate' (Check)
#. field in DocType 'Buying Settings'
#: erpnext/buying/doctype/buying_settings/buying_settings.json
msgid "Users can enable the checkbox If they want to adjust the incoming rate (set using purchase receipt) based on the purchase invoice rate."
msgstr ""
+#. Description of the 'Track Semi Finished Goods' (Check) field in DocType
+#. 'BOM'
+#: erpnext/manufacturing/doctype/bom/bom.json
+msgid "Users can make manufacture entry against Job Cards"
+msgstr ""
+
#. Description of the 'Role Allowed to Over Bill ' (Link) field in DocType
#. 'Accounts Settings'
#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -55433,7 +55901,7 @@ msgstr ""
#: erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py:85
#: erpnext/stock/report/item_prices/item_prices.py:57
#: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:67
-#: erpnext/stock/report/stock_balance/stock_balance.py:489
+#: erpnext/stock/report/stock_balance/stock_balance.py:520
#: erpnext/stock/report/stock_ledger/stock_ledger.py:298
msgid "Valuation Rate"
msgstr ""
@@ -55442,11 +55910,11 @@ msgstr ""
msgid "Valuation Rate (In / Out)"
msgstr ""
-#: erpnext/stock/stock_ledger.py:2017
+#: erpnext/stock/stock_ledger.py:2015
msgid "Valuation Rate Missing"
msgstr ""
-#: erpnext/stock/stock_ledger.py:1995
+#: erpnext/stock/stock_ledger.py:1993
msgid "Valuation Rate for the Item {0}, is required to do accounting entries for {1} {2}."
msgstr ""
@@ -55477,7 +55945,7 @@ msgstr ""
msgid "Valuation rate for the item as per Sales Invoice (Only for Internal Transfers)"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2255
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2267
#: erpnext/controllers/accounts_controller.py:3258
msgid "Valuation type charges can not be marked as Inclusive"
msgstr ""
@@ -55771,6 +56239,14 @@ msgstr ""
msgid "View BOM Update Log"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'View Balance Sheet'
+#. Description of a report in the Onboarding Step 'View Balance Sheet'
+#: erpnext/accounts/onboarding_step/view_balance_sheet/view_balance_sheet.json
+#: erpnext/assets/onboarding_step/view_balance_sheet/view_balance_sheet.json
+msgid "View Balance Sheet"
+msgstr ""
+
#: erpnext/public/js/setup_wizard.js:47
msgid "View Chart of Accounts"
msgstr ""
@@ -55808,10 +56284,42 @@ msgstr ""
msgid "View Now"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'View Project Summary'
+#. Description of a report in the Onboarding Step 'View Project Summary'
+#: erpnext/projects/onboarding_step/view_project_summary/view_project_summary.json
+msgid "View Project Summary"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'View Purchase Order Analysis'
+#. Description of a report in the Onboarding Step 'View Purchase Order
+#. Analysis'
+#: erpnext/buying/onboarding_step/view_purchase_order_analysis/view_purchase_order_analysis.json
+msgid "View Purchase Order Analysis"
+msgstr ""
+
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'View Sales Order Analysis'
+#. Description of a report in the Onboarding Step 'View Sales Order Analysis'
+#: erpnext/selling/onboarding_step/view_sales_order_analysis/view_sales_order_analysis.json
+msgid "View Sales Order Analysis"
+msgstr ""
+
+#. Label of an action in the Onboarding Step 'View Stock Balance Report'
+#: erpnext/stock/onboarding_step/view_stock_balance_report/view_stock_balance_report.json
#: erpnext/stock/report/stock_ledger/stock_ledger.js:139
msgid "View Stock Balance"
msgstr ""
+#. Title of an Onboarding Step
+#. Label of an action in the Onboarding Step 'View Stock Balance Report'
+#. Description of a report in the Onboarding Step 'View Stock Balance Report'
+#: erpnext/selling/onboarding_step/view_stock_balance_report/view_stock_balance_report.json
+#: erpnext/stock/onboarding_step/view_stock_balance_report/view_stock_balance_report.json
+msgid "View Stock Balance Report"
+msgstr ""
+
#: erpnext/stock/report/stock_balance/stock_balance.js:156
msgid "View Stock Ledger"
msgstr ""
@@ -55820,6 +56328,16 @@ msgstr ""
msgid "View Type"
msgstr ""
+#. Label of an action in the Onboarding Step 'View Work Order Summary Report'
+#: erpnext/manufacturing/onboarding_step/view_work_order_summary_report/view_work_order_summary_report.json
+msgid "View Work Order Summary"
+msgstr ""
+
+#. Title of an Onboarding Step
+#: erpnext/manufacturing/onboarding_step/view_work_order_summary_report/view_work_order_summary_report.json
+msgid "View Work Order Summary Report"
+msgstr ""
+
#. Label of the view_attachments (Check) field in DocType 'Project User'
#: erpnext/projects/doctype/project_user/project_user.json
msgid "View attachments"
@@ -55834,7 +56352,7 @@ msgstr ""
msgid "Vimeo"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:214
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:216
msgid "Virtual DocType"
msgstr ""
@@ -55966,7 +56484,7 @@ msgstr ""
msgid "Voucher No"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1341
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1351
msgid "Voucher No is mandatory"
msgstr ""
@@ -56228,7 +56746,7 @@ msgstr ""
msgid "Warehouse {0} does not belong to Company {1}."
msgstr ""
-#: erpnext/stock/utils.py:409
+#: erpnext/stock/utils.py:410
msgid "Warehouse {0} does not belong to company {1}"
msgstr ""
@@ -56361,7 +56879,7 @@ msgstr ""
msgid "Warning: Material Requested Qty is less than Minimum Order Qty"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1446
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1436
msgid "Warning: Quantity exceeds maximum producible quantity based on quantity of raw materials received through the Subcontracting Inward Order {0}."
msgstr ""
@@ -56495,7 +57013,7 @@ msgid "Website:"
msgstr ""
#: erpnext/selling/report/sales_analytics/sales_analytics.py:433
-#: erpnext/stock/report/stock_analytics/stock_analytics.py:111
+#: erpnext/stock/report/stock_analytics/stock_analytics.py:121
msgid "Week {0} {1}"
msgstr ""
@@ -56855,16 +57373,22 @@ msgstr ""
msgid "Work Order Summary"
msgstr ""
+#. Description of a report in the Onboarding Step 'View Work Order Summary
+#. Report'
+#: erpnext/manufacturing/onboarding_step/view_work_order_summary_report/view_work_order_summary_report.json
+msgid "Work Order Summary Report"
+msgstr ""
+
#: erpnext/stock/doctype/material_request/material_request.py:908
msgid "Work Order cannot be created for following reason:
{0}"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1390
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1380
msgid "Work Order cannot be raised against a Item Template"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:2431
-#: erpnext/manufacturing/doctype/work_order/work_order.py:2511
+#: erpnext/manufacturing/doctype/work_order/work_order.py:2427
+#: erpnext/manufacturing/doctype/work_order/work_order.py:2507
msgid "Work Order has been {0}"
msgstr ""
@@ -57029,7 +57553,7 @@ msgstr ""
msgid "Workstation Working Hour"
msgstr ""
-#: erpnext/manufacturing/doctype/workstation/workstation.py:452
+#: erpnext/manufacturing/doctype/workstation/workstation.py:453
msgid "Workstation is closed on the following dates as per Holiday List: {0}"
msgstr ""
@@ -57192,7 +57716,7 @@ msgstr ""
msgid "Year of Passing"
msgstr ""
-#: erpnext/accounts/doctype/fiscal_year/fiscal_year.py:85
+#: erpnext/accounts/doctype/fiscal_year/fiscal_year.py:91
msgid "Year start date or end date is overlapping with {0}. To avoid please set company"
msgstr ""
@@ -57265,7 +57789,7 @@ msgstr ""
msgid "You can use {0} to reconcile against {1} later."
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1316
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1314
msgid "You can't make any changes to Job Card since Work Order is closed."
msgstr ""
@@ -57305,7 +57829,7 @@ msgstr ""
msgid "You cannot edit root node."
msgstr ""
-#: erpnext/accounts/doctype/accounts_settings/accounts_settings.py:144
+#: erpnext/accounts/doctype/accounts_settings/accounts_settings.py:181
msgid "You cannot enable both the settings '{0}' and '{1}'."
msgstr ""
@@ -57365,7 +57889,7 @@ msgstr ""
msgid "You have enabled {0} and {1} in {2}. This can lead to prices from the default price list being inserted in the transaction price list."
msgstr ""
-#: erpnext/selling/doctype/selling_settings/selling_settings.py:89
+#: erpnext/selling/doctype/selling_settings/selling_settings.py:110
msgid "You have enabled {0} and {1} in {2}. This can lead to prices from the default price list being inserted into the transaction price list."
msgstr ""
@@ -57457,7 +57981,7 @@ msgstr ""
msgid "`Allow Negative rates for Items`"
msgstr ""
-#: erpnext/stock/stock_ledger.py:2009
+#: erpnext/stock/stock_ledger.py:2007
msgid "after"
msgstr ""
@@ -57477,7 +58001,7 @@ msgstr ""
msgid "as a percentage of finished item quantity"
msgstr ""
-#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1473
+#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1483
msgid "as of {0}"
msgstr ""
@@ -57622,7 +58146,7 @@ msgstr ""
msgid "out of 5"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1229
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1241
msgid "paid to"
msgstr ""
@@ -57647,7 +58171,7 @@ msgstr ""
msgid "per hour"
msgstr ""
-#: erpnext/stock/stock_ledger.py:2010
+#: erpnext/stock/stock_ledger.py:2008
msgid "performing either one below:"
msgstr ""
@@ -57672,7 +58196,7 @@ msgstr ""
msgid "ratings"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1229
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:1241
msgid "received from"
msgstr ""
@@ -57805,7 +58329,7 @@ msgstr ""
msgid "{0} Digest"
msgstr ""
-#: erpnext/accounts/utils.py:1496
+#: erpnext/accounts/utils.py:1497
msgid "{0} Number {1} is already used in {2} {3}"
msgstr ""
@@ -57882,7 +58406,7 @@ msgstr ""
msgid "{0} cannot be used as a Main Cost Center because it has been used as child in Cost Center Allocation {1}"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:123
+#: erpnext/accounts/doctype/payment_request/payment_request.py:146
msgid "{0} cannot be zero"
msgstr ""
@@ -57951,7 +58475,7 @@ msgstr ""
msgid "{0} in row {1}"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:450
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:452
msgid "{0} is a child table and will be deleted automatically with its parent"
msgstr ""
@@ -57965,7 +58489,7 @@ msgstr ""
msgid "{0} is added multiple times on rows: {1}"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:626
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:628
msgid "{0} is already running for {1}"
msgstr ""
@@ -57994,7 +58518,7 @@ msgstr ""
msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}."
msgstr ""
-#: erpnext/selling/doctype/customer/customer.py:210
+#: erpnext/selling/doctype/customer/customer.py:234
msgid "{0} is not a company bank account"
msgstr ""
@@ -58018,7 +58542,7 @@ msgstr ""
msgid "{0} is not enabled in {1}"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:634
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:636
msgid "{0} is not running. Cannot trigger events for this Document"
msgstr ""
@@ -58026,7 +58550,7 @@ msgstr ""
msgid "{0} is not the default supplier for any items."
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2937
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2949
msgid "{0} is on hold till {1}"
msgstr ""
@@ -58086,12 +58610,12 @@ msgstr ""
msgid "{0} units of {1} are required in {2} with the inventory dimension: {3} on {4} {5} for {6} to complete the transaction."
msgstr ""
-#: erpnext/stock/stock_ledger.py:1683 erpnext/stock/stock_ledger.py:2161
-#: erpnext/stock/stock_ledger.py:2175
+#: erpnext/stock/stock_ledger.py:1683 erpnext/stock/stock_ledger.py:2157
+#: erpnext/stock/stock_ledger.py:2171
msgid "{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction."
msgstr ""
-#: erpnext/stock/stock_ledger.py:2262 erpnext/stock/stock_ledger.py:2307
+#: erpnext/stock/stock_ledger.py:2258 erpnext/stock/stock_ledger.py:2303
msgid "{0} units of {1} needed in {2} on {3} {4} to complete this transaction."
msgstr ""
@@ -58103,7 +58627,7 @@ msgstr ""
msgid "{0} until {1}"
msgstr ""
-#: erpnext/stock/utils.py:400
+#: erpnext/stock/utils.py:401
msgid "{0} valid serial nos for Item {1}"
msgstr ""
@@ -58123,7 +58647,7 @@ msgstr ""
msgid "{0} will be set as the {1} in subsequently scanned items"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:989
+#: erpnext/manufacturing/doctype/job_card/job_card.py:987
msgid "{0} {1}"
msgstr ""
@@ -58145,11 +58669,11 @@ msgstr ""
#: erpnext/accounts/doctype/payment_entry/payment_entry.py:613
#: erpnext/accounts/doctype/payment_entry/payment_entry.py:666
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2679
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2691
msgid "{0} {1} does not exist"
msgstr ""
-#: erpnext/accounts/party.py:567
+#: erpnext/accounts/party.py:555
msgid "{0} {1} has accounting entries in currency {2} for company {3}. Please select a receivable or payable account with currency {2}."
msgstr ""
@@ -58200,11 +58724,11 @@ msgstr ""
msgid "{0} {1} is closed"
msgstr ""
-#: erpnext/accounts/party.py:805
+#: erpnext/accounts/party.py:793
msgid "{0} {1} is disabled"
msgstr ""
-#: erpnext/accounts/party.py:811
+#: erpnext/accounts/party.py:799
msgid "{0} {1} is frozen"
msgstr ""
@@ -58212,7 +58736,7 @@ msgstr ""
msgid "{0} {1} is fully billed"
msgstr ""
-#: erpnext/accounts/party.py:815
+#: erpnext/accounts/party.py:803
msgid "{0} {1} is not active"
msgstr ""
@@ -58321,24 +58845,24 @@ msgstr ""
msgid "{0}'s {1} cannot be after {2}'s Expected End Date."
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1288
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1296
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1286
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1294
msgid "{0}, complete the operation {1} before the operation {2}."
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:521
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:523
msgid "{0}: Child table (auto-deleted with parent)"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:516
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:518
msgid "{0}: Not found"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:512
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:514
msgid "{0}: Protected DocType"
msgstr ""
-#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:526
+#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:528
msgid "{0}: Virtual DocType (no database table)"
msgstr ""
@@ -58346,7 +58870,7 @@ msgstr ""
msgid "{0}: {1} does not belong to the Company: {2}"
msgstr ""
-#: erpnext/accounts/party.py:80
+#: erpnext/accounts/party.py:78
msgid "{0}: {1} does not exists"
msgstr ""
@@ -58354,7 +58878,7 @@ msgstr ""
msgid "{0}: {1} is a group account."
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.js:989
+#: erpnext/accounts/doctype/payment_entry/payment_entry.js:993
msgid "{0}: {1} must be less than {2}"
msgstr ""
@@ -58403,7 +58927,7 @@ msgstr ""
msgid "{} {} is already linked with {} {}"
msgstr ""
-#: erpnext/accounts/doctype/bank_transaction/bank_transaction.py:390
+#: erpnext/accounts/doctype/bank_transaction/bank_transaction.py:391
msgid "{} {} is not affecting bank account {}"
msgstr ""
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index b442f5becfc..b74281308b7 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -225,7 +225,12 @@ class WorkOrder(Document):
frappe.throw(_("Actual End Date cannot be before Actual Start Date"))
def validate_fg_warehouse_for_reservation(self):
- if self.reserve_stock and self.sales_order and not self.subcontracting_inward_order:
+ if (
+ self.reserve_stock
+ and self.sales_order
+ and not self.subcontracting_inward_order
+ and not self.production_plan_sub_assembly_item
+ ):
warehouses = frappe.get_all(
"Sales Order Item",
filters={"parent": self.sales_order, "item_code": self.production_item},
@@ -413,39 +418,52 @@ class WorkOrder(Document):
)
def validate_sales_order(self):
+ if self.production_plan_sub_assembly_item:
+ return
+
if self.sales_order:
self.check_sales_order_on_hold_or_close()
- so = frappe.db.sql(
- """
- select so.name, so_item.delivery_date, so.project
- from `tabSales Order` so
- inner join `tabSales Order Item` so_item on so_item.parent = so.name
- left join `tabProduct Bundle Item` pk_item on so_item.item_code = pk_item.parent
- where so.name=%s and so.docstatus = 1
- and so.skip_delivery_note = 0 and (
- so_item.item_code=%s or
- pk_item.item_code=%s )
- """,
- (self.sales_order, self.production_item, self.production_item),
- as_dict=1,
+
+ SalesOrder = frappe.qb.DocType("Sales Order")
+ SalesOrderItem = frappe.qb.DocType("Sales Order Item")
+ PackedItem = frappe.qb.DocType("Packed Item")
+ ProductBundleItem = frappe.qb.DocType("Product Bundle Item")
+
+ so = (
+ frappe.qb.from_(SalesOrder)
+ .inner_join(SalesOrderItem)
+ .on(SalesOrderItem.parent == SalesOrder.name)
+ .left_join(ProductBundleItem)
+ .on(ProductBundleItem.parent == SalesOrderItem.item_code)
+ .select(SalesOrder.name, SalesOrder.project, SalesOrderItem.delivery_date)
+ .where(
+ (SalesOrder.skip_delivery_note == 0)
+ & (SalesOrder.docstatus == 1)
+ & (SalesOrder.name == self.sales_order)
+ & (
+ (SalesOrderItem.item_code == self.production_item)
+ | (ProductBundleItem.item_code == self.production_item)
+ )
+ )
+ .run(as_dict=1)
)
if not so:
- so = frappe.db.sql(
- """
- select
- so.name, so_item.delivery_date, so.project
- from
- `tabSales Order` so, `tabSales Order Item` so_item, `tabPacked Item` packed_item
- where so.name=%s
- and so.name=so_item.parent
- and so.name=packed_item.parent
- and so.skip_delivery_note = 0
- and so_item.item_code = packed_item.parent_item
- and so.docstatus = 1 and packed_item.item_code=%s
- """,
- (self.sales_order, self.production_item),
- as_dict=1,
+ so = (
+ frappe.qb.from_(SalesOrder)
+ .inner_join(SalesOrderItem)
+ .on(SalesOrderItem.parent == SalesOrder.name)
+ .inner_join(PackedItem)
+ .on(PackedItem.parent == SalesOrder.name)
+ .select(SalesOrder.name, SalesOrder.project, SalesOrderItem.delivery_date)
+ .where(
+ (SalesOrder.name == self.sales_order)
+ & (SalesOrder.skip_delivery_note == 0)
+ & (SalesOrderItem.item_code == PackedItem.parent_item)
+ & (SalesOrder.docstatus == 1)
+ & (PackedItem.item_code == self.production_item)
+ )
+ .run(as_dict=1)
)
if len(so):
@@ -651,7 +669,7 @@ class WorkOrder(Document):
from erpnext.selling.doctype.sales_order.sales_order import update_produced_qty_in_so_item
- if self.sales_order and self.sales_order_item:
+ if self.sales_order and self.sales_order_item and not self.production_plan_sub_assembly_item:
update_produced_qty_in_so_item(self.sales_order, self.sales_order_item)
if self.production_plan:
@@ -1159,7 +1177,7 @@ class WorkOrder(Document):
doc.db_set("status", doc.status)
def update_work_order_qty_in_so(self):
- if not self.sales_order and not self.sales_order_item:
+ if (not self.sales_order and not self.sales_order_item) or self.production_plan_sub_assembly_item:
return
total_bundle_qty = 1
diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js
index daffda5d4be..c53c1f8aef5 100644
--- a/erpnext/public/js/controllers/taxes_and_totals.js
+++ b/erpnext/public/js/controllers/taxes_and_totals.js
@@ -191,6 +191,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments {
tax.item_wise_tax_detail = {};
}
var tax_fields = [
+ "net_amount",
"total",
"tax_amount_after_discount_amount",
"tax_amount_for_current_item",
@@ -400,9 +401,14 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments {
var item_tax_map = me._load_item_tax_rate(item.item_tax_rate);
$.each(doc.taxes, function (i, tax) {
// tax_amount represents the amount of tax for the current step
- var current_tax_amount = me.get_current_tax_amount(item, tax, item_tax_map);
+ var [current_net_amount, current_tax_amount] = me.get_current_tax_amount(
+ item,
+ tax,
+ item_tax_map
+ );
if (frappe.flags.round_row_wise_tax) {
current_tax_amount = flt(current_tax_amount, precision("tax_amount", tax));
+ current_net_amount = flt(current_net_amount, precision("net_amount", tax));
}
// Adjust divisional loss to the last item
@@ -419,6 +425,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments {
!(me.discount_amount_applied && me.frm.doc.apply_discount_on == "Grand Total")
) {
tax.tax_amount += current_tax_amount;
+ tax.net_amount += current_net_amount;
}
// store tax_amount for current item as it will be used for
@@ -480,7 +487,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments {
for (const [i, tax] of doc.taxes.entries()) {
me.round_off_totals(tax);
- me.set_in_company_currency(tax, ["tax_amount", "tax_amount_after_discount_amount"]);
+ me.set_in_company_currency(tax, ["tax_amount", "tax_amount_after_discount_amount", "net_amount"]);
me.round_off_base_values(tax);
@@ -555,7 +562,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments {
current_tax_amount = tax_rate * item.qty;
}
- return current_tax_amount;
+ return [current_net_amount, current_tax_amount];
}
round_off_totals(tax) {
@@ -565,6 +572,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments {
}
tax.tax_amount = flt(tax.tax_amount, precision("tax_amount", tax));
+ tax.net_amount = flt(tax.net_amount, precision("net_amount", tax));
tax.tax_amount_after_discount_amount = flt(
tax.tax_amount_after_discount_amount,
precision("tax_amount", tax)
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index aa02eec7b62..650611ee709 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -2966,6 +2966,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
frappe.call({
method: "erpnext.controllers.stock_controller.make_quality_inspections",
args: {
+ company: me.frm.doc.company,
doctype: me.frm.doc.doctype,
docname: me.frm.doc.name,
items: selected_data,
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index 596f06d758c..d5e44e41a7f 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -118,12 +118,37 @@ class Customer(TransactionBase):
def get_customer_name(self):
self.customer_name = self.customer_name.strip()
if frappe.db.get_value("Customer", self.customer_name) and not frappe.flags.in_import:
- count = frappe.db.sql(
- """select ifnull(MAX(CAST(SUBSTRING_INDEX(name, ' ', -1) AS UNSIGNED)), 0) from tabCustomer
- where name like %s""",
- f"%{self.customer_name} - %",
- as_list=1,
- )[0][0]
+ name_prefix = f"{self.customer_name} - %"
+
+ if frappe.db.db_type == "postgres":
+ # Postgres: extract trailing digits (e.g. "Customer - 3") and cast to int.
+ # NOTE: PostgreSQL is strict about types; MySQL's UNSIGNED cast does not exist.
+ count = frappe.db.sql(
+ """
+ SELECT COALESCE(
+ MAX(CAST(SUBSTRING(name FROM '\\d+$') AS INTEGER)),
+ 0
+ )
+ FROM tabCustomer
+ WHERE name LIKE %(name_prefix)s
+ """,
+ {"name_prefix": name_prefix},
+ as_list=1,
+ )[0][0]
+ else:
+ # MariaDB/MySQL: keep existing behavior.
+ count = frappe.db.sql(
+ """
+ SELECT COALESCE(
+ MAX(CAST(SUBSTRING_INDEX(name, ' ', -1) AS UNSIGNED)),
+ 0
+ )
+ FROM tabCustomer
+ WHERE name LIKE %(name_prefix)s
+ """,
+ {"name_prefix": name_prefix},
+ as_list=1,
+ )[0][0]
count = cint(count) + 1
new_customer_name = f"{self.customer_name} - {cstr(count)}"
diff --git a/erpnext/selling/doctype/quotation/quotation.json b/erpnext/selling/doctype/quotation/quotation.json
index 78cf42ae753..f4bad5d519b 100644
--- a/erpnext/selling/doctype/quotation/quotation.json
+++ b/erpnext/selling/doctype/quotation/quotation.json
@@ -123,19 +123,20 @@
"competitors",
"column_break_117",
"order_lost_reason",
+ "utm_analytics_section",
+ "utm_source",
+ "utm_medium",
+ "column_break_fozg",
+ "utm_campaign",
+ "utm_content",
"additional_info_section",
"status",
"customer_group",
"territory",
"column_break_108",
- "utm_source",
- "utm_campaign",
- "utm_medium",
- "utm_content",
- "column_break4",
"opportunity",
- "supplier_quotation",
"enq_det",
+ "supplier_quotation",
"connections_tab"
],
"fields": [
@@ -862,13 +863,6 @@
"oldfieldtype": "Small Text",
"print_hide": 1
},
- {
- "fieldname": "column_break4",
- "fieldtype": "Column Break",
- "oldfieldtype": "Column Break",
- "print_hide": 1,
- "width": "50%"
- },
{
"default": "Draft",
"fieldname": "status",
@@ -1117,13 +1111,23 @@
"no_copy": 1,
"options": "Item Wise Tax Detail",
"print_hide": 1
+ },
+ {
+ "fieldname": "column_break_fozg",
+ "fieldtype": "Column Break"
+ },
+ {
+ "collapsible": 1,
+ "fieldname": "utm_analytics_section",
+ "fieldtype": "Section Break",
+ "label": "UTM Analytics"
}
],
"icon": "fa fa-shopping-cart",
"idx": 82,
"is_submittable": 1,
"links": [],
- "modified": "2026-01-29 21:18:48.836168",
+ "modified": "2026-02-06 17:34:22.170032",
"modified_by": "Administrator",
"module": "Selling",
"name": "Quotation",
diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json
index 4238e3438a3..1b186352bfa 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.json
+++ b/erpnext/selling/doctype/sales_order/sales_order.json
@@ -18,6 +18,7 @@
"column_break_7",
"order_type",
"transaction_date",
+ "transaction_time",
"delivery_date",
"column_break1",
"tax_id",
@@ -161,17 +162,18 @@
"column_break4",
"select_print_heading",
"language",
+ "utm_analytics_section",
+ "utm_source",
+ "utm_medium",
+ "column_break_ijxt",
+ "utm_campaign",
+ "utm_content",
"additional_info_section",
"is_internal_customer",
"po_no",
"po_date",
"represents_company",
"column_break_yvzv",
- "utm_source",
- "utm_campaign",
- "utm_medium",
- "utm_content",
- "column_break_152",
"inter_company_order_reference",
"party_account_currency",
"connections_tab"
@@ -1567,10 +1569,6 @@
"fieldtype": "Section Break",
"label": "Additional Info"
},
- {
- "fieldname": "column_break_152",
- "fieldtype": "Column Break"
- },
{
"fieldname": "incoterm",
"fieldtype": "Link",
@@ -1717,6 +1715,24 @@
"hide_days": 1,
"hide_seconds": 1,
"label": "Additional Discount"
+ },
+ {
+ "fieldname": "column_break_ijxt",
+ "fieldtype": "Column Break"
+ },
+ {
+ "collapsible": 1,
+ "fieldname": "utm_analytics_section",
+ "fieldtype": "Section Break",
+ "label": "UTM Analytics"
+ },
+ {
+ "default": "Now",
+ "depends_on": "is_internal_customer",
+ "fieldname": "transaction_time",
+ "fieldtype": "Time",
+ "label": "Time",
+ "mandatory_depends_on": "is_internal_customer"
}
],
"grid_page_length": 50,
@@ -1724,7 +1740,7 @@
"idx": 105,
"is_submittable": 1,
"links": [],
- "modified": "2026-02-23 14:25:56.665392",
+ "modified": "2026-03-02 00:42:18.834823",
"modified_by": "Administrator",
"module": "Selling",
"name": "Sales Order",
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 9d39c38505d..1759356c63d 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -186,6 +186,7 @@ class SalesOrder(SellingController):
total_qty: DF.Float
total_taxes_and_charges: DF.Currency
transaction_date: DF.Date
+ transaction_time: DF.Time | None
utm_campaign: DF.Link | None
utm_content: DF.Data | None
utm_medium: DF.Link | None
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py
index 3cb326cbcc3..6c7ae9c0660 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.py
+++ b/erpnext/selling/doctype/sales_order/test_sales_order.py
@@ -2647,6 +2647,49 @@ class TestSalesOrder(AccountsTestMixin, IntegrationTestCase):
si2 = make_sales_invoice(so.name)
self.assertEqual(si2.items[0].qty, 20)
+ @change_settings("Selling Settings", {"validate_selling_price": 1})
+ def test_selling_price_validation_for_manufactured_item(self):
+ """
+ Unit test to check the selling price validation for manufactured item, without last purchae rate in Item master.
+ """
+
+ from erpnext.manufacturing.doctype.production_plan.test_production_plan import make_bom
+ from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
+
+ # create a FG Item and RM Item
+ rm_item = make_item(
+ "_Test RM Item for SO selling validation",
+ {"is_stock_item": 1, "valuation_rate": 100, "stock_uom": "Nos"},
+ ).name
+ rm_warehouse = create_warehouse("_Test RM SPV Warehouse")
+ fg_item = make_item("_Test FG Item for SO selling validation", {"is_stock_item": 1}).name
+ fg_warehouse = create_warehouse("_Test FG SPV Warehouse")
+
+ # create BOM and inward entry for RM Item
+ bom_no = make_bom(item=fg_item, raw_materials=[rm_item]).name
+ make_stock_entry(item_code=rm_item, target=rm_warehouse, qty=10, rate=100)
+
+ # create a manufacture entry, so system won't update the last purchase rate in Item master.
+ se = make_stock_entry(item_code=fg_item, qty=10, purpose="Manufacture", do_not_save=True)
+
+ se.from_bom = 1
+ se.use_multi_level_bom = 1
+ se.bom_no = bom_no
+ se.fg_completed_qty = 1
+ se.from_warehouse = rm_warehouse
+ se.to_warehouse = fg_warehouse
+
+ se.get_items()
+ se.save()
+ se.submit()
+
+ # check valuation of FG Item
+ self.assertEqual(se.items[1].valuation_rate, 100)
+
+ # create a SO for FG Item with selling rate than valuation rate.
+ so = make_sales_order(item_code=fg_item, qty=10, rate=50, warehouse=fg_warehouse, do_not_save=1)
+ self.assertRaises(frappe.ValidationError, so.save)
+
def compare_payment_schedules(doc, doc1, doc2):
for index, schedule in enumerate(doc1.get("payment_schedule")):
diff --git a/erpnext/selling/doctype/selling_settings/selling_settings.json b/erpnext/selling/doctype/selling_settings/selling_settings.json
index 9fe14ae2a98..53e9d42a7ab 100644
--- a/erpnext/selling/doctype/selling_settings/selling_settings.json
+++ b/erpnext/selling/doctype/selling_settings/selling_settings.json
@@ -41,6 +41,8 @@
"allow_zero_qty_in_quotation",
"allow_zero_qty_in_sales_order",
"set_zero_rate_for_expired_batch",
+ "section_break_avhb",
+ "enable_utm",
"experimental_section",
"use_legacy_js_reactivity",
"subcontracting_inward_tab",
@@ -305,6 +307,19 @@
"fieldname": "enable_tracking_sales_commissions",
"fieldtype": "Check",
"label": "Enable tracking sales commissions"
+ },
+ {
+ "fieldname": "section_break_avhb",
+ "fieldtype": "Section Break",
+ "label": "Analytics"
+ },
+ {
+ "default": "0",
+ "description": "Enable Urchin Tracking Module parameters in Quotation, Sales Order, Sales Invoice, POS Invoice, Lead, and Delivery Note.",
+ "documentation_url": "https://en.wikipedia.org/wiki/UTM_parameters",
+ "fieldname": "enable_utm",
+ "fieldtype": "Check",
+ "label": "Enable UTM"
}
],
"grid_page_length": 50,
@@ -314,7 +329,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
- "modified": "2026-02-04 16:16:57.618127",
+ "modified": "2026-02-12 10:38:34.605126",
"modified_by": "Administrator",
"module": "Selling",
"name": "Selling Settings",
diff --git a/erpnext/selling/doctype/selling_settings/selling_settings.py b/erpnext/selling/doctype/selling_settings/selling_settings.py
index 775b5844c3e..8621f5f066d 100644
--- a/erpnext/selling/doctype/selling_settings/selling_settings.py
+++ b/erpnext/selling/doctype/selling_settings/selling_settings.py
@@ -10,6 +10,17 @@ from frappe.custom.doctype.property_setter.property_setter import make_property_
from frappe.model.document import Document
from frappe.utils import cint
+UTM_DOCTYPES = [
+ "Lead",
+ "Quotation",
+ "POS Invoice",
+ "POS Profile",
+ "Opportunity",
+ "Sales Order",
+ "Sales Invoice",
+ "Delivery Note",
+]
+
class SellingSettings(Document):
# begin: auto-generated types
@@ -38,6 +49,7 @@ class SellingSettings(Document):
enable_cutoff_date_on_bulk_delivery_note_creation: DF.Check
enable_discount_accounting: DF.Check
enable_tracking_sales_commissions: DF.Check
+ enable_utm: DF.Check
fallback_to_default_price_list: DF.Check
hide_tax_id: DF.Check
maintain_same_rate_action: DF.Literal["Stop", "Warn"]
@@ -84,6 +96,9 @@ class SellingSettings(Document):
if old_doc.enable_tracking_sales_commissions != self.enable_tracking_sales_commissions:
toggle_tracking_sales_commissions_section(not self.enable_tracking_sales_commissions)
+ if old_doc.enable_utm != self.enable_utm:
+ toggle_utm_analytics_section(not self.enable_utm)
+
def validate_fallback_to_default_price_list(self):
if (
self.fallback_to_default_price_list
@@ -195,3 +210,14 @@ def toggle_tracking_sales_commissions_section(hide):
create_property_setter_for_hiding_field(doctype, "commission_section", hide)
if meta.has_field("sales_team_section"):
create_property_setter_for_hiding_field(doctype, "sales_team_section", hide)
+
+
+def toggle_utm_analytics_section(hide):
+ from erpnext.accounts.doctype.accounts_settings.accounts_settings import (
+ create_property_setter_for_hiding_field,
+ )
+
+ for doctype in UTM_DOCTYPES:
+ meta = frappe.get_meta(doctype)
+ if meta.has_field("utm_analytics_section"):
+ create_property_setter_for_hiding_field(doctype, "utm_analytics_section", hide)
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.json b/erpnext/stock/doctype/delivery_note/delivery_note.json
index 3b2215fdae7..08a8de10163 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.json
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.json
@@ -156,17 +156,18 @@
"column_break_88",
"select_print_heading",
"language",
+ "utm_analytics_section",
+ "utm_source",
+ "utm_medium",
+ "column_break_neoj",
+ "utm_campaign",
+ "utm_content",
"more_info",
"is_internal_customer",
"represents_company",
"inter_company_reference",
"customer_group",
"territory",
- "column_break_pxls",
- "utm_source",
- "utm_campaign",
- "utm_medium",
- "utm_content",
"column_break5",
"excise_page",
"instructions",
@@ -1366,10 +1367,6 @@
"options": "Delivery Trip",
"print_hide": 1
},
- {
- "fieldname": "column_break_pxls",
- "fieldtype": "Column Break"
- },
{
"fieldname": "utm_medium",
"fieldtype": "Link",
@@ -1438,7 +1435,13 @@
"options": "Company:company:default_currency"
},
{
- "fieldname": "column_break_ydwe",
+ "collapsible": 1,
+ "fieldname": "utm_analytics_section",
+ "fieldtype": "Section Break",
+ "label": "UTM Analytics"
+ },
+ {
+ "fieldname": "column_break_neoj",
"fieldtype": "Column Break"
}
],
@@ -1446,7 +1449,7 @@
"idx": 146,
"is_submittable": 1,
"links": [],
- "modified": "2026-02-23 23:05:39.097097",
+ "modified": "2026-02-10 14:35:08.523130",
"modified_by": "Administrator",
"module": "Stock",
"name": "Delivery Note",
diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
index 9d23eda3755..fc4bc589f9d 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
@@ -14,6 +14,10 @@ from erpnext.controllers.taxes_and_totals import init_landed_taxes_and_totals
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
+class IncorrectCompanyValidationError(frappe.ValidationError):
+ pass
+
+
class LandedCostVoucher(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
@@ -75,6 +79,7 @@ class LandedCostVoucher(Document):
self.check_mandatory()
self.validate_receipt_documents()
self.validate_line_items()
+ self.validate_expense_accounts()
init_landed_taxes_and_totals(self)
self.set_total_taxes_and_charges()
if not self.get("items"):
@@ -116,11 +121,28 @@ class LandedCostVoucher(Document):
receipt_documents = []
for d in self.get("purchase_receipts"):
- docstatus = frappe.db.get_value(d.receipt_document_type, d.receipt_document, "docstatus")
+ docstatus, company = frappe.get_cached_value(
+ d.receipt_document_type, d.receipt_document, ["docstatus", "company"]
+ )
if docstatus != 1:
msg = f"Row {d.idx}: {d.receipt_document_type} {frappe.bold(d.receipt_document)} must be submitted"
frappe.throw(_(msg), title=_("Invalid Document"))
+ if company != self.company:
+ frappe.throw(
+ _(
+ "Row {0}: {1} {2} is linked to company {3}. Please select a document belonging to company {4}."
+ ).format(
+ d.idx,
+ d.receipt_document_type,
+ frappe.bold(d.receipt_document),
+ frappe.bold(company),
+ frappe.bold(self.company),
+ ),
+ title=_("Incorrect Company"),
+ exc=IncorrectCompanyValidationError,
+ )
+
if d.receipt_document_type == "Purchase Invoice":
update_stock = frappe.db.get_value(
d.receipt_document_type, d.receipt_document, "update_stock"
@@ -152,6 +174,24 @@ class LandedCostVoucher(Document):
_("Row {0}: Cost center is required for an item {1}").format(item.idx, item.item_code)
)
+ def validate_expense_accounts(self):
+ for t in self.taxes:
+ company = frappe.get_cached_value("Account", t.expense_account, "company")
+
+ if company != self.company:
+ frappe.throw(
+ _(
+ "Row {0}: Expense Account {1} is linked to company {2}. Please select an account belonging to company {3}."
+ ).format(
+ t.idx,
+ frappe.bold(t.expense_account),
+ frappe.bold(company),
+ frappe.bold(self.company),
+ ),
+ title=_("Incorrect Account"),
+ exc=IncorrectCompanyValidationError,
+ )
+
def set_total_taxes_and_charges(self):
self.total_taxes_and_charges = sum(flt(d.base_amount) for d in self.get("taxes"))
diff --git a/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
index 586e95f3ab2..f68351a5611 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
@@ -178,6 +178,39 @@ class TestLandedCostVoucher(IntegrationTestCase):
self.assertEqual(last_sle.qty_after_transaction, last_sle_after_landed_cost.qty_after_transaction)
self.assertEqual(last_sle_after_landed_cost.stock_value - last_sle.stock_value, 50.0)
+ def test_lcv_validates_company(self):
+ from erpnext.stock.doctype.landed_cost_voucher.landed_cost_voucher import (
+ IncorrectCompanyValidationError,
+ )
+
+ company_a = "_Test Company"
+ company_b = "_Test Company with perpetual inventory"
+
+ pr = make_purchase_receipt(
+ company=company_a,
+ warehouse="Stores - _TC",
+ qty=1,
+ rate=100,
+ )
+
+ lcv = make_landed_cost_voucher(
+ company=company_b,
+ receipt_document_type="Purchase Receipt",
+ receipt_document=pr.name,
+ charges=50,
+ do_not_save=True,
+ )
+
+ self.assertRaises(IncorrectCompanyValidationError, lcv.validate_receipt_documents)
+ lcv.company = company_a
+
+ self.assertRaises(IncorrectCompanyValidationError, lcv.validate_expense_accounts)
+ lcv.taxes[0].expense_account = get_expense_account(company_a)
+
+ lcv.save()
+ distribute_landed_cost_on_items(lcv)
+ lcv.submit()
+
def test_landed_cost_voucher_for_zero_purchase_rate(self):
"Test impact of LCV on future stock balances."
from erpnext.stock.doctype.item.test_item import make_item
@@ -1260,6 +1293,7 @@ def make_landed_cost_voucher(**args):
lcv = frappe.new_doc("Landed Cost Voucher")
lcv.company = args.company or "_Test Company"
lcv.distribute_charges_based_on = args.distribute_charges_based_on or "Amount"
+ expense_account = get_expense_account(args.company or "_Test Company")
lcv.set(
"purchase_receipts",
@@ -1280,7 +1314,7 @@ def make_landed_cost_voucher(**args):
[
{
"description": "Shipping Charges",
- "expense_account": args.expense_account or "Expenses Included In Valuation - TCP1",
+ "expense_account": args.expense_account or expense_account,
"amount": args.charges,
}
],
@@ -1300,6 +1334,7 @@ def create_landed_cost_voucher(receipt_document_type, receipt_document, company,
lcv = frappe.new_doc("Landed Cost Voucher")
lcv.company = company
lcv.distribute_charges_based_on = "Amount"
+ expense_account = get_expense_account(company)
lcv.set(
"purchase_receipts",
@@ -1319,7 +1354,7 @@ def create_landed_cost_voucher(receipt_document_type, receipt_document, company,
[
{
"description": "Insurance Charges",
- "expense_account": "Expenses Included In Valuation - TCP1",
+ "expense_account": expense_account,
"amount": charges,
}
],
@@ -1334,6 +1369,11 @@ def create_landed_cost_voucher(receipt_document_type, receipt_document, company,
return lcv
+def get_expense_account(company):
+ company_abbr = frappe.get_cached_value("Company", company, "abbr")
+ return f"Expenses Included In Valuation - {company_abbr}"
+
+
def distribute_landed_cost_on_items(lcv):
based_on = lcv.distribute_charges_based_on.lower()
total = sum(flt(d.get(based_on)) for d in lcv.get("items"))
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 1868730ffd3..47822ba1dae 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -330,7 +330,8 @@ class MaterialRequest(BuyingController):
if mr_qty_allowance:
allowed_qty = flt(
- (d.qty + (d.qty * (mr_qty_allowance / 100))), d.precision("ordered_qty")
+ (d.stock_qty + (d.stock_qty * (mr_qty_allowance / 100))),
+ d.precision("ordered_qty"),
)
if d.ordered_qty and flt(d.ordered_qty, precision) > flt(allowed_qty, precision):
diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py
index 4d7f4586d6b..472502bd80e 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.py
+++ b/erpnext/stock/doctype/pick_list/pick_list.py
@@ -1587,7 +1587,7 @@ def update_common_item_properties(item, location):
item.item_code = location.item_code
item.s_warehouse = location.warehouse
item.transfer_qty = location.picked_qty
- item.qty = location.qty
+ item.qty = flt(location.picked_qty / (location.conversion_factor or 1), location.precision("qty"))
item.uom = location.uom
item.conversion_factor = location.conversion_factor
item.stock_uom = location.stock_uom
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index f3e56c3b239..8cbe865f072 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -1246,7 +1246,9 @@ def get_billed_amount_against_po(po_items):
def update_billing_percentage(pr_doc, update_modified=True, adjust_incoming_rate=False):
# Update Billing % based on pending accepted qty
buying_settings = frappe.get_single("Buying Settings")
- over_billing_allowance = frappe.get_single_value("Accounts Settings", "over_billing_allowance")
+ over_billing_allowance, role_allowed_to_over_bill = frappe.get_single_value(
+ "Accounts Settings", ["over_billing_allowance", "role_allowed_to_over_bill"]
+ )
total_amount, total_billed_amount, pi_landed_cost_amount = 0, 0, 0
item_wise_returned_qty = get_item_wise_returned_qty(pr_doc)
@@ -1304,7 +1306,10 @@ def update_billing_percentage(pr_doc, update_modified=True, adjust_incoming_rate
item.db_set("amount_difference_with_purchase_invoice", adjusted_amt, update_modified=False)
elif amount and item.billed_amt > amount:
per_over_billed = (flt(item.billed_amt / amount, 2) * 100) - 100
- if per_over_billed > over_billing_allowance:
+ if (
+ per_over_billed > over_billing_allowance
+ and role_allowed_to_over_bill not in frappe.get_roles()
+ ):
frappe.throw(
_("Over Billing Allowance exceeded for Purchase Receipt Item {0} ({1}) by {2}%").format(
item.name, frappe.bold(item.item_code), per_over_billed - over_billing_allowance
diff --git a/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py b/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py
index 8c4622a8ae2..3885df7c74a 100644
--- a/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py
+++ b/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py
@@ -142,7 +142,9 @@ class TestQualityInspection(IntegrationTestCase):
inspection_type = "Outgoing"
for item in dn.items:
item.sample_size = item.qty
- quality_inspections = make_quality_inspections(dn.doctype, dn.name, dn.items, inspection_type)
+ quality_inspections = make_quality_inspections(
+ dn.company, dn.doctype, dn.name, dn.items, inspection_type
+ )
self.assertEqual(len(dn.items), len(quality_inspections))
# cleanup
diff --git a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json
index 05d302dc4f1..e1ae6d00cd9 100644
--- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json
+++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json
@@ -237,7 +237,8 @@
"fieldname": "reposting_reference",
"fieldtype": "Data",
"label": "Reposting Reference",
- "read_only": 1
+ "read_only": 1,
+ "search_index": 1
},
{
"default": "0",
@@ -252,7 +253,7 @@
"index_web_pages_for_search": 1,
"is_submittable": 1,
"links": [],
- "modified": "2025-12-24 14:59:15.512898",
+ "modified": "2026-02-25 14:22:21.681549",
"modified_by": "Administrator",
"module": "Stock",
"name": "Repost Item Valuation",
diff --git a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
index 7be0b09169e..f5b4ef3e8f5 100644
--- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
+++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
@@ -470,7 +470,15 @@ def repost_gl_entries(doc):
repost_affected_transaction = get_affected_transactions(doc)
transactions = directly_dependent_transactions + list(repost_affected_transaction)
- if doc.based_on == "Item and Warehouse" and not doc.repost_only_accounting_ledgers:
+ enable_separate_reposting_for_gl = frappe.db.get_single_value(
+ "Stock Reposting Settings", "enable_separate_reposting_for_gl"
+ )
+
+ if (
+ enable_separate_reposting_for_gl
+ and doc.based_on == "Item and Warehouse"
+ and not doc.repost_only_accounting_ledgers
+ ):
make_reposting_for_accounting_ledgers(
transactions,
doc.company,
@@ -562,7 +570,20 @@ def run_parallel_reposting():
riv_entries = get_repost_item_valuation_entries()
+ rq_jobs = frappe.get_all(
+ "RQ Job",
+ fields=["arguments"],
+ filters={
+ "status": ("like", "%started%"),
+ "job_name": "erpnext.stock.doctype.repost_item_valuation.repost_item_valuation.execute_reposting_entry",
+ },
+ )
+
for row in riv_entries:
+ if rq_jobs:
+ if job_running_for_entry(row.name, rq_jobs):
+ continue
+
if row.based_on != "Item and Warehouse" or row.repost_only_accounting_ledgers:
execute_reposting_entry(row.name)
continue
@@ -671,25 +692,59 @@ def execute_repost_item_valuation():
def make_reposting_for_accounting_ledgers(transactions, company, repost_doc):
+ reposting_map = get_existing_reposting_only_gl_entries(repost_doc.name)
+
for voucher_type, voucher_no in transactions:
- if frappe.db.exists(
- "Repost Item Valuation",
- {
- "voucher_type": voucher_type,
- "voucher_no": voucher_no,
- "docstatus": 1,
- "reposting_reference": repost_doc.name,
- "repost_only_accounting_ledgers": 1,
- "status": "Queued",
- },
- ):
+ if reposting_map.get((voucher_type, voucher_no)):
continue
- new_repost_doc = frappe.new_doc("Repost Item Valuation")
- new_repost_doc.company = company
- new_repost_doc.voucher_type = voucher_type
- new_repost_doc.voucher_no = voucher_no
- new_repost_doc.repost_only_accounting_ledgers = 1
- new_repost_doc.reposting_reference = repost_doc.name
- new_repost_doc.flags.ignore_permissions = True
- new_repost_doc.submit()
+ try:
+ new_repost_doc = frappe.new_doc("Repost Item Valuation")
+ new_repost_doc.company = company
+ new_repost_doc.voucher_type = voucher_type
+ new_repost_doc.voucher_no = voucher_no
+ new_repost_doc.repost_only_accounting_ledgers = 1
+ new_repost_doc.reposting_reference = repost_doc.name
+ new_repost_doc.flags.ignore_permissions = True
+ new_repost_doc.submit()
+ except Exception:
+ pass
+
+
+def get_existing_reposting_only_gl_entries(reposting_reference):
+ existing_reposting = frappe.get_all(
+ "Repost Item Valuation",
+ filters={
+ "reposting_reference": reposting_reference,
+ "docstatus": 1,
+ "status": "Queued",
+ "repost_only_accounting_ledgers": 1,
+ },
+ fields=["reposting_reference", "voucher_type", "voucher_no"],
+ )
+
+ if not existing_reposting:
+ return frappe._dict()
+
+ reposting_map = {}
+ for d in existing_reposting:
+ key = (d.voucher_type, d.voucher_no)
+ reposting_map[key] = d.reposting_reference
+
+ return reposting_map
+
+
+def job_running_for_entry(reposting_entry, rq_jobs):
+ for job in rq_jobs:
+ if not job.arguments:
+ continue
+
+ try:
+ job_args = json.loads(job.arguments)
+ except (TypeError, json.JSONDecodeError):
+ continue
+
+ if isinstance(job_args, dict) and job_args.get("kwargs", {}).get("name") == reposting_entry:
+ return True
+
+ return False
diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
index 012503a3d9c..ba332231951 100644
--- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
+++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
@@ -717,10 +717,13 @@ class SerialandBatchBundle(Document):
if rate is None and child_table in ["Delivery Note Item", "Sales Invoice Item"]:
rate = frappe.db.get_value(
"Packed Item",
- self.voucher_detail_no,
+ {"parent_detail_docname": self.voucher_detail_no, "item_code": self.item_code},
"incoming_rate",
)
+ if rate is None:
+ rate = frappe.db.get_value("Packed Item", self.voucher_detail_no, "incoming_rate")
+
if rate is not None:
is_packed_item = True
@@ -787,6 +790,9 @@ class SerialandBatchBundle(Document):
if not self.voucher_detail_no or self.voucher_detail_no != row.name:
values_to_set["voucher_detail_no"] = row.name
+ if row.get("doctype") == "Packed Item" and row.get("parent_detail_docname"):
+ values_to_set["voucher_detail_no"] = row.get("parent_detail_docname")
+
if parent.get("posting_date") and parent.get("posting_time"):
posting_datetime = combine_datetime(parent.posting_date, parent.posting_time)
if not self.posting_datetime or self.posting_datetime != posting_datetime:
@@ -1325,7 +1331,21 @@ class SerialandBatchBundle(Document):
)
if not vouchers and self.voucher_type == "Delivery Note":
- frappe.db.set_value("Packed Item", self.voucher_detail_no, "serial_and_batch_bundle", None)
+ if frappe.db.exists("Packed Item", self.voucher_detail_no):
+ frappe.db.set_value("Packed Item", self.voucher_detail_no, "serial_and_batch_bundle", None)
+ else:
+ packed_items = frappe.get_all(
+ "Packed Item",
+ filters={
+ "parent_detail_docname": self.voucher_detail_no,
+ "serial_and_batch_bundle": self.name,
+ },
+ pluck="name",
+ )
+
+ for packed_item in packed_items:
+ frappe.db.set_value("Packed Item", packed_item, "serial_and_batch_bundle", None)
+
return
for voucher in vouchers:
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 2e2639080cf..bdcbbed0e18 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -236,6 +236,7 @@ class StockEntry(StockController, SubcontractingInwardController):
self.validate_uom_is_integer("uom", "qty")
self.validate_uom_is_integer("stock_uom", "transfer_qty")
self.validate_warehouse()
+ self.validate_warehouse_of_sabb()
self.validate_work_order()
self.validate_bom()
self.set_process_loss_qty()
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index 04f87d3348e..583cb4bedc6 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -2415,6 +2415,54 @@ class TestStockEntry(IntegrationTestCase):
frappe.get_doc(_make_stock_entry(work_order.name, "Material Consumption for Manufacture", 5)).submit()
frappe.get_doc(_make_stock_entry(work_order.name, "Manufacture", 5)).submit()
+ def test_qi_creation_with_naming_rule_company_condition(self):
+ """
+ Unit test case to check the document naming rule with company condition
+ For Quality Inspection, when created from Stock Entry.
+ """
+ from erpnext.accounts.report.trial_balance.test_trial_balance import create_company
+ from erpnext.controllers.stock_controller import make_quality_inspections
+ from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
+
+ # create a separate company to handle document naming rule with company condition
+ qc_company = create_company(company_name="Test Quality Company")
+
+ # create document naming rule based on that for Quality Inspection Doctype
+ qc_naming_rule = frappe.new_doc(
+ "Document Naming Rule", document_type="Quality Inspection", prefix="NQC.-ST-", prefix_digits=5
+ )
+ qc_naming_rule.append("conditions", {"field": "company", "condition": "=", "value": qc_company})
+ qc_naming_rule.save()
+
+ warehouse = create_warehouse(warehouse_name="Test QI Warehouse", company=qc_company)
+ item = create_item(
+ item_code="Test QI DNR Item",
+ is_stock_item=1,
+ )
+
+ # create inward stock entry
+ stock_entry = make_stock_entry(
+ item_code=item.item_code,
+ target=warehouse,
+ qty=10,
+ basic_rate=100,
+ inspection_required=True,
+ do_not_submit=True,
+ )
+
+ # create QI from Stock Entry and check the naming series generated.
+ qi = make_quality_inspections(
+ stock_entry.company,
+ stock_entry.doctype,
+ stock_entry.name,
+ stock_entry.as_dict().get("items"),
+ "Incoming",
+ )
+ self.assertEqual(qi[0], "NQC-ST-00001")
+
+ # delete naming rule
+ frappe.delete_doc("Document Naming Rule", qc_naming_rule.name)
+
def make_serialized_item(self, **args):
args = frappe._dict(args)
diff --git a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
index fd1212f6fda..eceba634bf3 100644
--- a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
+++ b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
@@ -498,7 +498,8 @@
"fieldtype": "Link",
"label": "Reference Purchase Receipt",
"options": "Purchase Receipt",
- "read_only": 1
+ "read_only": 1,
+ "search_index": 1
},
{
"fieldname": "project",
@@ -660,7 +661,7 @@
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
- "modified": "2025-10-16 11:50:50.573443",
+ "modified": "2026-03-02 14:05:23.116017",
"modified_by": "Administrator",
"module": "Stock",
"name": "Stock Entry Detail",
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index ac9e94f1e6a..277ab61865b 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -523,9 +523,9 @@ class StockReconciliation(StockController):
if abs(difference_amount) > 0:
return True
- float_precision = frappe.db.get_default("float_precision") or 3
- item_dict["rate"] = flt(item_dict.get("rate"), float_precision)
- item.valuation_rate = flt(item.valuation_rate, float_precision) if item.valuation_rate else None
+ rate_precision = item.precision("valuation_rate")
+ item_dict["rate"] = flt(item_dict.get("rate"), rate_precision)
+ item.valuation_rate = flt(item.valuation_rate, rate_precision) if item.valuation_rate else None
if (
(item.qty is None or item.qty == item_dict.get("qty"))
and (item.valuation_rate is None or item.valuation_rate == item_dict.get("rate"))
diff --git a/erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.json b/erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.json
index 410c0cee62d..f72b50dc131 100644
--- a/erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.json
+++ b/erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.json
@@ -13,8 +13,11 @@
"end_time",
"limits_dont_apply_on",
"item_based_reposting",
+ "section_break_dxuf",
"enable_parallel_reposting",
"no_of_parallel_reposting",
+ "column_break_itvd",
+ "enable_separate_reposting_for_gl",
"errors_notification_section",
"notify_reposting_error_to_role"
],
@@ -81,13 +84,28 @@
"fieldname": "no_of_parallel_reposting",
"fieldtype": "Int",
"label": "No of Parallel Reposting (Per Item)"
+ },
+ {
+ "fieldname": "section_break_dxuf",
+ "fieldtype": "Section Break"
+ },
+ {
+ "fieldname": "column_break_itvd",
+ "fieldtype": "Column Break"
+ },
+ {
+ "default": "0",
+ "depends_on": "item_based_reposting",
+ "fieldname": "enable_separate_reposting_for_gl",
+ "fieldtype": "Check",
+ "label": "Enable Separate Reposting for GL"
}
],
"hide_toolbar": 1,
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
- "modified": "2026-01-02 18:18:57.115176",
+ "modified": "2026-02-25 14:11:33.461173",
"modified_by": "Administrator",
"module": "Stock",
"name": "Stock Reposting Settings",
diff --git a/erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.py b/erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.py
index 7924c9042c0..40f9f1f6d69 100644
--- a/erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.py
+++ b/erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.py
@@ -17,6 +17,7 @@ class StockRepostingSettings(Document):
from frappe.types import DF
enable_parallel_reposting: DF.Check
+ enable_separate_reposting_for_gl: DF.Check
end_time: DF.Time | None
item_based_reposting: DF.Check
limit_reposting_timeslot: DF.Check
diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py
index ccee40ce25f..ed0c31c07d9 100644
--- a/erpnext/stock/report/stock_balance/stock_balance.py
+++ b/erpnext/stock/report/stock_balance/stock_balance.py
@@ -8,7 +8,7 @@ from typing import Any, TypedDict
import frappe
from frappe import _
-from frappe.query_builder.functions import Coalesce
+from frappe.query_builder.functions import Coalesce, Count
from frappe.utils import add_days, cint, date_diff, flt, getdate
from frappe.utils.nestedset import get_descendants_of
@@ -165,6 +165,7 @@ class StockBalanceReport:
sle.serial_no,
sle.serial_and_batch_bundle,
sle.has_serial_no,
+ sle.voucher_detail_no,
item_table.item_group,
item_table.stock_uom,
item_table.item_name,
@@ -190,6 +191,8 @@ class StockBalanceReport:
if self.filters.get("show_stock_ageing_data"):
self.sle_entries = self.sle_query.run(as_dict=True)
+ self.prepare_stock_reco_voucher_wise_count()
+
# HACK: This is required to avoid causing db query in flt
_system_settings = frappe.get_cached_doc("System Settings")
with frappe.db.unbuffered_cursor():
@@ -207,6 +210,39 @@ class StockBalanceReport:
self.item_warehouse_map, self.float_precision, self.inventory_dimensions
)
+ def prepare_stock_reco_voucher_wise_count(self):
+ self.stock_reco_voucher_wise_count = frappe._dict()
+
+ doctype = frappe.qb.DocType("Stock Ledger Entry")
+ item = frappe.qb.DocType("Item")
+
+ query = (
+ frappe.qb.from_(doctype)
+ .inner_join(item)
+ .on(doctype.item_code == item.name)
+ .select(doctype.voucher_detail_no, Count(doctype.name).as_("count"))
+ .where(
+ (doctype.voucher_type == "Stock Reconciliation")
+ & (doctype.docstatus < 2)
+ & (doctype.is_cancelled == 0)
+ & (item.has_serial_no == 1)
+ )
+ .groupby(doctype.voucher_detail_no)
+ )
+
+ data = query.run(as_dict=True)
+ if not data:
+ return
+
+ for row in data:
+ if row.count != 1:
+ continue
+
+ current_qty = frappe.db.get_value(
+ "Stock Reconciliation Item", row.voucher_detail_no, "current_qty"
+ )
+ self.stock_reco_voucher_wise_count[row.voucher_detail_no] = current_qty
+
def prepare_new_data(self):
if self.filters.get("show_stock_ageing_data"):
self.filters["show_warehouse_wise_stock"] = True
@@ -283,9 +319,14 @@ class StockBalanceReport:
qty_dict[field] = entry.get(field)
if entry.voucher_type == "Stock Reconciliation" and (
- not entry.batch_no and not entry.serial_no and not entry.serial_and_batch_bundle
+ not entry.batch_no or entry.serial_no or entry.serial_and_batch_bundle
):
- qty_diff = flt(entry.qty_after_transaction) - flt(qty_dict.bal_qty)
+ if entry.serial_no and entry.voucher_detail_no in self.stock_reco_voucher_wise_count:
+ qty_dict.opening_qty -= self.stock_reco_voucher_wise_count.get(entry.voucher_detail_no, 0)
+ qty_dict.bal_qty = 0.0
+ qty_diff = flt(entry.actual_qty)
+ else:
+ qty_diff = flt(entry.qty_after_transaction) - flt(qty_dict.bal_qty)
else:
qty_diff = flt(entry.actual_qty)
diff --git a/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js b/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js
index df65654e36b..1f405cda78f 100644
--- a/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js
+++ b/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js
@@ -21,7 +21,7 @@ frappe.query_reports["Stock Ledger Invariant Check"] = {
options: "Item",
get_query: function () {
return {
- filters: { is_stock_item: 1, has_serial_no: 0 },
+ filters: { is_stock_item: 1 },
};
},
},
diff --git a/erpnext/stock/serial_batch_bundle.py b/erpnext/stock/serial_batch_bundle.py
index 199672871dc..7fc143e38d4 100644
--- a/erpnext/stock/serial_batch_bundle.py
+++ b/erpnext/stock/serial_batch_bundle.py
@@ -401,6 +401,9 @@ class SerialBatchBundle:
def submit_serial_and_batch_bundle(self):
doc = frappe.get_doc("Serial and Batch Bundle", self.sle.serial_and_batch_bundle)
+ if self.sle.voucher_detail_no and doc.voucher_detail_no != self.sle.voucher_detail_no:
+ doc.voucher_detail_no = self.sle.voucher_detail_no
+
self.validate_actual_qty(doc)
doc.flags.ignore_voucher_validation = True
@@ -460,6 +463,11 @@ class SerialBatchBundle:
if sle.voucher_type in ["Sales Invoice", "Delivery Note"] and sle.actual_qty < 0:
customer = frappe.get_cached_value(sle.voucher_type, sle.voucher_no, "customer")
+ if sle.voucher_type in ["Stock Entry"] and sle.actual_qty < 0:
+ purpose = frappe.get_cached_value("Stock Entry", sle.voucher_no, "purpose")
+ if purpose in ["Disassemble", "Material Receipt"]:
+ status = "Inactive"
+
sn_table = frappe.qb.DocType("Serial No")
query = (
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index 4bbd476edfd..d1bad37a9cc 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -1305,7 +1305,7 @@ class update_entries_after:
else:
if sle.voucher_type in ("Delivery Note", "Sales Invoice"):
ref_doctype = "Packed Item"
- elif sle == "Subcontracting Receipt":
+ elif sle.voucher_type == "Subcontracting Receipt":
ref_doctype = "Subcontracting Receipt Supplied Item"
else:
ref_doctype = "Purchase Receipt Item Supplied"
diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py
index 375c2a4409a..fb1628fe305 100644
--- a/erpnext/utilities/transaction_base.py
+++ b/erpnext/utilities/transaction_base.py
@@ -341,6 +341,7 @@ class TransactionBase(StatusUpdater):
args.update(
{
"posting_date": self.transaction_date,
+ "posting_time": self.transaction_time,
}
)
else: