diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
index 285a14b40a6..ae4adfa8a67 100644
--- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -79,9 +79,12 @@
"reports_tab",
"remarks_section",
"general_ledger_remarks_length",
- "ignore_is_opening_check_for_reporting",
"column_break_lvjk",
"receivable_payable_remarks_length",
+ "accounts_receivable_payable_tuning_section",
+ "receivable_payable_fetch_method",
+ "legacy_section",
+ "ignore_is_opening_check_for_reporting",
"payment_request_settings",
"create_pr_in_draft_status"
],
@@ -545,6 +548,23 @@
"fieldname": "use_sales_invoice_in_pos",
"fieldtype": "Check",
"label": "Use Sales Invoice"
+ },
+ {
+ "default": "Buffered Cursor",
+ "fieldname": "receivable_payable_fetch_method",
+ "fieldtype": "Select",
+ "label": "Data Fetch Method",
+ "options": "Buffered Cursor\nUnBuffered Cursor"
+ },
+ {
+ "fieldname": "accounts_receivable_payable_tuning_section",
+ "fieldtype": "Section Break",
+ "label": "Accounts Receivable / Payable Tuning"
+ },
+ {
+ "fieldname": "legacy_section",
+ "fieldtype": "Section Break",
+ "label": "Legacy Fields"
}
],
"grid_page_length": 50,
@@ -553,7 +573,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
- "modified": "2025-03-30 20:47:17.954736",
+ "modified": "2025-05-05 12:29:38.302027",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounts Settings",
diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py
index 997ba49ed26..bbf1c2ef060 100644
--- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py
+++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py
@@ -54,6 +54,7 @@ class AccountsSettings(Document):
merge_similar_account_heads: DF.Check
over_billing_allowance: DF.Currency
post_change_gl_entries: DF.Check
+ receivable_payable_fetch_method: DF.Literal["Buffered Cursor", "UnBuffered Cursor"]
receivable_payable_remarks_length: DF.Int
reconciliation_queue_size: DF.Int
role_allowed_to_over_bill: DF.Link | None
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 37a6d21da27..a3047c9339d 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -253,11 +253,20 @@ class JournalEntry(AccountsController):
def validate_inter_company_accounts(self):
if self.voucher_type == "Inter Company Journal Entry" and self.inter_company_journal_entry_reference:
- doc = frappe.get_doc("Journal Entry", self.inter_company_journal_entry_reference)
+ doc = frappe.db.get_value(
+ "Journal Entry",
+ self.inter_company_journal_entry_reference,
+ ["company", "total_debit", "total_credit"],
+ as_dict=True,
+ )
account_currency = frappe.get_cached_value("Company", self.company, "default_currency")
previous_account_currency = frappe.get_cached_value("Company", doc.company, "default_currency")
if account_currency == previous_account_currency:
- if self.total_credit != doc.total_debit or self.total_debit != doc.total_credit:
+ credit_precision = self.precision("total_credit")
+ debit_precision = self.precision("total_debit")
+ if (flt(self.total_credit, credit_precision) != flt(doc.total_debit, debit_precision)) or (
+ flt(self.total_debit, debit_precision) != flt(doc.total_credit, credit_precision)
+ ):
frappe.throw(_("Total Credit/ Debit Amount should be same as linked Journal Entry"))
def validate_depr_entry_voucher_type(self):
@@ -1262,9 +1271,7 @@ class JournalEntry(AccountsController):
@frappe.whitelist()
-def get_default_bank_cash_account(
- company, account_type=None, mode_of_payment=None, account=None, ignore_permissions=False
-):
+def get_default_bank_cash_account(company, account_type=None, mode_of_payment=None, account=None):
from erpnext.accounts.doctype.sales_invoice.sales_invoice import get_bank_cash_account
if mode_of_payment:
@@ -1302,7 +1309,7 @@ def get_default_bank_cash_account(
return frappe._dict(
{
"account": account,
- "balance": get_balance_on(account, ignore_account_permission=ignore_permissions),
+ "balance": get_balance_on(account),
"account_currency": account_details.account_currency,
"account_type": account_details.account_type,
}
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index a55c8ec2bd2..46da7c947cc 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -2966,7 +2966,6 @@ def get_payment_entry(
party_type=None,
payment_type=None,
reference_date=None,
- ignore_permissions=False,
created_from_payment_request=False,
):
doc = frappe.get_doc(dt, dn)
@@ -2988,14 +2987,14 @@ def get_payment_entry(
)
# bank or cash
- bank = get_bank_cash_account(doc, bank_account, ignore_permissions=ignore_permissions)
+ bank = get_bank_cash_account(doc, bank_account)
# if default bank or cash account is not set in company master and party has default company bank account, fetch it
if party_type in ["Customer", "Supplier"] and not bank:
party_bank_account = get_party_bank_account(party_type, doc.get(scrub(party_type)))
if party_bank_account:
account = frappe.db.get_value("Bank Account", party_bank_account, "account")
- bank = get_bank_cash_account(doc, account, ignore_permissions=ignore_permissions)
+ bank = get_bank_cash_account(doc, account)
paid_amount, received_amount = set_paid_amount_and_received_amount(
dt, party_account_currency, bank, outstanding_amount, payment_type, bank_amount, doc
@@ -3306,13 +3305,12 @@ def update_accounting_dimensions(pe, doc):
pe.set(dimension, doc.get(dimension))
-def get_bank_cash_account(doc, bank_account, ignore_permissions=False):
+def get_bank_cash_account(doc, bank_account):
bank = get_default_bank_cash_account(
doc.company,
"Bank",
mode_of_payment=doc.get("mode_of_payment"),
account=bank_account,
- ignore_permissions=ignore_permissions,
)
if not bank:
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index bd24c09ce57..e82cbdc8be1 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -672,7 +672,12 @@ def get_amount(ref_doc, payment_account=None):
dt = ref_doc.doctype
if dt in ["Sales Order", "Purchase Order"]:
- grand_total = (flt(ref_doc.rounded_total) or flt(ref_doc.grand_total)) - ref_doc.advance_paid
+ advance_amount = flt(ref_doc.advance_paid)
+ if ref_doc.party_account_currency != ref_doc.currency:
+ advance_amount = flt(flt(ref_doc.advance_paid) / ref_doc.conversion_rate)
+
+ grand_total = (flt(ref_doc.rounded_total) or flt(ref_doc.grand_total)) - advance_amount
+
elif dt in ["Sales Invoice", "Purchase Invoice"]:
if (
dt == "Sales Invoice"
diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json
index cea88c18992..5b4f75c25fe 100644
--- a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json
+++ b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json
@@ -12,7 +12,7 @@
"posting_date",
"company",
"account",
- "group_by",
+ "categorize_by",
"cost_center",
"territory",
"ignore_exchange_rate_revaluation_journals",
@@ -174,14 +174,6 @@
"fieldtype": "Date",
"label": "Start Date"
},
- {
- "default": "Group by Voucher (Consolidated)",
- "depends_on": "eval:(doc.report == 'General Ledger');",
- "fieldname": "group_by",
- "fieldtype": "Select",
- "label": "Group By",
- "options": "\nGroup by Voucher\nGroup by Voucher (Consolidated)"
- },
{
"depends_on": "eval: (doc.report == 'General Ledger');",
"fieldname": "currency",
@@ -397,10 +389,18 @@
"fieldname": "show_remarks",
"fieldtype": "Check",
"label": "Show Remarks"
+ },
+ {
+ "default": "Categorize by Voucher (Consolidated)",
+ "depends_on": "eval:(doc.report == 'General Ledger');",
+ "fieldname": "categorize_by",
+ "fieldtype": "Select",
+ "label": "Categorize By",
+ "options": "\nCategorize by Voucher\nCategorize by Voucher (Consolidated)"
}
],
"links": [],
- "modified": "2024-12-11 12:11:13.543134",
+ "modified": "2025-04-30 14:43:23.643006",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Process Statement Of Accounts",
@@ -432,8 +432,9 @@
"write": 1
}
],
+ "row_format": "Dynamic",
"sort_field": "creation",
"sort_order": "DESC",
"states": [],
"track_changes": 1
-}
\ No newline at end of file
+}
diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py
index 48f400e1a46..1c4bb66357f 100644
--- a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py
+++ b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py
@@ -44,6 +44,7 @@ class ProcessStatementOfAccounts(Document):
ageing_based_on: DF.Literal["Due Date", "Posting Date"]
based_on_payment_terms: DF.Check
body: DF.TextEditor | None
+ categorize_by: DF.Literal["", "Categorize by Voucher", "Categorize by Voucher (Consolidated)"]
cc_to: DF.TableMultiSelect[ProcessStatementOfAccountsCC]
collection_name: DF.DynamicLink | None
company: DF.Link
@@ -56,7 +57,6 @@ class ProcessStatementOfAccounts(Document):
finance_book: DF.Link | None
frequency: DF.Literal["Weekly", "Monthly", "Quarterly"]
from_date: DF.Date | None
- group_by: DF.Literal["", "Group by Voucher", "Group by Voucher (Consolidated)"]
ignore_cr_dr_notes: DF.Check
ignore_exchange_rate_revaluation_journals: DF.Check
include_ageing: DF.Check
@@ -204,7 +204,7 @@ def get_gl_filters(doc, entry, tax_id, presentation_currency):
"party": [entry.customer],
"party_name": [entry.customer_name] if entry.customer_name else None,
"presentation_currency": presentation_currency,
- "group_by": doc.group_by,
+ "categorize_by": doc.categorize_by,
"currency": doc.currency,
"project": [p.project_name for p in doc.project],
"show_opening_entries": 0,
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index d7ff5038aa7..45f79542555 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -1421,7 +1421,7 @@ class SalesInvoice(SellingController):
)
for item in self.get("items"):
- if flt(item.base_net_amount, item.precision("base_net_amount")):
+ if flt(item.base_net_amount, item.precision("base_net_amount")) or item.is_fixed_asset:
# Do not book income for transfer within same company
if self.is_internal_transfer():
continue
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index 973b7eede66..5a850f06b98 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -54,6 +54,10 @@ class ReceivablePayableReport:
self.filters.range = "30, 60, 90, 120"
self.ranges = [num.strip() for num in self.filters.range.split(",") if num.strip().isdigit()]
self.range_numbers = [num for num in range(1, len(self.ranges) + 2)]
+ self.ple_fetch_method = (
+ frappe.db.get_single_value("Accounts Settings", "receivable_payable_fetch_method")
+ or "Buffered Cursor"
+ ) # Fail Safe
def run(self, args):
self.filters.update(args)
@@ -90,10 +94,7 @@ class ReceivablePayableReport:
self.skip_total_row = 1
def get_data(self):
- self.get_ple_entries()
self.get_sales_invoices_or_customers_based_on_sales_person()
- self.voucher_balance = OrderedDict()
- self.init_voucher_balance() # invoiced, paid, credit_note, outstanding
# Build delivery note map against all sales invoices
self.build_delivery_note_map()
@@ -110,12 +111,40 @@ class ReceivablePayableReport:
# Get Exchange Rate Revaluations
self.get_exchange_rate_revaluations()
+ self.prepare_ple_query()
self.data = []
+ self.voucher_balance = OrderedDict()
+ if self.ple_fetch_method == "Buffered Cursor":
+ self.fetch_ple_in_buffered_cursor()
+ elif self.ple_fetch_method == "UnBuffered Cursor":
+ self.fetch_ple_in_unbuffered_cursor()
+
+ self.build_data()
+
+ def fetch_ple_in_buffered_cursor(self):
+ self.ple_entries = frappe.db.sql(self.ple_query.get_sql(), as_dict=True)
+
+ for ple in self.ple_entries:
+ self.init_voucher_balance(ple) # invoiced, paid, credit_note, outstanding
+
+ # This is unavoidable. Initialization and allocation cannot happen in same loop
for ple in self.ple_entries:
self.update_voucher_balance(ple)
- self.build_data()
+ delattr(self, "ple_entries")
+
+ def fetch_ple_in_unbuffered_cursor(self):
+ self.ple_entries = []
+ with frappe.db.unbuffered_cursor():
+ for ple in frappe.db.sql(self.ple_query.get_sql(), as_dict=True, as_iterator=True):
+ self.init_voucher_balance(ple) # invoiced, paid, credit_note, outstanding
+ self.ple_entries.append(ple)
+
+ # This is unavoidable. Initialization and allocation cannot happen in same loop
+ for ple in self.ple_entries:
+ self.update_voucher_balance(ple)
+ delattr(self, "ple_entries")
def build_voucher_dict(self, ple):
return frappe._dict(
@@ -136,26 +165,22 @@ class ReceivablePayableReport:
outstanding_in_account_currency=0.0,
)
- def init_voucher_balance(self):
- # build all keys, since we want to exclude vouchers beyond the report date
- for ple in self.ple_entries:
- # get the balance object for voucher_type
+ def init_voucher_balance(self, ple):
+ if self.filters.get("ignore_accounts"):
+ key = (ple.voucher_type, ple.voucher_no, ple.party)
+ else:
+ key = (ple.account, ple.voucher_type, ple.voucher_no, ple.party)
- if self.filters.get("ignore_accounts"):
- key = (ple.voucher_type, ple.voucher_no, ple.party)
- else:
- key = (ple.account, ple.voucher_type, ple.voucher_no, ple.party)
+ if key not in self.voucher_balance:
+ self.voucher_balance[key] = self.build_voucher_dict(ple)
- if key not in self.voucher_balance:
- self.voucher_balance[key] = self.build_voucher_dict(ple)
+ if ple.voucher_type == ple.against_voucher_type and ple.voucher_no == ple.against_voucher_no:
+ self.voucher_balance[key].cost_center = ple.cost_center
- if ple.voucher_type == ple.against_voucher_type and ple.voucher_no == ple.against_voucher_no:
- self.voucher_balance[key].cost_center = ple.cost_center
+ self.get_invoices(ple)
- self.get_invoices(ple)
-
- if self.filters.get("group_by_party"):
- self.init_subtotal_row(ple.party)
+ if self.filters.get("group_by_party"):
+ self.init_subtotal_row(ple.party)
if self.filters.get("group_by_party") and not self.filters.get("in_party_currency"):
self.init_subtotal_row("Total")
@@ -778,7 +803,7 @@ class ReceivablePayableReport:
)
row["range" + str(index + 1)] = row.outstanding
- def get_ple_entries(self):
+ def prepare_ple_query(self):
# get all the GL entries filtered by the given filters
self.prepare_conditions()
@@ -831,7 +856,7 @@ class ReceivablePayableReport:
else:
query = query.orderby(self.ple.posting_date, self.ple.party)
- self.ple_entries = query.run(as_dict=True)
+ self.ple_query = query
def get_sales_invoices_or_customers_based_on_sales_person(self):
if self.filters.get("sales_person"):
diff --git a/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py b/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py
index f66093a4092..963fb3556a6 100644
--- a/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py
+++ b/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py
@@ -144,10 +144,10 @@ class PartyLedgerSummaryReport:
if self.party_naming_by == "Naming Series":
columns.append(
{
- "label": _(self.filters.party_type + "Name"),
+ "label": _(self.filters.party_type + " Name"),
"fieldtype": "Data",
"fieldname": "party_name",
- "width": 110,
+ "width": 150,
}
)
@@ -252,12 +252,13 @@ class PartyLedgerSummaryReport:
self.party_data = frappe._dict({})
for gle in self.gl_entries:
party_details = self.party_details.get(gle.party)
+ party_name = party_details.get(f"{scrub(self.filters.party_type)}_name", "")
self.party_data.setdefault(
gle.party,
frappe._dict(
{
**party_details,
- "party_name": gle.party,
+ "party_name": party_name,
"opening_balance": 0,
"invoiced_amount": 0,
"paid_amount": 0,
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.js b/erpnext/accounts/report/general_ledger/general_ledger.js
index 6fa846910a6..4039ea27ebd 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.js
+++ b/erpnext/accounts/report/general_ledger/general_ledger.js
@@ -49,7 +49,7 @@ frappe.query_reports["General Ledger"] = {
label: __("Voucher No"),
fieldtype: "Data",
on_change: function () {
- frappe.query_report.set_filter_value("group_by", "Group by Voucher (Consolidated)");
+ frappe.query_report.set_filter_value("categorize_by", "Categorize by Voucher (Consolidated)");
},
},
{
@@ -112,29 +112,29 @@ frappe.query_reports["General Ledger"] = {
hidden: 1,
},
{
- fieldname: "group_by",
- label: __("Group by"),
+ fieldname: "categorize_by",
+ label: __("Categorize by"),
fieldtype: "Select",
options: [
"",
{
- label: __("Group by Voucher"),
- value: "Group by Voucher",
+ label: __("Categorize by Voucher"),
+ value: "Categorize by Voucher",
},
{
- label: __("Group by Voucher (Consolidated)"),
- value: "Group by Voucher (Consolidated)",
+ label: __("Categorize by Voucher (Consolidated)"),
+ value: "Categorize by Voucher (Consolidated)",
},
{
- label: __("Group by Account"),
- value: "Group by Account",
+ label: __("Categorize by Account"),
+ value: "Categorize by Account",
},
{
- label: __("Group by Party"),
- value: "Group by Party",
+ label: __("Categorize by Party"),
+ value: "Categorize by Party",
},
],
- default: "Group by Voucher (Consolidated)",
+ default: "Categorize by Voucher (Consolidated)",
},
{
fieldname: "tax_id",
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index 6b569359f5b..373a974ef38 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -63,13 +63,13 @@ def validate_filters(filters, account_details):
if not account_details.get(account):
frappe.throw(_("Account {0} does not exists").format(account))
- if filters.get("account") and filters.get("group_by") == "Group by Account":
+ if filters.get("account") and filters.get("categorize_by") == "Categorize by Account":
filters.account = frappe.parse_json(filters.get("account"))
for account in filters.account:
if account_details[account].is_group == 0:
frappe.throw(_("Can not filter based on Child Account, if grouped by Account"))
- if filters.get("voucher_no") and filters.get("group_by") in ["Group by Voucher"]:
+ if filters.get("voucher_no") and filters.get("categorize_by") in ["Categorize by Voucher"]:
frappe.throw(_("Can not filter based on Voucher No, if grouped by Voucher"))
if filters.from_date > filters.to_date:
@@ -163,9 +163,9 @@ def get_gl_entries(filters, accounting_dimensions):
if filters.get("include_dimensions"):
order_by_statement = "order by posting_date, creation"
- if filters.get("group_by") == "Group by Voucher":
+ if filters.get("categorize_by") == "Categorize by Voucher":
order_by_statement = "order by posting_date, voucher_type, voucher_no"
- if filters.get("group_by") == "Group by Account":
+ if filters.get("categorize_by") == "Categorize by Account":
order_by_statement = "order by account, posting_date, creation"
if filters.get("include_default_book_entries"):
@@ -260,7 +260,7 @@ def get_conditions(filters):
if filters.get("voucher_no_not_in"):
conditions.append("voucher_no not in %(voucher_no_not_in)s")
- if filters.get("group_by") == "Group by Party" and not filters.get("party_type"):
+ if filters.get("categorize_by") == "Categorize by Party" and not filters.get("party_type"):
conditions.append("party_type in ('Customer', 'Supplier')")
if filters.get("party_type"):
@@ -272,7 +272,7 @@ def get_conditions(filters):
if not (
filters.get("account")
or filters.get("party")
- or filters.get("group_by") in ["Group by Account", "Group by Party"]
+ or filters.get("categorize_by") in ["Categorize by Account", "Categorize by Party"]
):
if not ignore_is_opening:
conditions.append("(posting_date >=%(from_date)s or is_opening = 'Yes')")
@@ -374,26 +374,26 @@ def get_data_with_opening_closing(filters, account_details, accounting_dimension
# Opening for filtered account
data.append(totals.opening)
- if filters.get("group_by") != "Group by Voucher (Consolidated)":
+ if filters.get("categorize_by") != "Categorize by Voucher (Consolidated)":
for _acc, acc_dict in gle_map.items():
# acc
if acc_dict.entries:
# opening
data.append({"debit_in_transaction_currency": None, "credit_in_transaction_currency": None})
- if (not filters.get("group_by") and not filters.get("voucher_no")) or (
- filters.get("group_by") and filters.get("group_by") != "Group by Voucher"
+ if (not filters.get("categorize_by") and not filters.get("voucher_no")) or (
+ filters.get("categorize_by") and filters.get("categorize_by") != "Categorize by Voucher"
):
data.append(acc_dict.totals.opening)
data += acc_dict.entries
# totals
- if filters.get("group_by") or not filters.voucher_no:
+ if filters.get("categorize_by") or not filters.voucher_no:
data.append(acc_dict.totals.total)
# closing
- if (not filters.get("group_by") and not filters.get("voucher_no")) or (
- filters.get("group_by") and filters.get("group_by") != "Group by Voucher"
+ if (not filters.get("categorize_by") and not filters.get("voucher_no")) or (
+ filters.get("categorize_by") and filters.get("categorize_by") != "Categorize by Voucher"
):
data.append(acc_dict.totals.closing)
@@ -430,9 +430,9 @@ def get_totals_dict():
def group_by_field(group_by):
- if group_by == "Group by Party":
+ if group_by == "Categorize by Party":
return "party"
- elif group_by in ["Group by Voucher (Consolidated)", "Group by Account"]:
+ elif group_by in ["Categorize by Voucher (Consolidated)", "Categorize by Account"]:
return "account"
else:
return "voucher_no"
@@ -440,7 +440,7 @@ def group_by_field(group_by):
def initialize_gle_map(gl_entries, filters, totals_dict):
gle_map = OrderedDict()
- group_by = group_by_field(filters.get("group_by"))
+ group_by = group_by_field(filters.get("categorize_by"))
for gle in gl_entries:
gle_map.setdefault(gle.get(group_by), _dict(totals=copy.deepcopy(totals_dict), entries=[]))
@@ -450,8 +450,8 @@ def initialize_gle_map(gl_entries, filters, totals_dict):
def get_accountwise_gle(filters, accounting_dimensions, gl_entries, gle_map, totals):
entries = []
consolidated_gle = OrderedDict()
- group_by = group_by_field(filters.get("group_by"))
- group_by_voucher_consolidated = filters.get("group_by") == "Group by Voucher (Consolidated)"
+ group_by = group_by_field(filters.get("categorize_by"))
+ group_by_voucher_consolidated = filters.get("categorize_by") == "Categorize by Voucher (Consolidated)"
if filters.get("show_net_values_in_party_account"):
account_type_map = get_account_type_map(filters.get("company"))
diff --git a/erpnext/accounts/report/general_ledger/test_general_ledger.py b/erpnext/accounts/report/general_ledger/test_general_ledger.py
index 22cb13b439a..24280d4d620 100644
--- a/erpnext/accounts/report/general_ledger/test_general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/test_general_ledger.py
@@ -155,7 +155,7 @@ class TestGeneralLedger(IntegrationTestCase):
"from_date": today(),
"to_date": today(),
"account": [account.name],
- "group_by": "Group by Voucher (Consolidated)",
+ "categorize_by": "Categorize by Voucher (Consolidated)",
}
)
)
@@ -246,7 +246,7 @@ class TestGeneralLedger(IntegrationTestCase):
"from_date": today(),
"to_date": today(),
"account": [account.name],
- "group_by": "Group by Voucher (Consolidated)",
+ "categorize_by": "Categorize by Voucher (Consolidated)",
"ignore_err": True,
}
)
@@ -261,7 +261,7 @@ class TestGeneralLedger(IntegrationTestCase):
"from_date": today(),
"to_date": today(),
"account": [account.name],
- "group_by": "Group by Voucher (Consolidated)",
+ "categorize_by": "Categorize by Voucher (Consolidated)",
"ignore_err": False,
}
)
@@ -308,7 +308,7 @@ class TestGeneralLedger(IntegrationTestCase):
"from_date": si.posting_date,
"to_date": si.posting_date,
"account": [si.debit_to],
- "group_by": "Group by Voucher (Consolidated)",
+ "categorize_by": "Categorize by Voucher (Consolidated)",
"ignore_cr_dr_notes": False,
}
)
@@ -325,7 +325,7 @@ class TestGeneralLedger(IntegrationTestCase):
"from_date": si.posting_date,
"to_date": si.posting_date,
"account": [si.debit_to],
- "group_by": "Group by Voucher (Consolidated)",
+ "categorize_by": "Categorize by Voucher (Consolidated)",
"ignore_cr_dr_notes": True,
}
)
diff --git a/erpnext/assets/doctype/asset_movement/asset_movement.py b/erpnext/assets/doctype/asset_movement/asset_movement.py
index 29c8b3c39ef..5fa425d46e5 100644
--- a/erpnext/assets/doctype/asset_movement/asset_movement.py
+++ b/erpnext/assets/doctype/asset_movement/asset_movement.py
@@ -152,6 +152,9 @@ class AssetMovement(Document):
""",
args,
)
+
+ self.validate_movement_cancellation(d, latest_movement_entry)
+
if latest_movement_entry:
current_location = latest_movement_entry[0][0]
current_employee = latest_movement_entry[0][1]
@@ -179,3 +182,12 @@ class AssetMovement(Document):
d.asset,
_("Asset issued to Employee {0}").format(get_link_to_form("Employee", current_employee)),
)
+
+ def validate_movement_cancellation(self, row, latest_movement_entry):
+ asset_doc = frappe.get_doc("Asset", row.asset)
+ if not latest_movement_entry and asset_doc.docstatus == 1:
+ frappe.throw(
+ _(
+ "Asset {0} has only one movement record. Please create another movement before deleting this one to maintain asset tracking."
+ ).format(row.asset)
+ )
diff --git a/erpnext/assets/doctype/asset_movement/test_asset_movement.py b/erpnext/assets/doctype/asset_movement/test_asset_movement.py
index 6ecfa2b6a6f..184d749532a 100644
--- a/erpnext/assets/doctype/asset_movement/test_asset_movement.py
+++ b/erpnext/assets/doctype/asset_movement/test_asset_movement.py
@@ -147,6 +147,45 @@ class TestAssetMovement(IntegrationTestCase):
movement1.cancel()
self.assertEqual(frappe.db.get_value("Asset", asset.name, "location"), "Test Location")
+ def test_last_movement_cancellation_validation(self):
+ pr = make_purchase_receipt(item_code="Macbook Pro", qty=1, rate=100000.0, location="Test Location")
+
+ asset_name = frappe.db.get_value("Asset", {"purchase_receipt": pr.name}, "name")
+ asset = frappe.get_doc("Asset", asset_name)
+ asset.calculate_depreciation = 1
+ asset.available_for_use_date = "2020-06-06"
+ asset.purchase_date = "2020-06-06"
+ asset.append(
+ "finance_books",
+ {
+ "expected_value_after_useful_life": 10000,
+ "next_depreciation_date": "2020-12-31",
+ "depreciation_method": "Straight Line",
+ "total_number_of_depreciations": 3,
+ "frequency_of_depreciation": 10,
+ },
+ )
+ if asset.docstatus == 0:
+ asset.submit()
+
+ AssetMovement = frappe.qb.DocType("Asset Movement")
+ AssetMovementItem = frappe.qb.DocType("Asset Movement Item")
+
+ asset_movement = (
+ frappe.qb.from_(AssetMovement)
+ .join(AssetMovementItem)
+ .on(AssetMovementItem.parent == AssetMovement.name)
+ .select(AssetMovement.name)
+ .where(
+ (AssetMovementItem.asset == asset.name)
+ & (AssetMovement.company == asset.company)
+ & (AssetMovement.docstatus == 1)
+ )
+ ).run(as_dict=True)
+
+ asset_movement_doc = frappe.get_doc("Asset Movement", asset_movement[0].name)
+ self.assertRaises(frappe.ValidationError, asset_movement_doc.cancel)
+
def create_asset_movement(**args):
args = frappe._dict(args)
diff --git a/erpnext/buying/doctype/request_for_quotation_item/request_for_quotation_item.json b/erpnext/buying/doctype/request_for_quotation_item/request_for_quotation_item.json
index bb50e3d288c..f82528e06c6 100644
--- a/erpnext/buying/doctype/request_for_quotation_item/request_for_quotation_item.json
+++ b/erpnext/buying/doctype/request_for_quotation_item/request_for_quotation_item.json
@@ -63,6 +63,7 @@
"fieldtype": "Column Break"
},
{
+ "fetch_from": "item_code.item_name",
"fieldname": "item_name",
"fieldtype": "Data",
"in_global_search": 1,
@@ -261,15 +262,16 @@
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
- "modified": "2024-03-27 13:10:33.272106",
+ "modified": "2025-04-28 23:30:22.927989",
"modified_by": "Administrator",
"module": "Buying",
"name": "Request for Quotation Item",
"naming_rule": "Random",
"owner": "Administrator",
"permissions": [],
+ "row_format": "Dynamic",
"sort_field": "creation",
"sort_order": "DESC",
"states": [],
"track_changes": 1
-}
\ No newline at end of file
+}
diff --git a/erpnext/buying/doctype/supplier/supplier.js b/erpnext/buying/doctype/supplier/supplier.js
index b74474be89e..c5f46e1207d 100644
--- a/erpnext/buying/doctype/supplier/supplier.js
+++ b/erpnext/buying/doctype/supplier/supplier.js
@@ -160,7 +160,7 @@ frappe.ui.form.on("Supplier", {
address_dict: frm.doc.supplier_primary_address,
},
callback: function (r) {
- frm.set_value("primary_address", r.message);
+ frm.set_value("primary_address", frappe.utils.html2text(r.message));
},
});
}
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index 719608c1991..bf051fd0541 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -250,6 +250,7 @@ def make_purchase_order(source_name, target_doc=None):
{
"Supplier Quotation": {
"doctype": "Purchase Order",
+ "field_no_map": ["transaction_date"],
"validation": {
"docstatus": ["=", 1],
},
diff --git a/erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py
index af250cc63e3..ad0a18c26f5 100644
--- a/erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py
@@ -4,6 +4,7 @@
import frappe
from frappe.tests import IntegrationTestCase, UnitTestCase, change_settings
+from frappe.utils import add_days, today
from erpnext.buying.doctype.supplier_quotation.supplier_quotation import make_purchase_order
from erpnext.controllers.accounts_controller import InvalidQtyError
@@ -57,7 +58,7 @@ class TestPurchaseOrder(IntegrationTestCase):
for doc in po.get("items"):
if doc.get("item_code"):
- doc.set("schedule_date", "2013-04-12")
+ doc.set("schedule_date", add_days(today(), 1))
po.insert()
diff --git a/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js b/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js
index 2c0be8f70d7..0df7e0787a9 100644
--- a/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js
+++ b/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js
@@ -76,14 +76,14 @@ frappe.query_reports["Supplier Quotation Comparison"] = {
},
},
{
- fieldname: "group_by",
- label: __("Group by"),
+ fieldname: "categorize_by",
+ label: __("Categorize by"),
fieldtype: "Select",
options: [
- { label: __("Group by Supplier"), value: "Group by Supplier" },
- { label: __("Group by Item"), value: "Group by Item" },
+ { label: __("Categorize by Supplier"), value: "Categorize by Supplier" },
+ { label: __("Categorize by Item"), value: "Categorize by Item" },
],
- default: __("Group by Supplier"),
+ default: __("Categorize by Supplier"),
},
{
fieldtype: "Check",
diff --git a/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py b/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py
index 085f30f84d9..3b445675e57 100644
--- a/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py
+++ b/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py
@@ -82,20 +82,14 @@ def prepare_data(supplier_quotation_data, filters):
group_wise_map = defaultdict(list)
supplier_qty_price_map = {}
- group_by_field = "supplier_name" if filters.get("group_by") == "Group by Supplier" else "item_code"
- company_currency = frappe.db.get_default("currency")
+ group_by_field = (
+ "supplier_name" if filters.get("categorize_by") == "Categorize by Supplier" else "item_code"
+ )
float_precision = cint(frappe.db.get_default("float_precision")) or 2
for data in supplier_quotation_data:
group = data.get(group_by_field) # get item or supplier value for this row
- supplier_currency = frappe.db.get_value("Supplier", data.get("supplier_name"), "default_currency")
-
- if supplier_currency:
- exchange_rate = get_exchange_rate(supplier_currency, company_currency)
- else:
- exchange_rate = 1
-
row = {
"item_code": ""
if group_by_field == "item_code"
@@ -103,7 +97,7 @@ def prepare_data(supplier_quotation_data, filters):
"supplier_name": "" if group_by_field == "supplier_name" else data.get("supplier_name"),
"quotation": data.get("parent"),
"qty": data.get("qty"),
- "price": flt(data.get("amount") * exchange_rate, float_precision),
+ "price": flt(data.get("amount"), float_precision),
"uom": data.get("uom"),
"price_list_currency": data.get("price_list_currency"),
"currency": data.get("currency"),
@@ -209,6 +203,13 @@ def get_columns(filters):
columns = [
{"fieldname": "uom", "label": _("UOM"), "fieldtype": "Link", "options": "UOM", "width": 90},
{"fieldname": "qty", "label": _("Quantity"), "fieldtype": "Float", "width": 80},
+ {
+ "fieldname": "stock_uom",
+ "label": _("Stock UOM"),
+ "fieldtype": "Link",
+ "options": "UOM",
+ "width": 90,
+ },
{
"fieldname": "currency",
"label": _("Currency"),
@@ -223,13 +224,6 @@ def get_columns(filters):
"options": "currency",
"width": 110,
},
- {
- "fieldname": "stock_uom",
- "label": _("Stock UOM"),
- "fieldtype": "Link",
- "options": "UOM",
- "width": 90,
- },
{
"fieldname": "price_per_unit",
"label": _("Price per Unit (Stock UOM)"),
@@ -274,7 +268,7 @@ def get_columns(filters):
},
]
- if filters.get("group_by") == "Group by Item":
+ if filters.get("categorize_by") == "Categorize by Item":
group_by_columns.reverse()
columns[0:0] = group_by_columns # add positioned group by columns to the report
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 6d75d8ff07c..602d6c955b3 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -98,7 +98,29 @@ class BuyingController(SubcontractingController):
item.from_warehouse,
type_of_transaction="Outward",
do_not_submit=True,
+ qty=item.qty,
)
+ elif (
+ not self.is_new()
+ and item.serial_and_batch_bundle
+ and next(
+ (
+ old_item
+ for old_item in self.get_doc_before_save().items
+ if old_item.name == item.name and old_item.qty != item.qty
+ ),
+ None,
+ )
+ and len(
+ sabe := frappe.get_all(
+ "Serial and Batch Entry",
+ filters={"parent": item.serial_and_batch_bundle, "serial_no": ["is", "not set"]},
+ pluck="name",
+ )
+ )
+ == 1
+ ):
+ frappe.set_value("Serial and Batch Entry", sabe[0], "qty", item.qty)
def set_rate_for_standalone_debit_note(self):
if self.get("is_return") and self.get("update_stock") and not self.return_against:
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index 052264d9320..7c0dd464e61 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -811,7 +811,7 @@ class StockController(AccountsController):
)
def make_package_for_transfer(
- self, serial_and_batch_bundle, warehouse, type_of_transaction=None, do_not_submit=None
+ self, serial_and_batch_bundle, warehouse, type_of_transaction=None, do_not_submit=None, qty=0
):
return make_bundle_for_material_transfer(
is_new=self.is_new(),
@@ -822,6 +822,7 @@ class StockController(AccountsController):
warehouse=warehouse,
type_of_transaction=type_of_transaction,
do_not_submit=do_not_submit,
+ qty=qty,
)
def get_sl_entries(self, d, args):
@@ -1818,15 +1819,24 @@ def make_bundle_for_material_transfer(**kwargs):
kwargs.type_of_transaction = "Inward"
bundle_doc = frappe.copy_doc(bundle_doc)
+ bundle_doc.docstatus = 0
bundle_doc.warehouse = kwargs.warehouse
bundle_doc.type_of_transaction = kwargs.type_of_transaction
bundle_doc.voucher_type = kwargs.voucher_type
bundle_doc.voucher_no = "" if kwargs.is_new or kwargs.docstatus == 2 else kwargs.voucher_no
bundle_doc.is_cancelled = 0
+ qty = 0
+ if (
+ len(bundle_doc.entries) == 1
+ and flt(kwargs.qty) < flt(bundle_doc.total_qty)
+ and not bundle_doc.has_serial_no
+ ):
+ qty = kwargs.qty
+
for row in bundle_doc.entries:
row.is_outward = 0
- row.qty = abs(row.qty)
+ row.qty = abs(qty or row.qty)
row.stock_value_difference = abs(row.stock_value_difference)
if kwargs.type_of_transaction == "Outward":
row.qty *= -1
diff --git a/erpnext/locale/fa.po b/erpnext/locale/fa.po
index d43812ffcd1..b7f11735b16 100644
--- a/erpnext/locale/fa.po
+++ b/erpnext/locale/fa.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: hello@frappe.io\n"
"POT-Creation-Date: 2025-04-27 09:35+0000\n"
-"PO-Revision-Date: 2025-04-28 06:21\n"
+"PO-Revision-Date: 2025-04-30 07:12\n"
"Last-Translator: hello@frappe.io\n"
"Language-Team: Persian\n"
"MIME-Version: 1.0\n"
@@ -6585,7 +6585,7 @@ msgstr "مقدار موجود"
#. Name of a report
#: erpnext/stock/report/available_serial_no/available_serial_no.json
msgid "Available Serial No"
-msgstr ""
+msgstr "شماره سریال موجود"
#: erpnext/selling/report/customer_wise_item_price/customer_wise_item_price.py:38
msgid "Available Stock"
@@ -9105,7 +9105,7 @@ msgstr "فقط در صورتی میتوان ردیف را ارجاع داد
#: erpnext/stock/doctype/stock_settings/stock_settings.py:137
msgid "Can't change the valuation method, as there are transactions against some items which do not have its own valuation method"
-msgstr "نمیتوان روش ارزش گذاری را تغییر داد، زیرا معاملاتی در برابر برخی اقلام وجود دارد که روش ارزش گذاری خاص خود را ندارند."
+msgstr "نمیتوان روش ارزش گذاری را تغییر داد، زیرا تراکنشهایی در برابر برخی آیتمها وجود دارد که روش ارزش گذاری خاص خود را ندارند"
#: erpnext/templates/pages/task_info.html:24
msgid "Cancel"
@@ -11501,7 +11501,7 @@ msgstr "کنش را طوری پیکربندی کنید که تراکنش را م
#: erpnext/buying/doctype/buying_settings/buying_settings.js:20
msgid "Configure the default Price List when creating a new Purchase transaction. Item prices will be fetched from this Price List."
-msgstr "هنگام ایجاد تراکنش خرید جدید، فهرست قیمت پیشفرض را پیکربندی کنید. قیمت اقلام از این لیست قیمت دریافت میشود."
+msgstr "هنگام ایجاد تراکنش خرید جدید، فهرست قیمت پیشفرض را پیکربندی کنید. قیمت آیتم از این لیست قیمت دریافت میشود."
#. Label of the final_confirmation_date (Date) field in DocType 'Employee'
#: erpnext/setup/doctype/employee/employee.json
@@ -12183,7 +12183,7 @@ msgstr ""
#: erpnext/controllers/accounts_controller.py:2767
msgid "Conversion rate must be 1.00 if document currency is same as company currency"
-msgstr ""
+msgstr "اگر واحد پول سند با واحد پول شرکت یکسان باشد، نرخ تبدیل باید 1.00 باشد"
#. Label of the clean_description_html (Check) field in DocType 'Stock
#. Settings'
@@ -15570,7 +15570,7 @@ msgstr "تنظیمات پیشفرض برای تراکنشهای مربوط
#: erpnext/setup/doctype/company/company.js:168
msgid "Default tax templates for sales, purchase and items are created."
-msgstr "الگوهای مالیاتی پیشفرض برای فروش، خرید و اقلام ایجاد میشود."
+msgstr "الگوهای مالیاتی پیشفرض برای فروش، خرید و آیتمها ایجاد میشود."
#. Description of the 'Time Between Operations (Mins)' (Int) field in DocType
#. 'Manufacturing Settings'
@@ -17989,7 +17989,7 @@ msgstr "تکرار پروژه با تسکها"
#: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py:144
msgid "Duplicate Sales Invoices found"
-msgstr ""
+msgstr "فاکتورهای فروش تکراری پیدا شد"
#: erpnext/stock/doctype/stock_closing_entry/stock_closing_entry.py:78
msgid "Duplicate Stock Closing Entry"
@@ -21863,12 +21863,12 @@ msgstr "دریافت آیتمها از رسید خرید"
#. Label of the transfer_materials (Button) field in DocType 'Production Plan'
#: erpnext/manufacturing/doctype/production_plan/production_plan.json
msgid "Get Items for Purchase / Transfer"
-msgstr ""
+msgstr "دریافت آیتمها برای خرید / انتقال"
#. Label of the get_items_for_mr (Button) field in DocType 'Production Plan'
#: erpnext/manufacturing/doctype/production_plan/production_plan.json
msgid "Get Items for Purchase Only"
-msgstr ""
+msgstr "دریافت آیتمها فقط برای خرید"
#: erpnext/stock/doctype/material_request/material_request.js:310
#: erpnext/stock/doctype/stock_entry/stock_entry.js:656
@@ -23218,7 +23218,7 @@ msgstr "اگر آیتم گونهای از یک آیتم دیگر باشد،
#. DocType 'Production Plan'
#: erpnext/manufacturing/doctype/production_plan/production_plan.json
msgid "If items in stock, proceed with Material Transfer or Purchase."
-msgstr ""
+msgstr "اگر آیتمها موجود هستند، مراحل انتقال مواد یا خرید را ادامه دهید."
#. Description of the 'Role Allowed to Create/Edit Back-dated Transactions'
#. (Link) field in DocType 'Stock Settings'
@@ -24931,7 +24931,7 @@ msgstr ""
#: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py:194
msgid "Invalid Sales Invoices"
-msgstr ""
+msgstr "فاکتورهای فروش نامعتبر"
#: erpnext/assets/doctype/asset/asset.py:460
#: erpnext/assets/doctype/asset/asset.py:467
@@ -24962,7 +24962,7 @@ msgstr "انبار نامعتبر"
#: erpnext/accounts/doctype/bank_transaction/bank_transaction.py:355
msgid "Invalid amount in accounting entries of {} {} for Account {}: {}"
-msgstr ""
+msgstr "مبلغ نامعتبر در ثبتهای حسابداری {} {} برای حساب {}: {}"
#: erpnext/accounts/doctype/pricing_rule/pricing_rule.py:312
msgid "Invalid condition expression"
@@ -26990,7 +26990,7 @@ msgstr "نرخ آیتم به صفر بهروزرسانی شده است زیر
#. Label of the finished_good (Link) field in DocType 'Job Card'
#: erpnext/manufacturing/doctype/job_card/job_card.json
msgid "Item to Manufacture"
-msgstr ""
+msgstr "آیتم برای تولید"
#. Description of the 'Item' (Link) field in DocType 'BOM'
#: erpnext/manufacturing/doctype/bom/bom.json
@@ -27265,7 +27265,7 @@ msgstr "آیتمها برای درخواست مواد خام"
#: erpnext/stock/doctype/stock_entry/stock_entry.py:849
msgid "Items rate has been updated to zero as Allow Zero Valuation Rate is checked for the following items: {0}"
-msgstr "نرخ آیتمها به صفر بهروزرسانی شده است زیرا نرخ ارزش گذاری مجاز صفر برای موارد زیر بررسی میشود: {0}"
+msgstr "نرخ آیتمها به صفر بهروزرسانی شده است زیرا نرخ ارزش گذاری مجاز صفر برای آیتمهای زیر بررسی میشود: {0}"
#. Label of the items_to_be_repost (Code) field in DocType 'Repost Item
#. Valuation'
@@ -27275,7 +27275,7 @@ msgstr "مواردی که باید بازنشر شوند"
#: erpnext/manufacturing/doctype/production_plan/production_plan.py:1560
msgid "Items to Manufacture are required to pull the Raw Materials associated with it."
-msgstr "اقلام برای تولید برای کشیدن مواد خام مرتبط با آن مورد نیاز است."
+msgstr "آیتم برای تولید برای دریافت مواد خام مرتبط با آن مورد نیاز است."
#. Label of a Link in the Buying Workspace
#: erpnext/buying/workspace/buying/buying.json
@@ -31799,7 +31799,7 @@ msgstr "بدون ملاحظات"
#: erpnext/public/js/utils/unreconcile.js:147
msgid "No Selection"
-msgstr ""
+msgstr "بدون انتخاب"
#: erpnext/controllers/sales_and_purchase_return.py:919
msgid "No Serial / Batches are available for return"
@@ -37402,7 +37402,7 @@ msgstr "لطفاً انبار هدف را در کارت کار تنظیم کنی
#: erpnext/manufacturing/doctype/job_card/job_card.py:1447
msgid "Please set the WIP Warehouse in the Job Card"
-msgstr ""
+msgstr "لطفاً انبار کار در حال انجام را در کارت کار تنظیم کنید"
#: erpnext/accounts/doctype/gl_entry/gl_entry.py:174
msgid "Please set the cost center field in {0} or setup a default Cost Center for the Company."
@@ -40049,7 +40049,7 @@ msgstr "کالای رسید خرید"
#. Name of a DocType
#: erpnext/buying/doctype/purchase_receipt_item_supplied/purchase_receipt_item_supplied.json
msgid "Purchase Receipt Item Supplied"
-msgstr "اقلام رسید خرید تامین شد"
+msgstr "آیتم رسید خرید تامین شد"
#. Label of the purchase_receipt_items (Section Break) field in DocType 'Landed
#. Cost Voucher'
@@ -43189,7 +43189,7 @@ msgstr "ارسال مجدد دفتر پرداخت"
#. Name of a DocType
#: erpnext/accounts/doctype/repost_payment_ledger_items/repost_payment_ledger_items.json
msgid "Repost Payment Ledger Items"
-msgstr "ارسال مجدد اقلام دفتر پرداخت"
+msgstr "ارسال مجدد آیتمهای دفتر پرداخت"
#. Label of the repost_status (Select) field in DocType 'Repost Payment Ledger'
#: erpnext/accounts/doctype/repost_payment_ledger/repost_payment_ledger.json
@@ -43848,7 +43848,7 @@ msgstr "محدود کردن"
#. Item'
#: erpnext/selling/doctype/party_specific_item/party_specific_item.json
msgid "Restrict Items Based On"
-msgstr "موارد را بر اساس محدود کنید"
+msgstr "محدود کردن آیتمها بر اساس"
#. Label of the section_break_6 (Section Break) field in DocType 'Shipping
#. Rule'
@@ -44146,7 +44146,7 @@ msgstr ""
#: erpnext/quality_management/doctype/quality_procedure/quality_procedure.json
#: erpnext/quality_management/doctype/quality_review/quality_review.json
msgid "Reviews"
-msgstr "بررسی ها"
+msgstr ""
#. Label of the rgt (Int) field in DocType 'Account'
#. Label of the rgt (Int) field in DocType 'Company'
@@ -44900,7 +44900,7 @@ msgstr "ردیف #{idx}: هنگام تامین مواد خام به پیمانک
#: erpnext/controllers/buying_controller.py:382
msgid "Row #{idx}: Item rate has been updated as per valuation rate since its an internal stock transfer."
-msgstr "ردیف #{idx}: نرخ اقلام براساس نرخ ارزیابی بهروزرسانی شده است، زیرا یک انتقال داخلی موجودی است."
+msgstr "ردیف #{idx}: نرخ آیتم براساس نرخ ارزیابی بهروزرسانی شده است، زیرا یک انتقال داخلی موجودی است."
#: erpnext/controllers/buying_controller.py:846
msgid "Row #{idx}: Please enter a location for the asset item {item_code}."
@@ -44916,11 +44916,11 @@ msgstr "ردیف #{idx}: {field_label} نمیتواند برای مورد {it
#: erpnext/controllers/buying_controller.py:472
msgid "Row #{idx}: {field_label} is mandatory."
-msgstr ""
+msgstr "ردیف #{idx}: {field_label} اجباری است."
#: erpnext/controllers/buying_controller.py:494
msgid "Row #{idx}: {field_label} is not allowed in Purchase Return."
-msgstr ""
+msgstr "ردیف #{idx}: {field_label} در مرجوعی خرید مجاز نیست."
#: erpnext/controllers/buying_controller.py:227
msgid "Row #{idx}: {from_warehouse_field} and {to_warehouse_field} cannot be same."
@@ -45659,7 +45659,7 @@ msgstr "پرداخت فاکتور فروش"
#. Name of a DocType
#: erpnext/accounts/doctype/sales_invoice_reference/sales_invoice_reference.json
msgid "Sales Invoice Reference"
-msgstr ""
+msgstr "مرجع فاکتور فروش"
#. Name of a DocType
#: erpnext/accounts/doctype/sales_invoice_timesheet/sales_invoice_timesheet.json
@@ -45670,7 +45670,7 @@ msgstr "جدول زمانی فاکتور فروش"
#. Closing Entry'
#: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.json
msgid "Sales Invoice Transactions"
-msgstr ""
+msgstr "تراکنشهای فاکتور فروش"
#. Name of a report
#. Label of a Link in the Financial Reports Workspace
@@ -45683,7 +45683,7 @@ msgstr "روند فاکتور فروش"
#: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py:169
msgid "Sales Invoice does not have Payments"
-msgstr ""
+msgstr "فاکتور فروش، پرداخت ندارد"
#: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py:165
msgid "Sales Invoice is already consolidated"
@@ -45695,11 +45695,11 @@ msgstr ""
#: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py:177
msgid "Sales Invoice is not submitted"
-msgstr ""
+msgstr "فاکتور فروش ارسال نشده است"
#: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py:180
msgid "Sales Invoice isn't created by user {}"
-msgstr ""
+msgstr "فاکتور فروش توسط کاربر {} ایجاد نشده است"
#: erpnext/accounts/doctype/pos_invoice/pos_invoice.py:429
msgid "Sales Invoice mode is activated in POS. Please create Sales Invoice instead."
@@ -46616,7 +46616,7 @@ msgstr "برنامه ریزی"
#: erpnext/utilities/doctype/rename_tool/rename_tool.js:31
msgid "Scheduling..."
-msgstr "برنامه ریزی..."
+msgstr "در حال زمانبندی..."
#. Label of the school_univ (Small Text) field in DocType 'Employee Education'
#: erpnext/setup/doctype/employee_education/employee_education.json
@@ -46923,7 +46923,7 @@ msgstr "کالای تمام شده را انتخاب کنید"
#: erpnext/selling/doctype/sales_order/sales_order.js:1161
#: erpnext/selling/doctype/sales_order/sales_order.js:1173
msgid "Select Items"
-msgstr "موارد را انتخاب کنید"
+msgstr "انتخاب آیتمها"
#: erpnext/selling/doctype/sales_order/sales_order.js:1047
msgid "Select Items based on Delivery Date"
@@ -46931,7 +46931,7 @@ msgstr "آیتمها را بر اساس تاریخ تحویل انتخاب ک
#: erpnext/public/js/controllers/transaction.js:2403
msgid "Select Items for Quality Inspection"
-msgstr "موارد را برای بازرسی کیفیت انتخاب کنید"
+msgstr "انتخاب آیتمها برای بازرسی کیفیت"
#. Label of the select_items_to_manufacture_section (Section Break) field in
#. DocType 'Production Plan'
@@ -47034,7 +47034,7 @@ msgstr "یک تامین کننده انتخاب کنید"
#: erpnext/stock/doctype/material_request/material_request.js:380
msgid "Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only."
-msgstr "یک تامین کننده از تامین کنندگان پیشفرض موارد زیر انتخاب کنید. در صورت انتخاب، یک سفارش خرید فقط در برابر اقلام متعلق به تامین کننده منتخب انجام میشود."
+msgstr "یک تامین کننده از تامین کنندگان پیشفرض آیتمهای زیر انتخاب کنید. در صورت انتخاب، یک سفارش خرید فقط در برابر آیتمهای متعلق به تامین کننده منتخب انجام میشود."
#: erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.js:161
msgid "Select a company"
@@ -53544,7 +53544,7 @@ msgstr ""
#: erpnext/stock/doctype/item/item.py:612
msgid "The items {0} and {1} are present in the following {2} :"
-msgstr "موارد {0} و {1} در {2} زیر موجود هستند:"
+msgstr "آیتمهای {0} و {1} در {2} زیر موجود هستند:"
#: erpnext/controllers/buying_controller.py:1024
msgid "The items {items} are not marked as {type_of} item. You can enable them as {type_of} item from their Item masters."
diff --git a/erpnext/locale/main.pot b/erpnext/locale/main.pot
index 0e2d0dc1fa1..88c05857dee 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: 2025-04-27 09:35+0000\n"
-"PO-Revision-Date: 2025-04-27 09:35+0000\n"
+"POT-Creation-Date: 2025-05-04 09:35+0000\n"
+"PO-Revision-Date: 2025-05-04 09:35+0000\n"
"Last-Translator: hello@frappe.io\n"
"Language-Team: hello@frappe.io\n"
"MIME-Version: 1.0\n"
@@ -47,6 +47,7 @@ msgstr ""
msgid " Item"
msgstr ""
+#: erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py:147
#: erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py:186
#: erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py:107
#: erpnext/selling/report/sales_analytics/sales_analytics.py:128
@@ -80,15 +81,15 @@ msgstr ""
msgid " Summary"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:233
+#: erpnext/stock/doctype/item/item.py:235
msgid "\"Customer Provided Item\" cannot be Purchase Item also"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:235
+#: erpnext/stock/doctype/item/item.py:237
msgid "\"Customer Provided Item\" cannot have Valuation Rate"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:311
+#: erpnext/stock/doctype/item/item.py:313
msgid "\"Is Fixed Asset\" cannot be unchecked, as Asset record exists against the item"
msgstr ""
@@ -234,7 +235,7 @@ msgstr ""
msgid "'Default {0} Account' in Company {1}"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1162
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1171
msgid "'Entries' cannot be empty"
msgstr ""
@@ -248,7 +249,7 @@ msgstr ""
msgid "'From Date' must be after 'To Date'"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:396
+#: erpnext/stock/doctype/item/item.py:398
msgid "'Has Serial No' can not be 'Yes' for non-stock item"
msgstr ""
@@ -822,11 +823,11 @@ msgstr ""
msgid "Your Shortcuts"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:983
+#: erpnext/accounts/doctype/payment_request/payment_request.py:988
msgid "Grand Total: {0}"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:984
+#: erpnext/accounts/doctype/payment_request/payment_request.py:989
msgid "Outstanding Amount: {0}"
msgstr ""
@@ -1110,7 +1111,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:2360
+#: erpnext/public/js/controllers/transaction.js:2362
#: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json
#: erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json
msgid "Accepted Quantity"
@@ -1143,7 +1144,7 @@ msgstr ""
msgid "According to CEFACT/ICG/2010/IC013 or CEFACT/ICG/2010/IC010"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:766
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:778
msgid "According to the BOM {0}, the Item '{1}' is missing in the stock entry."
msgstr ""
@@ -1507,7 +1508,7 @@ msgstr ""
msgid "Account: {0} is capital Work in progress and can not be updated by Journal Entry"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:279
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:288
msgid "Account: {0} can only be updated via Stock Transactions"
msgstr ""
@@ -1791,29 +1792,29 @@ msgstr ""
msgid "Accounting Entry for Asset"
msgstr ""
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:772
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:774
msgid "Accounting Entry for Service"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:996
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1017
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1035
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1056
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1077
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1101
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1208
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1444
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1466
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:998
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1019
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1037
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1058
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1079
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1103
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1210
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1446
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1468
#: erpnext/controllers/stock_controller.py:550
#: erpnext/controllers/stock_controller.py:567
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:865
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1564
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1578
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:867
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1576
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1590
#: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:561
msgid "Accounting Entry for Stock"
msgstr ""
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:703
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:705
msgid "Accounting Entry for {0}"
msgstr ""
@@ -2161,7 +2162,7 @@ msgstr ""
msgid "Accounts User"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1261
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1270
msgid "Accounts table cannot be blank."
msgstr ""
@@ -2332,7 +2333,7 @@ msgstr ""
#: erpnext/quality_management/doctype/quality_procedure/quality_procedure.json
#: erpnext/selling/doctype/customer/customer.js:189
#: erpnext/selling/doctype/customer/customer.js:198
-#: erpnext/stock/doctype/item/item.js:489 erpnext/templates/pages/order.html:20
+#: erpnext/stock/doctype/item/item.js:518 erpnext/templates/pages/order.html:20
msgid "Actions"
msgstr ""
@@ -2607,14 +2608,14 @@ msgstr ""
#: erpnext/public/js/bom_configurator/bom_configurator.bundle.js:235
#: erpnext/public/js/bom_configurator/bom_configurator.bundle.js:264
#: erpnext/public/js/bom_configurator/bom_configurator.bundle.js:399
-#: erpnext/public/js/utils/crm_activities.js:170
+#: erpnext/public/js/utils/crm_activities.js:172
#: erpnext/public/js/utils/serial_no_batch_selector.js:17
#: erpnext/public/js/utils/serial_no_batch_selector.js:191
#: erpnext/stock/dashboard/item_dashboard_list.html:61
msgid "Add"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:485
+#: erpnext/stock/doctype/item/item.js:514
#: erpnext/stock/doctype/price_list/price_list.js:8
msgid "Add / Edit Prices"
msgstr ""
@@ -2786,7 +2787,7 @@ msgstr ""
msgid "Add Weekly Holidays"
msgstr ""
-#: erpnext/public/js/utils/crm_activities.js:142
+#: erpnext/public/js/utils/crm_activities.js:144
msgid "Add a Note"
msgstr ""
@@ -3289,7 +3290,7 @@ msgstr ""
msgid "Adjustment Against"
msgstr ""
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:626
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:628
msgid "Adjustment based on Purchase Invoice rate"
msgstr ""
@@ -3413,7 +3414,7 @@ msgstr ""
msgid "Advance amount cannot be greater than {0} {1}"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:831
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:840
msgid "Advance paid against {0} {1} cannot be greater than Grand Total {2}"
msgstr ""
@@ -3539,7 +3540,7 @@ msgstr ""
msgid "Against Income Account"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:693
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:702
#: erpnext/accounts/doctype/payment_entry/payment_entry.py:777
msgid "Against Journal Entry {0} does not have any unmatched {1} entry"
msgstr ""
@@ -3576,7 +3577,7 @@ msgstr ""
msgid "Against Stock Entry"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:326
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:328
msgid "Against Supplier Invoice {0}"
msgstr ""
@@ -3907,7 +3908,7 @@ msgstr ""
msgid "All items are already requested"
msgstr ""
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1216
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1218
msgid "All items have already been Invoiced/Returned"
msgstr ""
@@ -3915,11 +3916,11 @@ msgstr ""
msgid "All items have already been received"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:2519
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:2531
msgid "All items have already been transferred for this Work Order."
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2463
+#: erpnext/public/js/controllers/transaction.js:2465
msgid "All items in this document already have a linked Quality Inspection."
msgstr ""
@@ -4409,6 +4410,10 @@ msgstr ""
msgid "Already set default in pos profile {0} for user {1}, kindly disabled default"
msgstr ""
+#: erpnext/stock/doctype/item/item.js:20
+msgid "Also you can't switch back to FIFO after setting the valuation method to Moving Average for this item."
+msgstr ""
+
#: erpnext/manufacturing/doctype/bom/bom.js:200
#: erpnext/manufacturing/doctype/work_order/work_order.js:140
#: erpnext/manufacturing/doctype/work_order/work_order.js:155
@@ -4960,7 +4965,7 @@ msgstr ""
msgid "An error has been appeared while reposting item valuation via {0}"
msgstr ""
-#: erpnext/public/js/controllers/buying.js:319
+#: erpnext/public/js/controllers/buying.js:331
#: erpnext/public/js/utils/sales_common.js:463
msgid "An error occurred during the update process"
msgstr ""
@@ -5020,7 +5025,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:739
+#: erpnext/accounts/doctype/payment_request/payment_request.py:744
msgid "Another Payment Request is already processed"
msgstr ""
@@ -5468,7 +5473,7 @@ msgstr ""
msgid "As the field {0} is enabled, the value of the field {1} should be more than 1."
msgstr ""
-#: erpnext/stock/doctype/item/item.py:982
+#: erpnext/stock/doctype/item/item.py:989
msgid "As there are existing submitted transactions against item {0}, you can not change the value of {1}."
msgstr ""
@@ -5614,7 +5619,7 @@ msgstr ""
msgid "Asset Category Name"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:302
+#: erpnext/stock/doctype/item/item.py:304
msgid "Asset Category is mandatory for Fixed Asset item"
msgstr ""
@@ -5903,7 +5908,7 @@ msgstr ""
msgid "Asset deleted"
msgstr ""
-#: erpnext/assets/doctype/asset_movement/asset_movement.py:180
+#: erpnext/assets/doctype/asset_movement/asset_movement.py:183
msgid "Asset issued to Employee {0}"
msgstr ""
@@ -5911,7 +5916,7 @@ msgstr ""
msgid "Asset out of order due to Asset Repair {0}"
msgstr ""
-#: erpnext/assets/doctype/asset_movement/asset_movement.py:165
+#: erpnext/assets/doctype/asset_movement/asset_movement.py:168
msgid "Asset received at Location {0} and issued to Employee {1}"
msgstr ""
@@ -5943,7 +5948,7 @@ msgstr ""
msgid "Asset submitted"
msgstr ""
-#: erpnext/assets/doctype/asset_movement/asset_movement.py:173
+#: erpnext/assets/doctype/asset_movement/asset_movement.py:176
msgid "Asset transferred to Location {0}"
msgstr ""
@@ -5996,11 +6001,15 @@ msgstr ""
msgid "Asset {0} has been updated. Please set the depreciation details if any and submit it."
msgstr ""
+#: erpnext/assets/doctype/asset_movement/asset_movement.py:190
+msgid "Asset {0} has only one movement record. Please create another movement before deleting this one to maintain asset tracking."
+msgstr ""
+
#: erpnext/assets/doctype/asset/depreciation.py:438
msgid "Asset {0} must be submitted"
msgstr ""
-#: erpnext/controllers/buying_controller.py:816
+#: erpnext/controllers/buying_controller.py:840
msgid "Asset {assets_link} created for {item_code}"
msgstr ""
@@ -6030,11 +6039,11 @@ msgstr ""
msgid "Assets"
msgstr ""
-#: erpnext/controllers/buying_controller.py:834
+#: erpnext/controllers/buying_controller.py:858
msgid "Assets not created for {item_code}. You will have to create asset manually."
msgstr ""
-#: erpnext/controllers/buying_controller.py:821
+#: erpnext/controllers/buying_controller.py:845
msgid "Assets {assets_link} created for {item_code}"
msgstr ""
@@ -6113,7 +6122,7 @@ msgstr ""
msgid "At least one of the Selling or Buying must be selected"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:600
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:612
msgid "At least one warehouse is mandatory"
msgstr ""
@@ -6145,6 +6154,10 @@ msgstr ""
msgid "At row {0}: set Parent Row No for item {1}"
msgstr ""
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:542
+msgid "At row {0}: the Difference Account must not be a Stock type account, please change the Account Type for the account {1} or select a different account"
+msgstr ""
+
#. Name of a UOM
#: erpnext/setup/setup_wizard/data/uom_data.json
msgid "Atmosphere"
@@ -6207,7 +6220,7 @@ msgstr ""
msgid "Attribute Value"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:928
+#: erpnext/stock/doctype/item/item.py:930
msgid "Attribute table is mandatory"
msgstr ""
@@ -6215,11 +6228,11 @@ msgstr ""
msgid "Attribute value: {0} must appear only once"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:932
+#: erpnext/stock/doctype/item/item.py:934
msgid "Attribute {0} selected multiple times in Attributes Table"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:860
+#: erpnext/stock/doctype/item/item.py:862
msgid "Attributes"
msgstr ""
@@ -6465,7 +6478,7 @@ msgstr ""
msgid "Auto re-order"
msgstr ""
-#: erpnext/public/js/controllers/buying.js:317
+#: erpnext/public/js/controllers/buying.js:329
#: erpnext/public/js/utils/sales_common.js:458
msgid "Auto repeat document updated"
msgstr ""
@@ -6636,7 +6649,7 @@ msgstr ""
msgid "Available for use date is required"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:733
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:745
msgid "Available quantity is {0}, you need {1}"
msgstr ""
@@ -6762,7 +6775,7 @@ msgstr ""
#: erpnext/selling/doctype/sales_order/sales_order.js:980
#: erpnext/stock/doctype/material_request/material_request.js:315
#: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:630
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:631
#: erpnext/stock/report/bom_search/bom_search.py:38
#: erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json
#: erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json
@@ -6992,7 +7005,7 @@ msgstr ""
msgid "BOM Website Operation"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:1187
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:1204
msgid "BOM and Manufacturing Quantity are required"
msgstr ""
@@ -7003,7 +7016,7 @@ msgid "BOM and Production"
msgstr ""
#: erpnext/stock/doctype/material_request/material_request.js:347
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:682
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:683
msgid "BOM does not contain any stock item"
msgstr ""
@@ -7240,7 +7253,7 @@ msgstr ""
#: erpnext/accounts/report/cheques_and_deposits_incorrectly_cleared/cheques_and_deposits_incorrectly_cleared.js:16
#: erpnext/accounts/workspace/accounting/accounting.json
#: erpnext/buying/doctype/supplier/supplier.js:108
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:514
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:512
msgid "Bank Account"
msgstr ""
@@ -7439,7 +7452,7 @@ msgstr ""
msgid "Bank Transaction {0} updated"
msgstr ""
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:547
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:545
msgid "Bank account cannot be named as {0}"
msgstr ""
@@ -7503,11 +7516,11 @@ msgstr ""
msgid "Barcode Type"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:455
+#: erpnext/stock/doctype/item/item.py:457
msgid "Barcode {0} already used in Item {1}"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:470
+#: erpnext/stock/doctype/item/item.py:472
msgid "Barcode {0} is not a valid {1} code"
msgstr ""
@@ -7762,7 +7775,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:2386
+#: erpnext/public/js/controllers/transaction.js:2388
#: erpnext/public/js/utils/barcode_scanner.js:260
#: erpnext/public/js/utils/serial_no_batch_selector.js:438
#: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
@@ -7874,12 +7887,12 @@ msgstr ""
msgid "Batch {0} is not available in warehouse {1}"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:2682
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:2694
#: erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py:283
msgid "Batch {0} of Item {1} has expired."
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:2688
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:2700
msgid "Batch {0} of Item {1} is disabled."
msgstr ""
@@ -7946,7 +7959,7 @@ msgstr ""
#: erpnext/manufacturing/doctype/bom/bom.py:1170
#: erpnext/manufacturing/workspace/manufacturing/manufacturing.json
#: erpnext/stock/doctype/material_request/material_request.js:107
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:612
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:613
msgid "Bill of Materials"
msgstr ""
@@ -8149,7 +8162,7 @@ msgstr ""
msgid "Billing Zipcode"
msgstr ""
-#: erpnext/accounts/party.py:583
+#: erpnext/accounts/party.py:602
msgid "Billing currency must be equal to either default company's currency or party account currency"
msgstr ""
@@ -9098,7 +9111,7 @@ msgstr ""
msgid "Can be approved by {0}"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1917
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1922
msgid "Can not close Work Order. Since {0} Job Cards are in Work In Progress state."
msgstr ""
@@ -9126,8 +9139,8 @@ msgstr ""
msgid "Can not filter based on Voucher No, if grouped by Voucher"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1321
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2975
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1328
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:2974
msgid "Can only make payment against unbilled {0}"
msgstr ""
@@ -9294,9 +9307,9 @@ msgstr ""
msgid "Cannot Create Return"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:623
-#: erpnext/stock/doctype/item/item.py:636
-#: erpnext/stock/doctype/item/item.py:650
+#: erpnext/stock/doctype/item/item.py:625
+#: erpnext/stock/doctype/item/item.py:638
+#: erpnext/stock/doctype/item/item.py:652
msgid "Cannot Merge"
msgstr ""
@@ -9316,11 +9329,11 @@ msgstr ""
msgid "Cannot amend {0} {1}, please create a new one instead."
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:293
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:302
msgid "Cannot apply TDS against multiple parties in one entry"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:305
+#: erpnext/stock/doctype/item/item.py:307
msgid "Cannot be a fixed asset item as Stock Ledger is created."
msgstr ""
@@ -9336,7 +9349,7 @@ msgstr ""
msgid "Cannot cancel the transaction. Reposting of item valuation on submission is not completed yet."
msgstr ""
-#: erpnext/controllers/buying_controller.py:924
+#: erpnext/controllers/buying_controller.py:948
msgid "Cannot cancel this document as it is linked with the submitted asset {asset_link}. Please cancel the asset to continue."
msgstr ""
@@ -9344,7 +9357,7 @@ msgstr ""
msgid "Cannot cancel transaction for Completed Work Order."
msgstr ""
-#: erpnext/stock/doctype/item/item.py:880
+#: erpnext/stock/doctype/item/item.py:882
msgid "Cannot change Attributes after stock transaction. Make a new Item and transfer stock to the new Item"
msgstr ""
@@ -9360,7 +9373,7 @@ msgstr ""
msgid "Cannot change Service Stop Date for item in row {0}"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:871
+#: erpnext/stock/doctype/item/item.py:873
msgid "Cannot change Variant properties after stock transaction. You will have to make a new Item to do this."
msgstr ""
@@ -9388,7 +9401,7 @@ msgstr ""
msgid "Cannot covert to Group because Account Type is selected."
msgstr ""
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:944
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:946
msgid "Cannot create Stock Reservation Entries for future dated Purchase Receipts."
msgstr ""
@@ -9498,7 +9511,7 @@ msgstr ""
msgid "Cannot set authorization on basis of Discount for {0}"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:714
+#: erpnext/stock/doctype/item/item.py:716
msgid "Cannot set multiple Item Defaults for a company."
msgstr ""
@@ -9683,7 +9696,7 @@ msgstr ""
msgid "Cash In Hand"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:316
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:318
msgid "Cash or Bank Account is mandatory for making payment entry"
msgstr ""
@@ -9721,6 +9734,48 @@ msgstr ""
msgid "Catch All"
msgstr ""
+#. Label of the categorize_by (Select) field in DocType 'Process Statement Of
+#. Accounts'
+#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json
+msgid "Categorize By"
+msgstr ""
+
+#: erpnext/accounts/report/general_ledger/general_ledger.js:116
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:80
+msgid "Categorize by"
+msgstr ""
+
+#: erpnext/accounts/report/general_ledger/general_ledger.js:129
+msgid "Categorize by Account"
+msgstr ""
+
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:84
+msgid "Categorize by Item"
+msgstr ""
+
+#: erpnext/accounts/report/general_ledger/general_ledger.js:133
+msgid "Categorize by Party"
+msgstr ""
+
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:83
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:86
+msgid "Categorize by Supplier"
+msgstr ""
+
+#. Option for the 'Categorize By' (Select) field in DocType 'Process Statement
+#. Of Accounts'
+#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json
+#: erpnext/accounts/report/general_ledger/general_ledger.js:121
+msgid "Categorize by Voucher"
+msgstr ""
+
+#. Option for the 'Categorize By' (Select) field in DocType 'Process Statement
+#. Of Accounts'
+#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json
+#: erpnext/accounts/report/general_ledger/general_ledger.js:125
+msgid "Categorize by Voucher (Consolidated)"
+msgstr ""
+
#. Label of the category (Link) field in DocType 'UOM Conversion Factor'
#: erpnext/setup/doctype/uom_conversion_factor/uom_conversion_factor.json
msgid "Category"
@@ -9744,7 +9799,7 @@ msgstr ""
msgid "Category-wise Asset Value"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:314
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:316
#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.py:98
msgid "Caution"
msgstr ""
@@ -9872,10 +9927,14 @@ msgstr ""
msgid "Changes in {0}"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:280
+#: erpnext/stock/doctype/item/item.js:309
msgid "Changing Customer Group for the selected Customer is not allowed."
msgstr ""
+#: erpnext/stock/doctype/item/item.js:16
+msgid "Changing the valuation method to Moving Average will affect new transactions. If backdated entries are added, earlier FIFO-based entries will be reposted, which may change closing balances."
+msgstr ""
+
#. Option for the 'Lead Type' (Select) field in DocType 'Lead'
#: erpnext/crm/doctype/lead/lead.json
#: erpnext/setup/setup_wizard/data/sales_partner_type.txt:1
@@ -10066,7 +10125,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:2297
+#: erpnext/public/js/controllers/transaction.js:2299
msgid "Cheque/Reference Date"
msgstr ""
@@ -10114,7 +10173,7 @@ msgstr ""
#. Label of the child_row_reference (Data) field in DocType 'Quality
#. Inspection'
-#: erpnext/public/js/controllers/transaction.js:2392
+#: erpnext/public/js/controllers/transaction.js:2394
#: erpnext/stock/doctype/quality_inspection/quality_inspection.json
msgid "Child Row Reference"
msgstr ""
@@ -10337,7 +10396,7 @@ msgstr ""
msgid "Closed Documents"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1842
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1847
msgid "Closed Work Order can not be stopped or Re-opened"
msgstr ""
@@ -11168,13 +11227,7 @@ msgstr ""
msgid "Company Not Linked"
msgstr ""
-#. Label of the company_shipping_address_section (Section Break) field in
-#. DocType 'Purchase Invoice'
-#. Label of the section_break_98 (Section Break) field in DocType 'Purchase
-#. Receipt'
#. Label of the shipping_address (Link) field in DocType 'Subcontracting Order'
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
#: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json
msgid "Company Shipping Address"
msgstr ""
@@ -11193,7 +11246,7 @@ msgid "Company currencies of both the companies should match for Inter Company T
msgstr ""
#: erpnext/stock/doctype/material_request/material_request.js:341
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:676
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:677
msgid "Company field is required"
msgstr ""
@@ -11433,6 +11486,7 @@ msgid "Completed Quantity"
msgstr ""
#: erpnext/projects/report/project_summary/project_summary.py:136
+#: erpnext/public/js/templates/crm_activities.html:64
msgid "Completed Tasks"
msgstr ""
@@ -12040,7 +12094,7 @@ msgid "Content Type"
msgstr ""
#: erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.js:162
-#: erpnext/public/js/controllers/transaction.js:2310
+#: erpnext/public/js/controllers/transaction.js:2312
#: erpnext/selling/doctype/quotation/quotation.js:348
msgid "Continue"
msgstr ""
@@ -12199,7 +12253,7 @@ msgstr ""
msgid "Conversion Rate"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:391
+#: erpnext/stock/doctype/item/item.py:393
msgid "Conversion factor for default Unit of Measure must be 1 in row {0}"
msgstr ""
@@ -12520,8 +12574,8 @@ msgstr ""
msgid "Cost Center is a part of Cost Center Allocation, hence cannot be converted to a group"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1409
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:831
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1411
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:833
msgid "Cost Center is required in row {0} in Taxes table for type {1}"
msgstr ""
@@ -12846,7 +12900,7 @@ msgstr ""
#: erpnext/public/js/communication.js:19 erpnext/public/js/communication.js:31
#: erpnext/public/js/communication.js:41
#: erpnext/public/js/controllers/transaction.js:336
-#: erpnext/public/js/controllers/transaction.js:2433
+#: erpnext/public/js/controllers/transaction.js:2435
#: erpnext/selling/doctype/customer/customer.js:181
#: erpnext/selling/doctype/quotation/quotation.js:116
#: erpnext/selling/doctype/quotation/quotation.js:125
@@ -12876,11 +12930,11 @@ msgstr ""
#: erpnext/stock/doctype/delivery_note/delivery_note.js:251
#: erpnext/stock/doctype/delivery_note/delivery_note.js:256
#: erpnext/stock/doctype/delivery_note/delivery_note.js:298
-#: erpnext/stock/doctype/item/item.js:138
-#: erpnext/stock/doctype/item/item.js:145
-#: erpnext/stock/doctype/item/item.js:153
-#: erpnext/stock/doctype/item/item.js:520
-#: erpnext/stock/doctype/item/item.js:777
+#: erpnext/stock/doctype/item/item.js:167
+#: erpnext/stock/doctype/item/item.js:174
+#: erpnext/stock/doctype/item/item.js:182
+#: erpnext/stock/doctype/item/item.js:549
+#: erpnext/stock/doctype/item/item.js:806
#: erpnext/stock/doctype/material_request/material_request.js:125
#: erpnext/stock/doctype/material_request/material_request.js:134
#: erpnext/stock/doctype/material_request/material_request.js:140
@@ -12907,7 +12961,7 @@ msgstr ""
#: erpnext/stock/doctype/stock_entry/stock_entry.js:170
#: erpnext/stock/doctype/stock_entry/stock_entry.js:172
#: erpnext/stock/doctype/stock_entry/stock_entry.js:245
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:1262
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:1279
#: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:227
#: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:260
#: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:273
@@ -13117,12 +13171,12 @@ msgstr ""
msgid "Create Users"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:773
+#: erpnext/stock/doctype/item/item.js:802
msgid "Create Variant"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:585
-#: erpnext/stock/doctype/item/item.js:629
+#: erpnext/stock/doctype/item/item.js:614
+#: erpnext/stock/doctype/item/item.js:658
msgid "Create Variants"
msgstr ""
@@ -13136,8 +13190,8 @@ msgstr ""
msgid "Create a new composite asset"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:612
-#: erpnext/stock/doctype/item/item.js:766
+#: erpnext/stock/doctype/item/item.js:641
+#: erpnext/stock/doctype/item/item.js:795
msgid "Create a variant with the template image."
msgstr ""
@@ -13399,7 +13453,7 @@ msgstr ""
#: erpnext/accounts/report/accounts_receivable/accounts_receivable.html:147
#: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1092
#: erpnext/controllers/sales_and_purchase_return.py:373
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:288
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:286
#: erpnext/stock/doctype/delivery_note/delivery_note.js:89
#: erpnext/stock/doctype/stock_entry/stock_entry.json
msgid "Credit Note"
@@ -13430,8 +13484,8 @@ msgstr ""
#. Label of the credit_to (Link) field in DocType 'Purchase Invoice'
#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:366
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:374
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:368
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:376
#: erpnext/controllers/accounts_controller.py:2183
msgid "Credit To"
msgstr ""
@@ -13640,7 +13694,7 @@ msgstr ""
#: erpnext/buying/doctype/purchase_order/purchase_order.json
#: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
#: erpnext/buying/report/item_wise_purchase_history/item_wise_purchase_history.py:139
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:214
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:215
#: erpnext/crm/doctype/opportunity/opportunity.json
#: erpnext/crm/doctype/prospect_opportunity/prospect_opportunity.json
#: erpnext/manufacturing/doctype/bom/bom.json
@@ -15009,7 +15063,7 @@ msgstr ""
#: erpnext/accounts/report/accounts_receivable/accounts_receivable.html:147
#: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1095
#: erpnext/controllers/sales_and_purchase_return.py:377
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:289
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:287
#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:61
msgid "Debit Note"
msgstr ""
@@ -15069,11 +15123,11 @@ msgstr ""
msgid "Debit-Credit mismatch"
msgstr ""
-#: erpnext/accounts/party.py:590
+#: erpnext/accounts/party.py:609
msgid "Debtor/Creditor"
msgstr ""
-#: erpnext/accounts/party.py:593
+#: erpnext/accounts/party.py:612
msgid "Debtor/Creditor Advance"
msgstr ""
@@ -15193,11 +15247,11 @@ msgstr ""
msgid "Default BOM"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:416
+#: erpnext/stock/doctype/item/item.py:418
msgid "Default BOM ({0}) must be active for this item or its template"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1657
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1662
msgid "Default BOM for {0} not found"
msgstr ""
@@ -15205,7 +15259,7 @@ msgstr ""
msgid "Default BOM not found for FG Item {0}"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1654
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1659
msgid "Default BOM not found for Item {0} and Project {1}"
msgstr ""
@@ -15536,15 +15590,15 @@ msgstr ""
msgid "Default Unit of Measure"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:1265
+#: erpnext/stock/doctype/item/item.py:1272
msgid "Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You need to either cancel the linked documents or create a new Item."
msgstr ""
-#: erpnext/stock/doctype/item/item.py:1248
+#: erpnext/stock/doctype/item/item.py:1255
msgid "Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You will need to create a new Item to use a different Default UOM."
msgstr ""
-#: erpnext/stock/doctype/item/item.py:906
+#: erpnext/stock/doctype/item/item.py:908
msgid "Default Unit of Measure for Variant '{0}' must be same as in Template '{1}'"
msgstr ""
@@ -16542,7 +16596,7 @@ msgstr ""
#: erpnext/projects/doctype/task_type/task_type.json
#: erpnext/projects/doctype/timesheet_detail/timesheet_detail.json
#: erpnext/public/js/bank_reconciliation_tool/data_table_manager.js:55
-#: erpnext/public/js/controllers/transaction.js:2374
+#: erpnext/public/js/controllers/transaction.js:2376
#: erpnext/selling/doctype/installation_note_item/installation_note_item.json
#: erpnext/selling/doctype/product_bundle/product_bundle.json
#: erpnext/selling/doctype/product_bundle_item/product_bundle_item.json
@@ -16723,11 +16777,11 @@ msgstr ""
msgid "Difference Account"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:530
-msgid "Difference Account must be a Asset/Liability type account, since this Stock Entry is an Opening Entry"
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:534
+msgid "Difference Account must be a Asset/Liability type account (Temporary Opening), since this Stock Entry is an Opening Entry"
msgstr ""
-#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:906
+#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:912
msgid "Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry"
msgstr ""
@@ -17208,7 +17262,7 @@ msgstr ""
msgid "Discount must be less than 100"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:3449
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:3447
msgid "Discount of {} applied as per Payment Term"
msgstr ""
@@ -17284,15 +17338,29 @@ msgstr ""
msgid "Dispatch"
msgstr ""
+#. Label of the dispatch_address_display (Text Editor) field in DocType
+#. 'Purchase Invoice'
#. Label of the dispatch_address (Text Editor) field in DocType 'Sales Invoice'
+#. Label of the dispatch_address (Link) field in DocType 'Purchase Order'
#. Label of the dispatch_address (Text Editor) field in DocType 'Sales Order'
#. Label of the dispatch_address (Text Editor) field in DocType 'Delivery Note'
+#. Label of the dispatch_address_display (Text Editor) 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 "Dispatch Address"
msgstr ""
+#. Label of the dispatch_address_display (Text Editor) field in DocType
+#. 'Purchase Order'
+#: erpnext/buying/doctype/purchase_order/purchase_order.json
+msgid "Dispatch Address Details"
+msgstr ""
+
#. Label of the dispatch_address_name (Link) field in DocType 'Sales Invoice'
#. Label of the dispatch_address_name (Link) field in DocType 'Sales Order'
#. Label of the dispatch_address_name (Link) field in DocType 'Delivery Note'
@@ -17302,6 +17370,11 @@ msgstr ""
msgid "Dispatch Address Name"
msgstr ""
+#. Label of the dispatch_address (Link) field in DocType 'Purchase Receipt'
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
+msgid "Dispatch Address Template"
+msgstr ""
+
#. Label of the section_break_9 (Section Break) field in DocType 'Delivery
#. Stop'
#: erpnext/stock/doctype/delivery_stop/delivery_stop.json
@@ -17312,7 +17385,7 @@ msgstr ""
#: erpnext/patches/v11_0/add_default_dispatch_notification_template.py:20
#: erpnext/patches/v11_0/add_default_dispatch_notification_template.py:28
#: erpnext/setup/setup_wizard/operations/defaults_setup.py:57
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:316
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:314
msgid "Dispatch Notification"
msgstr ""
@@ -17508,6 +17581,10 @@ msgstr ""
msgid "Do you still want to enable negative inventory?"
msgstr ""
+#: erpnext/stock/doctype/item/item.js:24
+msgid "Do you want to change valuation method?"
+msgstr ""
+
#: erpnext/stock/doctype/delivery_trip/delivery_trip.js:156
msgid "Do you want to notify all the customers by email?"
msgstr ""
@@ -17651,7 +17728,8 @@ msgstr ""
#. Label of the done (Check) field in DocType 'Transaction Deletion Record
#. Details'
#: erpnext/accounts/doctype/transaction_deletion_record_details/transaction_deletion_record_details.json
-#: erpnext/public/js/utils/crm_activities.js:212
+#: erpnext/public/js/templates/crm_activities.html:77
+#: erpnext/public/js/utils/crm_activities.js:214
msgid "Done"
msgstr ""
@@ -17925,11 +18003,11 @@ msgstr ""
msgid "Due Date Based On"
msgstr ""
-#: erpnext/accounts/party.py:677
+#: erpnext/accounts/party.py:696
msgid "Due Date cannot be after {0}"
msgstr ""
-#: erpnext/accounts/party.py:652
+#: erpnext/accounts/party.py:671
msgid "Due Date cannot be before {0}"
msgstr ""
@@ -17989,7 +18067,7 @@ msgstr ""
msgid "Dunning Type"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:181
+#: erpnext/stock/doctype/item/item.js:210
#: erpnext/stock/doctype/putaway_rule/putaway_rule.py:55
msgid "Duplicate"
msgstr ""
@@ -18074,7 +18152,7 @@ msgstr ""
#: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:94
#: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:133
-#: erpnext/setup/setup_wizard/operations/taxes_setup.py:257
+#: erpnext/setup/setup_wizard/operations/taxes_setup.py:256
msgid "Duties and Taxes"
msgstr ""
@@ -18175,7 +18253,7 @@ msgstr ""
msgid "Edit Not Allowed"
msgstr ""
-#: erpnext/public/js/utils/crm_activities.js:184
+#: erpnext/public/js/utils/crm_activities.js:186
msgid "Edit Note"
msgstr ""
@@ -18631,7 +18709,7 @@ msgstr ""
msgid "Ems(Pica)"
msgstr ""
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1294
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1295
msgid "Enable Allow Partial Reservation in the Stock Settings to reserve partial stock."
msgstr ""
@@ -18647,7 +18725,7 @@ msgstr ""
msgid "Enable Auto Email"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:1057
+#: erpnext/stock/doctype/item/item.py:1064
msgid "Enable Auto Re-Order"
msgstr ""
@@ -18974,7 +19052,7 @@ msgstr ""
msgid "Enter amount to be redeemed."
msgstr ""
-#: erpnext/stock/doctype/item/item.js:935
+#: erpnext/stock/doctype/item/item.js:964
msgid "Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field."
msgstr ""
@@ -19021,7 +19099,7 @@ msgstr ""
msgid "Enter the name of the bank or lending institution before submitting."
msgstr ""
-#: erpnext/stock/doctype/item/item.js:961
+#: erpnext/stock/doctype/item/item.js:990
msgid "Enter the opening stock units."
msgstr ""
@@ -19074,7 +19152,7 @@ msgstr ""
#: 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:247
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:291
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:289
msgid "Equity"
msgstr ""
@@ -19098,7 +19176,7 @@ msgstr ""
#: erpnext/accounts/doctype/ledger_merge/ledger_merge.json
#: erpnext/accounts/doctype/payment_request/payment_request.py:443
#: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.json
-#: erpnext/manufacturing/doctype/job_card/job_card.py:869
+#: erpnext/manufacturing/doctype/job_card/job_card.py:875
#: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json
#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:294
msgid "Error"
@@ -19224,7 +19302,7 @@ msgstr ""
msgid "Example URL"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:988
+#: erpnext/stock/doctype/item/item.py:995
msgid "Example of a linked document: {0}"
msgstr ""
@@ -19254,7 +19332,7 @@ msgstr ""
msgid "Excess Materials Consumed"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:963
+#: erpnext/manufacturing/doctype/job_card/job_card.py:969
msgid "Excess Transfer"
msgstr ""
@@ -19386,7 +19464,7 @@ msgstr ""
msgid "Excise Entry"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:1255
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:1272
msgid "Excise Invoice"
msgstr ""
@@ -19567,7 +19645,7 @@ msgstr ""
#: erpnext/accounts/doctype/cashier_closing/cashier_closing.json
#: erpnext/accounts/doctype/ledger_merge/ledger_merge.json
#: erpnext/accounts/doctype/process_deferred_accounting/process_deferred_accounting.json
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:593
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:595
#: 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:180
@@ -19632,13 +19710,13 @@ msgstr ""
msgid "Expense Head"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:487
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:511
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:531
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:489
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:513
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:533
msgid "Expense Head Changed"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:589
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:591
msgid "Expense account is mandatory for item {0}"
msgstr ""
@@ -19758,7 +19836,7 @@ msgstr ""
msgid "Export Import Log"
msgstr ""
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:286
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:284
msgid "External"
msgstr ""
@@ -20016,7 +20094,7 @@ msgid "Fetch Value From"
msgstr ""
#: erpnext/stock/doctype/material_request/material_request.js:333
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:653
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:654
msgid "Fetch exploded BOM (including sub-assemblies)"
msgstr ""
@@ -20035,7 +20113,7 @@ msgid "Fetching Error"
msgstr ""
#: erpnext/accounts/doctype/dunning/dunning.js:135
-#: erpnext/public/js/controllers/transaction.js:1247
+#: erpnext/public/js/controllers/transaction.js:1251
msgid "Fetching exchange rates ..."
msgstr ""
@@ -20423,7 +20501,7 @@ msgstr ""
msgid "Finished Goods based Operating Cost"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1328
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1340
msgid "Finished Item {0} does not match with Work Order {1}"
msgstr ""
@@ -20573,7 +20651,7 @@ msgstr ""
msgid "Fixed Asset Defaults"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:299
+#: erpnext/stock/doctype/item/item.py:301
msgid "Fixed Asset Item must be a non-stock item."
msgstr ""
@@ -20708,7 +20786,7 @@ msgstr ""
msgid "For Item"
msgstr ""
-#: erpnext/controllers/stock_controller.py:1196
+#: erpnext/controllers/stock_controller.py:1207
msgid "For Item {0} cannot be received more than {1} qty against the {2} {3}"
msgstr ""
@@ -20739,7 +20817,7 @@ msgstr ""
msgid "For Production"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:617
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:629
msgid "For Quantity (Manufactured Qty) is mandatory"
msgstr ""
@@ -20799,15 +20877,19 @@ msgstr ""
msgid "For individual supplier"
msgstr ""
+#: erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py:283
+msgid "For item {0}, only {1} asset have been created or linked to {2}. Please create or link {3} more asset with the respective document."
+msgstr ""
+
#: erpnext/controllers/status_updater.py:272
msgid "For item {0}, rate must be a positive number. To Allow negative rates, enable {1} in {2}"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1987
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1992
msgid "For operation {0}: Quantity ({1}) can not be greater than pending quantity({2})"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1366
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1378
msgid "For quantity {0} should not be greater than allowed quantity {1}"
msgstr ""
@@ -20834,11 +20916,11 @@ msgstr ""
msgid "For the convenience of customers, these codes can be used in print formats like Invoices and Delivery Notes"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:757
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:769
msgid "For the item {0}, the quantity should be {1} according to the BOM {2}."
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:1084
+#: erpnext/public/js/controllers/transaction.js:1088
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 ""
@@ -21876,7 +21958,7 @@ msgstr ""
#: erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js:119
#: erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js:142
#: erpnext/manufacturing/doctype/production_plan/production_plan.json
-#: erpnext/public/js/controllers/buying.js:289
+#: erpnext/public/js/controllers/buying.js:295
#: erpnext/selling/doctype/quotation/quotation.js:158
#: erpnext/selling/doctype/sales_order/sales_order.js:163
#: erpnext/selling/doctype/sales_order/sales_order.js:779
@@ -21888,8 +21970,8 @@ msgstr ""
#: erpnext/stock/doctype/stock_entry/stock_entry.js:317
#: erpnext/stock/doctype/stock_entry/stock_entry.js:364
#: erpnext/stock/doctype/stock_entry/stock_entry.js:393
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:468
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:616
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:469
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:617
#: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:121
msgid "Get Items From"
msgstr ""
@@ -21911,8 +21993,8 @@ msgid "Get Items for Purchase Only"
msgstr ""
#: erpnext/stock/doctype/material_request/material_request.js:310
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:656
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:669
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:657
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:670
msgid "Get Items from BOM"
msgstr ""
@@ -21926,7 +22008,7 @@ msgstr ""
msgid "Get Items from Open Material Requests"
msgstr ""
-#: erpnext/public/js/controllers/buying.js:531
+#: erpnext/public/js/controllers/buying.js:543
msgid "Get Items from Product Bundle"
msgstr ""
@@ -22100,7 +22182,7 @@ msgstr ""
msgid "Goods Transferred"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1777
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1789
msgid "Goods are already received against the outward entry {0}"
msgstr ""
@@ -22388,9 +22470,6 @@ msgstr ""
msgid "Group"
msgstr ""
-#. Label of the group_by (Select) field in DocType 'Process Statement Of
-#. Accounts'
-#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json
#: erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.js:30
#: erpnext/accounts/report/gross_profit/gross_profit.js:36
#: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:52
@@ -22425,25 +22504,14 @@ msgstr ""
msgid "Group Warehouses cannot be used in transactions. Please change the value of {0}"
msgstr ""
-#: erpnext/accounts/report/general_ledger/general_ledger.js:116
#: erpnext/accounts/report/pos_register/pos_register.js:56
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:80
msgid "Group by"
msgstr ""
-#: erpnext/accounts/report/general_ledger/general_ledger.js:129
-msgid "Group by Account"
-msgstr ""
-
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:84
-msgid "Group by Item"
-msgstr ""
-
#: erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:61
msgid "Group by Material Request"
msgstr ""
-#: erpnext/accounts/report/general_ledger/general_ledger.js:133
#: erpnext/accounts/report/payment_ledger/payment_ledger.js:83
msgid "Group by Party"
msgstr ""
@@ -22456,27 +22524,11 @@ msgstr ""
msgid "Group by Sales Order"
msgstr ""
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:83
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:86
-msgid "Group by Supplier"
-msgstr ""
-
-#. Option for the 'Group By' (Select) field in DocType 'Process Statement Of
-#. Accounts'
-#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json
#: erpnext/accounts/report/accounts_payable/accounts_payable.js:141
#: erpnext/accounts/report/accounts_receivable/accounts_receivable.js:173
-#: erpnext/accounts/report/general_ledger/general_ledger.js:121
msgid "Group by Voucher"
msgstr ""
-#. Option for the 'Group By' (Select) field in DocType 'Process Statement Of
-#. Accounts'
-#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json
-#: erpnext/accounts/report/general_ledger/general_ledger.js:125
-msgid "Group by Voucher (Consolidated)"
-msgstr ""
-
#: erpnext/stock/utils.py:436
msgid "Group node warehouse is not allowed to select for transactions"
msgstr ""
@@ -23063,7 +23115,7 @@ msgid "Identification of the package for the delivery (for print)"
msgstr ""
#: erpnext/setup/setup_wizard/data/sales_stage.txt:5
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:417
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:415
msgid "Identifying Decision Makers"
msgstr ""
@@ -23375,7 +23427,7 @@ msgstr ""
msgid "If yes, then this warehouse will be used to store rejected materials"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:947
+#: erpnext/stock/doctype/item/item.js:976
msgid "If you are maintaining stock of this Item in your Inventory, ERPNext will make a stock ledger entry for each transaction of this item."
msgstr ""
@@ -23982,7 +24034,7 @@ msgstr ""
msgid "In the case of multi-tier program, Customers will be auto assigned to the concerned tier as per their spent"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:980
+#: erpnext/stock/doctype/item/item.js:1009
msgid "In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc."
msgstr ""
@@ -24289,11 +24341,11 @@ msgstr ""
msgid "Incorrect Batch Consumed"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:512
+#: erpnext/stock/doctype/item/item.py:514
msgid "Incorrect Check in (group) Warehouse for Reorder"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:762
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:774
msgid "Incorrect Component Quantity"
msgstr ""
@@ -24499,13 +24551,13 @@ msgstr ""
msgid "Inspected By"
msgstr ""
-#: erpnext/controllers/stock_controller.py:1088
+#: erpnext/controllers/stock_controller.py:1099
msgid "Inspection Rejected"
msgstr ""
#. Label of the inspection_required (Check) field in DocType 'Stock Entry'
-#: erpnext/controllers/stock_controller.py:1058
-#: erpnext/controllers/stock_controller.py:1060
+#: erpnext/controllers/stock_controller.py:1069
+#: erpnext/controllers/stock_controller.py:1071
#: erpnext/stock/doctype/stock_entry/stock_entry.json
msgid "Inspection Required"
msgstr ""
@@ -24522,7 +24574,7 @@ msgstr ""
msgid "Inspection Required before Purchase"
msgstr ""
-#: erpnext/controllers/stock_controller.py:1073
+#: erpnext/controllers/stock_controller.py:1084
msgid "Inspection Submission"
msgstr ""
@@ -24609,7 +24661,7 @@ msgstr ""
#: erpnext/stock/doctype/pick_list/pick_list.py:111
#: erpnext/stock/doctype/pick_list/pick_list.py:127
#: erpnext/stock/doctype/pick_list/pick_list.py:975
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:737
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:749
#: erpnext/stock/serial_batch_bundle.py:986 erpnext/stock/stock_ledger.py:1553
#: erpnext/stock/stock_ledger.py:2026
msgid "Insufficient Stock"
@@ -24729,7 +24781,7 @@ msgstr ""
msgid "Interest"
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:3087
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:3086
msgid "Interest and/or dunning fee"
msgstr ""
@@ -24739,7 +24791,7 @@ msgstr ""
msgid "Interested"
msgstr ""
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:285
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:283
msgid "Internal"
msgstr ""
@@ -24801,7 +24853,7 @@ msgstr ""
msgid "Internal Work History"
msgstr ""
-#: erpnext/controllers/stock_controller.py:1155
+#: erpnext/controllers/stock_controller.py:1166
msgid "Internal transfers can only be done in company's default currency"
msgstr ""
@@ -24825,8 +24877,8 @@ msgstr ""
msgid "Invalid"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:367
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:375
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:369
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:377
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:942
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:952
#: erpnext/assets/doctype/asset_category/asset_category.py:70
@@ -24837,7 +24889,7 @@ msgid "Invalid Account"
msgstr ""
#: erpnext/accounts/doctype/payment_entry/payment_entry.py:400
-#: erpnext/accounts/doctype/payment_request/payment_request.py:860
+#: erpnext/accounts/doctype/payment_request/payment_request.py:865
msgid "Invalid Allocated Amount"
msgstr ""
@@ -24857,7 +24909,7 @@ msgstr ""
msgid "Invalid Barcode. There is no Item attached to this barcode."
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2629
+#: erpnext/public/js/controllers/transaction.js:2631
msgid "Invalid Blanket Order for the selected Customer and Item"
msgstr ""
@@ -24895,8 +24947,8 @@ msgstr ""
msgid "Invalid Document Type"
msgstr ""
-#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:342
-#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:347
+#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:343
+#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:348
msgid "Invalid Formula"
msgstr ""
@@ -24913,7 +24965,7 @@ msgstr ""
msgid "Invalid Item"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:1403
+#: erpnext/stock/doctype/item/item.py:1410
msgid "Invalid Item Defaults"
msgstr ""
@@ -24935,7 +24987,7 @@ msgstr ""
msgid "Invalid Parent Account"
msgstr ""
-#: erpnext/public/js/controllers/buying.js:360
+#: erpnext/public/js/controllers/buying.js:372
msgid "Invalid Part Number"
msgstr ""
@@ -24985,7 +25037,7 @@ msgstr ""
msgid "Invalid Selling Price"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1405
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1417
msgid "Invalid Serial and Batch Bundle"
msgstr ""
@@ -25014,7 +25066,7 @@ msgstr ""
msgid "Invalid lost reason {0}, please create a new lost reason"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:406
+#: erpnext/stock/doctype/item/item.py:408
msgid "Invalid naming series (. missing) for {0}"
msgstr ""
@@ -25891,11 +25943,11 @@ msgstr ""
msgid "Issuing cannot be done to a location. Please enter employee to issue the Asset {0} to"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:563
+#: erpnext/stock/doctype/item/item.py:565
msgid "It can take upto few hours for accurate stock values to be visible after merging items."
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2073
+#: erpnext/public/js/controllers/transaction.js:2075
msgid "It is needed to fetch Item Details."
msgstr ""
@@ -25943,7 +25995,7 @@ msgstr ""
#: erpnext/buying/report/procurement_tracker/procurement_tracker.py:60
#: erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:49
#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:33
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:202
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:196
#: erpnext/buying/workspace/buying/buying.json
#: erpnext/controllers/taxes_and_totals.py:1125
#: erpnext/manufacturing/doctype/blanket_order/blanket_order.json
@@ -26223,7 +26275,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:213
-#: erpnext/public/js/controllers/transaction.js:2348
+#: erpnext/public/js/controllers/transaction.js:2350
#: erpnext/public/js/stock_reservation.js:99
#: erpnext/public/js/stock_reservation.js:292 erpnext/public/js/utils.js:499
#: erpnext/public/js/utils.js:655
@@ -26298,7 +26350,7 @@ msgstr ""
msgid "Item Code cannot be changed for Serial No."
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:442
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:444
msgid "Item Code required at Row No {0}"
msgstr ""
@@ -26662,7 +26714,7 @@ msgstr ""
#: erpnext/manufacturing/report/production_planning_report/production_planning_report.py:359
#: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:92
#: erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py:134
-#: erpnext/public/js/controllers/transaction.js:2354
+#: erpnext/public/js/controllers/transaction.js:2356
#: erpnext/public/js/utils.js:745
#: erpnext/selling/doctype/quotation_item/quotation_item.json
#: erpnext/selling/doctype/sales_order_item/sales_order_item.json
@@ -26919,17 +26971,17 @@ msgstr ""
#. Name of a DocType
#. Label of a Link in the Stock Workspace
-#: erpnext/stock/doctype/item/item.js:117
+#: erpnext/stock/doctype/item/item.js:146
#: erpnext/stock/doctype/item_variant_settings/item_variant_settings.json
#: erpnext/stock/workspace/stock/stock.json
msgid "Item Variant Settings"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:796
+#: erpnext/stock/doctype/item/item.js:825
msgid "Item Variant {0} already exists with same attributes"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:779
+#: erpnext/stock/doctype/item/item.py:781
msgid "Item Variants updated"
msgstr ""
@@ -26991,11 +27043,11 @@ msgstr ""
msgid "Item and Warranty Details"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:2661
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:2673
msgid "Item for row {0} does not match Material Request"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:793
+#: erpnext/stock/doctype/item/item.py:795
msgid "Item has variants."
msgstr ""
@@ -27025,7 +27077,7 @@ msgstr ""
msgid "Item qty can not be updated as raw materials are already processed."
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:853
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:865
msgid "Item rate has been updated to zero as Allow Zero Valuation Rate is checked for item {0}"
msgstr ""
@@ -27047,7 +27099,7 @@ msgstr ""
msgid "Item valuation reposting in progress. Report might show incorrect item valuation."
msgstr ""
-#: erpnext/stock/doctype/item/item.py:950
+#: erpnext/stock/doctype/item/item.py:952
msgid "Item variant {0} exists with same attributes"
msgstr ""
@@ -27060,7 +27112,7 @@ msgid "Item {0} cannot be ordered more than {1} against Blanket Order {2}."
msgstr ""
#: erpnext/assets/doctype/asset/asset.py:268
-#: erpnext/stock/doctype/item/item.py:628
+#: erpnext/stock/doctype/item/item.py:630
#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:167
msgid "Item {0} does not exist"
msgstr ""
@@ -27089,7 +27141,7 @@ msgstr ""
msgid "Item {0} has no Serial No. Only serialized items can have delivery based on Serial No"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:1119
+#: erpnext/stock/doctype/item/item.py:1126
msgid "Item {0} has reached its end of life on {1}"
msgstr ""
@@ -27101,11 +27153,11 @@ msgstr ""
msgid "Item {0} is already reserved/delivered against Sales Order {1}."
msgstr ""
-#: erpnext/stock/doctype/item/item.py:1139
+#: erpnext/stock/doctype/item/item.py:1146
msgid "Item {0} is cancelled"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:1123
+#: erpnext/stock/doctype/item/item.py:1130
msgid "Item {0} is disabled"
msgstr ""
@@ -27113,7 +27165,7 @@ msgstr ""
msgid "Item {0} is not a serialized Item"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:1131
+#: erpnext/stock/doctype/item/item.py:1138
msgid "Item {0} is not a stock Item"
msgstr ""
@@ -27121,7 +27173,7 @@ msgstr ""
msgid "Item {0} is not a subcontracted item"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1689
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1701
msgid "Item {0} is not active or end of life has been reached"
msgstr ""
@@ -27141,7 +27193,7 @@ msgstr ""
msgid "Item {0} must be a non-stock item"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1145
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1157
msgid "Item {0} not found in 'Raw Materials Supplied' table in {1} {2}"
msgstr ""
@@ -27149,7 +27201,7 @@ msgstr ""
msgid "Item {0} not found."
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:341
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:343
msgid "Item {0}: Ordered qty {1} cannot be less than minimum order qty {2} (defined in Item)."
msgstr ""
@@ -27157,7 +27209,7 @@ msgstr ""
msgid "Item {0}: {1} qty produced. "
msgstr ""
-#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:1337
+#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:1343
msgid "Item {} does not exist."
msgstr ""
@@ -27305,7 +27357,7 @@ msgstr ""
msgid "Items for Raw Material Request"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:849
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:861
msgid "Items rate has been updated to zero as Allow Zero Valuation Rate is checked for the following items: {0}"
msgstr ""
@@ -27377,7 +27429,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:862
+#: erpnext/manufacturing/doctype/job_card/job_card.py:868
#: erpnext/manufacturing/doctype/operation/operation.json
#: erpnext/manufacturing/doctype/work_order/work_order.js:354
#: erpnext/manufacturing/doctype/work_order/work_order.json
@@ -27438,7 +27490,7 @@ msgstr ""
msgid "Job Card and Capacity Planning"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1275
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1281
msgid "Job Card {0} has been completed"
msgstr ""
@@ -27507,7 +27559,7 @@ msgstr ""
msgid "Job Worker Warehouse"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:2038
+#: erpnext/manufacturing/doctype/work_order/work_order.py:2043
msgid "Job card {0} created"
msgstr ""
@@ -27593,7 +27645,7 @@ msgstr ""
msgid "Journal Entry Type"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:531
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:540
msgid "Journal Entry for Asset scrapping cannot be cancelled. Please restore the Asset."
msgstr ""
@@ -27602,11 +27654,11 @@ msgstr ""
msgid "Journal Entry for Scrap"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:268
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:277
msgid "Journal Entry type should be set as Depreciation Entry for asset depreciation"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:681
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:690
msgid "Journal Entry {0} does not have account {1} or already matched against other voucher"
msgstr ""
@@ -27736,11 +27788,11 @@ msgstr ""
msgid "Kilowatt-Hour"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:864
+#: erpnext/manufacturing/doctype/job_card/job_card.py:870
msgid "Kindly cancel the Manufacturing Entries first against the work order {0}."
msgstr ""
-#: erpnext/public/js/utils/party.js:264
+#: erpnext/public/js/utils/party.js:268
msgid "Kindly select the company first"
msgstr ""
@@ -28007,7 +28059,7 @@ msgstr ""
msgid "Lead Time"
msgstr ""
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:264
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:258
msgid "Lead Time (Days)"
msgstr ""
@@ -28403,7 +28455,7 @@ msgstr ""
msgid "Linked Location"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:992
+#: erpnext/stock/doctype/item/item.py:999
msgid "Linked with submitted documents"
msgstr ""
@@ -28633,8 +28685,8 @@ msgstr ""
msgid "Lower Deduction Certificate"
msgstr ""
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:294
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:402
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:292
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:400
msgid "Lower Income"
msgstr ""
@@ -28810,7 +28862,7 @@ msgstr ""
#: erpnext/manufacturing/doctype/workstation/workstation.json
#: erpnext/selling/doctype/quotation/quotation.json
#: erpnext/selling/doctype/sales_order/sales_order.json
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:284
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:282
#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json
#: erpnext/support/workspace/support/support.json
msgid "Maintenance"
@@ -29084,11 +29136,11 @@ msgstr ""
msgid "Make project from a template."
msgstr ""
-#: erpnext/stock/doctype/item/item.js:591
+#: erpnext/stock/doctype/item/item.js:620
msgid "Make {0} Variant"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:593
+#: erpnext/stock/doctype/item/item.js:622
msgid "Make {0} Variants"
msgstr ""
@@ -29143,8 +29195,8 @@ msgstr ""
#: erpnext/manufacturing/doctype/bom/bom.py:261
#: erpnext/manufacturing/doctype/bom_update_log/bom_update_log.py:71
#: erpnext/public/js/controllers/accounts.js:249
-#: erpnext/public/js/controllers/transaction.js:2751
-#: erpnext/public/js/utils/party.js:317
+#: erpnext/public/js/controllers/transaction.js:2753
+#: erpnext/public/js/utils/party.js:321
#: erpnext/stock/doctype/delivery_note/delivery_note.js:164
#: erpnext/stock/doctype/inventory_dimension/inventory_dimension.json
#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:138
@@ -29183,11 +29235,11 @@ msgstr ""
msgid "Mandatory Missing"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:625
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:627
msgid "Mandatory Purchase Order"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:646
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:648
msgid "Mandatory Purchase Receipt"
msgstr ""
@@ -29261,8 +29313,8 @@ msgstr ""
#: erpnext/stock/doctype/material_request_item/material_request_item.json
#: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json
#: erpnext/stock/doctype/stock_entry/stock_entry.json
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:930
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:946
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:942
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:958
#: erpnext/stock/doctype/stock_entry_type/stock_entry_type.json
#: erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json
#: erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json
@@ -29340,7 +29392,7 @@ msgstr ""
msgid "Manufacturer Part Number"
msgstr ""
-#: erpnext/public/js/controllers/buying.js:359
+#: erpnext/public/js/controllers/buying.js:371
msgid "Manufacturer Part Number {0} is invalid"
msgstr ""
@@ -29395,7 +29447,7 @@ msgstr ""
msgid "Manufacturing Manager"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1904
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1916
msgid "Manufacturing Quantity is mandatory"
msgstr ""
@@ -29533,7 +29585,7 @@ msgid "Marital Status"
msgstr ""
#: erpnext/public/js/templates/crm_activities.html:39
-#: erpnext/public/js/templates/crm_activities.html:82
+#: erpnext/public/js/templates/crm_activities.html:123
msgid "Mark As Closed"
msgstr ""
@@ -29603,12 +29655,12 @@ msgstr ""
#. Option for the 'Purpose' (Select) field in DocType 'Stock Entry Type'
#: erpnext/setup/setup_wizard/operations/install_fixtures.py:121
#: erpnext/stock/doctype/stock_entry/stock_entry.json
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:931
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:943
#: erpnext/stock/doctype/stock_entry_type/stock_entry_type.json
msgid "Material Consumption for Manufacture"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:505
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:506
msgid "Material Consumption is not set in Manufacturing Settings."
msgstr ""
@@ -29981,11 +30033,11 @@ msgstr ""
msgid "Maximum Payment Amount"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:3199
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:3211
msgid "Maximum Samples - {0} can be retained for Batch {1} and Item {2}."
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:3190
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:3202
msgid "Maximum Samples - {0} have already been retained for Batch {1} and Item {2} in Batch {3}."
msgstr ""
@@ -30234,8 +30286,8 @@ msgstr ""
msgid "Microsecond"
msgstr ""
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:295
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:403
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:293
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:401
msgid "Middle Income"
msgstr ""
@@ -30467,19 +30519,19 @@ msgstr ""
msgid "Miscellaneous Expenses"
msgstr ""
-#: erpnext/controllers/buying_controller.py:516
+#: erpnext/controllers/buying_controller.py:540
msgid "Mismatch"
msgstr ""
-#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:1338
+#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:1344
msgid "Missing"
msgstr ""
#: erpnext/accounts/doctype/pos_opening_entry/pos_opening_entry.py:69
#: erpnext/accounts/doctype/pos_profile/pos_profile.py:180
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:585
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:587
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2167
-#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2725
+#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2728
#: erpnext/assets/doctype/asset_category/asset_category.py:117
msgid "Missing Account"
msgstr ""
@@ -30501,15 +30553,15 @@ msgstr ""
msgid "Missing Finance Book"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1344
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1356
msgid "Missing Finished Good"
msgstr ""
-#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:327
+#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:328
msgid "Missing Formula"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:769
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:781
msgid "Missing Item"
msgstr ""
@@ -30994,7 +31046,7 @@ msgstr ""
msgid "Multiple Tier Program"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:141
+#: erpnext/stock/doctype/item/item.js:170
msgid "Multiple Variants"
msgstr ""
@@ -31006,7 +31058,7 @@ msgstr ""
msgid "Multiple fiscal years exist for the date {0}. Please set company in Fiscal Year"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1351
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1363
msgid "Multiple items cannot be marked as finished item"
msgstr ""
@@ -31018,7 +31070,7 @@ msgstr ""
#: erpnext/manufacturing/doctype/work_order/work_order.py:1083
#: erpnext/setup/doctype/uom/uom.json
#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:137
-#: erpnext/utilities/transaction_base.py:553
+#: erpnext/utilities/transaction_base.py:557
msgid "Must be Whole Number"
msgstr ""
@@ -31051,7 +31103,6 @@ msgstr ""
#: erpnext/accounts/doctype/finance_book/finance_book.json
#: erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json
#: erpnext/accounts/doctype/payment_order_reference/payment_order_reference.json
-#: erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py:147
#: erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py:359
#: erpnext/bulk_transaction/doctype/bulk_transaction_log_detail/bulk_transaction_log_detail.json
#: erpnext/crm/doctype/appointment/appointment.json
@@ -31189,7 +31240,7 @@ msgid "Natural Gas"
msgstr ""
#: erpnext/setup/setup_wizard/data/sales_stage.txt:3
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:415
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:413
msgid "Needs Analysis"
msgstr ""
@@ -31206,7 +31257,7 @@ msgid "Negative Valuation Rate is not allowed"
msgstr ""
#: erpnext/setup/setup_wizard/data/sales_stage.txt:8
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:420
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:418
msgid "Negotiation/Review"
msgstr ""
@@ -31560,7 +31611,7 @@ msgid "New Employee"
msgstr ""
#: erpnext/public/js/templates/crm_activities.html:14
-#: erpnext/public/js/utils/crm_activities.js:85
+#: erpnext/public/js/utils/crm_activities.js:87
msgid "New Event"
msgstr ""
@@ -31626,7 +31677,7 @@ msgid "New Serial No cannot have Warehouse. Warehouse must be set by Stock Entry
msgstr ""
#: erpnext/public/js/templates/crm_activities.html:8
-#: erpnext/public/js/utils/crm_activities.js:67
+#: erpnext/public/js/utils/crm_activities.js:69
msgid "New Task"
msgstr ""
@@ -31739,8 +31790,8 @@ msgstr ""
#: 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/purchase_invoice/purchase_invoice.py:622
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:643
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:624
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:645
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.json
#: erpnext/buying/doctype/buying_settings/buying_settings.json
#: erpnext/projects/doctype/project/project.json
@@ -31819,10 +31870,10 @@ msgstr ""
msgid "No POS Profile found. Please create a New POS Profile first"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1507
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1567
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1581
-#: erpnext/stock/doctype/item/item.py:1364
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1514
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1574
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1588
+#: erpnext/stock/doctype/item/item.py:1371
msgid "No Permission"
msgstr ""
@@ -31835,7 +31886,7 @@ msgstr ""
msgid "No Records for these settings."
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:331
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:333
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1030
msgid "No Remarks"
msgstr ""
@@ -31880,7 +31931,7 @@ msgstr ""
msgid "No Work Orders were created"
msgstr ""
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:761
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:763
#: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:689
msgid "No accounting entries for the following warehouses"
msgstr ""
@@ -32011,7 +32062,7 @@ msgstr ""
msgid "No open POS Opening Entry found for POS Profile {0}."
msgstr ""
-#: erpnext/public/js/templates/crm_activities.html:104
+#: erpnext/public/js/templates/crm_activities.html:145
msgid "No open event"
msgstr ""
@@ -32031,7 +32082,7 @@ msgstr ""
msgid "No outstanding {0} found for the {1} {2} which qualify the filters you have specified."
msgstr ""
-#: erpnext/public/js/controllers/buying.js:463
+#: erpnext/public/js/controllers/buying.js:475
msgid "No pending Material Requests found to link for the given items."
msgstr ""
@@ -32069,6 +32120,10 @@ msgstr ""
msgid "No reserved stock to unreserve."
msgstr ""
+#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:731
+msgid "No stock ledger entries were created. Please set the quantity or valuation rate for the items properly and try again."
+msgstr ""
+
#. Description of the 'Stock Frozen Up To' (Date) field in DocType 'Stock
#. Settings'
#: erpnext/stock/doctype/stock_settings/stock_settings.json
@@ -32143,7 +32198,7 @@ msgstr ""
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:551
#: erpnext/assets/doctype/asset/asset.js:616
#: erpnext/assets/doctype/asset/asset.js:631
-#: erpnext/controllers/buying_controller.py:202
+#: erpnext/controllers/buying_controller.py:225
#: erpnext/selling/doctype/product_bundle/product_bundle.py:72
#: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:80
msgid "Not Allowed"
@@ -32177,7 +32232,7 @@ msgstr ""
msgid "Not Initiated"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:785
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:787
#: erpnext/templates/pages/material_request_info.py:21
#: erpnext/templates/pages/order.py:37 erpnext/templates/pages/rfq.py:46
msgid "Not Permitted"
@@ -32242,10 +32297,10 @@ msgstr ""
msgid "Not in stock"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:706
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1679
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1837
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1904
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:708
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1684
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1842
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1909
#: erpnext/selling/doctype/sales_order/sales_order.py:808
#: erpnext/selling/doctype/sales_order/sales_order.py:1611
msgid "Not permitted"
@@ -32260,14 +32315,14 @@ msgstr ""
#: erpnext/manufacturing/doctype/production_plan/production_plan.py:1002
#: erpnext/manufacturing/doctype/production_plan/production_plan.py:1708
#: erpnext/projects/doctype/timesheet/timesheet.json
-#: erpnext/public/js/controllers/buying.js:464
+#: erpnext/public/js/controllers/buying.js:476
#: erpnext/selling/doctype/customer/customer.py:127
#: erpnext/selling/doctype/sales_order/sales_order.js:1155
-#: erpnext/stock/doctype/item/item.js:497
-#: erpnext/stock/doctype/item/item.py:565
+#: erpnext/stock/doctype/item/item.js:526
+#: erpnext/stock/doctype/item/item.py:567
#: erpnext/stock/doctype/item_price/item_price.json
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1352
-#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:924
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1364
+#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:930
#: erpnext/templates/pages/timelog_info.html:43
msgid "Note"
msgstr ""
@@ -32276,7 +32331,7 @@ msgstr ""
msgid "Note: Automatic log deletion only applies to logs of type Update Cost"
msgstr ""
-#: erpnext/accounts/party.py:672
+#: erpnext/accounts/party.py:691
msgid "Note: Due Date exceeds allowed customer credit days by {0} day(s)"
msgstr ""
@@ -32298,11 +32353,11 @@ msgstr ""
msgid "Note: This Cost Center is a Group. Cannot make accounting entries against groups."
msgstr ""
-#: erpnext/stock/doctype/item/item.py:619
+#: erpnext/stock/doctype/item/item.py:621
msgid "Note: To merge the items, create a separate Stock Reconciliation for the old item {0}"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:985
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:994
msgid "Note: {0}"
msgstr ""
@@ -32752,7 +32807,7 @@ msgstr ""
msgid "Only leaf nodes are allowed in transaction"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:945
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:957
msgid "Only one {0} entry can be created against the Work Order {1}"
msgstr ""
@@ -32847,11 +32902,12 @@ msgstr ""
msgid "Open Contact"
msgstr ""
-#: erpnext/public/js/templates/crm_activities.html:76
+#: erpnext/public/js/templates/crm_activities.html:117
+#: erpnext/public/js/templates/crm_activities.html:164
msgid "Open Event"
msgstr ""
-#: erpnext/public/js/templates/crm_activities.html:63
+#: erpnext/public/js/templates/crm_activities.html:104
msgid "Open Events"
msgstr ""
@@ -32900,6 +32956,7 @@ msgid "Open Sales Orders"
msgstr ""
#: erpnext/public/js/templates/crm_activities.html:33
+#: erpnext/public/js/templates/crm_activities.html:92
msgid "Open Task"
msgstr ""
@@ -33030,7 +33087,7 @@ msgstr ""
msgid "Opening Invoice Item"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1623
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1625
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1754
msgid "Opening Invoice has rounding adjustment of {0}.
'{1}' account is required to post these values. Please set it in Company: {2}.
Or, '{3}' can be enabled to not post any rounding adjustment."
msgstr ""
@@ -33067,7 +33124,7 @@ msgstr ""
#. Label of the opening_stock (Float) field in DocType 'Item'
#. Option for the 'Purpose' (Select) field in DocType 'Stock Reconciliation'
-#: erpnext/stock/doctype/item/item.json erpnext/stock/doctype/item/item.py:294
+#: erpnext/stock/doctype/item/item.json erpnext/stock/doctype/item/item.py:296
#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json
msgid "Opening Stock"
msgstr ""
@@ -33231,7 +33288,7 @@ msgstr ""
msgid "Operation {0} added multiple times in the work order {1}"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1077
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1083
msgid "Operation {0} does not belong to the work order {1}"
msgstr ""
@@ -33611,7 +33668,7 @@ msgstr ""
#: erpnext/crm/doctype/lead/lead.json
#: erpnext/manufacturing/doctype/downtime_entry/downtime_entry.json
#: erpnext/setup/doctype/email_digest/email_digest.json
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:287
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:285
msgid "Other"
msgstr ""
@@ -33840,7 +33897,7 @@ msgstr ""
msgid "Over Picking Allowance"
msgstr ""
-#: erpnext/controllers/stock_controller.py:1323
+#: erpnext/controllers/stock_controller.py:1334
msgid "Over Receipt"
msgstr ""
@@ -34254,7 +34311,7 @@ msgstr ""
msgid "Packed Items"
msgstr ""
-#: erpnext/controllers/stock_controller.py:1159
+#: erpnext/controllers/stock_controller.py:1170
msgid "Packed Items cannot be transferred internally"
msgstr ""
@@ -34424,7 +34481,7 @@ msgstr ""
msgid "Paid To Account Type"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:321
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:323
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1076
msgid "Paid amount + Write Off Amount can not be greater than Grand Total"
msgstr ""
@@ -34651,7 +34708,7 @@ msgstr ""
msgid "Partial Payment in POS Transactions are not allowed."
msgstr ""
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1297
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1298
msgid "Partial Stock Reservation"
msgstr ""
@@ -35008,7 +35065,7 @@ msgstr ""
msgid "Party Type"
msgstr ""
-#: erpnext/accounts/party.py:801
+#: erpnext/accounts/party.py:820
msgid "Party Type and Party can only be set for Receivable / Payable account
{0}"
msgstr ""
@@ -35066,6 +35123,10 @@ msgstr ""
msgid "Past Due Date"
msgstr ""
+#: erpnext/public/js/templates/crm_activities.html:152
+msgid "Past Events"
+msgstr ""
+
#. Label of the path (Data) field in DocType 'Supplier Scorecard Scoring
#. Variable'
#. Label of the path (Data) field in DocType 'Supplier Scorecard Variable'
@@ -35684,7 +35745,7 @@ msgstr ""
msgid "Payment Unlink Error"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:853
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:862
msgid "Payment against {0} {1} cannot be greater than Outstanding Amount {2}"
msgstr ""
@@ -35959,7 +36020,7 @@ msgid "Percentage you are allowed to transfer more against the quantity ordered.
msgstr ""
#: erpnext/setup/setup_wizard/data/sales_stage.txt:6
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:418
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:416
msgid "Perception Analysis"
msgstr ""
@@ -36557,7 +36618,7 @@ msgstr ""
msgid "Please add {1} role to user {0}."
msgstr ""
-#: erpnext/controllers/stock_controller.py:1334
+#: erpnext/controllers/stock_controller.py:1345
msgid "Please adjust the qty or edit {0} to proceed."
msgstr ""
@@ -36565,7 +36626,7 @@ msgstr ""
msgid "Please attach CSV file"
msgstr ""
-#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2862
+#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2865
msgid "Please cancel and amend the Payment Entry"
msgstr ""
@@ -36578,7 +36639,7 @@ msgstr ""
msgid "Please cancel related transaction."
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:927
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:936
msgid "Please check Multi Currency option to allow accounts with other currency"
msgstr ""
@@ -36651,7 +36712,7 @@ msgstr ""
msgid "Please create purchase receipt or purchase invoice for the item {0}"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:647
+#: erpnext/stock/doctype/item/item.py:649
msgid "Please delete Product Bundle {0}, before merging {1} into {2}"
msgstr ""
@@ -36693,11 +36754,11 @@ msgstr ""
msgid "Please enable {} in {} to allow same item in multiple rows"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:364
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:366
msgid "Please ensure that the {0} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account."
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:372
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:374
msgid "Please ensure that the {0} account {1} is a Payable account. You can change the account type to Payable or select a different account."
msgstr ""
@@ -36722,7 +36783,7 @@ msgstr ""
msgid "Please enter Approving Role or Approving User"
msgstr ""
-#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:891
+#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:897
msgid "Please enter Cost Center"
msgstr ""
@@ -36734,7 +36795,7 @@ msgstr ""
msgid "Please enter Employee Id of this sales person"
msgstr ""
-#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:900
+#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:906
msgid "Please enter Expense Account"
msgstr ""
@@ -36743,7 +36804,7 @@ msgstr ""
msgid "Please enter Item Code to get Batch Number"
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2501
+#: erpnext/public/js/controllers/transaction.js:2503
msgid "Please enter Item Code to get batch no"
msgstr ""
@@ -36775,7 +36836,7 @@ msgstr ""
msgid "Please enter Receipt Document"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:991
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1000
msgid "Please enter Reference date"
msgstr ""
@@ -36799,7 +36860,7 @@ msgstr ""
msgid "Please enter Warehouse and Date"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:650
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:652
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1137
msgid "Please enter Write Off Account"
msgstr ""
@@ -36848,7 +36909,7 @@ msgstr ""
msgid "Please enter the phone number first"
msgstr ""
-#: erpnext/controllers/buying_controller.py:972
+#: erpnext/controllers/buying_controller.py:996
msgid "Please enter the {schedule_date}."
msgstr ""
@@ -36864,7 +36925,7 @@ msgstr ""
msgid "Please enter {0}"
msgstr ""
-#: erpnext/public/js/utils/party.js:317
+#: erpnext/public/js/utils/party.js:321
msgid "Please enter {0} first"
msgstr ""
@@ -36908,7 +36969,7 @@ msgstr ""
msgid "Please make sure you really want to delete all the transactions for this company. Your master data will remain as it is. This action cannot be undone."
msgstr ""
-#: erpnext/stock/doctype/item/item.js:496
+#: erpnext/stock/doctype/item/item.js:525
msgid "Please mention 'Weight UOM' along with Weight."
msgstr ""
@@ -36963,7 +37024,7 @@ msgstr ""
msgid "Please select BOM for Item in Row {0}"
msgstr ""
-#: erpnext/controllers/buying_controller.py:443
+#: erpnext/controllers/buying_controller.py:467
msgid "Please select BOM in BOM field for Item {item_code}."
msgstr ""
@@ -37045,7 +37106,7 @@ msgstr ""
msgid "Please select Qty against item {0}"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:318
+#: erpnext/stock/doctype/item/item.py:320
msgid "Please select Sample Retention Warehouse in Stock Settings first"
msgstr ""
@@ -37057,7 +37118,7 @@ msgstr ""
msgid "Please select Start Date and End Date for Item {0}"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1266
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1278
msgid "Please select Subcontracting Order instead of Purchase Order {0}"
msgstr ""
@@ -37069,7 +37130,7 @@ msgstr ""
msgid "Please select a BOM"
msgstr ""
-#: erpnext/accounts/party.py:409
+#: erpnext/accounts/party.py:428
msgid "Please select a Company"
msgstr ""
@@ -37077,7 +37138,7 @@ msgstr ""
#: erpnext/manufacturing/doctype/bom/bom.js:599
#: erpnext/manufacturing/doctype/bom/bom.py:261
#: erpnext/public/js/controllers/accounts.js:249
-#: erpnext/public/js/controllers/transaction.js:2751
+#: erpnext/public/js/controllers/transaction.js:2753
msgid "Please select a Company first."
msgstr ""
@@ -37101,7 +37162,7 @@ msgstr ""
msgid "Please select a Warehouse"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1381
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1387
msgid "Please select a Work Order first."
msgstr ""
@@ -37154,7 +37215,7 @@ msgstr ""
msgid "Please select an item code before setting the warehouse."
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1641
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1648
msgid "Please select correct account"
msgstr ""
@@ -37296,7 +37357,7 @@ msgstr ""
msgid "Please set Fiscal Code for the public administration '%s'"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:582
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:584
msgid "Please set Fixed Asset Account in {} against {}."
msgstr ""
@@ -37350,7 +37411,7 @@ msgstr ""
msgid "Please set a default Holiday List for Employee {0} or Company {1}"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1092
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1094
msgid "Please set account in Warehouse {0}"
msgstr ""
@@ -37381,13 +37442,13 @@ msgstr ""
#: erpnext/accounts/doctype/pos_opening_entry/pos_opening_entry.py:66
#: erpnext/accounts/doctype/pos_profile/pos_profile.py:177
-#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2722
+#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2725
msgid "Please set default Cash or Bank account in Mode of Payment {}"
msgstr ""
#: erpnext/accounts/doctype/pos_opening_entry/pos_opening_entry.py:68
#: erpnext/accounts/doctype/pos_profile/pos_profile.py:179
-#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2724
+#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2727
msgid "Please set default Cash or Bank account in Mode of Payments {}"
msgstr ""
@@ -37424,7 +37485,7 @@ msgstr ""
msgid "Please set one of the following:"
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2203
+#: erpnext/public/js/controllers/transaction.js:2205
msgid "Please set recurring after saving"
msgstr ""
@@ -37440,11 +37501,11 @@ msgstr ""
msgid "Please set the Item Code first"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1443
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1449
msgid "Please set the Target Warehouse in the Job Card"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1447
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1453
msgid "Please set the WIP Warehouse in the Job Card"
msgstr ""
@@ -37495,7 +37556,7 @@ msgstr ""
msgid "Please share this email with your support team so that they can find and fix the issue."
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2071
+#: erpnext/public/js/controllers/transaction.js:2073
msgid "Please specify"
msgstr ""
@@ -37757,7 +37818,7 @@ msgstr ""
msgid "Posting Date Inheritance for Exchange Gain / Loss"
msgstr ""
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:251
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:253
#: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:126
msgid "Posting Date cannot be future date"
msgstr ""
@@ -37815,7 +37876,7 @@ msgstr ""
msgid "Posting Time"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1852
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1864
msgid "Posting date and posting time is mandatory"
msgstr ""
@@ -37880,7 +37941,7 @@ msgstr ""
msgid "Pre Sales"
msgstr ""
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:292
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:290
msgid "Preference"
msgstr ""
@@ -37992,11 +38053,11 @@ msgstr ""
#. Option for the 'Price or Product Discount' (Select) field in DocType
#. 'Pricing Rule'
#: erpnext/accounts/doctype/pricing_rule/pricing_rule.json
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:221
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:222
msgid "Price"
msgstr ""
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:242
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:236
msgid "Price ({0})"
msgstr ""
@@ -38204,7 +38265,7 @@ msgstr ""
msgid "Price Not UOM Dependent"
msgstr ""
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:249
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:243
msgid "Price Per Unit ({0})"
msgstr ""
@@ -38226,7 +38287,7 @@ msgstr ""
msgid "Price or product discount slabs are required"
msgstr ""
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:235
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:229
msgid "Price per Unit (Stock UOM)"
msgstr ""
@@ -38901,8 +38962,8 @@ msgstr ""
#: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
#: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
#: erpnext/buying/workspace/buying/buying.json
-#: erpnext/public/js/controllers/buying.js:287
-#: erpnext/public/js/controllers/buying.js:535
+#: erpnext/public/js/controllers/buying.js:293
+#: erpnext/public/js/controllers/buying.js:547
#: erpnext/selling/doctype/product_bundle/product_bundle.json
#: erpnext/selling/workspace/selling/selling.json
#: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json
@@ -39552,7 +39613,7 @@ msgid "Proposal Writing"
msgstr ""
#: erpnext/setup/setup_wizard/data/sales_stage.txt:7
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:419
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:417
msgid "Proposal/Price Quote"
msgstr ""
@@ -39589,7 +39650,7 @@ msgid "Prospect {0} already exists"
msgstr ""
#: erpnext/setup/setup_wizard/data/sales_stage.txt:1
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:413
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:411
msgid "Prospecting"
msgstr ""
@@ -39807,12 +39868,12 @@ msgstr ""
msgid "Purchase Invoice cannot be made against an existing asset {0}"
msgstr ""
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:428
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:442
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:430
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:444
msgid "Purchase Invoice {0} is already submitted"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:2008
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:2010
msgid "Purchase Invoices"
msgstr ""
@@ -39879,7 +39940,7 @@ msgstr ""
#: erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.js:48
#: erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.py:203
#: erpnext/buying/workspace/buying/buying.json
-#: erpnext/controllers/buying_controller.py:710
+#: erpnext/controllers/buying_controller.py:734
#: erpnext/crm/doctype/contract/contract.json
#: erpnext/manufacturing/doctype/blanket_order/blanket_order.js:54
#: erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json
@@ -39965,11 +40026,11 @@ msgstr ""
msgid "Purchase Order Pricing Rule"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:621
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:623
msgid "Purchase Order Required"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:616
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:618
msgid "Purchase Order Required for item {}"
msgstr ""
@@ -39985,15 +40046,15 @@ msgstr ""
msgid "Purchase Order already created for all Sales Order items"
msgstr ""
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:317
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:319
msgid "Purchase Order number required for Item {0}"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:659
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:661
msgid "Purchase Order {0} is not submitted"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:872
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:874
msgid "Purchase Orders"
msgstr ""
@@ -40003,7 +40064,7 @@ msgstr ""
msgid "Purchase Orders Items Overdue"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:302
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:304
msgid "Purchase Orders are not allowed for {0} due to a scorecard standing of {1}."
msgstr ""
@@ -40107,11 +40168,11 @@ msgstr ""
msgid "Purchase Receipt No"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:642
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:644
msgid "Purchase Receipt Required"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:637
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:639
msgid "Purchase Receipt Required for item {}"
msgstr ""
@@ -40132,7 +40193,7 @@ msgstr ""
msgid "Purchase Receipt {0} created."
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:666
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:668
msgid "Purchase Receipt {0} is not submitted"
msgstr ""
@@ -40571,7 +40632,7 @@ msgid "Qty to Fetch"
msgstr ""
#: erpnext/manufacturing/doctype/job_card/job_card.js:225
-#: erpnext/manufacturing/doctype/job_card/job_card.py:751
+#: erpnext/manufacturing/doctype/job_card/job_card.py:757
msgid "Qty to Manufacture"
msgstr ""
@@ -40594,7 +40655,7 @@ msgstr ""
#: erpnext/crm/doctype/lead/lead.json
#: erpnext/setup/doctype/employee_education/employee_education.json
#: erpnext/setup/setup_wizard/data/sales_stage.txt:2
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:414
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:412
msgid "Qualification"
msgstr ""
@@ -40895,7 +40956,7 @@ msgstr ""
#: erpnext/buying/report/item_wise_purchase_history/item_wise_purchase_history.py:52
#: erpnext/buying/report/procurement_tracker/procurement_tracker.py:66
#: erpnext/buying/report/purchase_analytics/purchase_analytics.js:28
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:211
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:205
#: erpnext/manufacturing/doctype/blanket_order_item/blanket_order_item.json
#: erpnext/manufacturing/doctype/bom/bom.js:396
#: erpnext/manufacturing/doctype/bom/bom.json
@@ -40903,7 +40964,7 @@ msgstr ""
#: erpnext/manufacturing/doctype/bom_creator/bom_creator.json
#: erpnext/manufacturing/doctype/plant_floor/plant_floor.js:194
#: erpnext/manufacturing/doctype/plant_floor/plant_floor.js:218
-#: erpnext/public/js/controllers/buying.js:542
+#: erpnext/public/js/controllers/buying.js:554
#: erpnext/public/js/stock_analytics.js:50
#: erpnext/public/js/utils/serial_no_batch_selector.js:485
#: erpnext/selling/doctype/quotation_item/quotation_item.json
@@ -40918,7 +40979,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:649
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:650
#: 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
@@ -41017,7 +41078,7 @@ msgstr ""
msgid "Quantity cannot be greater than {0} for Item {1}"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1334
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1346
msgid "Quantity in row {0} ({1}) must be same as manufactured quantity {2}"
msgstr ""
@@ -41058,7 +41119,7 @@ msgstr ""
msgid "Quantity to Manufacture"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1980
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1985
msgid "Quantity to Manufacture can not be zero for the operation {0}"
msgstr ""
@@ -42439,7 +42500,7 @@ msgstr ""
msgid "Reference"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:989
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:998
msgid "Reference #{0} dated {1}"
msgstr ""
@@ -42450,7 +42511,7 @@ msgstr ""
msgid "Reference Date"
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2309
+#: erpnext/public/js/controllers/transaction.js:2311
msgid "Reference Date for Early Payment Discount"
msgstr ""
@@ -42577,7 +42638,7 @@ msgstr ""
msgid "Reference No"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:603
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:612
msgid "Reference No & Reference Date is required for {0}"
msgstr ""
@@ -42585,7 +42646,7 @@ msgstr ""
msgid "Reference No and Reference Date is mandatory for Bank transaction"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:608
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:617
msgid "Reference No is mandatory if you entered Reference Date"
msgstr ""
@@ -42859,7 +42920,7 @@ msgstr ""
msgid "Release Date"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:312
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:314
msgid "Release date must be in the future"
msgstr ""
@@ -43363,7 +43424,7 @@ msgstr ""
#: erpnext/buying/doctype/supplier_quotation/supplier_quotation.js:66
#: erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json
#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:70
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:270
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:264
#: erpnext/buying/workspace/buying/buying.json
#: erpnext/stock/doctype/material_request/material_request.js:168
msgid "Request for Quotation"
@@ -43678,7 +43739,7 @@ msgstr ""
msgid "Reserved Stock for Batch"
msgstr ""
-#: erpnext/controllers/buying_controller.py:452
+#: erpnext/controllers/buying_controller.py:476
msgid "Reserved Warehouse is mandatory for the Item {item_code} in Raw Materials supplied."
msgstr ""
@@ -43965,7 +44026,7 @@ msgstr ""
msgid "Retention Stock Entry"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:523
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:524
msgid "Retention Stock Entry already created or Sample Quantity not provided"
msgstr ""
@@ -44522,15 +44583,15 @@ msgstr ""
msgid "Row #{0} (Payment Table): Amount must be positive"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:493
+#: erpnext/stock/doctype/item/item.py:495
msgid "Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}."
msgstr ""
-#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:346
+#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:347
msgid "Row #{0}: Acceptance Criteria Formula is incorrect."
msgstr ""
-#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:326
+#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:327
msgid "Row #{0}: Acceptance Criteria Formula is required."
msgstr ""
@@ -44568,7 +44629,7 @@ msgstr ""
msgid "Row #{0}: Asset {1} cannot be submitted, it is already {2}"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:350
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:352
msgid "Row #{0}: BOM is not specified for subcontracting item {0}"
msgstr ""
@@ -44604,7 +44665,7 @@ msgstr ""
msgid "Row #{0}: Cannot set Rate if amount is greater than billed amount for Item {1}."
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:958
+#: erpnext/manufacturing/doctype/job_card/job_card.py:964
msgid "Row #{0}: Cannot transfer more than Required Qty {1} for Item {2} against Job Card {3}"
msgstr ""
@@ -44644,7 +44705,7 @@ msgstr ""
msgid "Row #{0}: Dates overlapping with other row"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:374
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:376
msgid "Row #{0}: Default BOM not found for FG Item {1}"
msgstr ""
@@ -44660,15 +44721,15 @@ msgstr ""
msgid "Row #{0}: Expense Account not set for the Item {1}. {2}"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:379
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:381
msgid "Row #{0}: Finished Good Item Qty can not be zero"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:361
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:363
msgid "Row #{0}: Finished Good Item is not specified for service item {1}"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:368
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:370
msgid "Row #{0}: Finished Good Item {1} must be a sub-contracted item"
msgstr ""
@@ -44684,11 +44745,11 @@ msgstr ""
msgid "Row #{0}: For {1} Clearance date {2} cannot be before Cheque Date {3}"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:651
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:660
msgid "Row #{0}: For {1}, you can select reference document only if account gets credited"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:661
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:670
msgid "Row #{0}: For {1}, you can select reference document only if account gets debited"
msgstr ""
@@ -44696,6 +44757,10 @@ msgstr ""
msgid "Row #{0}: From Date cannot be before To Date"
msgstr ""
+#: erpnext/manufacturing/doctype/job_card/job_card.py:747
+msgid "Row #{0}: From Time and To Time fields are required"
+msgstr ""
+
#: erpnext/public/js/utils/barcode_scanner.js:394
msgid "Row #{0}: Item added"
msgstr ""
@@ -44704,7 +44769,7 @@ msgstr ""
msgid "Row #{0}: Item {1} does not exist"
msgstr ""
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1201
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1202
msgid "Row #{0}: Item {1} has been picked, please reserve stock from the Pick List."
msgstr ""
@@ -44728,11 +44793,11 @@ msgstr ""
msgid "Row #{0}: Not allowed to change Supplier as Purchase Order already exists"
msgstr ""
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1284
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1285
msgid "Row #{0}: Only {1} available to reserve for the Item {2}"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:649
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:661
msgid "Row #{0}: Operation {1} is not completed for {2} qty of finished goods in Work Order {3}. Please update operation status via Job Card {4}."
msgstr ""
@@ -44752,7 +44817,7 @@ msgstr ""
msgid "Row #{0}: Please select the Sub Assembly Warehouse"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:500
+#: erpnext/stock/doctype/item/item.py:502
msgid "Row #{0}: Please set reorder quantity"
msgstr ""
@@ -44773,15 +44838,15 @@ msgstr ""
msgid "Row #{0}: Qty should be less than or equal to Available Qty to Reserve (Actual Qty - Reserved Qty) {1} for Iem {2} against Batch {3} in Warehouse {4}."
msgstr ""
-#: erpnext/controllers/stock_controller.py:1054
+#: erpnext/controllers/stock_controller.py:1065
msgid "Row #{0}: Quality Inspection is required for Item {1}"
msgstr ""
-#: erpnext/controllers/stock_controller.py:1069
+#: erpnext/controllers/stock_controller.py:1080
msgid "Row #{0}: Quality Inspection {1} is not submitted for the item: {2}"
msgstr ""
-#: erpnext/controllers/stock_controller.py:1084
+#: erpnext/controllers/stock_controller.py:1095
msgid "Row #{0}: Quality Inspection {1} was rejected for item {2}"
msgstr ""
@@ -44790,7 +44855,7 @@ msgstr ""
msgid "Row #{0}: Quantity for Item {1} cannot be zero."
msgstr ""
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1269
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1270
msgid "Row #{0}: Quantity to reserve for the Item {1} should be greater than 0."
msgstr ""
@@ -44863,11 +44928,11 @@ msgstr ""
msgid "Row #{0}: Start Time must be before End Time"
msgstr ""
-#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:230
+#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:231
msgid "Row #{0}: Status is mandatory"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:414
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:423
msgid "Row #{0}: Status must be {1} for Invoice Discounting {2}"
msgstr ""
@@ -44875,15 +44940,15 @@ msgstr ""
msgid "Row #{0}: Stock cannot be reserved for Item {1} against a disabled Batch {2}."
msgstr ""
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1214
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1215
msgid "Row #{0}: Stock cannot be reserved for a non-stock Item {1}"
msgstr ""
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1227
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1228
msgid "Row #{0}: Stock cannot be reserved in group warehouse {1}."
msgstr ""
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1241
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1242
msgid "Row #{0}: Stock is already reserved for the Item {1}."
msgstr ""
@@ -44895,8 +44960,8 @@ msgstr ""
msgid "Row #{0}: Stock not available to reserve for Item {1} against Batch {2} in Warehouse {3}."
msgstr ""
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1111
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1255
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1112
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1256
msgid "Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}."
msgstr ""
@@ -44904,7 +44969,7 @@ msgstr ""
msgid "Row #{0}: The batch {1} has already expired."
msgstr ""
-#: erpnext/stock/doctype/item/item.py:509
+#: erpnext/stock/doctype/item/item.py:511
msgid "Row #{0}: The warehouse {1} is not a child warehouse of a group warehouse {2}"
msgstr ""
@@ -44920,11 +44985,11 @@ msgstr ""
msgid "Row #{0}: You must select an Asset for Item {1}."
msgstr ""
-#: erpnext/public/js/controllers/buying.js:230
+#: erpnext/public/js/controllers/buying.js:236
msgid "Row #{0}: {1} can not be negative for item {2}"
msgstr ""
-#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:339
+#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:340
msgid "Row #{0}: {1} is not a valid reading field. Please refer to the field description."
msgstr ""
@@ -44940,39 +45005,39 @@ msgstr ""
msgid "Row #{1}: Warehouse is mandatory for stock Item {0}"
msgstr ""
-#: erpnext/controllers/buying_controller.py:236
+#: erpnext/controllers/buying_controller.py:259
msgid "Row #{idx}: Cannot select Supplier Warehouse while suppling raw materials to subcontractor."
msgstr ""
-#: erpnext/controllers/buying_controller.py:382
+#: erpnext/controllers/buying_controller.py:406
msgid "Row #{idx}: Item rate has been updated as per valuation rate since its an internal stock transfer."
msgstr ""
-#: erpnext/controllers/buying_controller.py:846
+#: erpnext/controllers/buying_controller.py:870
msgid "Row #{idx}: Please enter a location for the asset item {item_code}."
msgstr ""
-#: erpnext/controllers/buying_controller.py:513
+#: erpnext/controllers/buying_controller.py:537
msgid "Row #{idx}: Received Qty must be equal to Accepted + Rejected Qty for Item {item_code}."
msgstr ""
-#: erpnext/controllers/buying_controller.py:526
+#: erpnext/controllers/buying_controller.py:550
msgid "Row #{idx}: {field_label} can not be negative for item {item_code}."
msgstr ""
-#: erpnext/controllers/buying_controller.py:472
+#: erpnext/controllers/buying_controller.py:496
msgid "Row #{idx}: {field_label} is mandatory."
msgstr ""
-#: erpnext/controllers/buying_controller.py:494
+#: erpnext/controllers/buying_controller.py:518
msgid "Row #{idx}: {field_label} is not allowed in Purchase Return."
msgstr ""
-#: erpnext/controllers/buying_controller.py:227
+#: erpnext/controllers/buying_controller.py:250
msgid "Row #{idx}: {from_warehouse_field} and {to_warehouse_field} cannot be same."
msgstr ""
-#: erpnext/controllers/buying_controller.py:964
+#: erpnext/controllers/buying_controller.py:988
msgid "Row #{idx}: {schedule_date} cannot be before {transaction_date}."
msgstr ""
@@ -45037,11 +45102,11 @@ msgstr ""
msgid "Row #{}: {} {} does not exist."
msgstr ""
-#: erpnext/stock/doctype/item/item.py:1396
+#: erpnext/stock/doctype/item/item.py:1403
msgid "Row #{}: {} {} doesn't belong to Company {}. Please select valid {}."
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:431
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:433
msgid "Row No {0}: Warehouse is required. Please set a Default Warehouse for Item {1} and Company {2}"
msgstr ""
@@ -45061,11 +45126,11 @@ msgstr ""
msgid "Row {0} picked quantity is less than the required quantity, additional {1} {2} required."
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1197
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1209
msgid "Row {0}# Item {1} cannot be transferred more than {2} against {3} {4}"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1221
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1233
msgid "Row {0}# Item {1} not found in 'Raw Materials Supplied' table in {2} {3}"
msgstr ""
@@ -45073,7 +45138,7 @@ msgstr ""
msgid "Row {0}: Accepted Qty and Rejected Qty can't be zero at the same time."
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:566
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:575
msgid "Row {0}: Account {1} and Party Type {2} have different account types"
msgstr ""
@@ -45081,11 +45146,11 @@ msgstr ""
msgid "Row {0}: Activity Type is mandatory."
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:632
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:641
msgid "Row {0}: Advance against Customer must be credit"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:634
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:643
msgid "Row {0}: Advance against Supplier must be debit"
msgstr ""
@@ -45097,7 +45162,7 @@ msgstr ""
msgid "Row {0}: Allocated amount {1} must be less than or equal to remaining payment amount {2}"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:925
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:937
msgid "Row {0}: As {1} is enabled, raw materials cannot be added to {2} entry. Use {3} entry to consume raw materials."
msgstr ""
@@ -45105,7 +45170,7 @@ msgstr ""
msgid "Row {0}: Bill of Materials not found for the Item {1}"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:885
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:894
msgid "Row {0}: Both Debit and Credit values cannot be zero"
msgstr ""
@@ -45121,7 +45186,7 @@ msgstr ""
msgid "Row {0}: Cost center is required for an item {1}"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:731
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:740
msgid "Row {0}: Credit entry can not be linked with a {1}"
msgstr ""
@@ -45129,7 +45194,7 @@ msgstr ""
msgid "Row {0}: Currency of the BOM #{1} should be equal to the selected currency {2}"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:726
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:735
msgid "Row {0}: Debit entry can not be linked with a {1}"
msgstr ""
@@ -45149,7 +45214,7 @@ msgstr ""
msgid "Row {0}: Either Delivery Note Item or Packed Item reference is mandatory."
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:976
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:985
#: erpnext/controllers/taxes_and_totals.py:1205
msgid "Row {0}: Exchange Rate is mandatory"
msgstr ""
@@ -45158,15 +45223,15 @@ msgstr ""
msgid "Row {0}: Expected Value After Useful Life must be less than Gross Purchase Amount"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:522
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:524
msgid "Row {0}: Expense Head changed to {1} as no Purchase Receipt is created against Item {2}."
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:479
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:481
msgid "Row {0}: Expense Head changed to {1} because account {2} is not linked to warehouse {3} or it is not the default inventory account"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:504
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:506
msgid "Row {0}: Expense Head changed to {1} because expense is booked against this account in Purchase Receipt {2}"
msgstr ""
@@ -45183,7 +45248,7 @@ msgstr ""
msgid "Row {0}: From Time and To Time of {1} is overlapping with {2}"
msgstr ""
-#: erpnext/controllers/stock_controller.py:1150
+#: erpnext/controllers/stock_controller.py:1161
msgid "Row {0}: From Warehouse is mandatory for internal transfers"
msgstr ""
@@ -45195,7 +45260,7 @@ msgstr ""
msgid "Row {0}: Hours value must be greater than zero."
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:751
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:760
msgid "Row {0}: Invalid reference {1}"
msgstr ""
@@ -45227,11 +45292,11 @@ msgstr ""
msgid "Row {0}: Packing Slip is already created for Item {1}."
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:777
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:786
msgid "Row {0}: Party / Account does not match with {1} / {2} in {3} {4}"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:557
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:566
msgid "Row {0}: Party Type and Party is required for Receivable / Payable account {1}"
msgstr ""
@@ -45239,11 +45304,11 @@ msgstr ""
msgid "Row {0}: Payment Term is mandatory"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:625
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:634
msgid "Row {0}: Payment against Sales/Purchase Order should always be marked as advance"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:618
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:627
msgid "Row {0}: Please check 'Is Advance' against Account {1} if this is an advance entry."
msgstr ""
@@ -45299,7 +45364,7 @@ msgstr ""
msgid "Row {0}: Quantity cannot be negative."
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:723
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:735
msgid "Row {0}: Quantity not available for {4} in warehouse {1} at posting time of the entry ({2} {3})"
msgstr ""
@@ -45307,11 +45372,11 @@ msgstr ""
msgid "Row {0}: Shift cannot be changed since the depreciation has already been processed"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1234
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1246
msgid "Row {0}: Subcontracted Item is mandatory for the raw material {1}"
msgstr ""
-#: erpnext/controllers/stock_controller.py:1141
+#: erpnext/controllers/stock_controller.py:1152
msgid "Row {0}: Target Warehouse is mandatory for internal transfers"
msgstr ""
@@ -45360,7 +45425,7 @@ msgstr ""
msgid "Row {0}: {1} {2} cannot be same as {3} (Party Account) {4}"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:791
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:800
msgid "Row {0}: {1} {2} does not match with {3}"
msgstr ""
@@ -45368,11 +45433,11 @@ msgstr ""
msgid "Row {0}: {2} Item {1} does not exist in {2} {3}"
msgstr ""
-#: erpnext/utilities/transaction_base.py:548
+#: erpnext/utilities/transaction_base.py:552
msgid "Row {1}: Quantity ({0}) cannot be a fraction. To allow this, disable '{2}' in UOM {3}."
msgstr ""
-#: erpnext/controllers/buying_controller.py:828
+#: erpnext/controllers/buying_controller.py:852
msgid "Row {idx}: Asset Naming Series is mandatory for the auto creation of assets for item {item_code}."
msgstr ""
@@ -45574,7 +45639,7 @@ msgstr ""
#: erpnext/setup/doctype/company/company.py:523
#: erpnext/setup/doctype/company/company_dashboard.py:9
#: erpnext/setup/doctype/sales_person/sales_person_dashboard.py:12
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:282
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:280
#: erpnext/stock/doctype/item/item.json
msgid "Sales"
msgstr ""
@@ -46445,12 +46510,12 @@ 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:2367
+#: erpnext/public/js/controllers/transaction.js:2369
#: erpnext/stock/doctype/quality_inspection/quality_inspection.json
msgid "Sample Size"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:3181
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:3193
msgid "Sample quantity {0} cannot be more than received quantity {1}"
msgstr ""
@@ -46882,7 +46947,7 @@ msgstr ""
msgid "Select Alternative Items for Sales Order"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:607
+#: erpnext/stock/doctype/item/item.js:636
msgid "Select Attribute Values"
msgstr ""
@@ -46954,6 +47019,11 @@ msgstr ""
msgid "Select Dimension"
msgstr ""
+#. Label of the dispatch_address (Link) field in DocType 'Purchase Invoice'
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+msgid "Select Dispatch Address "
+msgstr ""
+
#. Label of the select_doctype (Select) field in DocType 'Rename Tool'
#: erpnext/utilities/doctype/rename_tool/rename_tool.json
msgid "Select DocType"
@@ -46976,7 +47046,7 @@ msgstr ""
msgid "Select Items based on Delivery Date"
msgstr ""
-#: erpnext/public/js/controllers/transaction.js:2403
+#: erpnext/public/js/controllers/transaction.js:2405
msgid "Select Items for Quality Inspection"
msgstr ""
@@ -47087,7 +47157,7 @@ msgstr ""
msgid "Select a company"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:942
+#: erpnext/stock/doctype/item/item.js:971
msgid "Select an Item Group."
msgstr ""
@@ -47103,11 +47173,11 @@ msgstr ""
msgid "Select an item from each set to be used in the Sales Order."
msgstr ""
-#: erpnext/stock/doctype/item/item.js:620
+#: erpnext/stock/doctype/item/item.js:649
msgid "Select at least one value from each of the attributes."
msgstr ""
-#: erpnext/public/js/utils/party.js:352
+#: erpnext/public/js/utils/party.js:356
msgid "Select company first"
msgstr ""
@@ -47489,7 +47559,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:2380
+#: erpnext/public/js/controllers/transaction.js:2382
#: 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
@@ -48089,12 +48159,12 @@ msgid "Service Stop Date"
msgstr ""
#: erpnext/accounts/deferred_revenue.py:44
-#: erpnext/public/js/controllers/transaction.js:1423
+#: erpnext/public/js/controllers/transaction.js:1420
msgid "Service Stop Date cannot be after Service End Date"
msgstr ""
#: erpnext/accounts/deferred_revenue.py:41
-#: erpnext/public/js/controllers/transaction.js:1420
+#: erpnext/public/js/controllers/transaction.js:1417
msgid "Service Stop Date cannot be before Service Start Date"
msgstr ""
@@ -48608,6 +48678,8 @@ msgstr ""
#. Label of the shipping_address (Text Editor) field in DocType 'POS Invoice'
#. Label of the shipping_address_display (Text Editor) field in DocType
#. 'Purchase Invoice'
+#. Label of the company_shipping_address_section (Section Break) field in
+#. DocType 'Purchase Invoice'
#. Label of the shipping_address (Text Editor) field in DocType 'Sales Invoice'
#. Label of the shipping_address_section (Section Break) field in DocType
#. 'Sales Invoice'
@@ -48630,6 +48702,8 @@ msgstr ""
#. 'Delivery Note'
#. Label of the shipping_address_display (Text Editor) field in DocType
#. 'Purchase Receipt'
+#. Label of the section_break_98 (Section Break) field in DocType 'Purchase
+#. Receipt'
#. Label of the shipping_address_display (Text Editor) field in DocType
#. 'Subcontracting Receipt'
#: erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -48975,7 +49049,7 @@ msgstr ""
msgid "Show Variant Attributes"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:109
+#: erpnext/stock/doctype/item/item.js:138
msgid "Show Variants"
msgstr ""
@@ -49114,7 +49188,7 @@ msgstr ""
msgid "Single Transaction Threshold"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:134
+#: erpnext/stock/doctype/item/item.js:163
msgid "Single Variant"
msgstr ""
@@ -49323,7 +49397,7 @@ msgstr ""
#: erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.py:126
#: erpnext/stock/dashboard/item_dashboard.js:224
#: erpnext/stock/doctype/material_request_item/material_request_item.json
-#: erpnext/stock/doctype/stock_entry/stock_entry.js:640
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:641
#: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
msgid "Source Warehouse"
msgstr ""
@@ -49347,7 +49421,7 @@ msgstr ""
msgid "Source and Target Location cannot be same"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:597
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:609
msgid "Source and target warehouse cannot be same for row {0}"
msgstr ""
@@ -49360,8 +49434,8 @@ msgstr ""
msgid "Source of Funds (Liabilities)"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:574
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:591
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:586
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:603
msgid "Source warehouse is mandatory for row {0}"
msgstr ""
@@ -49508,7 +49582,7 @@ msgid "Stale Days should start from 1."
msgstr ""
#: erpnext/setup/setup_wizard/operations/defaults_setup.py:69
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:457
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:455
msgid "Standard Buying"
msgstr ""
@@ -49521,8 +49595,8 @@ msgid "Standard Rated Expenses"
msgstr ""
#: erpnext/setup/setup_wizard/operations/defaults_setup.py:69
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:465
-#: erpnext/stock/doctype/item/item.py:243
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:463
+#: erpnext/stock/doctype/item/item.py:245
msgid "Standard Selling"
msgstr ""
@@ -49994,7 +50068,7 @@ msgstr ""
msgid "Status must be one of {0}"
msgstr ""
-#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:296
+#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:297
msgid "Status set to rejected as there are one or more rejected readings."
msgstr ""
@@ -50022,8 +50096,8 @@ msgstr ""
#: erpnext/accounts/doctype/account/account.json
#: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:50
#: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:73
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1328
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1362
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1330
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1364
#: erpnext/accounts/report/account_balance/account_balance.js:58
msgid "Stock Adjustment"
msgstr ""
@@ -50065,7 +50139,7 @@ msgstr ""
#. Label of a Link in the Stock Workspace
#. Label of a shortcut in the Stock Workspace
#: erpnext/selling/doctype/quotation_item/quotation_item.json
-#: erpnext/stock/doctype/item/item.js:61
+#: erpnext/stock/doctype/item/item.js:90
#: erpnext/stock/doctype/warehouse/warehouse.js:61
#: erpnext/stock/report/stock_balance/stock_balance.json
#: erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py:107
@@ -50131,7 +50205,7 @@ msgstr ""
msgid "Stock Details"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:691
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:703
msgid "Stock Entries already created for Work Order {0}: {1}"
msgstr ""
@@ -50184,11 +50258,11 @@ msgstr ""
msgid "Stock Entry {0} created"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1307
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1313
msgid "Stock Entry {0} has created"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1248
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1257
msgid "Stock Entry {0} is not submitted"
msgstr ""
@@ -50219,7 +50293,7 @@ msgstr ""
#. Label of a shortcut in the Stock Workspace
#: erpnext/public/js/controllers/stock_controller.js:66
#: erpnext/public/js/utils/ledger_preview.js:37
-#: erpnext/stock/doctype/item/item.js:71
+#: erpnext/stock/doctype/item/item.js:100
#: erpnext/stock/doctype/item/item_dashboard.py:8
#: erpnext/stock/report/stock_ledger/stock_ledger.json
#: erpnext/stock/workspace/stock/stock.json
@@ -50255,7 +50329,7 @@ msgid "Stock Ledger Variance"
msgstr ""
#: erpnext/stock/doctype/batch/batch.js:68
-#: erpnext/stock/doctype/item/item.js:470
+#: erpnext/stock/doctype/item/item.js:499
msgid "Stock Levels"
msgstr ""
@@ -50321,7 +50395,7 @@ msgstr ""
#. Name of a report
#. Label of a Link in the Stock Workspace
-#: erpnext/stock/doctype/item/item.js:81
+#: erpnext/stock/doctype/item/item.js:110
#: erpnext/stock/report/stock_projected_qty/stock_projected_qty.json
#: erpnext/stock/workspace/stock/stock.json
msgid "Stock Projected Qty"
@@ -50363,7 +50437,7 @@ msgstr ""
#. Option for the 'Purpose' (Select) field in DocType 'Stock Reconciliation'
#. Label of a Link in the Stock Workspace
#: erpnext/setup/workspace/home/home.json
-#: erpnext/stock/doctype/item/item.py:610
+#: erpnext/stock/doctype/item/item.py:612
#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json
#: erpnext/stock/workspace/stock/stock.json
msgid "Stock Reconciliation"
@@ -50374,7 +50448,7 @@ msgstr ""
msgid "Stock Reconciliation Item"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:610
+#: erpnext/stock/doctype/item/item.py:612
msgid "Stock Reconciliations"
msgstr ""
@@ -50405,13 +50479,13 @@ msgstr ""
#: erpnext/stock/doctype/stock_entry/stock_entry_dashboard.py:25
#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:664
#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:567
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1114
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1217
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1230
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1244
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1258
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1272
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1289
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1115
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1218
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1231
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1245
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1259
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1273
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1290
#: erpnext/stock/doctype/stock_settings/stock_settings.json
#: erpnext/stock/doctype/stock_settings/stock_settings.py:171
#: erpnext/stock/doctype/stock_settings/stock_settings.py:183
@@ -50420,12 +50494,12 @@ msgstr ""
msgid "Stock Reservation"
msgstr ""
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1398
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1399
msgid "Stock Reservation Entries Cancelled"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1535
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1350
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1540
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1351
msgid "Stock Reservation Entries Created"
msgstr ""
@@ -50534,6 +50608,7 @@ msgstr ""
#. Label of the stock_uom (Link) field in DocType 'Stock Closing Balance'
#. Label of the stock_uom (Link) field in DocType 'Stock Entry Detail'
#. Label of the stock_uom (Link) field in DocType 'Stock Ledger Entry'
+#. Label of the stock_uom (Link) field in DocType 'Stock Reconciliation Item'
#. Label of the stock_uom (Link) field in DocType 'Stock Reservation Entry'
#. Label of the stock_uom (Link) field in DocType 'Subcontracting Order Item'
#. Label of the stock_uom (Link) field in DocType 'Subcontracting Receipt Item'
@@ -50547,7 +50622,7 @@ msgstr ""
#: erpnext/buying/doctype/request_for_quotation_item/request_for_quotation_item.json
#: erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json
#: erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:213
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:228
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:208
#: erpnext/manufacturing/doctype/bom_creator_item/bom_creator_item.json
#: erpnext/manufacturing/doctype/bom_explosion_item/bom_explosion_item.json
#: erpnext/manufacturing/doctype/bom_item/bom_item.json
@@ -50567,6 +50642,7 @@ msgstr ""
#: erpnext/stock/doctype/stock_closing_balance/stock_closing_balance.json
#: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
#: erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json
+#: erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json
#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json
#: erpnext/stock/report/available_serial_no/available_serial_no.py:154
#: erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py:35
@@ -50685,11 +50761,11 @@ msgstr ""
msgid "Stock cannot be reserved in group warehouse {0}."
msgstr ""
-#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1162
+#: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1163
msgid "Stock cannot be reserved in the group warehouse {0}."
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:724
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:726
msgid "Stock cannot be updated against Purchase Receipt {0}"
msgstr ""
@@ -50790,8 +50866,8 @@ msgstr ""
#: erpnext/setup/doctype/company/company.py:287
#: erpnext/setup/setup_wizard/operations/defaults_setup.py:33
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:504
-#: erpnext/stock/doctype/item/item.py:280
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:502
+#: erpnext/stock/doctype/item/item.py:282
msgid "Stores"
msgstr ""
@@ -51007,7 +51083,7 @@ msgstr ""
msgid "Subcontracting Order Supplied Item"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:908
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:910
msgid "Subcontracting Order {0} created."
msgstr ""
@@ -51088,7 +51164,7 @@ msgstr ""
msgid "Submit"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:904
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:906
#: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:808
msgid "Submit Action Failed"
msgstr ""
@@ -51323,7 +51399,7 @@ msgstr ""
msgid "Successfully Set Supplier"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:337
+#: erpnext/stock/doctype/item/item.py:339
msgid "Successfully changed Stock UOM, please redefine conversion factors for new UOM."
msgstr ""
@@ -51533,7 +51609,7 @@ msgstr ""
#: erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js:15
#: erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.py:30
#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:51
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:195
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:189
#: erpnext/buying/workspace/buying/buying.json
#: erpnext/crm/doctype/contract/contract.json
#: erpnext/manufacturing/doctype/blanket_order/blanket_order.json
@@ -51676,7 +51752,7 @@ msgstr ""
msgid "Supplier Invoice Date"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1727
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1729
msgid "Supplier Invoice Date cannot be greater than Posting Date"
msgstr ""
@@ -51691,7 +51767,7 @@ msgstr ""
msgid "Supplier Invoice No"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1754
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1756
msgid "Supplier Invoice No exists in Purchase Invoice {0}"
msgstr ""
@@ -51802,7 +51878,7 @@ msgstr ""
#: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
#: erpnext/buying/doctype/supplier_quotation/supplier_quotation.py:214
#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:60
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:256
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:250
#: erpnext/buying/workspace/buying/buying.json
#: erpnext/crm/doctype/opportunity/opportunity.js:81
#: erpnext/selling/doctype/quotation/quotation.json
@@ -51952,7 +52028,7 @@ msgstr ""
#. Name of a Workspace
#: erpnext/selling/doctype/customer/customer_dashboard.py:23
#: erpnext/setup/doctype/company/company_dashboard.py:24
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:283
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:281
#: erpnext/support/workspace/support/support.json
msgid "Support"
msgstr ""
@@ -52222,7 +52298,7 @@ msgstr ""
msgid "TDS Computation Summary"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1511
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1513
msgid "TDS Deducted"
msgstr ""
@@ -52429,7 +52505,7 @@ msgstr ""
#: erpnext/stock/dashboard/item_dashboard.js:231
#: 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:646
+#: erpnext/stock/doctype/stock_entry/stock_entry.js:647
#: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
msgid "Target Warehouse"
msgstr ""
@@ -52457,8 +52533,8 @@ msgstr ""
msgid "Target Warehouse is set for some items but the customer is not an internal customer."
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:580
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:587
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:592
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:599
msgid "Target warehouse is mandatory for row {0}"
msgstr ""
@@ -52618,7 +52694,7 @@ msgstr ""
#: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:23
#: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:35
-#: erpnext/setup/setup_wizard/operations/taxes_setup.py:257
+#: erpnext/setup/setup_wizard/operations/taxes_setup.py:256
msgid "Tax Assets"
msgstr ""
@@ -52692,7 +52768,7 @@ msgstr ""
msgid "Tax Category"
msgstr ""
-#: erpnext/controllers/buying_controller.py:171
+#: erpnext/controllers/buying_controller.py:194
msgid "Tax Category has been changed to \"Total\" because all the Items are non-stock items"
msgstr ""
@@ -53037,7 +53113,7 @@ msgstr ""
msgid "Taxes and Charges Deducted (Company Currency)"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:350
+#: erpnext/stock/doctype/item/item.py:352
msgid "Taxes row #{0}: {1} cannot be smaller than {2}"
msgstr ""
@@ -53455,7 +53531,7 @@ msgstr ""
msgid "The Loyalty Program isn't valid for the selected company"
msgstr ""
-#: erpnext/accounts/doctype/payment_request/payment_request.py:956
+#: erpnext/accounts/doctype/payment_request/payment_request.py:961
msgid "The Payment Request {0} is already paid, cannot process payment twice"
msgstr ""
@@ -53467,7 +53543,7 @@ msgstr ""
msgid "The Pick List having Stock Reservation Entries cannot be updated. If you need to make changes, we recommend canceling the existing Stock Reservation Entries before updating the Pick List."
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:2069
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:2081
msgid "The Process Loss Qty has reset as per job cards Process Loss Qty"
msgstr ""
@@ -53483,7 +53559,7 @@ msgstr ""
msgid "The Serial No {0} is reserved against the {1} {2} and cannot be used for any other transaction."
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1402
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1414
msgid "The Serial and Batch Bundle {0} is not valid for this transaction. The 'Type of Transaction' should be 'Outward' instead of 'Inward' in Serial and Batch Bundle {0}"
msgstr ""
@@ -53491,7 +53567,7 @@ msgstr ""
msgid "The Stock Entry of type 'Manufacture' is known as backflush. Raw materials being consumed to manufacture finished goods is known as backflushing.
When creating Manufacture Entry, raw-material items are backflushed based on BOM of production item. If you want raw-material items to be backflushed based on Material Transfer entry made against that Work Order instead, then you can set it under this field."
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1798
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1810
msgid "The Work Order is mandatory for Disassembly Order"
msgstr ""
@@ -53501,7 +53577,7 @@ 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:857
+#: erpnext/accounts/doctype/payment_request/payment_request.py:862
msgid "The allocated amount is greater than the outstanding amount of Payment Request {0}"
msgstr ""
@@ -53562,7 +53638,7 @@ msgstr ""
msgid "The following batches are expired, please restock them:
{0}"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:847
+#: erpnext/stock/doctype/item/item.py:849
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 ""
@@ -53587,15 +53663,15 @@ msgstr ""
msgid "The holiday on {0} is not between From Date and To Date"
msgstr ""
-#: erpnext/controllers/buying_controller.py:1031
+#: erpnext/controllers/buying_controller.py:1055
msgid "The item {item} is not marked as {type_of} item. You can enable it as {type_of} item from its Item master."
msgstr ""
-#: erpnext/stock/doctype/item/item.py:612
+#: erpnext/stock/doctype/item/item.py:614
msgid "The items {0} and {1} are present in the following {2} :"
msgstr ""
-#: erpnext/controllers/buying_controller.py:1024
+#: erpnext/controllers/buying_controller.py:1048
msgid "The items {items} are not marked as {type_of} item. You can enable them as {type_of} item from their Item masters."
msgstr ""
@@ -53735,11 +53811,11 @@ msgstr ""
msgid "The task has been enqueued as a background job."
msgstr ""
-#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:946
+#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:952
msgid "The task has been enqueued as a background job. In case there is any issue on processing in background, the system will add a comment about the error on this Stock Reconciliation and revert to the Draft stage"
msgstr ""
-#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:957
+#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:963
msgid "The task has been enqueued as a background job. In case there is any issue on processing in background, the system will add a comment about the error on this Stock Reconciliation and revert to the Submitted stage"
msgstr ""
@@ -53785,7 +53861,7 @@ 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:754
+#: erpnext/manufacturing/doctype/job_card/job_card.py:760
msgid "The {0} ({1}) must be equal to {2} ({3})"
msgstr ""
@@ -53793,7 +53869,7 @@ msgstr ""
msgid "The {0} {1} created successfully"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:860
+#: erpnext/manufacturing/doctype/job_card/job_card.py:866
msgid "The {0} {1} is used to calculate the valuation cost for the finished good {2}."
msgstr ""
@@ -53821,11 +53897,7 @@ msgstr ""
msgid "There are no slots available on this date"
msgstr ""
-#: erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py:280
-msgid "There are only {0} asset created or linked to {1}. Please create or link {2} Assets with respective document."
-msgstr ""
-
-#: erpnext/stock/doctype/item/item.js:966
+#: erpnext/stock/doctype/item/item.js:995
msgid "There are two options to maintain valuation of stock. FIFO (first in - first out) and Moving Average. To understand this topic in detail please visit Item Valuation, FIFO and Moving Average."
msgstr ""
@@ -53837,7 +53909,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:561
+#: erpnext/accounts/party.py:580
msgid "There can only be 1 Account per Company in {0} {1}"
msgstr ""
@@ -53857,7 +53929,7 @@ msgstr ""
msgid "There is no batch found against the {0}: {1}"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:1343
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:1355
msgid "There must be atleast 1 Finished Good in this Stock Entry"
msgstr ""
@@ -53896,11 +53968,11 @@ msgstr ""
msgid "This Account has '0' balance in either Base Currency or Account Currency"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:102
+#: erpnext/stock/doctype/item/item.js:131
msgid "This Item is a Template and cannot be used in transactions. Item attributes will be copied over into the variants unless 'No Copy' is set"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:161
+#: erpnext/stock/doctype/item/item.js:190
msgid "This Item is a Variant of {0} (Template)."
msgstr ""
@@ -53908,7 +53980,7 @@ msgstr ""
msgid "This Month's Summary"
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:917
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:919
msgid "This PO has been fully subcontracted."
msgstr ""
@@ -54023,7 +54095,7 @@ msgstr ""
msgid "This is considered dangerous from accounting point of view."
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:528
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:530
msgid "This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice"
msgstr ""
@@ -54031,7 +54103,7 @@ msgstr ""
msgid "This is enabled by default. If you want to plan materials for sub-assemblies of the Item you're manufacturing leave this enabled. If you plan and manufacture the sub-assemblies separately, you can disable this checkbox."
msgstr ""
-#: erpnext/stock/doctype/item/item.js:954
+#: erpnext/stock/doctype/item/item.js:983
msgid "This is for raw material Items that'll be used to create finished goods. If the Item is an additional service like 'washing' that'll be used in the BOM, keep this unchecked."
msgstr ""
@@ -54337,7 +54409,7 @@ msgstr ""
#. Label of the timesheet_sb (Section Break) field in DocType 'Projects
#. Settings'
#: erpnext/projects/doctype/projects_settings/projects_settings.json
-#: erpnext/projects/doctype/timesheet/timesheet.py:544
+#: erpnext/projects/doctype/timesheet/timesheet.py:555
#: erpnext/templates/pages/projects.html:60
msgid "Timesheets"
msgstr ""
@@ -54845,7 +54917,7 @@ msgstr ""
msgid "To include tax in row {0} in Item rate, taxes in rows {1} must also be included"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:634
+#: erpnext/stock/doctype/item/item.py:636
msgid "To merge, following properties must be same for both items"
msgstr ""
@@ -54857,11 +54929,11 @@ msgstr ""
msgid "To still proceed with editing this Attribute Value, enable {0} in Item Variant Settings."
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:618
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:620
msgid "To submit the invoice without purchase order please set {0} as {1} in {2}"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:639
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:641
msgid "To submit the invoice without purchase receipt please set {0} as {1} in {2}"
msgstr ""
@@ -55197,7 +55269,7 @@ 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:750
+#: erpnext/manufacturing/doctype/job_card/job_card.py:756
#: erpnext/manufacturing/report/job_card_summary/job_card_summary.py:174
msgid "Total Completed Qty"
msgstr ""
@@ -55245,7 +55317,7 @@ msgstr ""
msgid "Total Credit"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:261
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:270
msgid "Total Credit/ Debit Amount should be same as linked Journal Entry"
msgstr ""
@@ -55254,7 +55326,7 @@ msgstr ""
msgid "Total Debit"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:891
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:900
msgid "Total Debit must be equal to Total Credit. The difference is {0}"
msgstr ""
@@ -56404,7 +56476,7 @@ msgstr ""
#: erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json
#: erpnext/buying/report/item_wise_purchase_history/item_wise_purchase_history.py:58
#: erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:207
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:210
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:204
#: erpnext/crm/doctype/opportunity_item/opportunity_item.json
#: erpnext/manufacturing/doctype/bom_creator/bom_creator.json
#: erpnext/manufacturing/doctype/bom_creator_item/bom_creator_item.json
@@ -56507,7 +56579,7 @@ msgstr ""
msgid "UOM Name"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:3103
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:3115
msgid "UOM conversion factor required for UOM: {0} in Item: {1}"
msgstr ""
@@ -56641,7 +56713,7 @@ msgstr ""
msgid "Unit of Measure (UOM)"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:382
+#: erpnext/stock/doctype/item/item.py:384
msgid "Unit of Measure {0} has been entered more than once in Conversion Factor Table"
msgstr ""
@@ -57079,7 +57151,7 @@ msgstr ""
msgid "Updated via 'Time Log' (In Minutes)"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:1380
+#: erpnext/stock/doctype/item/item.py:1387
msgid "Updating Variants..."
msgstr ""
@@ -57107,8 +57179,8 @@ msgstr ""
msgid "Upon submission of the Sales Order, Work Order, or Production Plan, the system will automatically reserve the stock."
msgstr ""
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:296
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:404
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:294
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:402
msgid "Upper Income"
msgstr ""
@@ -57451,7 +57523,7 @@ msgstr ""
#. Label of the valid_till (Date) field in DocType 'Supplier Quotation'
#. Label of the valid_till (Date) field in DocType 'Quotation'
#: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
-#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:261
+#: erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:255
#: erpnext/selling/doctype/quotation/quotation.json
#: erpnext/templates/pages/order.html:59
msgid "Valid Till"
@@ -57639,7 +57711,7 @@ msgstr ""
msgid "Valuation Rate for the Item {0}, is required to do accounting entries for {1} {2}."
msgstr ""
-#: erpnext/stock/doctype/item/item.py:264
+#: erpnext/stock/doctype/item/item.py:266
msgid "Valuation Rate is mandatory if Opening Stock entered"
msgstr ""
@@ -57653,7 +57725,7 @@ msgstr ""
msgid "Valuation and Total"
msgstr ""
-#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:923
+#: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py:929
msgid "Valuation rate for customer provided items has been set to zero."
msgstr ""
@@ -57740,7 +57812,7 @@ msgid "Value Or Qty"
msgstr ""
#: erpnext/setup/setup_wizard/data/sales_stage.txt:4
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:416
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:414
msgid "Value Proposition"
msgstr ""
@@ -57814,13 +57886,13 @@ msgstr ""
msgid "Variance ({})"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:149
+#: erpnext/stock/doctype/item/item.js:178
#: erpnext/stock/doctype/item/item_list.js:22
#: erpnext/stock/report/item_variant_details/item_variant_details.py:74
msgid "Variant"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:862
+#: erpnext/stock/doctype/item/item.py:864
msgid "Variant Attribute Error"
msgstr ""
@@ -57839,11 +57911,11 @@ msgstr ""
msgid "Variant Based On"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:890
+#: erpnext/stock/doctype/item/item.py:892
msgid "Variant Based On cannot be changed"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:125
+#: erpnext/stock/doctype/item/item.js:154
msgid "Variant Details Report"
msgstr ""
@@ -57857,7 +57929,7 @@ msgstr ""
msgid "Variant Item"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:860
+#: erpnext/stock/doctype/item/item.py:862
msgid "Variant Items"
msgstr ""
@@ -57868,7 +57940,7 @@ msgstr ""
msgid "Variant Of"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:644
+#: erpnext/stock/doctype/item/item.js:673
msgid "Variant creation has been queued."
msgstr ""
@@ -57994,10 +58066,11 @@ msgstr ""
#: erpnext/setup/doctype/company/company.js:120
#: erpnext/setup/doctype/company/company.js:132
#: erpnext/stock/doctype/delivery_trip/delivery_trip.js:84
-#: erpnext/stock/doctype/item/item.js:68 erpnext/stock/doctype/item/item.js:78
-#: erpnext/stock/doctype/item/item.js:88 erpnext/stock/doctype/item/item.js:113
-#: erpnext/stock/doctype/item/item.js:121
-#: erpnext/stock/doctype/item/item.js:129
+#: erpnext/stock/doctype/item/item.js:97 erpnext/stock/doctype/item/item.js:107
+#: erpnext/stock/doctype/item/item.js:117
+#: erpnext/stock/doctype/item/item.js:142
+#: erpnext/stock/doctype/item/item.js:150
+#: erpnext/stock/doctype/item/item.js:158
#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:228
#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:239
#: erpnext/stock/doctype/stock_entry/stock_entry.js:295
@@ -58728,7 +58801,7 @@ msgstr ""
msgid "Warning!"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1254
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1263
msgid "Warning: Another {0} # {1} exists against stock entry {2}"
msgstr ""
@@ -59080,7 +59153,7 @@ msgstr ""
msgid "When a parent warehouse is chosen, the system conducts stock checks against the associated child warehouses"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:973
+#: erpnext/stock/doctype/item/item.js:1002
msgid "When creating an Item, entering a value for this field will automatically create an Item Price at the backend."
msgstr ""
@@ -59269,8 +59342,8 @@ msgstr ""
msgid "Work Order cannot be raised against a Item Template"
msgstr ""
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1846
-#: erpnext/manufacturing/doctype/work_order/work_order.py:1924
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1851
+#: erpnext/manufacturing/doctype/work_order/work_order.py:1929
msgid "Work Order has been {0}"
msgstr ""
@@ -59278,7 +59351,7 @@ msgstr ""
msgid "Work Order not created"
msgstr ""
-#: erpnext/stock/doctype/stock_entry/stock_entry.py:641
+#: erpnext/stock/doctype/stock_entry/stock_entry.py:653
msgid "Work Order {0}: Job Card not found for the operation {1}"
msgstr ""
@@ -59718,7 +59791,7 @@ msgstr ""
msgid "You can change the parent account to a Balance Sheet account or select a different account."
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:667
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:676
msgid "You can not enter current voucher in 'Against Journal Entry' column"
msgstr ""
@@ -59743,7 +59816,7 @@ msgstr ""
msgid "You can set it as a machine name or operation type. For example, stiching machine 12"
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1160
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1166
msgid "You can't make any changes to Job Card since Work Order is closed."
msgstr ""
@@ -59771,7 +59844,7 @@ msgstr ""
msgid "You cannot create/amend any accounting entries till this date."
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:900
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:909
msgid "You cannot credit and debit same account at the same time"
msgstr ""
@@ -59835,7 +59908,7 @@ msgstr ""
msgid "You have entered a duplicate Delivery Note on Row"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:1056
+#: erpnext/stock/doctype/item/item.py:1063
msgid "You have to enable auto re-order in Stock Settings to maintain re-order levels."
msgstr ""
@@ -59883,7 +59956,7 @@ msgid "Your email has been verified and your appointment has been scheduled"
msgstr ""
#: erpnext/patches/v11_0/add_default_dispatch_notification_template.py:22
-#: erpnext/setup/setup_wizard/operations/install_fixtures.py:318
+#: erpnext/setup/setup_wizard/operations/install_fixtures.py:316
msgid "Your order is out for delivery!"
msgstr ""
@@ -59973,7 +60046,7 @@ msgstr ""
msgid "cannot be greater than 100"
msgstr ""
-#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:328
+#: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:330
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1027
msgid "dated {0}"
msgstr ""
@@ -60238,7 +60311,7 @@ msgstr ""
msgid "to"
msgstr ""
-#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2864
+#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2867
msgid "to unallocate the amount of this Return Invoice before cancelling it."
msgstr ""
@@ -60280,7 +60353,7 @@ msgstr ""
msgid "{0} ({1}) cannot be greater than planned quantity ({2}) in Work Order {3}"
msgstr ""
-#: erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py:288
+#: erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py:294
msgid "{0} {1} has submitted Assets. Remove Item {2} from table to continue."
msgstr ""
@@ -60316,7 +60389,7 @@ msgstr ""
msgid "{0} Request for {1}"
msgstr ""
-#: erpnext/stock/doctype/item/item.py:321
+#: erpnext/stock/doctype/item/item.py:323
msgid "{0} Retain Sample is based on batch, please check Has Batch No to retain sample of item"
msgstr ""
@@ -60328,23 +60401,23 @@ msgstr ""
msgid "{0} account is not of type {1}"
msgstr ""
-#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:493
+#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:495
msgid "{0} account not found while submitting purchase receipt"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1020
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1029
msgid "{0} against Bill {1} dated {2}"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1029
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1038
msgid "{0} against Purchase Order {1}"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:996
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1005
msgid "{0} against Sales Invoice {1}"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1003
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:1012
msgid "{0} against Sales Order {1}"
msgstr ""
@@ -60390,7 +60463,7 @@ msgstr ""
msgid "{0} currency must be same as company's default currency. Please select another account."
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:311
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:313
msgid "{0} currently has a {1} Supplier Scorecard standing, and Purchase Orders to this supplier should be issued with caution."
msgstr ""
@@ -60407,7 +60480,7 @@ msgid "{0} entered twice in Item Tax"
msgstr ""
#: erpnext/setup/doctype/item_group/item_group.py:48
-#: erpnext/stock/doctype/item/item.py:434
+#: erpnext/stock/doctype/item/item.py:436
msgid "{0} entered twice {1} in Item Taxes"
msgstr ""
@@ -60512,7 +60585,7 @@ msgstr ""
msgid "{0} is not the default supplier for any items."
msgstr ""
-#: erpnext/accounts/doctype/payment_entry/payment_entry.py:3049
+#: erpnext/accounts/doctype/payment_entry/payment_entry.py:3048
msgid "{0} is on hold till {1}"
msgstr ""
@@ -60555,7 +60628,7 @@ msgstr ""
msgid "{0} payment entries can not be filtered by {1}"
msgstr ""
-#: erpnext/controllers/stock_controller.py:1326
+#: erpnext/controllers/stock_controller.py:1337
msgid "{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}."
msgstr ""
@@ -60600,7 +60673,7 @@ msgstr ""
msgid "{0} valid serial nos for Item {1}"
msgstr ""
-#: erpnext/stock/doctype/item/item.js:649
+#: erpnext/stock/doctype/item/item.js:678
msgid "{0} variants created."
msgstr ""
@@ -60608,7 +60681,7 @@ msgstr ""
msgid "{0} will be given as discount."
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:869
+#: erpnext/manufacturing/doctype/job_card/job_card.py:875
msgid "{0} {1}"
msgstr ""
@@ -60634,7 +60707,7 @@ msgstr ""
msgid "{0} {1} does not exist"
msgstr ""
-#: erpnext/accounts/party.py:541
+#: erpnext/accounts/party.py:560
msgid "{0} {1} has accounting entries in currency {2} for company {3}. Please select a receivable or payable account with currency {2}."
msgstr ""
@@ -60646,7 +60719,7 @@ msgstr ""
msgid "{0} {1} has already been partly paid. Please use the 'Get Outstanding Invoice' or the 'Get Outstanding Orders' button to get the latest outstanding amounts."
msgstr ""
-#: erpnext/buying/doctype/purchase_order/purchase_order.py:451
+#: erpnext/buying/doctype/purchase_order/purchase_order.py:453
#: erpnext/selling/doctype/sales_order/sales_order.py:510
#: erpnext/stock/doctype/material_request/material_request.py:225
msgid "{0} {1} has been modified. Please refresh."
@@ -60681,23 +60754,23 @@ msgstr ""
msgid "{0} {1} is cancelled so the action cannot be completed"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:815
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:824
msgid "{0} {1} is closed"
msgstr ""
-#: erpnext/accounts/party.py:780
+#: erpnext/accounts/party.py:799
msgid "{0} {1} is disabled"
msgstr ""
-#: erpnext/accounts/party.py:786
+#: erpnext/accounts/party.py:805
msgid "{0} {1} is frozen"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:812
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:821
msgid "{0} {1} is fully billed"
msgstr ""
-#: erpnext/accounts/party.py:790
+#: erpnext/accounts/party.py:809
msgid "{0} {1} is not active"
msgstr ""
@@ -60709,8 +60782,8 @@ msgstr ""
msgid "{0} {1} is not in any active Fiscal Year"
msgstr ""
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:809
-#: erpnext/accounts/doctype/journal_entry/journal_entry.py:848
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:818
+#: erpnext/accounts/doctype/journal_entry/journal_entry.py:857
msgid "{0} {1} is not submitted"
msgstr ""
@@ -60806,8 +60879,8 @@ msgstr ""
msgid "{0}'s {1} cannot be after {2}'s Expected End Date."
msgstr ""
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1134
-#: erpnext/manufacturing/doctype/job_card/job_card.py:1142
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1140
+#: erpnext/manufacturing/doctype/job_card/job_card.py:1148
msgid "{0}, complete the operation {1} before the operation {2}."
msgstr ""
@@ -60815,7 +60888,7 @@ msgstr ""
msgid "{0}: {1} does not belong to the Company: {2}"
msgstr ""
-#: erpnext/accounts/party.py:79
+#: erpnext/accounts/party.py:80
msgid "{0}: {1} does not exists"
msgstr ""
@@ -60823,23 +60896,23 @@ msgstr ""
msgid "{0}: {1} must be less than {2}"
msgstr ""
-#: erpnext/controllers/buying_controller.py:805
+#: erpnext/controllers/buying_controller.py:829
msgid "{count} Assets created for {item_code}"
msgstr ""
-#: erpnext/controllers/buying_controller.py:709
+#: erpnext/controllers/buying_controller.py:733
msgid "{doctype} {name} is cancelled or closed."
msgstr ""
-#: erpnext/controllers/buying_controller.py:435
+#: erpnext/controllers/buying_controller.py:459
msgid "{field_label} is mandatory for sub-contracted {doctype}."
msgstr ""
-#: erpnext/controllers/stock_controller.py:1609
+#: erpnext/controllers/stock_controller.py:1620
msgid "{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity})"
msgstr ""
-#: erpnext/controllers/buying_controller.py:539
+#: erpnext/controllers/buying_controller.py:563
msgid "{ref_doctype} {ref_name} is {status}."
msgstr ""
@@ -60905,7 +60978,7 @@ msgstr ""
msgid "{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {}"
msgstr ""
-#: erpnext/controllers/buying_controller.py:199
+#: erpnext/controllers/buying_controller.py:222
msgid "{} has submitted assets linked to it. You need to cancel the assets to create purchase return."
msgstr ""
diff --git a/erpnext/locale/pt_BR.po b/erpnext/locale/pt_BR.po
index ef5ac448116..b22334b3a02 100644
--- a/erpnext/locale/pt_BR.po
+++ b/erpnext/locale/pt_BR.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: hello@frappe.io\n"
"POT-Creation-Date: 2025-04-27 09:35+0000\n"
-"PO-Revision-Date: 2025-04-28 06:21\n"
+"PO-Revision-Date: 2025-04-29 06:31\n"
"Last-Translator: hello@frappe.io\n"
"Language-Team: Portuguese, Brazilian\n"
"MIME-Version: 1.0\n"
@@ -44133,7 +44133,7 @@ msgstr "Revisão e Ação"
#: erpnext/quality_management/doctype/quality_procedure/quality_procedure.json
#: erpnext/quality_management/doctype/quality_review/quality_review.json
msgid "Reviews"
-msgstr ""
+msgstr "Rever"
#. Label of the rgt (Int) field in DocType 'Account'
#. Label of the rgt (Int) field in DocType 'Company'
diff --git a/erpnext/locale/sv.po b/erpnext/locale/sv.po
index 703fba17a44..d48da841eed 100644
--- a/erpnext/locale/sv.po
+++ b/erpnext/locale/sv.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: hello@frappe.io\n"
"POT-Creation-Date: 2025-04-27 09:35+0000\n"
-"PO-Revision-Date: 2025-04-28 06:21\n"
+"PO-Revision-Date: 2025-04-30 07:12\n"
"Last-Translator: hello@frappe.io\n"
"Language-Team: Swedish\n"
"MIME-Version: 1.0\n"
@@ -12572,7 +12572,7 @@ msgstr "Resultat Enhet & Budget"
#: erpnext/public/js/utils/sales_common.js:491
msgid "Cost Center for Item rows has been updated to {0}"
-msgstr "Resultat Enhet för artikel rader har uppdaterats till {0}"
+msgstr "Resultat Enhet för artikel rader är uppdaterad till {0}"
#: erpnext/accounts/doctype/cost_center/cost_center.py:75
msgid "Cost Center is a part of Cost Center Allocation, hence cannot be converted to a group"
@@ -14976,7 +14976,7 @@ msgstr "Dagar Sedan Senaste Order"
#. Label of the days_until_due (Int) field in DocType 'Subscription'
#: erpnext/accounts/doctype/subscription/subscription.json
msgid "Days Until Due"
-msgstr "Dagar till Förfallo datum"
+msgstr "Dagar till Förfallodatum"
#. Option for the 'Generate Invoice At' (Select) field in DocType
#. 'Subscription'
@@ -24999,7 +24999,7 @@ msgstr "Ogiltig Artikel Nummer"
#: erpnext/utilities/transaction_base.py:34
msgid "Invalid Posting Time"
-msgstr "Ogiltig Bokföring Tid"
+msgstr "Ogiltig Tid"
#: erpnext/accounts/doctype/party_link/party_link.py:30
msgid "Invalid Primary Role"
@@ -35283,7 +35283,7 @@ msgstr "Betalning DocType"
#: erpnext/accounts/doctype/sales_invoice/sales_invoice.json
#: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:110
msgid "Payment Due Date"
-msgstr "Förfallodatum"
+msgstr "Förfallo Datum"
#. Label of the payment_entries (Table) field in DocType 'Bank Clearance'
#. Label of the payment_entries (Table) field in DocType 'Bank Transaction'
@@ -37826,7 +37826,7 @@ msgstr "Bokföring Datum kan inte vara i framtiden"
#: erpnext/stock/doctype/stock_closing_balance/stock_closing_balance.json
#: erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json
msgid "Posting Datetime"
-msgstr "Bokföring Datum och Tid"
+msgstr "Datum och Tid"
#. Label of the posting_time (Time) field in DocType 'Dunning'
#. Label of the posting_time (Time) field in DocType 'POS Closing Entry'
@@ -37870,15 +37870,15 @@ msgstr "Bokföring Datum och Tid"
#: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:41
#: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json
msgid "Posting Time"
-msgstr "Bokning Tid"
+msgstr "Tid"
#: erpnext/stock/doctype/stock_entry/stock_entry.py:1852
msgid "Posting date and posting time is mandatory"
-msgstr "Bokföring Datum och Tid erfordras"
+msgstr "Datum och Tid erfordras"
#: erpnext/controllers/sales_and_purchase_return.py:54
msgid "Posting timestamp must be after {0}"
-msgstr "Bokning tid måste vara efter {0}"
+msgstr "Tidsstämpel måste vara efter {0}"
#. Description of a DocType
#: erpnext/crm/doctype/opportunity/opportunity.json
diff --git a/erpnext/manufacturing/doctype/job_card/job_card.py b/erpnext/manufacturing/doctype/job_card/job_card.py
index bc8c2795b06..5efcbcc9fb5 100644
--- a/erpnext/manufacturing/doctype/job_card/job_card.py
+++ b/erpnext/manufacturing/doctype/job_card/job_card.py
@@ -740,6 +740,12 @@ class JobCard(Document):
bold("Job Card"), get_link_to_form("Job Card", self.name)
)
)
+ else:
+ for row in self.time_logs:
+ if not row.from_time or not row.to_time:
+ frappe.throw(
+ _("Row #{0}: From Time and To Time fields are required").format(row.idx),
+ )
precision = self.precision("total_completed_qty")
total_completed_qty = flt(
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py
index 8ba9afe9fc6..bddf43a9dcc 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan.py
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py
@@ -1804,6 +1804,7 @@ def get_sub_assembly_items(
continue
else:
stock_qty = stock_qty - _bin_dict.projected_qty
+ sub_assembly_items.append(d.item_code)
elif warehouse:
bin_details.setdefault(d.item_code, get_bin_details(d, company, for_warehouse=warehouse))
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index 5bbda3a0986..26318b10634 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -1397,6 +1397,8 @@ class WorkOrder(Document):
def set_reserved_qty_for_wip_and_fg(self, stock_entry):
items = frappe._dict()
+
+ stock_entry.reload()
if stock_entry.purpose == "Manufacture" and self.sales_order:
items = self.get_finished_goods_for_reservation(stock_entry)
elif stock_entry.purpose == "Material Transfer for Manufacture":
@@ -1439,7 +1441,10 @@ class WorkOrder(Document):
items = frappe._dict()
so_details = self.get_so_details()
- qty = so_details.stock_qty - so_details.stock_reserved_qty
+ if not so_details:
+ return items
+
+ qty = so_details.stock_qty - (so_details.stock_reserved_qty + so_details.delivered_qty)
if not qty:
return items
@@ -1462,6 +1467,7 @@ class WorkOrder(Document):
"from_voucher_no": stock_entry.name,
"from_voucher_type": stock_entry.doctype,
"from_voucher_detail_no": row.name,
+ "serial_and_batch_bundles": [row.serial_and_batch_bundle],
}
)
else:
@@ -1476,9 +1482,8 @@ class WorkOrder(Document):
"parent": self.sales_order,
"item_code": self.production_item,
"docstatus": 1,
- "stock_reserved_qty": 0,
},
- ["name", "stock_qty", "stock_reserved_qty"],
+ ["name", "stock_qty", "stock_reserved_qty", "delivered_qty"],
as_dict=1,
)
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index ba9e6b0ee54..56e1d54d081 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -408,3 +408,5 @@ erpnext.stock.doctype.stock_ledger_entry.patches.ensure_sle_indexes
erpnext.patches.v15_0.update_query_report
erpnext.patches.v15_0.set_purchase_receipt_row_item_to_capitalization_stock_item
erpnext.patches.v15_0.update_payment_schedule_fields_in_invoices
+erpnext.patches.v15_0.rename_group_by_to_categorize_by
+execute:frappe.db.set_single_value("Accounts Settings", "receivable_payable_fetch_method", "Buffered Cursor")
diff --git a/erpnext/patches/v15_0/rename_group_by_to_categorize_by.py b/erpnext/patches/v15_0/rename_group_by_to_categorize_by.py
new file mode 100644
index 00000000000..1490ec572f4
--- /dev/null
+++ b/erpnext/patches/v15_0/rename_group_by_to_categorize_by.py
@@ -0,0 +1,20 @@
+import frappe
+from frappe.model.utils.rename_field import rename_field
+
+
+def execute():
+ rename_field("Process Statement Of Accounts", "group_by", "categorize_by")
+
+ frappe.db.sql(
+ """
+ UPDATE
+ `tabProcess Statement Of Accounts`
+ SET
+ categorize_by = CASE
+ WHEN categorize_by = 'Group by Voucher (Consolidated)' THEN 'Categorize by Voucher (Consolidated)'
+ WHEN categorize_by = 'Group by Voucher' THEN 'Categorize by Voucher'
+ END
+ WHERE
+ categorize_by IN ('Group by Voucher (Consolidated)', 'Group by Voucher')
+ """
+ )
diff --git a/erpnext/projects/doctype/timesheet/timesheet.py b/erpnext/projects/doctype/timesheet/timesheet.py
index 050891f27d0..4b4454cf2a8 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.py
+++ b/erpnext/projects/doctype/timesheet/timesheet.py
@@ -500,7 +500,6 @@ def get_timesheets_list(doctype, txt, filters, limit_start, limit_page_length=20
user = frappe.session.user
# find customer name from contact.
customer = ""
- timesheets = []
contact = frappe.db.exists("Contact", {"user": user})
if contact:
@@ -509,31 +508,43 @@ def get_timesheets_list(doctype, txt, filters, limit_start, limit_page_length=20
customer = contact.get_link_for("Customer")
if customer:
- sales_invoices = [
- d.name for d in frappe.get_all("Sales Invoice", filters={"customer": customer})
- ] or [None]
- projects = [d.name for d in frappe.get_all("Project", filters={"customer": customer})]
- # Return timesheet related data to web portal.
- timesheets = frappe.db.sql(
- f"""
- SELECT
- ts.name, tsd.activity_type, ts.status, ts.total_billable_hours,
- COALESCE(ts.sales_invoice, tsd.sales_invoice) AS sales_invoice, tsd.project
- FROM `tabTimesheet` ts, `tabTimesheet Detail` tsd
- WHERE tsd.parent = ts.name AND
- (
- ts.sales_invoice IN %(sales_invoices)s OR
- tsd.sales_invoice IN %(sales_invoices)s OR
- tsd.project IN %(projects)s
- )
- ORDER BY `end_date` ASC
- LIMIT {limit_page_length} offset {limit_start}
- """,
- dict(sales_invoices=sales_invoices, projects=projects),
- as_dict=True,
- ) # nosec
+ sales_invoices = frappe.get_all("Sales Invoice", filters={"customer": customer}, pluck="name")
+ projects = frappe.get_all("Project", filters={"customer": customer}, pluck="name")
- return timesheets
+ # Return timesheet related data to web portal.
+ table = frappe.qb.DocType("Timesheet")
+ child_table = frappe.qb.DocType("Timesheet Detail")
+ query = (
+ frappe.qb.from_(table)
+ .join(child_table)
+ .on(table.name == child_table.parent)
+ .select(
+ table.name,
+ child_table.activity_type,
+ table.status,
+ table.total_billable_hours,
+ (table.sales_invoice | child_table.sales_invoice).as_("sales_invoice"),
+ child_table.project,
+ )
+ .orderby(table.end_date)
+ .limit(limit_page_length)
+ .offset(limit_start)
+ )
+
+ conditions = []
+ if sales_invoices:
+ conditions.extend(
+ [table.sales_invoice.isin(sales_invoices), child_table.sales_invoice.isin(sales_invoices)]
+ )
+ if projects:
+ conditions.append(child_table.project.isin(projects))
+
+ if conditions:
+ query = query.where(frappe.qb.terms.Criterion.any(conditions))
+
+ return query.run(as_dict=True)
+ else:
+ return {}
def get_list_context(context=None):
diff --git a/erpnext/setup/setup_wizard/operations/install_fixtures.py b/erpnext/setup/setup_wizard/operations/install_fixtures.py
index 84cf05f128e..7c62a425357 100644
--- a/erpnext/setup/setup_wizard/operations/install_fixtures.py
+++ b/erpnext/setup/setup_wizard/operations/install_fixtures.py
@@ -273,8 +273,6 @@ def install(country=None):
{"doctype": "Issue Priority", "name": _("Low")},
{"doctype": "Issue Priority", "name": _("Medium")},
{"doctype": "Issue Priority", "name": _("High")},
- {"doctype": "Email Account", "email_id": "sales@example.com", "append_to": "Opportunity"},
- {"doctype": "Email Account", "email_id": "support@example.com", "append_to": "Issue"},
{"doctype": "Party Type", "party_type": "Customer", "account_type": "Receivable"},
{"doctype": "Party Type", "party_type": "Supplier", "account_type": "Payable"},
{"doctype": "Party Type", "party_type": "Employee", "account_type": "Payable"},
diff --git a/erpnext/setup/setup_wizard/operations/taxes_setup.py b/erpnext/setup/setup_wizard/operations/taxes_setup.py
index f8cd61d50ea..3cc405aa658 100644
--- a/erpnext/setup/setup_wizard/operations/taxes_setup.py
+++ b/erpnext/setup/setup_wizard/operations/taxes_setup.py
@@ -214,13 +214,12 @@ def get_or_create_account(company_name, account):
default_root_type = "Liability"
root_type = account.get("root_type", default_root_type)
+ or_filters = {"account_name": account.get("account_name")}
+ if account.get("account_number"):
+ or_filters.update({"account_number": account.get("account_number")})
+
existing_accounts = frappe.get_all(
- "Account",
- filters={"company": company_name, "root_type": root_type},
- or_filters={
- "account_name": account.get("account_name"),
- "account_number": account.get("account_number"),
- },
+ "Account", filters={"company": company_name, "root_type": root_type}, or_filters=or_filters
)
if existing_accounts:
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 675d49aab22..a764a006b0c 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -7,6 +7,35 @@ const SALES_DOCTYPES = ["Quotation", "Sales Order", "Delivery Note", "Sales Invo
const PURCHASE_DOCTYPES = ["Purchase Order", "Purchase Receipt", "Purchase Invoice"];
frappe.ui.form.on("Item", {
+ valuation_method(frm) {
+ if (!frm.is_new() && frm.doc.valuation_method === "Moving Average") {
+ let stock_exists = frm.doc.__onload && frm.doc.__onload.stock_exists ? 1 : 0;
+ let current_valuation_method = frm.doc.__onload.current_valuation_method;
+
+ if (stock_exists && current_valuation_method !== frm.doc.valuation_method) {
+ let msg = __(
+ "Changing the valuation method to Moving Average will affect new transactions. If backdated entries are added, earlier FIFO-based entries will be reposted, which may change closing balances."
+ );
+ msg += "
";
+ msg += __(
+ "Also you can't switch back to FIFO after setting the valuation method to Moving Average for this item."
+ );
+ msg += "
";
+ msg += __("Do you want to change valuation method?");
+
+ frappe.confirm(
+ msg,
+ () => {
+ frm.set_value("valuation_method", "Moving Average");
+ },
+ () => {
+ frm.set_value("valuation_method", current_valuation_method);
+ }
+ );
+ }
+ }
+ },
+
setup: function (frm) {
frm.add_fetch("attribute", "numeric_values", "numeric_values");
frm.add_fetch("attribute", "from_range", "from_range");
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 25d2e5ec614..fe40f748646 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -33,6 +33,7 @@ from erpnext.controllers.item_variant import (
validate_item_variant_attributes,
)
from erpnext.stock.doctype.item_default.item_default import ItemDefault
+from erpnext.stock.utils import get_valuation_method
class DuplicateReorderRows(frappe.ValidationError):
@@ -153,6 +154,7 @@ class Item(Document):
def onload(self):
self.set_onload("stock_exists", self.stock_ledger_created())
self.set_onload("asset_naming_series", get_asset_naming_series())
+ self.set_onload("current_valuation_method", get_valuation_method(self.name))
def autoname(self):
if frappe.db.get_default("item_naming_by") == "Naming Series":
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index 61d52b1ef36..5e0663ea89d 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -7,6 +7,8 @@ from frappe.utils import add_days, cint, cstr, flt, get_datetime, getdate, nowti
from pypika import functions as fn
import erpnext
+import erpnext.controllers
+import erpnext.controllers.status_updater
from erpnext.accounts.doctype.account.test_account import get_inventory_account
from erpnext.buying.doctype.supplier.test_supplier import create_supplier
from erpnext.controllers.accounts_controller import InvalidQtyError
@@ -4178,6 +4180,59 @@ class TestPurchaseReceipt(IntegrationTestCase):
self.assertTrue(sles)
+ def test_internal_pr_qty_change_only_single_batch(self):
+ from erpnext.stock.doctype.delivery_note.delivery_note import make_inter_company_purchase_receipt
+ from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
+
+ prepare_data_for_internal_transfer()
+
+ def get_sabb_qty(sabb):
+ return frappe.get_value("Serial and Batch Bundle", sabb, "total_qty")
+
+ item = make_item("Item with only Batch", {"has_batch_no": 1})
+ item.create_new_batch = 1
+ item.save()
+
+ make_purchase_receipt(
+ item_code=item.item_code,
+ qty=10,
+ rate=100,
+ company="_Test Company with perpetual inventory",
+ warehouse="Stores - TCP1",
+ )
+
+ dn = create_delivery_note(
+ item_code=item.item_code,
+ qty=10,
+ rate=100,
+ company="_Test Company with perpetual inventory",
+ customer="_Test Internal Customer 2",
+ cost_center="Main - TCP1",
+ warehouse="Stores - TCP1",
+ target_warehouse="Work In Progress - TCP1",
+ )
+ pr = make_inter_company_purchase_receipt(dn.name)
+
+ pr.items[0].warehouse = "Stores - TCP1"
+ pr.items[0].qty = 8
+ pr.save()
+
+ # Test 1 - Check if SABB qty is changed on first save
+ self.assertEqual(abs(get_sabb_qty(pr.items[0].serial_and_batch_bundle)), 8)
+
+ pr.items[0].qty = 6
+ pr.items[0].received_qty = 6
+ pr.save()
+
+ # Test 2 - Check if SABB qty is changed when saved again
+ self.assertEqual(abs(get_sabb_qty(pr.items[0].serial_and_batch_bundle)), 6)
+
+ pr.items[0].qty = 12
+ pr.items[0].received_qty = 12
+
+ # Test 3 - OverAllowanceError should be thrown as qty is greater than qty in DN
+ self.assertRaises(erpnext.controllers.status_updater.OverAllowanceError, pr.submit)
+
def prepare_data_for_internal_transfer():
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_internal_supplier
diff --git a/erpnext/stock/doctype/quality_inspection/quality_inspection.py b/erpnext/stock/doctype/quality_inspection/quality_inspection.py
index 8aed2277de3..021b7b1cf17 100644
--- a/erpnext/stock/doctype/quality_inspection/quality_inspection.py
+++ b/erpnext/stock/doctype/quality_inspection/quality_inspection.py
@@ -203,10 +203,11 @@ class QualityInspection(Document):
self.get_item_specification_details()
def on_update(self):
- if (
- frappe.db.get_single_value("Stock Settings", "action_if_quality_inspection_is_not_submitted")
- == "Warn"
- ):
+ action_if_qi_in_draft = frappe.db.get_single_value(
+ "Stock Settings", "action_if_quality_inspection_is_not_submitted"
+ )
+
+ if not action_if_qi_in_draft or action_if_qi_in_draft == "Warn":
self.update_qc_reference()
def on_submit(self):
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 20c4b277a67..11f9ee932ee 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
@@ -231,6 +231,9 @@ class SerialandBatchBundle(Document):
"warehouse": self.warehouse,
"check_serial_nos": True,
"serial_nos": serial_nos,
+ "sabb_voucher_type": self.voucher_type,
+ "sabb_voucher_no": self.voucher_no,
+ "sabb_voucher_detail_no": self.voucher_detail_no,
}
if self.voucher_type == "POS Invoice":
kwargs["ignore_voucher_nos"] = [self.voucher_no]
@@ -1874,9 +1877,16 @@ def get_reserved_serial_nos(kwargs) -> list:
ignore_serial_nos.extend(get_reserved_serial_nos_for_pos(kwargs))
reserved_entries = get_reserved_serial_nos_for_sre(kwargs)
+ if not reserved_entries:
+ return ignore_serial_nos
+
+ reserved_voucher_details = get_reserved_voucher_details(kwargs)
serial_nos = []
for entry in reserved_entries:
+ if entry.voucher_no in reserved_voucher_details:
+ continue
+
if kwargs.get("serial_nos") and entry.serial_no in kwargs.get("serial_nos"):
frappe.throw(
_(
@@ -1893,6 +1903,29 @@ def get_reserved_serial_nos(kwargs) -> list:
return ignore_serial_nos
+def get_reserved_voucher_details(kwargs):
+ reserved_voucher_details = []
+
+ value = {
+ "Delivery Note": ["Delivery Note Item", "against_sales_order"],
+ }.get(kwargs.get("voucher_type"))
+
+ if not value or not kwargs.get("sabb_voucher_no"):
+ return reserved_voucher_details
+
+ reserved_voucher_details = frappe.get_all(
+ value[0],
+ pluck=value[1],
+ filters={
+ "name": kwargs.get("sabb_voucher_detail_no"),
+ "parent": kwargs.get("sabb_voucher_no"),
+ "docstatus": 1,
+ },
+ )
+
+ return reserved_voucher_details
+
+
def get_reserved_serial_nos_for_pos(kwargs):
from erpnext.controllers.sales_and_purchase_return import get_returned_serial_nos
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
diff --git a/erpnext/stock/doctype/shipment/shipment.js b/erpnext/stock/doctype/shipment/shipment.js
index 8843d383531..7f1e1c8d729 100644
--- a/erpnext/stock/doctype/shipment/shipment.js
+++ b/erpnext/stock/doctype/shipment/shipment.js
@@ -162,7 +162,7 @@ frappe.ui.form.on("Shipment", {
args: { contact: contact_name },
callback: function (r) {
if (r.message) {
- if (!(r.message.contact_email && (r.message.contact_phone || r.message.contact_mobile))) {
+ if (!(r.message.contact_email || r.message.contact_phone || r.message.contact_mobile)) {
if (contact_type == "Delivery") {
frm.set_value("delivery_contact_name", "");
frm.set_value("delivery_contact", "");
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 223789fc8a3..63597dd3e72 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -462,6 +462,7 @@ frappe.ui.form.on("Stock Entry", {
docstatus: 1,
purpose: "Material Transfer",
add_to_transit: 1,
+ per_transferred: ["<", 100],
},
});
},
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 081b988e78e..5c9308833d7 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -522,17 +522,29 @@ class StockEntry(StockController):
).format(frappe.bold(self.company))
)
- elif (
- self.is_opening == "Yes"
- and frappe.db.get_value("Account", d.expense_account, "report_type") == "Profit and Loss"
- ):
+ acc_details = frappe.get_cached_value(
+ "Account",
+ d.expense_account,
+ ["account_type", "report_type"],
+ as_dict=True,
+ )
+
+ if self.is_opening == "Yes" and acc_details.report_type == "Profit and Loss":
frappe.throw(
_(
- "Difference Account must be a Asset/Liability type account, since this Stock Entry is an Opening Entry"
+ "Difference Account must be a Asset/Liability type account (Temporary Opening), since this Stock Entry is an Opening Entry"
),
OpeningEntryAccountError,
)
+ if acc_details.account_type == "Stock":
+ frappe.throw(
+ _(
+ "At row {0}: the Difference Account must not be a Stock type account, please change the Account Type for the account {1} or select a different account"
+ ).format(d.idx, get_link_to_form("Account", d.expense_account)),
+ OpeningEntryAccountError,
+ )
+
def validate_warehouse(self):
"""perform various (sometimes conditional) validations on warehouse"""
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index c3d0480e820..0c28afe07e4 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -726,6 +726,12 @@ class StockReconciliation(StockController):
)
self.make_sl_entries(sl_entries, allow_negative_stock=allow_negative_stock)
+ elif self.docstatus == 1:
+ frappe.throw(
+ _(
+ "No stock ledger entries were created. Please set the quantity or valuation rate for the items properly and try again."
+ )
+ )
def make_adjustment_entry(self, row, sl_entries):
from erpnext.stock.stock_ledger import get_stock_value_difference
diff --git a/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json b/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json
index 64108b44fc8..083a9340c09 100644
--- a/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json
+++ b/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json
@@ -14,6 +14,7 @@
"column_break_6",
"warehouse",
"qty",
+ "stock_uom",
"valuation_rate",
"amount",
"allow_zero_valuation_rate",
@@ -86,6 +87,16 @@
"in_list_view": 1,
"label": "Quantity"
},
+ {
+ "columns": 2,
+ "fetch_from": "item_code.stock_uom",
+ "fieldname": "stock_uom",
+ "fieldtype": "Link",
+ "in_list_view": 1,
+ "label": "Stock UOM",
+ "options": "UOM",
+ "read_only": 1
+ },
{
"columns": 2,
"fieldname": "valuation_rate",
@@ -257,7 +268,7 @@
"grid_page_length": 50,
"istable": 1,
"links": [],
- "modified": "2025-03-07 10:26:25.856337",
+ "modified": "2025-04-28 22:40:30.086415",
"modified_by": "Administrator",
"module": "Stock",
"name": "Stock Reconciliation Item",
@@ -269,4 +280,4 @@
"sort_order": "DESC",
"states": [],
"track_changes": 1
-}
\ No newline at end of file
+}
diff --git a/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.py b/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.py
index f2a9aeba8f4..aa0d8ee1b26 100644
--- a/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.py
+++ b/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.py
@@ -36,6 +36,7 @@ class StockReconciliationItem(Document):
reconcile_all_serial_batch: DF.Check
serial_and_batch_bundle: DF.Link | None
serial_no: DF.LongText | None
+ stock_uom: DF.Link | None
use_serial_batch_fields: DF.Check
valuation_rate: DF.Currency
warehouse: DF.Link
diff --git a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
index 56e48b84593..de1dc49aabf 100644
--- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
+++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
@@ -1093,6 +1093,7 @@ class StockReservation:
"Serial and Batch Entry",
fields=["serial_no", "batch_no", "qty"],
filters={"parent": ("in", serial_batch_bundles)},
+ order_by="creation",
)
for detail in bundle_details:
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index 0d8d61470d6..ab83b54ce51 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -2109,29 +2109,6 @@ def get_future_sle_with_negative_batch_qty(sle_args):
def validate_reserved_stock(kwargs):
- if kwargs.serial_no:
- serial_nos = kwargs.serial_no.split("\n")
- validate_reserved_serial_nos(kwargs.item_code, kwargs.warehouse, serial_nos)
-
- elif kwargs.batch_no:
- validate_reserved_batch_nos(kwargs.item_code, kwargs.warehouse, [kwargs.batch_no])
-
- elif kwargs.serial_and_batch_bundle:
- sbb_entries = frappe.db.get_all(
- "Serial and Batch Entry",
- {
- "parenttype": "Serial and Batch Bundle",
- "parent": kwargs.serial_and_batch_bundle,
- "docstatus": 1,
- },
- ["batch_no", "serial_no"],
- )
-
- if serial_nos := [entry.serial_no for entry in sbb_entries if entry.serial_no]:
- validate_reserved_serial_nos(kwargs.item_code, kwargs.warehouse, serial_nos)
- elif batch_nos := [entry.batch_no for entry in sbb_entries if entry.batch_no]:
- validate_reserved_batch_nos(kwargs.item_code, kwargs.warehouse, batch_nos)
-
# Qty based validation for non-serial-batch items OR SRE with Reservation Based On Qty.
precision = cint(frappe.db.get_default("float_precision")) or 2
balance_qty = get_stock_balance(kwargs.item_code, kwargs.warehouse)
diff --git a/erpnext/templates/includes/rfq.js b/erpnext/templates/includes/rfq.js
index 37beb5a584b..cc998a90030 100644
--- a/erpnext/templates/includes/rfq.js
+++ b/erpnext/templates/includes/rfq.js
@@ -31,8 +31,8 @@ rfq = class rfq {
var me = this;
$('.rfq-items').on("change", ".rfq-qty", function(){
me.idx = parseFloat($(this).attr('data-idx'));
- me.qty = parseFloat($(this).val()) || 0;
- me.rate = parseFloat($(repl('.rfq-rate[data-idx=%(idx)s]',{'idx': me.idx})).val());
+ me.qty = parseFloat(flt($(this).val())) || 0;
+ me.rate = parseFloat(flt($(repl('.rfq-rate[data-idx=%(idx)s]',{'idx': me.idx})).val()));
me.update_qty_rate();
$(this).val(format_number(me.qty, doc.number_format, 2));
})
@@ -42,8 +42,8 @@ rfq = class rfq {
var me = this;
$(".rfq-items").on("change", ".rfq-rate", function(){
me.idx = parseFloat($(this).attr('data-idx'));
- me.rate = parseFloat($(this).val()) || 0;
- me.qty = parseFloat($(repl('.rfq-qty[data-idx=%(idx)s]',{'idx': me.idx})).val());
+ me.rate = parseFloat(flt($(this).val())) || 0;
+ me.qty = parseFloat(flt($(repl('.rfq-qty[data-idx=%(idx)s]',{'idx': me.idx})).val()));
me.update_qty_rate();
$(this).val(format_number(me.rate, doc.number_format, 2));
})
diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py
index d6616bd7b9a..a3feecc36f7 100644
--- a/erpnext/utilities/transaction_base.py
+++ b/erpnext/utilities/transaction_base.py
@@ -296,6 +296,10 @@ class TransactionBase(StatusUpdater):
item_details = self.fetch_item_details(item_obj)
self.set_fetched_values(item_obj, item_details)
+
+ if self.doctype == "Request for Quotation":
+ return
+
self.set_item_rate_and_discounts(item_obj, item_details)
self.add_taxes_from_item_template(item_obj, item_details)
self.add_free_item(item_obj, item_details)