Merge branch 'develop' into dont-override-tc
diff --git a/.github/workflows/patch_faux.yml b/.github/workflows/patch_faux.yml
new file mode 100644
index 0000000..93d88bd
--- /dev/null
+++ b/.github/workflows/patch_faux.yml
@@ -0,0 +1,22 @@
+# Tests are skipped for these files but github doesn't allow "passing" hence this is required.
+
+name: Skipped Patch Test
+
+on:
+ pull_request:
+ paths:
+ - "**.js"
+ - "**.css"
+ - "**.md"
+ - "**.html"
+ - "**.csv"
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+
+ name: Patch Test
+
+ steps:
+ - name: Pass skipped tests unconditionally
+ run: "echo Skipped"
diff --git a/.github/workflows/server-tests-mariadb-faux.yml b/.github/workflows/server-tests-mariadb-faux.yml
new file mode 100644
index 0000000..8334661
--- /dev/null
+++ b/.github/workflows/server-tests-mariadb-faux.yml
@@ -0,0 +1,24 @@
+# Tests are skipped for these files but github doesn't allow "passing" hence this is required.
+
+name: Skipped Tests
+
+on:
+ pull_request:
+ paths:
+ - "**.js"
+ - "**.css"
+ - "**.md"
+ - "**.html"
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ container: [1, 2, 3, 4]
+
+ name: Python Unit Tests
+
+ steps:
+ - name: Pass skipped tests unconditionally
+ run: "echo Skipped"
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json
index 2ec0b7f..56b22a6 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json
@@ -36,16 +36,16 @@
}
},
"Fixed Assets": {
- "Capital Equipments": {
+ "Capital Equipment": {
"account_type": "Fixed Asset"
},
- "Electronic Equipments": {
+ "Electronic Equipment": {
"account_type": "Fixed Asset"
},
- "Furnitures and Fixtures": {
+ "Furniture and Fixtures": {
"account_type": "Fixed Asset"
},
- "Office Equipments": {
+ "Office Equipment": {
"account_type": "Fixed Asset"
},
"Plants and Machineries": {
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py
index e30ad24..0699932 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py
@@ -23,13 +23,13 @@
_("Tax Assets"): {"is_group": 1},
},
_("Fixed Assets"): {
- _("Capital Equipments"): {"account_type": "Fixed Asset"},
- _("Electronic Equipments"): {"account_type": "Fixed Asset"},
- _("Furnitures and Fixtures"): {"account_type": "Fixed Asset"},
- _("Office Equipments"): {"account_type": "Fixed Asset"},
+ _("Capital Equipment"): {"account_type": "Fixed Asset"},
+ _("Electronic Equipment"): {"account_type": "Fixed Asset"},
+ _("Furniture and Fixtures"): {"account_type": "Fixed Asset"},
+ _("Office Equipment"): {"account_type": "Fixed Asset"},
_("Plants and Machineries"): {"account_type": "Fixed Asset"},
_("Buildings"): {"account_type": "Fixed Asset"},
- _("Softwares"): {"account_type": "Fixed Asset"},
+ _("Software"): {"account_type": "Fixed Asset"},
_("Accumulated Depreciation"): {"account_type": "Accumulated Depreciation"},
_("CWIP Account"): {
"account_type": "Capital Work in Progress",
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py
index 0e46f1e..ee4da73 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py
@@ -36,13 +36,13 @@
"account_number": "1100-1600",
},
_("Fixed Assets"): {
- _("Capital Equipments"): {"account_type": "Fixed Asset", "account_number": "1710"},
- _("Electronic Equipments"): {"account_type": "Fixed Asset", "account_number": "1720"},
- _("Furnitures and Fixtures"): {"account_type": "Fixed Asset", "account_number": "1730"},
- _("Office Equipments"): {"account_type": "Fixed Asset", "account_number": "1740"},
+ _("Capital Equipment"): {"account_type": "Fixed Asset", "account_number": "1710"},
+ _("Electronic Equipment"): {"account_type": "Fixed Asset", "account_number": "1720"},
+ _("Furniture and Fixtures"): {"account_type": "Fixed Asset", "account_number": "1730"},
+ _("Office Equipment"): {"account_type": "Fixed Asset", "account_number": "1740"},
_("Plants and Machineries"): {"account_type": "Fixed Asset", "account_number": "1750"},
_("Buildings"): {"account_type": "Fixed Asset", "account_number": "1760"},
- _("Softwares"): {"account_type": "Fixed Asset", "account_number": "1770"},
+ _("Software"): {"account_type": "Fixed Asset", "account_number": "1770"},
_("Accumulated Depreciation"): {
"account_type": "Accumulated Depreciation",
"account_number": "1780",
diff --git a/erpnext/accounts/doctype/account/test_account.py b/erpnext/accounts/doctype/account/test_account.py
index 30eebef..eb3e00b 100644
--- a/erpnext/accounts/doctype/account/test_account.py
+++ b/erpnext/accounts/doctype/account/test_account.py
@@ -119,7 +119,7 @@
InvalidAccountMergeError,
merge_account,
"Capital Stock - _TC",
- "Softwares - _TC",
+ "Software - _TC",
)
# Raise error as currency doesn't match
diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
index fd052d0..b10924f 100644
--- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -462,7 +462,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
- "modified": "2023-11-20 09:37:47.650347",
+ "modified": "2024-01-22 12:10:10.151819",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounts Settings",
diff --git a/erpnext/accounts/doctype/bank_account/bank_account.py b/erpnext/accounts/doctype/bank_account/bank_account.py
index 4b99b19..ace4bb1 100644
--- a/erpnext/accounts/doctype/bank_account/bank_account.py
+++ b/erpnext/accounts/doctype/bank_account/bank_account.py
@@ -55,7 +55,7 @@
def validate_company(self):
if self.is_company_account and not self.company:
- frappe.throw(_("Company is manadatory for company account"))
+ frappe.throw(_("Company is mandatory for company account"))
def validate_iban(self):
"""
diff --git a/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.py b/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.py
index 0af2caf..4326c40 100644
--- a/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.py
+++ b/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.py
@@ -48,11 +48,11 @@
def on_submit(self):
if not self.bank_guarantee_number:
- frappe.throw(_("Enter the Bank Guarantee Number before submittting."))
+ frappe.throw(_("Enter the Bank Guarantee Number before submitting."))
if not self.name_of_beneficiary:
- frappe.throw(_("Enter the name of the Beneficiary before submittting."))
+ frappe.throw(_("Enter the name of the Beneficiary before submitting."))
if not self.bank:
- frappe.throw(_("Enter the name of the bank or lending institution before submittting."))
+ frappe.throw(_("Enter the name of the bank or lending institution before submitting."))
@frappe.whitelist()
diff --git a/erpnext/accounts/doctype/coupon_code/coupon_code.json b/erpnext/accounts/doctype/coupon_code/coupon_code.json
index 7dc5e9d..c6b1477 100644
--- a/erpnext/accounts/doctype/coupon_code/coupon_code.json
+++ b/erpnext/accounts/doctype/coupon_code/coupon_code.json
@@ -80,7 +80,7 @@
{
"fieldname": "valid_upto",
"fieldtype": "Date",
- "label": "Valid Upto"
+ "label": "Valid Up To"
},
{
"depends_on": "eval: doc.coupon_type == \"Promotional\"",
@@ -115,7 +115,7 @@
"read_only": 1
}
],
- "modified": "2019-10-19 14:48:14.602481",
+ "modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Coupon Code",
diff --git a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js
index db4f7c4..c80bf62 100644
--- a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js
+++ b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js
@@ -154,7 +154,7 @@
}
});
},
- primary_action_label: __('Get Invocies')
+ primary_action_label: __('Get Invoices')
});
d.show();
},
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 7579da8..7bf5324 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -150,6 +150,20 @@
if not self.title:
self.title = self.get_title()
+ def submit(self):
+ if len(self.accounts) > 100:
+ msgprint(_("The task has been enqueued as a background job."), alert=True)
+ self.queue_action("submit", timeout=4600)
+ else:
+ return self._submit()
+
+ def cancel(self):
+ if len(self.accounts) > 100:
+ msgprint(_("The task has been enqueued as a background job."), alert=True)
+ self.queue_action("cancel", timeout=4600)
+ else:
+ return self._cancel()
+
def on_submit(self):
self.validate_cheque_info()
self.check_credit_limit()
@@ -187,8 +201,8 @@
def update_advance_paid(self):
advance_paid = frappe._dict()
advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_customer_doctypes"
- ) + frappe.get_hooks("advance_payment_supplier_doctypes")
+ "advance_payment_receivable_doctypes"
+ ) + frappe.get_hooks("advance_payment_payable_doctypes")
for d in self.get("accounts"):
if d.is_advance:
if d.reference_type in advance_payment_doctypes:
diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py
index f5f8f8a..acd9933 100644
--- a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py
+++ b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py
@@ -270,7 +270,7 @@
errors, "<a href='/app/List/Error Log' class='variant-click'>Error Log</a>"
),
indicator="red",
- title=_("Error Occured"),
+ title=_("Error Occurred"),
)
return names
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.json b/erpnext/accounts/doctype/payment_entry/payment_entry.json
index 3a1e1ea..b1b8d5e 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.json
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.json
@@ -87,12 +87,14 @@
"status",
"custom_remarks",
"remarks",
+ "base_in_words",
"column_break_16",
"letter_head",
"print_heading",
"bank",
"bank_account_no",
"payment_order",
+ "in_words",
"subscription_section",
"auto_repeat",
"amended_from",
@@ -747,6 +749,20 @@
"hidden": 1,
"label": "Book Advance Payments in Separate Party Account",
"read_only": 1
+ },
+ {
+ "fieldname": "base_in_words",
+ "fieldtype": "Small Text",
+ "label": "In Words (Company Currency)",
+ "print_hide": 1,
+ "read_only": 1
+ },
+ {
+ "fieldname": "in_words",
+ "fieldtype": "Small Text",
+ "label": "In Words",
+ "print_hide": 1,
+ "read_only": 1
}
],
"index_web_pages_for_search": 1,
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index 69f0dda..7e88b6b 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -178,6 +178,7 @@
self.validate_paid_invoices()
self.ensure_supplier_is_not_blocked()
self.set_status()
+ self.set_total_in_words()
def on_submit(self):
if self.difference_amount:
@@ -190,7 +191,7 @@
def set_liability_account(self):
# Auto setting liability account should only be done during 'draft' status
- if self.docstatus > 0:
+ if self.docstatus > 0 or self.payment_type == "Internal Transfer":
return
if not frappe.db.get_value(
@@ -786,6 +787,21 @@
self.db_set("status", self.status, update_modified=True)
+ def set_total_in_words(self):
+ from frappe.utils import money_in_words
+
+ if self.payment_type in ("Pay", "Internal Transfer"):
+ base_amount = abs(self.base_paid_amount)
+ amount = abs(self.paid_amount)
+ currency = self.paid_from_account_currency
+ elif self.payment_type == "Receive":
+ base_amount = abs(self.base_received_amount)
+ amount = abs(self.received_amount)
+ currency = self.paid_to_account_currency
+
+ self.base_in_words = money_in_words(base_amount, self.company_currency)
+ self.in_words = money_in_words(amount, currency)
+
def set_tax_withholding(self):
if self.party_type != "Supplier":
return
@@ -927,8 +943,8 @@
def calculate_base_allocated_amount_for_reference(self, d) -> float:
base_allocated_amount = 0
advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_customer_doctypes"
- ) + frappe.get_hooks("advance_payment_supplier_doctypes")
+ "advance_payment_receivable_doctypes"
+ ) + frappe.get_hooks("advance_payment_payable_doctypes")
if d.reference_doctype in advance_payment_doctypes:
# When referencing Sales/Purchase Order, use the source/target exchange rate depending on payment type.
# This is so there are no Exchange Gain/Loss generated for such doctypes
@@ -1428,8 +1444,8 @@
def update_advance_paid(self):
if self.payment_type in ("Receive", "Pay") and self.party:
advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_customer_doctypes"
- ) + frappe.get_hooks("advance_payment_supplier_doctypes")
+ "advance_payment_receivable_doctypes"
+ ) + frappe.get_hooks("advance_payment_payable_doctypes")
for d in self.get("references"):
if d.allocated_amount and d.reference_doctype in advance_payment_doctypes:
frappe.get_doc(
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
index 666926f..ff2aa6d 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
@@ -41,6 +41,7 @@
{
"fieldname": "company",
"fieldtype": "Link",
+ "ignore_user_permissions": 1,
"label": "Company",
"options": "Company",
"reqd": 1
@@ -229,7 +230,7 @@
"is_virtual": 1,
"issingle": 1,
"links": [],
- "modified": "2023-12-14 13:38:16.264013",
+ "modified": "2024-01-18 11:56:20.234667",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Reconciliation",
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index 839348a..a18104e 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -170,8 +170,8 @@
self.request_phone_payment()
advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_customer_doctypes"
- ) + frappe.get_hooks("advance_payment_supplier_doctypes")
+ "advance_payment_receivable_doctypes"
+ ) + frappe.get_hooks("advance_payment_payable_doctypes")
if self.reference_doctype in advance_payment_doctypes:
# set advance payment status
ref_doc.set_total_advance_paid()
@@ -216,8 +216,8 @@
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_customer_doctypes"
- ) + frappe.get_hooks("advance_payment_supplier_doctypes")
+ "advance_payment_receivable_doctypes"
+ ) + frappe.get_hooks("advance_payment_payable_doctypes")
if self.reference_doctype in advance_payment_doctypes:
# set advance payment status
ref_doc.set_total_advance_paid()
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
index e542d3c..1a7eef6 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
@@ -11,7 +11,6 @@
from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request
from erpnext.accounts.doctype.sales_invoice.sales_invoice import (
SalesInvoice,
- get_bank_cash_account,
get_mode_of_payment_info,
update_multi_mode_option,
)
@@ -208,7 +207,6 @@
self.validate_stock_availablility()
self.validate_return_items_qty()
self.set_status()
- self.set_account_for_mode_of_payment()
self.validate_pos()
self.validate_payment_amount()
self.validate_loyalty_transaction()
@@ -371,7 +369,7 @@
if d.get("qty") > 0:
frappe.throw(
_(
- "Row #{}: You cannot add postive quantities in a return invoice. Please remove item {} to complete the return."
+ "Row #{}: You cannot add positive quantities in a return invoice. Please remove item {} to complete the return."
).format(d.idx, frappe.bold(d.item_code)),
title=_("Invalid Item"),
)
@@ -643,11 +641,6 @@
update_multi_mode_option(self, pos_profile)
self.paid_amount = 0
- def set_account_for_mode_of_payment(self):
- for pay in self.payments:
- if not pay.account:
- pay.account = get_bank_cash_account(pay.mode_of_payment, self.company).get("account")
-
@frappe.whitelist()
def create_payment_request(self):
for pay in self.payments:
@@ -793,7 +786,7 @@
invoices = json.loads(invoices)
if len(invoices) == 0:
- frappe.throw(_("Atleast one invoice has to be selected."))
+ frappe.throw(_("At least one invoice has to be selected."))
merge_log = frappe.new_doc("POS Invoice Merge Log")
merge_log.posting_date = getdate(nowdate())
diff --git a/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
index 200b82a..8fab290 100644
--- a/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
+++ b/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
@@ -93,7 +93,7 @@
inv.save()
- self.assertEqual(inv.net_total, 4298.25)
+ self.assertEqual(inv.net_total, 4298.24)
self.assertEqual(inv.grand_total, 4900.00)
def test_tax_calculation_with_multiple_items(self):
diff --git a/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py b/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py
index 6af8a00..0ad9131 100644
--- a/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py
+++ b/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py
@@ -351,7 +351,7 @@
inv.load_from_db()
consolidated_invoice = frappe.get_doc("Sales Invoice", inv.consolidated_invoice)
self.assertEqual(consolidated_invoice.status, "Return")
- self.assertEqual(consolidated_invoice.rounding_adjustment, -0.001)
+ self.assertEqual(consolidated_invoice.rounding_adjustment, -0.002)
finally:
frappe.set_user("Administrator")
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.py b/erpnext/accounts/doctype/pos_profile/pos_profile.py
index 30f3e0c..c1add57 100644
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.py
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.py
@@ -132,7 +132,7 @@
if len(customer_groups) != len(set(customer_groups)):
frappe.throw(
- _("Duplicate customer group found in the cutomer group table"),
+ _("Duplicate customer group found in the customer group table"),
title=_("Duplicate Customer Group"),
)
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json
index e8e8044..61c01a4 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json
@@ -339,7 +339,7 @@
{
"fieldname": "valid_upto",
"fieldtype": "Date",
- "label": "Valid Upto"
+ "label": "Valid Up To"
},
{
"fieldname": "col_break1",
@@ -608,7 +608,7 @@
"icon": "fa fa-gift",
"idx": 1,
"links": [],
- "modified": "2023-02-14 04:53:34.887358",
+ "modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Pricing Rule",
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
index ca70490..300692f 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
@@ -193,7 +193,7 @@
def validate_applicable_for_selling_or_buying(self):
if not self.selling and not self.buying:
- throw(_("Atleast one of the Selling or Buying must be selected"))
+ throw(_("At least one of the Selling or Buying must be selected"))
if not self.selling and self.applicable_for in [
"Customer",
diff --git a/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.json b/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.json
index 1d68b23..7fdfdcd 100644
--- a/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.json
+++ b/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.json
@@ -232,7 +232,7 @@
{
"fieldname": "valid_upto",
"fieldtype": "Date",
- "label": "Valid Upto"
+ "label": "Valid Up To"
},
{
"fieldname": "column_break_26",
@@ -278,7 +278,7 @@
}
],
"links": [],
- "modified": "2021-05-06 16:20:22.039078",
+ "modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Promotional Scheme",
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
index f85fc87..a48f5ea 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -1253,6 +1253,7 @@
"fieldtype": "Select",
"in_standard_filter": 1,
"label": "Status",
+ "no_copy": 1,
"options": "\nDraft\nReturn\nDebit Note Issued\nSubmitted\nPaid\nPartly Paid\nUnpaid\nOverdue\nCancelled\nInternal Transfer",
"print_hide": 1
},
@@ -1612,7 +1613,7 @@
"idx": 204,
"is_submittable": 1,
"links": [],
- "modified": "2023-11-29 15:35:44.697496",
+ "modified": "2024-01-26 10:46:00.469053",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Purchase Invoice",
diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index 992fbe6..5da6f8b 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -1995,6 +1995,21 @@
self.assertEqual(pi.items[0].cost_center, "_Test Cost Center Buying - _TC")
+ def test_debit_note_with_account_mismatch(self):
+ new_creditors = create_account(
+ parent_account="Accounts Payable - _TC",
+ account_name="Creditors 2",
+ company="_Test Company",
+ account_type="Payable",
+ )
+ pi = make_purchase_invoice(qty=1, rate=1000)
+ dr_note = make_purchase_invoice(
+ qty=-1, rate=1000, is_return=1, return_against=pi.name, do_not_save=True
+ )
+ dr_note.credit_to = new_creditors
+
+ self.assertRaises(frappe.ValidationError, dr_note.save)
+
def test_debit_note_without_item(self):
pi = make_purchase_invoice(item_name="_Test Item", qty=10, do_not_submit=True)
pi.items[0].item_code = ""
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index cc19650..c381b8a 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -421,7 +421,8 @@
self.calculate_taxes_and_totals()
def before_save(self):
- set_account_for_mode_of_payment(self)
+ self.set_account_for_mode_of_payment()
+ self.set_paid_amount()
def on_submit(self):
self.validate_pos_paid_amount()
@@ -712,9 +713,6 @@
):
data.sales_invoice = sales_invoice
- def on_update(self):
- self.set_paid_amount()
-
def on_update_after_submit(self):
if hasattr(self, "repost_required"):
fields_to_check = [
@@ -745,6 +743,11 @@
self.paid_amount = paid_amount
self.base_paid_amount = base_paid_amount
+ def set_account_for_mode_of_payment(self):
+ for payment in self.payments:
+ if not payment.account:
+ payment.account = get_bank_cash_account(payment.mode_of_payment, self.company).get("account")
+
def validate_time_sheets_are_submitted(self):
for data in self.timesheets:
if data.time_sheet:
@@ -2113,12 +2116,6 @@
return make_return_doc("Sales Invoice", source_name, target_doc)
-def set_account_for_mode_of_payment(self):
- for data in self.payments:
- if not data.account:
- data.account = get_bank_cash_account(data.mode_of_payment, self.company).get("account")
-
-
def get_inter_company_details(doc, doctype):
if doctype in ["Sales Invoice", "Sales Order", "Delivery Note"]:
parties = frappe.db.get_all(
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index cb4b2fc..8c3aede 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -323,7 +323,8 @@
si.insert()
# with inclusive tax
- self.assertEqual(si.items[0].net_amount, 3947.368421052631)
+ self.assertEqual(si.items[0].net_amount, 3947.37)
+ self.assertEqual(si.net_total, si.base_net_total)
self.assertEqual(si.net_total, 3947.37)
self.assertEqual(si.grand_total, 5000)
@@ -667,7 +668,7 @@
62.5,
625.0,
50,
- 499.97600115194473,
+ 499.98,
],
"_Test Item Home Desktop 200": [
190.66,
@@ -678,7 +679,7 @@
190.66,
953.3,
150,
- 749.9968530500239,
+ 750,
],
}
@@ -691,20 +692,21 @@
self.assertEqual(d.get(k), expected_values[d.item_code][i])
# check net total
- self.assertEqual(si.net_total, 1249.97)
+ self.assertEqual(si.base_net_total, si.net_total)
+ self.assertEqual(si.net_total, 1249.98)
self.assertEqual(si.total, 1578.3)
# check tax calculation
expected_values = {
"keys": ["tax_amount", "total"],
- "_Test Account Excise Duty - _TC": [140, 1389.97],
- "_Test Account Education Cess - _TC": [2.8, 1392.77],
- "_Test Account S&H Education Cess - _TC": [1.4, 1394.17],
- "_Test Account CST - _TC": [27.88, 1422.05],
- "_Test Account VAT - _TC": [156.25, 1578.30],
- "_Test Account Customs Duty - _TC": [125, 1703.30],
- "_Test Account Shipping Charges - _TC": [100, 1803.30],
- "_Test Account Discount - _TC": [-180.33, 1622.97],
+ "_Test Account Excise Duty - _TC": [140, 1389.98],
+ "_Test Account Education Cess - _TC": [2.8, 1392.78],
+ "_Test Account S&H Education Cess - _TC": [1.4, 1394.18],
+ "_Test Account CST - _TC": [27.88, 1422.06],
+ "_Test Account VAT - _TC": [156.25, 1578.31],
+ "_Test Account Customs Duty - _TC": [125, 1703.31],
+ "_Test Account Shipping Charges - _TC": [100, 1803.31],
+ "_Test Account Discount - _TC": [-180.33, 1622.98],
}
for d in si.get("taxes"):
@@ -740,7 +742,7 @@
"base_rate": 2500,
"base_amount": 25000,
"net_rate": 40,
- "net_amount": 399.9808009215558,
+ "net_amount": 399.98,
"base_net_rate": 2000,
"base_net_amount": 19999,
},
@@ -754,7 +756,7 @@
"base_rate": 7500,
"base_amount": 37500,
"net_rate": 118.01,
- "net_amount": 590.0531205155963,
+ "net_amount": 590.05,
"base_net_rate": 5900.5,
"base_net_amount": 29502.5,
},
@@ -792,8 +794,13 @@
self.assertEqual(si.base_grand_total, 60795)
self.assertEqual(si.grand_total, 1215.90)
- self.assertEqual(si.rounding_adjustment, 0.01)
- self.assertEqual(si.base_rounding_adjustment, 0.50)
+ # no rounding adjustment as the Smallest Currency Fraction Value of USD is 0.01
+ if frappe.db.get_value("Currency", "USD", "smallest_currency_fraction_value") < 0.01:
+ self.assertEqual(si.rounding_adjustment, 0.10)
+ self.assertEqual(si.base_rounding_adjustment, 5.0)
+ else:
+ self.assertEqual(si.rounding_adjustment, 0.0)
+ self.assertEqual(si.base_rounding_adjustment, 0.0)
def test_outstanding(self):
w = self.make()
@@ -1543,6 +1550,19 @@
self.assertEqual(frappe.db.get_value("Sales Invoice", si1.name, "outstanding_amount"), -1000)
self.assertEqual(frappe.db.get_value("Sales Invoice", si.name, "outstanding_amount"), 2500)
+ def test_return_invoice_with_account_mismatch(self):
+ debtors2 = create_account(
+ parent_account="Accounts Receivable - _TC",
+ account_name="Debtors 2",
+ company="_Test Company",
+ account_type="Receivable",
+ )
+ si = create_sales_invoice(qty=1, rate=1000)
+ cr_note = create_sales_invoice(
+ qty=-1, rate=1000, is_return=1, return_against=si.name, debit_to=debtors2, do_not_save=True
+ )
+ self.assertRaises(frappe.ValidationError, cr_note.save)
+
def test_gle_made_when_asset_is_returned(self):
create_asset_data()
asset = create_asset(item_code="Macbook Pro")
@@ -2082,7 +2102,7 @@
def test_rounding_adjustment_2(self):
si = create_sales_invoice(rate=400, do_not_save=True)
- for rate in [400, 600, 100]:
+ for rate in [400.25, 600.30, 100.65]:
si.append(
"items",
{
@@ -2108,17 +2128,18 @@
)
si.save()
si.submit()
- self.assertEqual(si.net_total, 1271.19)
- self.assertEqual(si.grand_total, 1500)
- self.assertEqual(si.total_taxes_and_charges, 228.82)
- self.assertEqual(si.rounding_adjustment, -0.01)
+ self.assertEqual(si.net_total, si.base_net_total)
+ self.assertEqual(si.net_total, 1272.20)
+ self.assertEqual(si.grand_total, 1501.20)
+ self.assertEqual(si.total_taxes_and_charges, 229)
+ self.assertEqual(si.rounding_adjustment, -0.20)
expected_values = [
- ["_Test Account Service Tax - _TC", 0.0, 114.41],
- ["_Test Account VAT - _TC", 0.0, 114.41],
- [si.debit_to, 1500, 0.0],
- ["Round Off - _TC", 0.01, 0.01],
- ["Sales - _TC", 0.0, 1271.18],
+ ["_Test Account Service Tax - _TC", 0.0, 114.50],
+ ["_Test Account VAT - _TC", 0.0, 114.50],
+ [si.debit_to, 1501, 0.0],
+ ["Round Off - _TC", 0.20, 0.0],
+ ["Sales - _TC", 0.0, 1272.20],
]
gl_entries = frappe.db.sql(
@@ -2176,7 +2197,8 @@
si.save()
si.submit()
- self.assertEqual(si.net_total, 4007.16)
+ self.assertEqual(si.net_total, si.base_net_total)
+ self.assertEqual(si.net_total, 4007.15)
self.assertEqual(si.grand_total, 4488.02)
self.assertEqual(si.total_taxes_and_charges, 480.86)
self.assertEqual(si.rounding_adjustment, -0.02)
@@ -2188,7 +2210,7 @@
["_Test Account Service Tax - _TC", 0.0, 240.43],
["_Test Account VAT - _TC", 0.0, 240.43],
["Sales - _TC", 0.0, 4007.15],
- ["Round Off - _TC", 0.02, 0.01],
+ ["Round Off - _TC", 0.01, 0.0],
]
)
diff --git a/erpnext/accounts/doctype/subscription/subscription.json b/erpnext/accounts/doctype/subscription/subscription.json
index 97fd4d0..afa8bcb 100644
--- a/erpnext/accounts/doctype/subscription/subscription.json
+++ b/erpnext/accounts/doctype/subscription/subscription.json
@@ -51,7 +51,7 @@
"fieldtype": "Select",
"label": "Status",
"no_copy": 1,
- "options": "\nTrialling\nActive\nPast Due Date\nCancelled\nUnpaid\nCompleted",
+ "options": "\nTrialing\nActive\nPast Due Date\nCancelled\nUnpaid\nCompleted",
"read_only": 1
},
{
@@ -267,7 +267,7 @@
"link_fieldname": "subscription"
}
],
- "modified": "2023-12-28 17:20:42.687789",
+ "modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Subscription",
diff --git a/erpnext/accounts/doctype/subscription/subscription.py b/erpnext/accounts/doctype/subscription/subscription.py
index 6d27806..9f19366 100644
--- a/erpnext/accounts/doctype/subscription/subscription.py
+++ b/erpnext/accounts/doctype/subscription/subscription.py
@@ -78,9 +78,7 @@
purchase_tax_template: DF.Link | None
sales_tax_template: DF.Link | None
start_date: DF.Date | None
- status: DF.Literal[
- "", "Trialling", "Active", "Past Due Date", "Cancelled", "Unpaid", "Completed"
- ]
+ status: DF.Literal["", "Trialing", "Active", "Past Due Date", "Cancelled", "Unpaid", "Completed"]
submit_invoice: DF.Check
trial_period_end: DF.Date | None
trial_period_start: DF.Date | None
@@ -233,7 +231,7 @@
Sets the status of the `Subscription`
"""
if self.is_trialling():
- self.status = "Trialling"
+ self.status = "Trialing"
elif (
self.status == "Active" and self.end_date and getdate(posting_date) > getdate(self.end_date)
):
diff --git a/erpnext/accounts/doctype/subscription/subscription_list.js b/erpnext/accounts/doctype/subscription/subscription_list.js
index 6490ff3..ea48b53 100644
--- a/erpnext/accounts/doctype/subscription/subscription_list.js
+++ b/erpnext/accounts/doctype/subscription/subscription_list.js
@@ -1,7 +1,7 @@
frappe.listview_settings['Subscription'] = {
get_indicator: function(doc) {
- if(doc.status === 'Trialling') {
- return [__("Trialling"), "green"];
+ if(doc.status === 'Trialing') {
+ return [__("Trialing"), "green"];
} else if(doc.status === 'Active') {
return [__("Active"), "green"];
} else if(doc.status === 'Completed') {
diff --git a/erpnext/accounts/doctype/subscription/test_subscription.py b/erpnext/accounts/doctype/subscription/test_subscription.py
index a46642a..89be543 100644
--- a/erpnext/accounts/doctype/subscription/test_subscription.py
+++ b/erpnext/accounts/doctype/subscription/test_subscription.py
@@ -46,7 +46,7 @@
get_date_str(subscription.current_invoice_end),
)
self.assertEqual(subscription.invoices, [])
- self.assertEqual(subscription.status, "Trialling")
+ self.assertEqual(subscription.status, "Trialing")
def test_create_subscription_without_trial_with_correct_period(self):
subscription = create_subscription()
diff --git a/erpnext/accounts/form_tour/accounts_settings/accounts_settings.json b/erpnext/accounts/form_tour/accounts_settings/accounts_settings.json
index e2bf50d..b41012c 100644
--- a/erpnext/accounts/form_tour/accounts_settings/accounts_settings.json
+++ b/erpnext/accounts/form_tour/accounts_settings/accounts_settings.json
@@ -4,7 +4,7 @@
"doctype": "Form Tour",
"idx": 0,
"is_standard": 1,
- "modified": "2021-06-29 17:00:26.145996",
+ "modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounts Settings",
@@ -82,7 +82,7 @@
"label": "Accounts Frozen Till Date",
"parent_field": "",
"position": "Right",
- "title": "Accounts Frozen Upto"
+ "title": "Accounts Frozen Up To"
},
{
"description": "Users with this Role are allowed to set frozen accounts and create/modify accounting entries against frozen accounts.",
diff --git a/erpnext/accounts/report/account_balance/account_balance.js b/erpnext/accounts/report/account_balance/account_balance.js
index 5681be9..ab5dce8 100644
--- a/erpnext/accounts/report/account_balance/account_balance.js
+++ b/erpnext/accounts/report/account_balance/account_balance.js
@@ -39,7 +39,7 @@
{ "value": "Asset Received But Not Billed", "label": __("Asset Received But Not Billed") },
{ "value": "Bank", "label": __("Bank") },
{ "value": "Cash", "label": __("Cash") },
- { "value": "Chargeble", "label": __("Chargeble") },
+ { "value": "Chargeable", "label": __("Chargeable") },
{ "value": "Capital Work in Progress", "label": __("Capital Work in Progress") },
{ "value": "Cost of Goods Sold", "label": __("Cost of Goods Sold") },
{ "value": "Depreciation", "label": __("Depreciation") },
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index 3a70afc..e3fa5e8 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -5,7 +5,7 @@
from collections import OrderedDict
import frappe
-from frappe import _, qb, scrub
+from frappe import _, qb, query_builder, scrub
from frappe.query_builder import Criterion
from frappe.query_builder.functions import Date, Substring, Sum
from frappe.utils import cint, cstr, flt, getdate, nowdate
@@ -576,6 +576,8 @@
def get_future_payments_from_payment_entry(self):
pe = frappe.qb.DocType("Payment Entry")
pe_ref = frappe.qb.DocType("Payment Entry Reference")
+ ifelse = query_builder.CustomFunction("IF", ["condition", "then", "else"])
+
return (
frappe.qb.from_(pe)
.inner_join(pe_ref)
@@ -587,6 +589,11 @@
(pe.posting_date).as_("future_date"),
(pe_ref.allocated_amount).as_("future_amount"),
(pe.reference_no).as_("future_ref"),
+ ifelse(
+ pe.payment_type == "Receive",
+ pe.source_exchange_rate * pe_ref.allocated_amount,
+ pe.target_exchange_rate * pe_ref.allocated_amount,
+ ).as_("future_amount_in_base_currency"),
)
.where(
(pe.docstatus < 2)
@@ -623,13 +630,24 @@
query = query.select(
Sum(jea.debit_in_account_currency - jea.credit_in_account_currency).as_("future_amount")
)
+ query = query.select(Sum(jea.debit - jea.credit).as_("future_amount_in_base_currency"))
else:
query = query.select(
Sum(jea.credit_in_account_currency - jea.debit_in_account_currency).as_("future_amount")
)
+ query = query.select(Sum(jea.credit - jea.debit).as_("future_amount_in_base_currency"))
else:
query = query.select(
- Sum(jea.debit if self.account_type == "Payable" else jea.credit).as_("future_amount")
+ Sum(jea.debit if self.account_type == "Payable" else jea.credit).as_(
+ "future_amount_in_base_currency"
+ )
+ )
+ query = query.select(
+ Sum(
+ jea.debit_in_account_currency
+ if self.account_type == "Payable"
+ else jea.credit_in_account_currency
+ ).as_("future_amount")
)
query = query.having(qb.Field("future_amount") > 0)
@@ -645,14 +663,19 @@
row.remaining_balance = row.outstanding
row.future_amount = 0.0
for future in self.future_payments.get((row.voucher_no, row.party), []):
- if row.remaining_balance > 0 and future.future_amount:
- if future.future_amount > row.outstanding:
+ if self.filters.in_party_currency:
+ future_amount_field = "future_amount"
+ else:
+ future_amount_field = "future_amount_in_base_currency"
+
+ if row.remaining_balance > 0 and future.get(future_amount_field):
+ if future.get(future_amount_field) > row.outstanding:
row.future_amount = row.outstanding
- future.future_amount = future.future_amount - row.outstanding
+ future[future_amount_field] = future.get(future_amount_field) - row.outstanding
row.remaining_balance = 0
else:
- row.future_amount += future.future_amount
- future.future_amount = 0
+ row.future_amount += future.get(future_amount_field)
+ future[future_amount_field] = 0
row.remaining_balance = row.outstanding - row.future_amount
row.setdefault("future_ref", []).append(
diff --git a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
index 976935b..6ff81be 100644
--- a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
@@ -772,3 +772,92 @@
# post sorting output should be [[Additional Debtors, ...], [Debtors, ...]]
report_output = sorted(report_output, key=lambda x: x[0])
self.assertEqual(expected_data, report_output)
+
+ def test_future_payments_on_foreign_currency(self):
+ self.customer2 = (
+ frappe.get_doc(
+ {
+ "doctype": "Customer",
+ "customer_name": "Jane Doe",
+ "type": "Individual",
+ "default_currency": "USD",
+ }
+ )
+ .insert()
+ .submit()
+ )
+
+ si = self.create_sales_invoice(do_not_submit=True)
+ si.posting_date = add_days(today(), -1)
+ si.customer = self.customer2
+ si.currency = "USD"
+ si.conversion_rate = 80
+ si.debit_to = self.debtors_usd
+ si.save().submit()
+
+ # full payment in USD
+ pe = get_payment_entry(si.doctype, si.name)
+ pe.posting_date = add_days(today(), 1)
+ pe.base_received_amount = 7500
+ pe.received_amount = 7500
+ pe.source_exchange_rate = 75
+ pe.save().submit()
+
+ filters = frappe._dict(
+ {
+ "company": self.company,
+ "report_date": today(),
+ "range1": 30,
+ "range2": 60,
+ "range3": 90,
+ "range4": 120,
+ "show_future_payments": True,
+ "in_party_currency": False,
+ }
+ )
+ report = execute(filters)[1]
+ self.assertEqual(len(report), 1)
+
+ expected_data = [8000.0, 8000.0, 500.0, 7500.0]
+ row = report[0]
+ self.assertEqual(
+ expected_data, [row.invoiced, row.outstanding, row.remaining_balance, row.future_amount]
+ )
+
+ filters.in_party_currency = True
+ report = execute(filters)[1]
+ self.assertEqual(len(report), 1)
+ expected_data = [100.0, 100.0, 0.0, 100.0]
+ row = report[0]
+ self.assertEqual(
+ expected_data, [row.invoiced, row.outstanding, row.remaining_balance, row.future_amount]
+ )
+
+ pe.cancel()
+ # partial payment in USD on a future date
+ pe = get_payment_entry(si.doctype, si.name)
+ pe.posting_date = add_days(today(), 1)
+ pe.base_received_amount = 6750
+ pe.received_amount = 6750
+ pe.source_exchange_rate = 75
+ pe.paid_amount = 90 # in USD
+ pe.references[0].allocated_amount = 90
+ pe.save().submit()
+
+ filters.in_party_currency = False
+ report = execute(filters)[1]
+ self.assertEqual(len(report), 1)
+ expected_data = [8000.0, 8000.0, 1250.0, 6750.0]
+ row = report[0]
+ self.assertEqual(
+ expected_data, [row.invoiced, row.outstanding, row.remaining_balance, row.future_amount]
+ )
+
+ filters.in_party_currency = True
+ report = execute(filters)[1]
+ self.assertEqual(len(report), 1)
+ expected_data = [100.0, 100.0, 10.0, 90.0]
+ row = report[0]
+ self.assertEqual(
+ expected_data, [row.invoiced, row.outstanding, row.remaining_balance, row.future_amount]
+ )
diff --git a/erpnext/accounts/report/balance_sheet/balance_sheet.js b/erpnext/accounts/report/balance_sheet/balance_sheet.js
index b05e744..5525024 100644
--- a/erpnext/accounts/report/balance_sheet/balance_sheet.js
+++ b/erpnext/accounts/report/balance_sheet/balance_sheet.js
@@ -8,6 +8,20 @@
erpnext.utils.add_dimensions("Balance Sheet", 10);
+frappe.query_reports["Balance Sheet"]["filters"].push(
+ {
+ "fieldname": "selected_view",
+ "label": __("Select View"),
+ "fieldtype": "Select",
+ "options": [
+ { "value": "Report", "label": __("Report View") },
+ { "value": "Growth", "label": __("Growth View") }
+ ],
+ "default": "Report",
+ "reqd": 1
+ },
+);
+
frappe.query_reports["Balance Sheet"]["filters"].push({
fieldname: "accumulated_values",
label: __("Accumulated Values"),
diff --git a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js
index e5898bf..a2f0fde 100644
--- a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js
+++ b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js
@@ -8,6 +8,21 @@
erpnext.utils.add_dimensions("Profit and Loss Statement", 10);
+frappe.query_reports["Profit and Loss Statement"]["filters"].push(
+ {
+ "fieldname": "selected_view",
+ "label": __("Select View"),
+ "fieldtype": "Select",
+ "options": [
+ { "value": "Report", "label": __("Report View") },
+ { "value": "Growth", "label": __("Growth View") },
+ { "value": "Margin", "label": __("Margin View") },
+ ],
+ "default": "Report",
+ "reqd": 1
+ },
+);
+
frappe.query_reports["Profit and Loss Statement"]["filters"].push({
fieldname: "accumulated_values",
label: __("Accumulated Values"),
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 65b3aba..30700d0 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -240,7 +240,6 @@
cond.append("""gle.cost_center = %s """ % (frappe.db.escape(cost_center, percent=False),))
if account:
-
if not (frappe.flags.ignore_account_permission or ignore_account_permission):
acc.check_permission("read")
@@ -286,18 +285,22 @@
cond.append("""gle.company = %s """ % (frappe.db.escape(company, percent=False)))
if account or (party_type and party) or account_type:
-
+ precision = get_currency_precision()
if in_account_currency:
- select_field = "sum(debit_in_account_currency) - sum(credit_in_account_currency)"
+ select_field = (
+ "sum(round(debit_in_account_currency, %s)) - sum(round(credit_in_account_currency, %s))"
+ )
else:
- select_field = "sum(debit) - sum(credit)"
+ select_field = "sum(round(debit, %s)) - sum(round(credit, %s))"
+
bal = frappe.db.sql(
"""
SELECT {0}
FROM `tabGL Entry` gle
WHERE {1}""".format(
select_field, " and ".join(cond)
- )
+ ),
+ (precision, precision),
)[0][0]
# if bal is None, return 0
return flt(bal)
@@ -619,8 +622,8 @@
# Update Advance Paid in SO/PO since they might be getting unlinked
advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_customer_doctypes"
- ) + frappe.get_hooks("advance_payment_supplier_doctypes")
+ "advance_payment_receivable_doctypes"
+ ) + frappe.get_hooks("advance_payment_payable_doctypes")
if jv_detail.get("reference_type") in advance_payment_doctypes:
frappe.get_doc(jv_detail.reference_type, jv_detail.reference_name).set_total_advance_paid()
@@ -696,8 +699,8 @@
# Update Advance Paid in SO/PO since they are getting unlinked
advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_customer_doctypes"
- ) + frappe.get_hooks("advance_payment_supplier_doctypes")
+ "advance_payment_receivable_doctypes"
+ ) + frappe.get_hooks("advance_payment_payable_doctypes")
if existing_row.get("reference_doctype") in advance_payment_doctypes:
frappe.get_doc(
existing_row.reference_doctype, existing_row.reference_name
diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js
index 02e7a9b..673fe54 100644
--- a/erpnext/assets/doctype/asset/asset.js
+++ b/erpnext/assets/doctype/asset/asset.js
@@ -571,16 +571,16 @@
indicator: 'red'
});
}
- var is_grouped_asset = frappe.db.get_value('Item', item.item_code, 'is_grouped_asset');
- var asset_quantity = is_grouped_asset ? item.qty : 1;
- var purchase_amount = flt(item.valuation_rate * asset_quantity, precision('gross_purchase_amount'));
+ frappe.db.get_value('Item', item.item_code, 'is_grouped_asset', (r) => {
+ var asset_quantity = r.is_grouped_asset ? item.qty : 1;
+ var purchase_amount = flt(item.valuation_rate * asset_quantity, precision('gross_purchase_amount'));
- frm.set_value('gross_purchase_amount', purchase_amount);
- frm.set_value('purchase_receipt_amount', purchase_amount);
- frm.set_value('asset_quantity', asset_quantity);
- frm.set_value('cost_center', item.cost_center || purchase_doc.cost_center);
- if(item.asset_location) { frm.set_value('location', item.asset_location); }
-
+ frm.set_value('gross_purchase_amount', purchase_amount);
+ frm.set_value('purchase_receipt_amount', purchase_amount);
+ frm.set_value('asset_quantity', asset_quantity);
+ frm.set_value('cost_center', item.cost_center || purchase_doc.cost_center);
+ if(item.asset_location) { frm.set_value('location', item.asset_location); }
+ });
},
set_depreciation_rate: function(frm, row) {
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index 7357249..166e8c4 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -519,14 +519,11 @@
movement.cancel()
def cancel_capitalization(self):
- asset_capitalization = frappe.db.get_value(
- "Asset Capitalization",
- {"target_asset": self.name, "docstatus": 1, "entry_type": "Capitalization"},
- )
-
- if asset_capitalization:
- asset_capitalization = frappe.get_doc("Asset Capitalization", asset_capitalization)
- asset_capitalization.cancel()
+ if self.capitalized_in:
+ self.db_set("capitalized_in", None)
+ asset_capitalization = frappe.get_doc("Asset Capitalization", self.capitalized_in)
+ if asset_capitalization.docstatus == 1:
+ asset_capitalization.cancel()
def delete_depreciation_entries(self):
if self.calculate_depreciation:
@@ -1011,7 +1008,7 @@
assets = json.loads(assets)
if len(assets) == 0:
- frappe.throw(_("Atleast one asset has to be selected."))
+ frappe.throw(_("At least one asset has to be selected."))
asset_movement = frappe.new_doc("Asset Movement")
asset_movement.quantity = len(assets)
diff --git a/erpnext/assets/doctype/asset/depreciation.py b/erpnext/assets/doctype/asset/depreciation.py
index a93af94..df4593b 100644
--- a/erpnext/assets/doctype/asset/depreciation.py
+++ b/erpnext/assets/doctype/asset/depreciation.py
@@ -561,6 +561,8 @@
def reverse_depreciation_entry_made_after_disposal(asset, date):
for row in asset.get("finance_books"):
asset_depr_schedule_doc = get_asset_depr_schedule_doc(asset.name, "Active", row.finance_book)
+ if not asset_depr_schedule_doc:
+ continue
for schedule_idx, schedule in enumerate(asset_depr_schedule_doc.get("depreciation_schedule")):
if schedule.schedule_date == date:
diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
index cad74df..5e251a5 100644
--- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
@@ -146,6 +146,7 @@
def cancel_target_asset(self):
if self.entry_type == "Capitalization" and self.target_asset:
asset_doc = frappe.get_doc("Asset", self.target_asset)
+ frappe.db.set_value("Asset", self.target_asset, "capitalized_in", None)
if asset_doc.docstatus == 1:
asset_doc.cancel()
diff --git a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
index 063fe99..780f61f 100644
--- a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
+++ b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
@@ -40,7 +40,7 @@
if getdate(task.next_due_date) < getdate(nowdate()):
task.maintenance_status = "Overdue"
if not task.assign_to and self.docstatus == 0:
- throw(_("Row #{}: Please asign task to a member.").format(task.idx))
+ throw(_("Row #{}: Please assign task to a member.").format(task.idx))
def on_update(self):
for task in self.get("asset_maintenance_tasks"):
diff --git a/erpnext/assets/onboarding_step/asset_category/asset_category.json b/erpnext/assets/onboarding_step/asset_category/asset_category.json
index 58f322e..a1b68ba 100644
--- a/erpnext/assets/onboarding_step/asset_category/asset_category.json
+++ b/erpnext/assets/onboarding_step/asset_category/asset_category.json
@@ -2,14 +2,14 @@
"action": "Show Form Tour",
"action_label": "Let's review existing Asset Category",
"creation": "2021-08-13 14:26:18.656303",
- "description": "# Asset Category\n\nAn Asset Category classifies different assets of a Company.\n\nYou can create an Asset Category based on the type of assets. For example, all your desktops and laptops can be part of an Asset Category named \"Electronic Equipments\". Create a separate category for furniture. Also, you can update default properties for each category, like:\n - Depreciation type and duration\n - Fixed asset account\n - Depreciation account\n",
+ "description": "# Asset Category\n\nAn Asset Category classifies different assets of a Company.\n\nYou can create an Asset Category based on the type of assets. For example, all your desktops and laptops can be part of an Asset Category named \"Electronic Equipment\". Create a separate category for furniture. Also, you can update default properties for each category, like:\n - Depreciation type and duration\n - Fixed asset account\n - Depreciation account\n",
"docstatus": 0,
"doctype": "Onboarding Step",
"idx": 0,
"is_complete": 0,
"is_single": 0,
"is_skipped": 0,
- "modified": "2021-11-23 10:02:03.242127",
+ "modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"name": "Asset Category",
"owner": "Administrator",
diff --git a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py
index 45811a9..e689b05 100644
--- a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py
+++ b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py
@@ -202,7 +202,7 @@
"values": [flt(d.get("asset_value"), 2) for d in labels_values_map.values()],
},
{
- "name": _("Depreciatied Amount"),
+ "name": _("Depreciated Amount"),
"values": [flt(d.get("depreciated_amount"), 2) for d in labels_values_map.values()],
},
],
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index afbea61..a0569ec 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -22,6 +22,7 @@
get_link_to_form,
getdate,
nowdate,
+ parse_json,
today,
)
@@ -201,6 +202,7 @@
self.validate_party()
self.validate_currency()
self.validate_party_account_currency()
+ self.validate_return_against_account()
if self.doctype in ["Purchase Invoice", "Sales Invoice"]:
if invalid_advances := [
@@ -349,6 +351,20 @@
for bundle in bundles:
frappe.delete_doc("Serial and Batch Bundle", bundle.name)
+ def validate_return_against_account(self):
+ if (
+ self.doctype in ["Sales Invoice", "Purchase Invoice"] and self.is_return and self.return_against
+ ):
+ cr_dr_account_field = "debit_to" if self.doctype == "Sales Invoice" else "credit_to"
+ cr_dr_account_label = "Debit To" if self.doctype == "Sales Invoice" else "Credit To"
+ cr_dr_account = self.get(cr_dr_account_field)
+ if frappe.get_value(self.doctype, self.return_against, cr_dr_account_field) != cr_dr_account:
+ frappe.throw(
+ _("'{0}' account: '{1}' should match the Return Against Invoice").format(
+ frappe.bold(cr_dr_account_label), frappe.bold(cr_dr_account)
+ )
+ )
+
def validate_deferred_income_expense_account(self):
field_map = {
"Sales Invoice": "deferred_revenue_account",
@@ -833,6 +849,37 @@
self.extend("taxes", get_taxes_and_charges(tax_master_doctype, self.get("taxes_and_charges")))
+ def append_taxes_from_item_tax_template(self):
+ if not frappe.db.get_single_value("Accounts Settings", "add_taxes_from_item_tax_template"):
+ return
+
+ for row in self.items:
+ item_tax_rate = row.get("item_tax_rate")
+ if not item_tax_rate:
+ continue
+
+ if isinstance(item_tax_rate, str):
+ item_tax_rate = parse_json(item_tax_rate)
+
+ for account_head, rate in item_tax_rate.items():
+ row = self.get_tax_row(account_head)
+
+ if not row:
+ self.append(
+ "taxes",
+ {
+ "charge_type": "On Net Total",
+ "account_head": account_head,
+ "rate": 0,
+ "description": account_head,
+ },
+ )
+
+ def get_tax_row(self, account_head):
+ for row in self.taxes:
+ if row.account_head == account_head:
+ return row
+
def set_other_charges(self):
self.set("taxes", [])
self.set_taxes()
@@ -1761,9 +1808,9 @@
def set_total_advance_paid(self):
ple = frappe.qb.DocType("Payment Ledger Entry")
- if self.doctype in frappe.get_hooks("advance_payment_customer_doctypes"):
+ if self.doctype in frappe.get_hooks("advance_payment_receivable_doctypes"):
party = self.customer
- if self.doctype in frappe.get_hooks("advance_payment_supplier_doctypes"):
+ if self.doctype in frappe.get_hooks("advance_payment_payable_doctypes"):
party = self.supplier
advance = (
frappe.qb.from_(ple)
@@ -1829,9 +1876,9 @@
"docstatus": 1,
},
)
- if self.doctype in frappe.get_hooks("advance_payment_customer_doctypes"):
+ if self.doctype in frappe.get_hooks("advance_payment_receivable_doctypes"):
new_status = "Requested" if prs else "Not Requested"
- if self.doctype in frappe.get_hooks("advance_payment_supplier_doctypes"):
+ if self.doctype in frappe.get_hooks("advance_payment_payable_doctypes"):
new_status = "Initiated" if prs else "Not Initiated"
if new_status == self.advance_payment_status:
diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py
index 6e50279..800e756 100644
--- a/erpnext/controllers/sales_and_purchase_return.py
+++ b/erpnext/controllers/sales_and_purchase_return.py
@@ -141,7 +141,7 @@
items_returned = True
if not items_returned:
- frappe.throw(_("Atleast one item should be entered with negative quantity in return document"))
+ frappe.throw(_("At least one item should be entered with negative quantity in return document"))
def validate_quantity(doc, args, ref, valid_items, already_returned_items):
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index ac8c88f..e5f341f 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -99,7 +99,8 @@
],
"Purchase Receipt": [
["Draft", None],
- ["To Bill", "eval:self.per_billed < 100 and self.docstatus == 1"],
+ ["To Bill", "eval:self.per_billed == 0 and self.docstatus == 1"],
+ ["Partly Billed", "eval:self.per_billed > 0 and self.per_billed < 100 and self.docstatus == 1"],
["Return Issued", "eval:self.per_returned == 100 and self.docstatus == 1"],
["Completed", "eval:self.per_billed == 100 and self.docstatus == 1"],
["Cancelled", "eval:self.docstatus==2"],
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index 7c63518..11e9f9f 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -6,7 +6,7 @@
from typing import List, Tuple
import frappe
-from frappe import _
+from frappe import _, bold
from frappe.utils import cint, flt, get_link_to_form, getdate
import erpnext
@@ -697,6 +697,9 @@
self.validate_in_transit_warehouses()
self.validate_multi_currency()
self.validate_packed_items()
+
+ if self.get("is_internal_supplier"):
+ self.validate_internal_transfer_qty()
else:
self.validate_internal_transfer_warehouse()
@@ -735,6 +738,116 @@
if self.doctype in ("Sales Invoice", "Delivery Note Item") and self.get("packed_items"):
frappe.throw(_("Packed Items cannot be transferred internally"))
+ def validate_internal_transfer_qty(self):
+ if self.doctype not in ["Purchase Invoice", "Purchase Receipt"]:
+ return
+
+ item_wise_transfer_qty = self.get_item_wise_inter_transfer_qty()
+ if not item_wise_transfer_qty:
+ return
+
+ item_wise_received_qty = self.get_item_wise_inter_received_qty()
+ precision = frappe.get_precision(self.doctype + " Item", "qty")
+
+ over_receipt_allowance = frappe.db.get_single_value(
+ "Stock Settings", "over_delivery_receipt_allowance"
+ )
+
+ parent_doctype = {
+ "Purchase Receipt": "Delivery Note",
+ "Purchase Invoice": "Sales Invoice",
+ }.get(self.doctype)
+
+ for key, transferred_qty in item_wise_transfer_qty.items():
+ recevied_qty = flt(item_wise_received_qty.get(key), precision)
+ if over_receipt_allowance:
+ transferred_qty = transferred_qty + flt(
+ transferred_qty * over_receipt_allowance / 100, precision
+ )
+
+ if recevied_qty > flt(transferred_qty, precision):
+ frappe.throw(
+ _("For Item {0} cannot be received more than {1} qty against the {2} {3}").format(
+ bold(key[1]),
+ bold(flt(transferred_qty, precision)),
+ bold(parent_doctype),
+ get_link_to_form(parent_doctype, self.get("inter_company_reference")),
+ )
+ )
+
+ def get_item_wise_inter_transfer_qty(self):
+ reference_field = "inter_company_reference"
+ if self.doctype == "Purchase Invoice":
+ reference_field = "inter_company_invoice_reference"
+
+ parent_doctype = {
+ "Purchase Receipt": "Delivery Note",
+ "Purchase Invoice": "Sales Invoice",
+ }.get(self.doctype)
+
+ child_doctype = parent_doctype + " Item"
+
+ parent_tab = frappe.qb.DocType(parent_doctype)
+ child_tab = frappe.qb.DocType(child_doctype)
+
+ query = (
+ frappe.qb.from_(parent_doctype)
+ .inner_join(child_tab)
+ .on(child_tab.parent == parent_tab.name)
+ .select(
+ child_tab.name,
+ child_tab.item_code,
+ child_tab.qty,
+ )
+ .where((parent_tab.name == self.get(reference_field)) & (parent_tab.docstatus == 1))
+ )
+
+ data = query.run(as_dict=True)
+ item_wise_transfer_qty = defaultdict(float)
+ for row in data:
+ item_wise_transfer_qty[(row.name, row.item_code)] += flt(row.qty)
+
+ return item_wise_transfer_qty
+
+ def get_item_wise_inter_received_qty(self):
+ child_doctype = self.doctype + " Item"
+
+ parent_tab = frappe.qb.DocType(self.doctype)
+ child_tab = frappe.qb.DocType(child_doctype)
+
+ query = (
+ frappe.qb.from_(self.doctype)
+ .inner_join(child_tab)
+ .on(child_tab.parent == parent_tab.name)
+ .select(
+ child_tab.item_code,
+ child_tab.qty,
+ )
+ .where(parent_tab.docstatus < 2)
+ )
+
+ if self.doctype == "Purchase Invoice":
+ query = query.select(
+ child_tab.sales_invoice_item.as_("name"),
+ )
+
+ query = query.where(
+ parent_tab.inter_company_invoice_reference == self.inter_company_invoice_reference
+ )
+ else:
+ query = query.select(
+ child_tab.delivery_note_item.as_("name"),
+ )
+
+ query = query.where(parent_tab.inter_company_reference == self.inter_company_reference)
+
+ data = query.run(as_dict=True)
+ item_wise_transfer_qty = defaultdict(float)
+ for row in data:
+ item_wise_transfer_qty[(row.name, row.item_code)] += flt(row.qty)
+
+ return item_wise_transfer_qty
+
def validate_putaway_capacity(self):
# if over receipt is attempted while 'apply putaway rule' is disabled
# and if rule was applied on the transaction, validate it.
diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py
index 9555902..17a2b07 100644
--- a/erpnext/controllers/subcontracting_controller.py
+++ b/erpnext/controllers/subcontracting_controller.py
@@ -260,18 +260,22 @@
return frappe.get_all(f"{doctype}", fields=fields, filters=filters)
def __get_consumed_items(self, doctype, receipt_items):
+ fields = [
+ "serial_no",
+ "rm_item_code",
+ "reference_name",
+ "batch_no",
+ "consumed_qty",
+ "main_item_code",
+ "parent as voucher_no",
+ ]
+
+ if self.subcontract_data.receipt_supplied_items_field != "Purchase Receipt Item Supplied":
+ fields.append("serial_and_batch_bundle")
+
return frappe.get_all(
self.subcontract_data.receipt_supplied_items_field,
- fields=[
- "serial_no",
- "rm_item_code",
- "reference_name",
- "serial_and_batch_bundle",
- "batch_no",
- "consumed_qty",
- "main_item_code",
- "parent as voucher_no",
- ],
+ fields=fields,
filters={"docstatus": 1, "reference_name": ("in", list(receipt_items)), "parenttype": doctype},
)
@@ -881,7 +885,9 @@
"posting_time": self.posting_time,
"qty": -1 * item.consumed_qty,
"voucher_detail_no": item.name,
- "serial_and_batch_bundle": item.serial_and_batch_bundle,
+ "serial_and_batch_bundle": item.get("serial_and_batch_bundle"),
+ "serial_no": item.get("serial_no"),
+ "batch_no": item.get("batch_no"),
}
)
diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py
index f9f68a1..8cb1a0e 100644
--- a/erpnext/controllers/taxes_and_totals.py
+++ b/erpnext/controllers/taxes_and_totals.py
@@ -8,6 +8,7 @@
from frappe import _, scrub
from frappe.model.document import Document
from frappe.utils import cint, flt, round_based_on_smallest_currency_fraction
+from frappe.utils.deprecations import deprecated
import erpnext
from erpnext.accounts.doctype.journal_entry.journal_entry import get_exchange_rate
@@ -74,7 +75,7 @@
self.calculate_net_total()
self.calculate_tax_withholding_net_total()
self.calculate_taxes()
- self.manipulate_grand_total_for_inclusive_tax()
+ self.adjust_grand_total_for_inclusive_tax()
self.calculate_totals()
self._cleanup()
self.calculate_total_net_weight()
@@ -279,7 +280,7 @@
):
amount = flt(item.amount) - total_inclusive_tax_amount_per_qty
- item.net_amount = flt(amount / (1 + cumulated_tax_fraction))
+ item.net_amount = flt(amount / (1 + cumulated_tax_fraction), item.precision("net_amount"))
item.net_rate = flt(item.net_amount / item.qty, item.precision("net_rate"))
item.discount_percentage = flt(item.discount_percentage, item.precision("discount_percentage"))
@@ -516,7 +517,12 @@
tax.base_tax_amount = round(tax.base_tax_amount, 0)
tax.base_tax_amount_after_discount_amount = round(tax.base_tax_amount_after_discount_amount, 0)
+ @deprecated
def manipulate_grand_total_for_inclusive_tax(self):
+ # for backward compatablility - if in case used by an external application
+ return self.adjust_grand_total_for_inclusive_tax()
+
+ def adjust_grand_total_for_inclusive_tax(self):
# if fully inclusive taxes and diff
if self.doc.get("taxes") and any(cint(t.included_in_print_rate) for t in self.doc.get("taxes")):
last_tax = self.doc.get("taxes")[-1]
@@ -538,17 +544,21 @@
diff = flt(diff, self.doc.precision("rounding_adjustment"))
if diff and abs(diff) <= (5.0 / 10 ** last_tax.precision("tax_amount")):
- self.doc.rounding_adjustment = diff
+ self.doc.grand_total_diff = diff
+ else:
+ self.doc.grand_total_diff = 0
def calculate_totals(self):
if self.doc.get("taxes"):
- self.doc.grand_total = flt(self.doc.get("taxes")[-1].total) + flt(self.doc.rounding_adjustment)
+ self.doc.grand_total = flt(self.doc.get("taxes")[-1].total) + flt(
+ self.doc.get("grand_total_diff")
+ )
else:
self.doc.grand_total = flt(self.doc.net_total)
if self.doc.get("taxes"):
self.doc.total_taxes_and_charges = flt(
- self.doc.grand_total - self.doc.net_total - flt(self.doc.rounding_adjustment),
+ self.doc.grand_total - self.doc.net_total - flt(self.doc.get("grand_total_diff")),
self.doc.precision("total_taxes_and_charges"),
)
else:
@@ -613,8 +623,8 @@
self.doc.grand_total, self.doc.currency, self.doc.precision("rounded_total")
)
- # if print_in_rate is set, we would have already calculated rounding adjustment
- self.doc.rounding_adjustment += flt(
+ # rounding adjustment should always be the difference vetween grand and rounded total
+ self.doc.rounding_adjustment = flt(
self.doc.rounded_total - self.doc.grand_total, self.doc.precision("rounding_adjustment")
)
@@ -832,7 +842,6 @@
self.calculate_paid_amount()
def calculate_paid_amount(self):
-
paid_amount = base_paid_amount = 0.0
if self.doc.is_pos:
diff --git a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py b/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py
index ba1fae9..8cba24a 100644
--- a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py
+++ b/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py
@@ -155,7 +155,7 @@
except RecursionError:
self.log(
_(
- "Error occured while parsing Chart of Accounts: Please make sure that no two accounts have the same name"
+ "Error occurred while parsing Chart of Accounts: Please make sure that no two accounts have the same name"
)
)
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index f33fff0..14b7656 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -481,8 +481,8 @@
communication_doctypes = ["Customer", "Supplier"]
-advance_payment_customer_doctypes = ["Sales Order"]
-advance_payment_supplier_doctypes = ["Purchase Order"]
+advance_payment_receivable_doctypes = ["Sales Order"]
+advance_payment_payable_doctypes = ["Purchase Order"]
invoice_doctypes = ["Sales Invoice", "Purchase Invoice"]
diff --git a/erpnext/locale/main.pot b/erpnext/locale/main.pot
index adfa7ee..3409014 100644
--- a/erpnext/locale/main.pot
+++ b/erpnext/locale/main.pot
@@ -7,8 +7,8 @@
msgstr ""
"Project-Id-Version: ERPNext VERSION\n"
"Report-Msgid-Bugs-To: info@erpnext.com\n"
-"POT-Creation-Date: 2024-01-12 13:34+0053\n"
-"PO-Revision-Date: 2024-01-12 13:34+0053\n"
+"POT-Creation-Date: 2024-01-29 18:13+0053\n"
+"PO-Revision-Date: 2024-01-29 18:13+0053\n"
"Last-Translator: info@erpnext.com\n"
"Language-Team: info@erpnext.com\n"
"MIME-Version: 1.0\n"
@@ -30,7 +30,7 @@
msgid " Address"
msgstr ""
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:597
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:612
msgid " Amount"
msgstr ""
@@ -40,7 +40,7 @@
msgid " Is Child Table"
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:181
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:186
#: accounts/report/tds_computation_summary/tds_computation_summary.py:107
#: selling/report/sales_analytics/sales_analytics.py:66
msgid " Name"
@@ -50,7 +50,7 @@
msgid " Qty"
msgstr ""
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:588
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:603
msgid " Rate"
msgstr ""
@@ -144,7 +144,7 @@
"\n"
"An Asset Category classifies different assets of a Company.\n"
"\n"
-"You can create an Asset Category based on the type of assets. For example, all your desktops and laptops can be part of an Asset Category named \"Electronic Equipments\". Create a separate category for furniture. Also, you can update default properties for each category, like:\n"
+"You can create an Asset Category based on the type of assets. For example, all your desktops and laptops can be part of an Asset Category named \"Electronic Equipment\". Create a separate category for furniture. Also, you can update default properties for each category, like:\n"
" - Depreciation type and duration\n"
" - Fixed asset account\n"
" - Depreciation account\n"
@@ -640,7 +640,7 @@
msgstr ""
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:280
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:325
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:332
msgid "% Of Grand Total"
msgstr ""
@@ -725,11 +725,11 @@
msgid "% of materials delivered against this Sales Order"
msgstr ""
-#: controllers/accounts_controller.py:1830
+#: controllers/accounts_controller.py:1899
msgid "'Account' in the Accounting section of Customer {0}"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:260
+#: selling/doctype/sales_order/sales_order.py:263
msgid "'Allow Multiple Sales Orders Against a Customer's Purchase Order'"
msgstr ""
@@ -745,11 +745,11 @@
msgid "'Days Since Last Order' must be greater than or equal to zero"
msgstr ""
-#: controllers/accounts_controller.py:1835
+#: controllers/accounts_controller.py:1904
msgid "'Default {0} Account' in Company {1}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:1162
+#: accounts/doctype/journal_entry/journal_entry.py:1048
msgid "'Entries' cannot be empty"
msgstr ""
@@ -1347,11 +1347,11 @@
msgid "A - C"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:207
+#: manufacturing/doctype/bom/bom.py:209
msgid "A BOM with name {0} already exists for item {1}."
msgstr ""
-#: selling/doctype/customer/customer.py:296
+#: selling/doctype/customer/customer.py:297
msgid "A Customer Group exists with same name please change the Customer name or rename the Customer Group"
msgstr ""
@@ -1367,7 +1367,7 @@
msgid "A Packing Slip can only be created for Draft Delivery Note."
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:508
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:530
msgid "A Reconciliation Job {0} is running for the same filters. Cannot reconcile now"
msgstr ""
@@ -1379,6 +1379,14 @@
"Sales Order at the heart of your sales and purchase transactions. Sales Orders are linked in Delivery Note, Sales Invoices, Material Request, and Maintenance transactions. Through Sales Order, you can track fulfillment of the overall deal towards the customer."
msgstr ""
+#: setup/doctype/company/company.py:937
+msgid "A Transaction Deletion Job is triggered for {0}"
+msgstr ""
+
+#: setup/doctype/company/company.py:914
+msgid "A Transaction Deletion Job: {0} is already running for {1}"
+msgstr ""
+
#. Description of the 'Send To Primary Contact' (Check) field in DocType
#. 'Process Statement Of Accounts'
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json
@@ -1600,11 +1608,11 @@
msgid "Abbreviation"
msgstr ""
-#: setup/doctype/company/company.py:163
+#: setup/doctype/company/company.py:164
msgid "Abbreviation already used for another company"
msgstr ""
-#: setup/doctype/company/company.py:158
+#: setup/doctype/company/company.py:159
msgid "Abbreviation is mandatory"
msgstr ""
@@ -1694,7 +1702,7 @@
msgid "Accepted Qty in Stock UOM"
msgstr ""
-#: public/js/controllers/transaction.js:2094
+#: public/js/controllers/transaction.js:2124
msgid "Accepted Quantity"
msgstr ""
@@ -1764,11 +1772,11 @@
#: accounts/report/budget_variance_report/budget_variance_report.py:83
#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:291
#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py:205
-#: accounts/report/financial_statements.py:633
+#: accounts/report/financial_statements.py:621
#: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.js:30
#: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py:193
#: accounts/report/general_ledger/general_ledger.js:38
-#: accounts/report/general_ledger/general_ledger.py:562
+#: accounts/report/general_ledger/general_ledger.py:565
#: accounts/report/payment_ledger/payment_ledger.js:31
#: accounts/report/payment_ledger/payment_ledger.py:145
#: accounts/report/trial_balance/trial_balance.py:415
@@ -2076,8 +2084,8 @@
msgid "Account Manager"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:864
-#: controllers/accounts_controller.py:1839
+#: accounts/doctype/sales_invoice/sales_invoice.py:867
+#: controllers/accounts_controller.py:1908
msgid "Account Missing"
msgstr ""
@@ -2236,7 +2244,7 @@
msgid "Account is not set for the dashboard chart {0}"
msgstr ""
-#: assets/doctype/asset/asset.py:669
+#: assets/doctype/asset/asset.py:677
msgid "Account not Found"
msgstr ""
@@ -2265,7 +2273,7 @@
msgid "Account {0} added multiple times"
msgstr ""
-#: setup/doctype/company/company.py:186
+#: setup/doctype/company/company.py:187
msgid "Account {0} does not belong to company: {1}"
msgstr ""
@@ -2305,7 +2313,7 @@
msgid "Account {0} is frozen"
msgstr ""
-#: controllers/accounts_controller.py:998
+#: controllers/accounts_controller.py:1032
msgid "Account {0} is invalid. Account Currency must be {1}"
msgstr ""
@@ -2325,11 +2333,11 @@
msgid "Account {0}: You can not assign itself as parent account"
msgstr ""
-#: accounts/general_ledger.py:404
+#: accounts/general_ledger.py:403
msgid "Account: <b>{0}</b> is capital Work in progress and can not be updated by Journal Entry"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:226
+#: accounts/doctype/journal_entry/journal_entry.py:243
msgid "Account: {0} can only be updated via Stock Transactions"
msgstr ""
@@ -2337,11 +2345,11 @@
msgid "Account: {0} does not exist"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:2075
+#: accounts/doctype/payment_entry/payment_entry.py:2098
msgid "Account: {0} is not permitted under Payment Entry"
msgstr ""
-#: controllers/accounts_controller.py:2522
+#: controllers/accounts_controller.py:2591
msgid "Account: {0} with currency: {1} can not be selected"
msgstr ""
@@ -2647,6 +2655,13 @@
msgid "Accounting Dimensions"
msgstr ""
+#. Label of a Section Break field in DocType 'Payment Reconciliation
+#. Allocation'
+#: accounts/doctype/payment_reconciliation_allocation/payment_reconciliation_allocation.json
+msgctxt "Payment Reconciliation Allocation"
+msgid "Accounting Dimensions"
+msgstr ""
+
#. Label of a Section Break field in DocType 'Payment Request'
#: accounts/doctype/payment_request/payment_request.json
msgctxt "Payment Request"
@@ -2797,6 +2812,12 @@
msgid "Accounting Dimensions "
msgstr ""
+#. Label of a Section Break field in DocType 'Payment Reconciliation'
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.json
+msgctxt "Payment Reconciliation"
+msgid "Accounting Dimensions Filter"
+msgstr ""
+
#. Label of a Table field in DocType 'Journal Entry'
#: accounts/doctype/journal_entry/journal_entry.json
msgctxt "Journal Entry"
@@ -2817,37 +2838,37 @@
msgid "Accounting Entries are reposted."
msgstr ""
-#: assets/doctype/asset/asset.py:703 assets/doctype/asset/asset.py:720
+#: assets/doctype/asset/asset.py:709 assets/doctype/asset/asset.py:724
#: assets/doctype/asset_capitalization/asset_capitalization.py:572
msgid "Accounting Entry for Asset"
msgstr ""
-#: stock/doctype/purchase_receipt/purchase_receipt.py:740
+#: stock/doctype/purchase_receipt/purchase_receipt.py:738
msgid "Accounting Entry for Service"
msgstr ""
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:910
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:932
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:950
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:969
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:990
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1013
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1148
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1294
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1314
-#: controllers/stock_controller.py:170 controllers/stock_controller.py:187
-#: stock/doctype/purchase_receipt/purchase_receipt.py:842
-#: stock/doctype/stock_entry/stock_entry.py:1466
-#: stock/doctype/stock_entry/stock_entry.py:1482
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:906
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:926
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:942
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:959
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:978
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:999
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1126
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1266
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1284
+#: controllers/stock_controller.py:168 controllers/stock_controller.py:183
+#: stock/doctype/purchase_receipt/purchase_receipt.py:839
+#: stock/doctype/stock_entry/stock_entry.py:1464
+#: stock/doctype/stock_entry/stock_entry.py:1478
#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:519
msgid "Accounting Entry for Stock"
msgstr ""
-#: stock/doctype/purchase_receipt/purchase_receipt.py:660
+#: stock/doctype/purchase_receipt/purchase_receipt.py:658
msgid "Accounting Entry for {0}"
msgstr ""
-#: controllers/accounts_controller.py:1881
+#: controllers/accounts_controller.py:1950
msgid "Accounting Entry for {0}: {1} can only be made in currency: {2}"
msgstr ""
@@ -2894,7 +2915,7 @@
msgid "Accounting entries for this invoice needs to be reposted. Please click on 'Repost' button to update."
msgstr ""
-#: setup/doctype/company/company.py:316
+#: setup/doctype/company/company.py:317
msgid "Accounts"
msgstr ""
@@ -3011,6 +3032,7 @@
#: accounts/doctype/dunning_type/dunning_type.json
#: accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.json
#: accounts/doctype/finance_book/finance_book.json
+#: accounts/doctype/fiscal_year/fiscal_year.json
#: accounts/doctype/gl_entry/gl_entry.json
#: accounts/doctype/item_tax_template/item_tax_template.json
#: accounts/doctype/journal_entry/journal_entry.json
@@ -3068,18 +3090,18 @@
msgid "Accounts Manager"
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:329
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:343
msgid "Accounts Missing Error"
msgstr ""
#. Name of a report
-#. Label of a Card Break in the Accounting Workspace
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
+#. Label of a shortcut in the Payables Workspace
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:85
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:117
#: accounts/report/accounts_payable/accounts_payable.json
#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:122
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
#: buying/doctype/supplier/supplier.js:90
msgid "Accounts Payable"
msgstr ""
@@ -3092,22 +3114,23 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
#: accounts/report/accounts_payable/accounts_payable.js:175
#: accounts/report/accounts_payable_summary/accounts_payable_summary.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
msgid "Accounts Payable Summary"
msgstr ""
#. Name of a report
-#. Label of a Card Break in the Accounting Workspace
-#. Label of a Link in the Accounting Workspace
#. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
+#. Label of a shortcut in the Receivables Workspace
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:12
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:12
#: accounts/report/accounts_receivable/accounts_receivable.json
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:150
#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
#: selling/doctype/customer/customer.js:155
msgid "Accounts Receivable"
msgstr ""
@@ -3139,10 +3162,10 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
#: accounts/report/accounts_receivable/accounts_receivable.js:208
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
msgid "Accounts Receivable Summary"
msgstr ""
@@ -3267,7 +3290,7 @@
msgid "Accounts User"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:1267
+#: accounts/doctype/journal_entry/journal_entry.py:1153
msgid "Accounts table cannot be blank."
msgstr ""
@@ -3326,9 +3349,9 @@
msgid "Accumulated Monthly"
msgstr ""
-#: accounts/report/balance_sheet/balance_sheet.js:13
+#: accounts/report/balance_sheet/balance_sheet.js:27
#: accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.js:13
-#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:13
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:28
msgid "Accumulated Values"
msgstr ""
@@ -3828,8 +3851,8 @@
msgid "Actual qty in stock"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:1212
-#: public/js/controllers/accounts.js:175
+#: accounts/doctype/payment_entry/payment_entry.js:1223
+#: public/js/controllers/accounts.js:176
msgid "Actual type tax cannot be included in Item rate in row {0}"
msgstr ""
@@ -3839,7 +3862,7 @@
#: public/js/bom_configurator/bom_configurator.bundle.js:291
#: public/js/utils/crm_activities.js:168
#: public/js/utils/serial_no_batch_selector.js:17
-#: public/js/utils/serial_no_batch_selector.js:176
+#: public/js/utils/serial_no_batch_selector.js:180
msgid "Add"
msgstr ""
@@ -3884,7 +3907,7 @@
msgstr ""
#: public/js/bom_configurator/bom_configurator.bundle.js:224
-#: selling/doctype/sales_order/sales_order.js:213
+#: selling/doctype/sales_order/sales_order.js:207
#: stock/dashboard/item_dashboard.js:205
msgid "Add Item"
msgstr ""
@@ -3950,6 +3973,12 @@
msgid "Add Sales Partners"
msgstr ""
+#. Label of a Button field in DocType 'Purchase Invoice Item'
+#: accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
+msgctxt "Purchase Invoice Item"
+msgid "Add Serial / Batch No"
+msgstr ""
+
#. Label of a Button field in DocType 'Purchase Receipt Item'
#: stock/doctype/purchase_receipt_item/purchase_receipt_item.json
msgctxt "Purchase Receipt Item"
@@ -4663,9 +4692,9 @@
msgid "Address & Contacts"
msgstr ""
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#. Name of a report
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
#: selling/report/address_and_contacts/address_and_contacts.json
msgid "Address And Contacts"
msgstr ""
@@ -4859,7 +4888,7 @@
msgid "Adjustment Against"
msgstr ""
-#: stock/doctype/purchase_receipt/purchase_receipt.py:583
+#: stock/doctype/purchase_receipt/purchase_receipt.py:581
msgid "Adjustment based on Purchase Invoice rate"
msgstr ""
@@ -4876,7 +4905,7 @@
#: accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.json
#: accounts/doctype/pos_opening_entry/pos_opening_entry.json
#: accounts/doctype/repost_accounting_ledger_settings/repost_accounting_ledger_settings.json
-#: portal/doctype/homepage/homepage.json stock/reorder_item.py:264
+#: stock/reorder_item.py:303
msgid "Administrator"
msgstr ""
@@ -4908,12 +4937,24 @@
msgid "Advance Paid"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order_list.js:45
-#: selling/doctype/sales_order/sales_order_list.js:59
+#: buying/doctype/purchase_order/purchase_order_list.js:47
+#: selling/doctype/sales_order/sales_order_list.js:61
msgid "Advance Payment"
msgstr ""
-#: controllers/accounts_controller.py:211
+#. Label of a Select field in DocType 'Purchase Order'
+#: buying/doctype/purchase_order/purchase_order.json
+msgctxt "Purchase Order"
+msgid "Advance Payment Status"
+msgstr ""
+
+#. Label of a Select field in DocType 'Sales Order'
+#: selling/doctype/sales_order/sales_order.json
+msgctxt "Sales Order"
+msgid "Advance Payment Status"
+msgstr ""
+
+#: controllers/accounts_controller.py:214
msgid "Advance Payments"
msgstr ""
@@ -4969,11 +5010,11 @@
msgid "Advance amount"
msgstr ""
-#: controllers/taxes_and_totals.py:733
+#: controllers/taxes_and_totals.py:743
msgid "Advance amount cannot be greater than {0} {1}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:725
+#: accounts/doctype/journal_entry/journal_entry.py:741
msgid "Advance paid against {0} {1} cannot be greater than Grand Total {2}"
msgstr ""
@@ -5022,7 +5063,6 @@
msgstr ""
#. Label of a Text field in DocType 'GL Entry'
-#. Label of a Dynamic Link field in DocType 'GL Entry'
#: accounts/doctype/gl_entry/gl_entry.json
msgctxt "GL Entry"
msgid "Against"
@@ -5030,7 +5070,7 @@
#: accounts/report/bank_clearance_summary/bank_clearance_summary.py:39
#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:94
-#: accounts/report/general_ledger/general_ledger.py:628
+#: accounts/report/general_ledger/general_ledger.py:631
msgid "Against Account"
msgstr ""
@@ -5041,7 +5081,6 @@
msgstr ""
#. Label of a Text field in DocType 'Journal Entry Account'
-#. Label of a Dynamic Link field in DocType 'Journal Entry Account'
#: accounts/doctype/journal_entry_account/journal_entry_account.json
msgctxt "Journal Entry Account"
msgid "Against Account"
@@ -5065,11 +5104,11 @@
msgid "Against Blanket Order"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:942
+#: accounts/doctype/sales_invoice/sales_invoice.py:945
msgid "Against Customer Order {0} dated {1}"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:973
+#: selling/doctype/sales_order/sales_order.js:967
msgid "Against Default Supplier"
msgstr ""
@@ -5127,8 +5166,8 @@
msgid "Against Income Account"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:593
-#: accounts/doctype/payment_entry/payment_entry.py:667
+#: accounts/doctype/journal_entry/journal_entry.py:609
+#: accounts/doctype/payment_entry/payment_entry.py:669
msgid "Against Journal Entry {0} does not have any unmatched {1} entry"
msgstr ""
@@ -5170,19 +5209,7 @@
msgid "Against Supplier Invoice {0} dated {1}"
msgstr ""
-#. Label of a Link field in DocType 'GL Entry'
-#: accounts/doctype/gl_entry/gl_entry.json
-msgctxt "GL Entry"
-msgid "Against Type"
-msgstr ""
-
-#. Label of a Link field in DocType 'Journal Entry Account'
-#: accounts/doctype/journal_entry_account/journal_entry_account.json
-msgctxt "Journal Entry Account"
-msgid "Against Type"
-msgstr ""
-
-#: accounts/report/general_ledger/general_ledger.py:647
+#: accounts/report/general_ledger/general_ledger.py:650
msgid "Against Voucher"
msgstr ""
@@ -5204,7 +5231,7 @@
msgid "Against Voucher No"
msgstr ""
-#: accounts/report/general_ledger/general_ledger.py:645
+#: accounts/report/general_ledger/general_ledger.py:648
#: accounts/report/payment_ledger/payment_ledger.py:176
msgid "Against Voucher Type"
msgstr ""
@@ -5229,7 +5256,7 @@
msgstr ""
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:151
-#: accounts/report/accounts_receivable/accounts_receivable.py:1111
+#: accounts/report/accounts_receivable/accounts_receivable.py:1134
msgid "Age (Days)"
msgstr ""
@@ -5374,7 +5401,7 @@
#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:148
#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:168
#: accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py:166
-#: accounts/utils.py:1296 public/js/setup_wizard.js:163
+#: accounts/utils.py:1324 public/js/setup_wizard.js:163
msgid "All Accounts"
msgstr ""
@@ -5414,7 +5441,7 @@
msgid "All Activities HTML"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:266
+#: manufacturing/doctype/bom/bom.py:268
msgid "All BOMs"
msgstr ""
@@ -5448,14 +5475,14 @@
#: patches/v11_0/update_department_lft_rgt.py:9
#: patches/v11_0/update_department_lft_rgt.py:11
#: patches/v11_0/update_department_lft_rgt.py:17
-#: setup/doctype/company/company.py:309 setup/doctype/company/company.py:312
-#: setup/doctype/company/company.py:317 setup/doctype/company/company.py:323
-#: setup/doctype/company/company.py:329 setup/doctype/company/company.py:335
-#: setup/doctype/company/company.py:341 setup/doctype/company/company.py:347
-#: setup/doctype/company/company.py:353 setup/doctype/company/company.py:359
-#: setup/doctype/company/company.py:365 setup/doctype/company/company.py:371
-#: setup/doctype/company/company.py:377 setup/doctype/company/company.py:383
-#: setup/doctype/company/company.py:389
+#: setup/doctype/company/company.py:310 setup/doctype/company/company.py:313
+#: setup/doctype/company/company.py:318 setup/doctype/company/company.py:324
+#: setup/doctype/company/company.py:330 setup/doctype/company/company.py:336
+#: setup/doctype/company/company.py:342 setup/doctype/company/company.py:348
+#: setup/doctype/company/company.py:354 setup/doctype/company/company.py:360
+#: setup/doctype/company/company.py:366 setup/doctype/company/company.py:372
+#: setup/doctype/company/company.py:378 setup/doctype/company/company.py:384
+#: setup/doctype/company/company.py:390
msgid "All Departments"
msgstr ""
@@ -5523,7 +5550,7 @@
msgid "All Territories"
msgstr ""
-#: setup/doctype/company/company.py:258 setup/doctype/company/company.py:274
+#: setup/doctype/company/company.py:259 setup/doctype/company/company.py:275
msgid "All Warehouses"
msgstr ""
@@ -5538,15 +5565,15 @@
msgid "All communications including and above this shall be moved into the new Issue"
msgstr ""
-#: stock/doctype/purchase_receipt/purchase_receipt.py:1173
+#: stock/doctype/purchase_receipt/purchase_receipt.py:1170
msgid "All items have already been Invoiced/Returned"
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:2195
+#: stock/doctype/stock_entry/stock_entry.py:2191
msgid "All items have already been transferred for this Work Order."
msgstr ""
-#: public/js/controllers/transaction.js:2180
+#: public/js/controllers/transaction.js:2210
msgid "All items in this document already have a linked Quality Inspection."
msgstr ""
@@ -5583,7 +5610,7 @@
msgid "Allocate Advances Automatically (FIFO)"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:668
+#: accounts/doctype/payment_entry/payment_entry.js:679
msgid "Allocate Payment Amount"
msgstr ""
@@ -5671,15 +5698,15 @@
msgid "Allocated amount"
msgstr ""
-#: accounts/utils.py:593
+#: accounts/utils.py:614
msgid "Allocated amount cannot be greater than unadjusted amount"
msgstr ""
-#: accounts/utils.py:591
+#: accounts/utils.py:612
msgid "Allocated amount cannot be negative"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:237
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:258
msgid "Allocation"
msgstr ""
@@ -6600,7 +6627,7 @@
msgid "Amended From"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.js:539
+#: accounts/doctype/journal_entry/journal_entry.js:529
#: accounts/doctype/pos_closing_entry/closing_voucher_details.html:41
#: accounts/doctype/pos_closing_entry/closing_voucher_details.html:67
#: accounts/print_format/payment_receipt_voucher/payment_receipt_voucher.html:10
@@ -6608,7 +6635,7 @@
#: accounts/report/billed_items_to_be_received/billed_items_to_be_received.py:80
#: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:43
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:270
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:315
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:322
#: accounts/report/payment_ledger/payment_ledger.py:194
#: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:43
#: accounts/report/share_balance/share_balance.py:61
@@ -7141,19 +7168,19 @@
msgid "Amount in customer's currency"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1099
+#: accounts/doctype/payment_entry/payment_entry.py:1119
msgid "Amount {0} {1} against {2} {3}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1107
+#: accounts/doctype/payment_entry/payment_entry.py:1127
msgid "Amount {0} {1} deducted against {2}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1075
+#: accounts/doctype/payment_entry/payment_entry.py:1095
msgid "Amount {0} {1} transferred from {2} to {3}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1082
+#: accounts/doctype/payment_entry/payment_entry.py:1102
msgid "Amount {0} {1} {2} {3}"
msgstr ""
@@ -7171,12 +7198,12 @@
msgid "An error has occurred during {0}. Check {1} for more details"
msgstr ""
-#: stock/reorder_item.py:248
-msgid "An error occured for certain Items while creating Material Requests based on Re-order level. Please rectify these issues :"
+#: public/js/controllers/buying.js:297 public/js/utils/sales_common.js:364
+msgid "An error occurred during the update process"
msgstr ""
-#: public/js/controllers/buying.js:297 public/js/utils/sales_common.js:355
-msgid "An error occurred during the update process"
+#: stock/reorder_item.py:287
+msgid "An error occurred for certain Items while creating Material Requests based on Re-order level. Please rectify these issues :"
msgstr ""
#: accounts/doctype/budget/budget.py:232
@@ -8045,21 +8072,21 @@
msgid "Asset Depreciation Schedule for Asset {0} and Finance Book {1} is not using shift based depreciation"
msgstr ""
-#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:883
-#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:929
+#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:898
+#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:944
#: assets/doctype/asset_shift_allocation/asset_shift_allocation.py:83
msgid "Asset Depreciation Schedule not found for Asset {0} and Finance Book {1}"
msgstr ""
-#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:92
+#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:94
msgid "Asset Depreciation Schedule {0} for Asset {1} already exists."
msgstr ""
-#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:86
+#: assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py:88
msgid "Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists."
msgstr ""
-#: assets/doctype/asset/asset.py:144 assets/doctype/asset/asset.py:180
+#: assets/doctype/asset/asset.py:144 assets/doctype/asset/asset.py:181
msgid "Asset Depreciation Schedules created:<br>{0}<br><br>Please check, edit if needed, and submit the Asset."
msgstr ""
@@ -8169,7 +8196,7 @@
msgid "Asset Movement Item"
msgstr ""
-#: assets/doctype/asset/asset.py:897
+#: assets/doctype/asset/asset.py:901
msgid "Asset Movement record {0} created"
msgstr ""
@@ -8355,35 +8382,35 @@
msgid "Asset Value Analytics"
msgstr ""
-#: assets/doctype/asset/asset.py:171
+#: assets/doctype/asset/asset.py:172
msgid "Asset cancelled"
msgstr ""
-#: assets/doctype/asset/asset.py:505
+#: assets/doctype/asset/asset.py:506
msgid "Asset cannot be cancelled, as it is already {0}"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:689
+#: assets/doctype/asset_capitalization/asset_capitalization.py:687
msgid "Asset capitalized after Asset Capitalization {0} was submitted"
msgstr ""
-#: assets/doctype/asset/asset.py:193
+#: assets/doctype/asset/asset.py:194
msgid "Asset created"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:635
+#: assets/doctype/asset_capitalization/asset_capitalization.py:633
msgid "Asset created after Asset Capitalization {0} was submitted"
msgstr ""
-#: assets/doctype/asset/asset.py:1150
+#: assets/doctype/asset/asset.py:1156
msgid "Asset created after being split from Asset {0}"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:697
+#: assets/doctype/asset_capitalization/asset_capitalization.py:695
msgid "Asset decapitalized after Asset Capitalization {0} was submitted"
msgstr ""
-#: assets/doctype/asset/asset.py:196
+#: assets/doctype/asset/asset.py:197
msgid "Asset deleted"
msgstr ""
@@ -8403,11 +8430,11 @@
msgid "Asset restored"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:705
+#: assets/doctype/asset_capitalization/asset_capitalization.py:703
msgid "Asset restored after Asset Capitalization {0} was cancelled"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1323
+#: accounts/doctype/sales_invoice/sales_invoice.py:1320
msgid "Asset returned"
msgstr ""
@@ -8419,7 +8446,7 @@
msgid "Asset scrapped via Journal Entry {0}"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1357
+#: accounts/doctype/sales_invoice/sales_invoice.py:1354
msgid "Asset sold"
msgstr ""
@@ -8431,7 +8458,7 @@
msgid "Asset transferred to Location {0}"
msgstr ""
-#: assets/doctype/asset/asset.py:1074
+#: assets/doctype/asset/asset.py:1080
msgid "Asset updated after being split into Asset {0}"
msgstr ""
@@ -8451,7 +8478,7 @@
msgid "Asset {0} cannot be scrapped, as it is already {1}"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:228
+#: assets/doctype/asset_capitalization/asset_capitalization.py:237
msgid "Asset {0} does not belong to Item {1}"
msgstr ""
@@ -8467,16 +8494,16 @@
msgid "Asset {0} does not belongs to the location {1}"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:761
-#: assets/doctype/asset_capitalization/asset_capitalization.py:861
+#: assets/doctype/asset_capitalization/asset_capitalization.py:759
+#: assets/doctype/asset_capitalization/asset_capitalization.py:859
msgid "Asset {0} does not exist"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:641
+#: assets/doctype/asset_capitalization/asset_capitalization.py:639
msgid "Asset {0} has been created. Please set the depreciation details if any and submit it."
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:663
+#: assets/doctype/asset_capitalization/asset_capitalization.py:661
msgid "Asset {0} has been updated. Please set the depreciation details if any and submit it."
msgstr ""
@@ -8573,8 +8600,20 @@
msgid "Assignment Conditions"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:407
-#: accounts/doctype/sales_invoice/sales_invoice.py:508
+#: assets/doctype/asset/asset.py:1011
+msgid "At least one asset has to be selected."
+msgstr ""
+
+#: accounts/doctype/pos_invoice/pos_invoice.py:789
+msgid "At least one invoice has to be selected."
+msgstr ""
+
+#: controllers/sales_and_purchase_return.py:144
+msgid "At least one item should be entered with negative quantity in return document"
+msgstr ""
+
+#: accounts/doctype/pos_invoice/pos_invoice.py:405
+#: accounts/doctype/sales_invoice/sales_invoice.py:509
msgid "At least one mode of payment is required for POS invoice."
msgstr ""
@@ -8582,45 +8621,33 @@
msgid "At least one of the Applicable Modules should be selected"
msgstr ""
+#: accounts/doctype/pricing_rule/pricing_rule.py:196
+msgid "At least one of the Selling or Buying must be selected"
+msgstr ""
+
+#: stock/doctype/stock_entry/stock_entry.py:643
+msgid "At least one warehouse is mandatory"
+msgstr ""
+
#: manufacturing/doctype/routing/routing.py:50
msgid "At row #{0}: the sequence id {1} cannot be less than previous row sequence id {2}"
msgstr ""
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:579
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:582
msgid "At row {0}: Batch No is mandatory for Item {1}"
msgstr ""
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:571
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:574
msgid "At row {0}: Serial No is mandatory for Item {1}"
msgstr ""
-#: assets/doctype/asset/asset.py:1007
-msgid "Atleast one asset has to be selected."
-msgstr ""
-
-#: accounts/doctype/pos_invoice/pos_invoice.py:796
-msgid "Atleast one invoice has to be selected."
-msgstr ""
-
-#: controllers/sales_and_purchase_return.py:144
-msgid "Atleast one item should be entered with negative quantity in return document"
-msgstr ""
-
-#: accounts/doctype/pricing_rule/pricing_rule.py:196
-msgid "Atleast one of the Selling or Buying must be selected"
-msgstr ""
-
-#: stock/doctype/stock_entry/stock_entry.py:643
-msgid "Atleast one warehouse is mandatory"
-msgstr ""
-
#. Description of the 'File to Rename' (Attach) field in DocType 'Rename Tool'
#: utilities/doctype/rename_tool/rename_tool.json
msgctxt "Rename Tool"
msgid "Attach .csv file with two columns, one for the old name and one for the new name"
msgstr ""
-#: public/js/utils/serial_no_batch_selector.js:199
+#: public/js/utils/serial_no_batch_selector.js:246
#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:66
msgid "Attach CSV File"
msgstr ""
@@ -8817,7 +8844,7 @@
msgid "Auto Email Report"
msgstr ""
-#: public/js/utils/serial_no_batch_selector.js:244
+#: public/js/utils/serial_no_batch_selector.js:316
msgid "Auto Fetch"
msgstr ""
@@ -8833,7 +8860,7 @@
msgid "Auto Material Request"
msgstr ""
-#: stock/reorder_item.py:240
+#: stock/reorder_item.py:242
msgid "Auto Material Requests Generated"
msgstr ""
@@ -8991,7 +9018,7 @@
msgid "Auto re-order"
msgstr ""
-#: public/js/controllers/buying.js:295 public/js/utils/sales_common.js:353
+#: public/js/controllers/buying.js:295 public/js/utils/sales_common.js:362
msgid "Auto repeat document updated"
msgstr ""
@@ -9167,7 +9194,7 @@
msgid "Available Stock for Packing Items"
msgstr ""
-#: assets/doctype/asset/asset.py:269
+#: assets/doctype/asset/asset.py:270
msgid "Available for use date is required"
msgstr ""
@@ -9185,7 +9212,7 @@
msgid "Available-for-use Date"
msgstr ""
-#: assets/doctype/asset/asset.py:354
+#: assets/doctype/asset/asset.py:355
msgid "Available-for-use Date should be after purchase date"
msgstr ""
@@ -9279,7 +9306,7 @@
#: manufacturing/report/bom_stock_calculated/bom_stock_calculated.js:9
#: manufacturing/report/bom_stock_report/bom_stock_report.js:5
#: manufacturing/report/work_order_stock_report/work_order_stock_report.py:109
-#: selling/doctype/sales_order/sales_order.js:816
+#: selling/doctype/sales_order/sales_order.js:810
#: stock/doctype/material_request/material_request.js:243
#: stock/doctype/stock_entry/stock_entry.js:545
#: stock/report/bom_search/bom_search.py:38
@@ -9352,7 +9379,7 @@
msgid "BOM 1"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:1346
+#: manufacturing/doctype/bom/bom.py:1348
msgid "BOM 1 {0} and BOM 2 {1} should not be same"
msgstr ""
@@ -9642,19 +9669,19 @@
msgid "BOM recursion: {0} cannot be child of {1}"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:629
+#: manufacturing/doctype/bom/bom.py:631
msgid "BOM recursion: {1} cannot be parent or child of {0}"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:1221
+#: manufacturing/doctype/bom/bom.py:1223
msgid "BOM {0} does not belong to Item {1}"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:1203
+#: manufacturing/doctype/bom/bom.py:1205
msgid "BOM {0} must be active"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:1206
+#: manufacturing/doctype/bom/bom.py:1208
msgid "BOM {0} must be submitted"
msgstr ""
@@ -9713,7 +9740,7 @@
msgid "Balance (Dr - Cr)"
msgstr ""
-#: accounts/report/general_ledger/general_ledger.py:581
+#: accounts/report/general_ledger/general_ledger.py:584
msgid "Balance ({0})"
msgstr ""
@@ -9744,10 +9771,10 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#: accounts/report/balance_sheet/balance_sheet.json
-#: accounts/workspace/accounting/accounting.json
-#: public/js/financial_statements.js:79
+#: accounts/workspace/financial_reports/financial_reports.json
+#: public/js/financial_statements.js:131
msgid "Balance Sheet"
msgstr ""
@@ -10190,7 +10217,7 @@
msgid "Bank Transaction {0} added as Payment Entry"
msgstr ""
-#: accounts/doctype/bank_transaction/bank_transaction.py:106
+#: accounts/doctype/bank_transaction/bank_transaction.py:124
msgid "Bank Transaction {0} is already fully reconciled"
msgstr ""
@@ -10235,7 +10262,7 @@
msgid "Banking"
msgstr ""
-#: public/js/utils/barcode_scanner.js:258
+#: public/js/utils/barcode_scanner.js:273
msgid "Barcode"
msgstr ""
@@ -10362,7 +10389,7 @@
msgid "Base Tax Withholding Net Total"
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:236
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:241
msgid "Base Total"
msgstr ""
@@ -10543,9 +10570,9 @@
#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:88
#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:117
-#: public/js/controllers/transaction.js:2120
-#: public/js/utils/barcode_scanner.js:236
-#: public/js/utils/serial_no_batch_selector.js:295
+#: public/js/controllers/transaction.js:2150
+#: public/js/utils/barcode_scanner.js:251
+#: public/js/utils/serial_no_batch_selector.js:367
#: stock/report/batch_wise_balance_history/batch_wise_balance_history.js:59
#: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:80
#: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:156
@@ -10673,11 +10700,15 @@
msgid "Batch No"
msgstr ""
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:582
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:585
msgid "Batch No is mandatory"
msgstr ""
-#: stock/utils.py:596
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2118
+msgid "Batch No {0} does not exists"
+msgstr ""
+
+#: stock/utils.py:643
msgid "Batch No {0} is linked with Item {1} which has serial no. Please scan serial no instead."
msgstr ""
@@ -10688,12 +10719,12 @@
msgstr ""
#: public/js/utils/serial_no_batch_selector.js:15
-#: public/js/utils/serial_no_batch_selector.js:174
+#: public/js/utils/serial_no_batch_selector.js:178
#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:48
msgid "Batch Nos"
msgstr ""
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1087
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1113
msgid "Batch Nos are created successfully"
msgstr ""
@@ -10761,12 +10792,12 @@
msgid "Batch {0} and Warehouse"
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:2349
+#: stock/doctype/stock_entry/stock_entry.py:2345
#: stock/doctype/stock_ledger_entry/stock_ledger_entry.py:272
msgid "Batch {0} of Item {1} has expired."
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:2351
+#: stock/doctype/stock_entry/stock_entry.py:2347
msgid "Batch {0} of Item {1} is disabled."
msgstr ""
@@ -10802,7 +10833,11 @@
msgid "Beginning of the current subscription period"
msgstr ""
-#: accounts/report/accounts_receivable/accounts_receivable.py:1038
+#: accounts/doctype/subscription/subscription.py:341
+msgid "Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0}"
+msgstr ""
+
+#: accounts/report/accounts_receivable/accounts_receivable.py:1061
#: accounts/report/purchase_register/purchase_register.py:214
msgid "Bill Date"
msgstr ""
@@ -10819,7 +10854,7 @@
msgid "Bill Date"
msgstr ""
-#: accounts/report/accounts_receivable/accounts_receivable.py:1037
+#: accounts/report/accounts_receivable/accounts_receivable.py:1060
#: accounts/report/purchase_register/purchase_register.py:213
msgid "Bill No"
msgstr ""
@@ -10844,7 +10879,7 @@
#. Title of an Onboarding Step
#. Label of a Card Break in the Manufacturing Workspace
-#: manufacturing/doctype/bom/bom.py:1087
+#: manufacturing/doctype/bom/bom.py:1089
#: manufacturing/onboarding_step/create_bom/create_bom.json
#: manufacturing/workspace/manufacturing/manufacturing.json
#: stock/doctype/material_request/material_request.js:99
@@ -11093,7 +11128,7 @@
msgid "Billing Interval Count cannot be less than 1"
msgstr ""
-#: accounts/doctype/subscription/subscription.py:353
+#: accounts/doctype/subscription/subscription.py:383
msgid "Billing Interval in Subscription Plan must be Month to follow calendar months"
msgstr ""
@@ -11324,7 +11359,7 @@
msgid "Bom No"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:227
+#: accounts/doctype/payment_entry/payment_entry.py:229
msgid "Book Advance Payments as Liability option is chosen. Paid From account changed from {0} to {1}."
msgstr ""
@@ -11392,7 +11427,7 @@
msgid "Booking stock value across multiple accounts will make it harder to track stock and account value."
msgstr ""
-#: accounts/general_ledger.py:686
+#: accounts/general_ledger.py:685
msgid "Books have been closed till the period ending on {0}"
msgstr ""
@@ -11403,7 +11438,7 @@
msgid "Both"
msgstr ""
-#: accounts/doctype/subscription/subscription.py:329
+#: accounts/doctype/subscription/subscription.py:359
msgid "Both Trial Period Start Date and Trial Period End Date must be set"
msgstr ""
@@ -11874,10 +11909,6 @@
msgid "By default, the Supplier Name is set as per the Supplier Name entered. If you want Suppliers to be named by a <a href='https://docs.erpnext.com/docs/user/manual/en/setting-up/settings/naming-series' target='_blank'>Naming Series</a> choose the 'Naming Series' option."
msgstr ""
-#: templates/pages/home.html:59
-msgid "By {0}"
-msgstr ""
-
#. Label of a Check field in DocType 'Customer Credit Limit'
#: selling/doctype/customer_credit_limit/customer_credit_limit.json
msgctxt "Customer Credit Limit"
@@ -12258,13 +12289,13 @@
msgid "Can not filter based on Voucher No, if grouped by Voucher"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:1340
-#: accounts/doctype/payment_entry/payment_entry.py:2206
+#: accounts/doctype/journal_entry/journal_entry.py:1226
+#: accounts/doctype/payment_entry/payment_entry.py:2229
msgid "Can only make payment against unbilled {0}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:1188
-#: controllers/accounts_controller.py:2431 public/js/controllers/accounts.js:90
+#: accounts/doctype/payment_entry/payment_entry.js:1199
+#: controllers/accounts_controller.py:2500 public/js/controllers/accounts.js:90
msgid "Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total'"
msgstr ""
@@ -12591,11 +12622,6 @@
msgid "Cancelled"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry_list.js:7
-msgctxt "docstatus,=,2"
-msgid "Cancelled"
-msgstr ""
-
#: stock/doctype/delivery_trip/delivery_trip.js:76
#: stock/doctype/delivery_trip/delivery_trip.py:189
msgid "Cannot Calculate Arrival Time as Driver Address is Missing."
@@ -12622,7 +12648,7 @@
msgid "Cannot amend {0} {1}, please create a new one instead."
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:240
+#: accounts/doctype/journal_entry/journal_entry.py:257
msgid "Cannot apply TDS against multiple parties in one entry"
msgstr ""
@@ -12638,7 +12664,7 @@
msgid "Cannot cancel because submitted Stock Entry {0} exists"
msgstr ""
-#: stock/stock_ledger.py:187
+#: stock/stock_ledger.py:196
msgid "Cannot cancel the transaction. Reposting of item valuation on submission is not completed yet."
msgstr ""
@@ -12670,7 +12696,7 @@
msgid "Cannot change Variant properties after stock transaction. You will have to make a new Item to do this."
msgstr ""
-#: setup/doctype/company/company.py:208
+#: setup/doctype/company/company.py:209
msgid "Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency."
msgstr ""
@@ -12694,7 +12720,7 @@
msgid "Cannot covert to Group because Account Type is selected."
msgstr ""
-#: stock/doctype/purchase_receipt/purchase_receipt.py:917
+#: stock/doctype/purchase_receipt/purchase_receipt.py:914
msgid "Cannot create Stock Reservation Entries for future dated Purchase Receipts."
msgstr ""
@@ -12702,7 +12728,7 @@
msgid "Cannot create a Delivery Trip from Draft documents."
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:1562
+#: selling/doctype/sales_order/sales_order.py:1576
#: stock/doctype/pick_list/pick_list.py:104
msgid "Cannot create a pick list for Sales Order {0} because it has reserved stock. Please unreserve the stock in order to create a pick list."
msgstr ""
@@ -12711,7 +12737,7 @@
msgid "Cannot create accounting entries against disabled accounts: {0}"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:947
+#: manufacturing/doctype/bom/bom.py:949
msgid "Cannot deactivate or cancel BOM as it is linked with other BOMs"
msgstr ""
@@ -12728,8 +12754,8 @@
msgid "Cannot delete Serial No {0}, as it is used in stock transactions"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:635
-#: selling/doctype/sales_order/sales_order.py:658
+#: selling/doctype/sales_order/sales_order.py:638
+#: selling/doctype/sales_order/sales_order.py:661
msgid "Cannot ensure delivery by Serial No as Item {0} is added with and without Ensure Delivery by Serial No."
msgstr ""
@@ -12737,11 +12763,11 @@
msgid "Cannot find Item with this Barcode"
msgstr ""
-#: controllers/accounts_controller.py:2964
+#: controllers/accounts_controller.py:3023
msgid "Cannot find {} for item {}. Please set the same in Item Master or Stock Settings."
msgstr ""
-#: controllers/accounts_controller.py:1741
+#: controllers/accounts_controller.py:1774
msgid "Cannot overbill for Item {0} in row {1} more than {2}. To allow over-billing, please set allowance in Accounts Settings"
msgstr ""
@@ -12757,12 +12783,12 @@
msgid "Cannot produce more than {0} items for {1}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:292
+#: accounts/doctype/payment_entry/payment_entry.py:294
msgid "Cannot receive from customer against negative outstanding"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:1198
-#: controllers/accounts_controller.py:2446
+#: accounts/doctype/payment_entry/payment_entry.js:1209
+#: controllers/accounts_controller.py:2515
#: public/js/controllers/accounts.js:100
msgid "Cannot refer row number greater than or equal to current row number for this Charge type"
msgstr ""
@@ -12775,15 +12801,15 @@
msgid "Cannot retrieve link token. Check Error Log for more information"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:1192
-#: accounts/doctype/payment_entry/payment_entry.js:1363
-#: accounts/doctype/payment_entry/payment_entry.py:1569
-#: controllers/accounts_controller.py:2436 public/js/controllers/accounts.js:94
-#: public/js/controllers/taxes_and_totals.js:451
+#: accounts/doctype/payment_entry/payment_entry.js:1203
+#: accounts/doctype/payment_entry/payment_entry.js:1374
+#: accounts/doctype/payment_entry/payment_entry.py:1579
+#: controllers/accounts_controller.py:2505 public/js/controllers/accounts.js:94
+#: public/js/controllers/taxes_and_totals.js:453
msgid "Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for first row"
msgstr ""
-#: selling/doctype/quotation/quotation.py:265
+#: selling/doctype/quotation/quotation.py:266
msgid "Cannot set as Lost as Sales Order is made."
msgstr ""
@@ -12795,11 +12821,11 @@
msgid "Cannot set multiple Item Defaults for a company."
msgstr ""
-#: controllers/accounts_controller.py:3114
+#: controllers/accounts_controller.py:3173
msgid "Cannot set quantity less than delivered quantity"
msgstr ""
-#: controllers/accounts_controller.py:3119
+#: controllers/accounts_controller.py:3178
msgid "Cannot set quantity less than received quantity"
msgstr ""
@@ -12807,7 +12833,7 @@
msgid "Cannot set the field <b>{0}</b> for copying in variants"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:865
+#: accounts/doctype/payment_entry/payment_entry.js:876
msgid "Cannot {0} {1} {2} without any negative outstanding invoice"
msgstr ""
@@ -12849,7 +12875,7 @@
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:26
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:39
-msgid "Capital Equipments"
+msgid "Capital Equipment"
msgstr ""
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:103
@@ -12913,13 +12939,6 @@
msgid "Capitalized In"
msgstr ""
-#. Option for the 'Section Based On' (Select) field in DocType 'Homepage
-#. Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Cards"
-msgstr ""
-
#. Label of a Data field in DocType 'Shipment'
#: stock/doctype/shipment/shipment.json
msgctxt "Shipment"
@@ -12977,13 +12996,13 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#: accounts/report/cash_flow/cash_flow.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
msgid "Cash Flow"
msgstr ""
-#: public/js/financial_statements.js:89
+#: public/js/financial_statements.js:141
msgid "Cash Flow Statement"
msgstr ""
@@ -13088,7 +13107,7 @@
msgid "Category-wise Asset Value"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:309
+#: buying/doctype/purchase_order/purchase_order.py:313
#: buying/doctype/request_for_quotation/request_for_quotation.py:99
msgid "Caution"
msgstr ""
@@ -13169,7 +13188,7 @@
msgid "Change in Stock Value"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:882
+#: accounts/doctype/sales_invoice/sales_invoice.py:885
msgid "Change the account type to Receivable or select a different account."
msgstr ""
@@ -13200,21 +13219,21 @@
msgid "Channel Partner"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1624
-#: controllers/accounts_controller.py:2499
+#: accounts/doctype/payment_entry/payment_entry.py:1634
+#: controllers/accounts_controller.py:2568
msgid "Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount"
msgstr ""
+#: accounts/report/account_balance/account_balance.js:42
+msgid "Chargeable"
+msgstr ""
+
#. Option for the 'Account Type' (Select) field in DocType 'Account'
#: accounts/doctype/account/account.json
msgctxt "Account"
msgid "Chargeable"
msgstr ""
-#: accounts/report/account_balance/account_balance.js:42
-msgid "Chargeble"
-msgstr ""
-
#. Label of a Currency field in DocType 'Bank Guarantee'
#: accounts/doctype/bank_guarantee/bank_guarantee.json
msgctxt "Bank Guarantee"
@@ -13426,7 +13445,7 @@
msgid "Cheque Width"
msgstr ""
-#: public/js/controllers/transaction.js:2031
+#: public/js/controllers/transaction.js:2061
msgid "Cheque/Reference Date"
msgstr ""
@@ -13618,15 +13637,15 @@
msgstr ""
#: buying/doctype/purchase_order/purchase_order.js:292
-#: buying/doctype/purchase_order/purchase_order_list.js:28
+#: buying/doctype/purchase_order/purchase_order_list.js:30
#: crm/doctype/opportunity/opportunity.js:108
#: manufacturing/doctype/production_plan/production_plan.js:101
#: manufacturing/doctype/work_order/work_order.js:559
#: quality_management/doctype/quality_meeting/quality_meeting_list.js:8
-#: selling/doctype/sales_order/sales_order.js:527
-#: selling/doctype/sales_order/sales_order.js:547
-#: selling/doctype/sales_order/sales_order_list.js:43
-#: stock/doctype/delivery_note/delivery_note.js:218
+#: selling/doctype/sales_order/sales_order.js:521
+#: selling/doctype/sales_order/sales_order.js:541
+#: selling/doctype/sales_order/sales_order_list.js:45
+#: stock/doctype/delivery_note/delivery_note.js:209
#: stock/doctype/purchase_receipt/purchase_receipt.js:222
#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:108
#: support/doctype/issue/issue.js:17
@@ -13770,7 +13789,7 @@
msgid "Closed Work Order can not be stopped or Re-opened"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:417
+#: selling/doctype/sales_order/sales_order.py:420
msgid "Closed order cannot be cancelled. Unclose to cancel."
msgstr ""
@@ -14138,7 +14157,7 @@
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:40
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:227
#: accounts/report/item_wise_sales_register/item_wise_sales_register.js:28
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:265
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:272
#: accounts/report/payment_ledger/payment_ledger.js:9
#: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js:8
#: accounts/report/pos_register/pos_register.js:9
@@ -14181,7 +14200,7 @@
#: manufacturing/report/work_order_summary/work_order_summary.js:8
#: projects/report/project_summary/project_summary.js:9
#: projects/report/project_wise_stock_tracking/project_wise_stock_tracking.py:44
-#: public/js/financial_statements.js:100 public/js/purchase_trends_filters.js:8
+#: public/js/financial_statements.js:153 public/js/purchase_trends_filters.js:8
#: public/js/sales_trends_filters.js:55
#: regional/report/electronic_invoice_register/electronic_invoice_register.js:28
#: regional/report/irs_1099/irs_1099.js:8
@@ -14227,7 +14246,7 @@
#: stock/report/reserved_stock/reserved_stock.py:191
#: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:9
#: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:73
-#: stock/report/serial_no_ledger/serial_no_ledger.py:38
+#: stock/report/serial_no_ledger/serial_no_ledger.py:37
#: stock/report/stock_ageing/stock_ageing.js:8
#: stock/report/stock_analytics/stock_analytics.js:42
#: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.js:8
@@ -14508,12 +14527,6 @@
msgid "Company"
msgstr ""
-#. Label of a Link field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Company"
-msgstr ""
-
#. Label of a Link field in DocType 'Import Supplier Invoice'
#: regional/doctype/import_supplier_invoice/import_supplier_invoice.json
msgctxt "Import Supplier Invoice"
@@ -15148,19 +15161,14 @@
msgid "Company Description"
msgstr ""
-#. Description of the 'Description' (Text) field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Company Description for website homepage"
-msgstr ""
-
#. Label of a Section Break field in DocType 'Employee'
#: setup/doctype/employee/employee.json
msgctxt "Employee"
msgid "Company Details"
msgstr ""
-#. Option for the 'Prefered Contact Email' (Select) field in DocType 'Employee'
+#. Option for the 'Preferred Contact Email' (Select) field in DocType
+#. 'Employee'
#. Label of a Data field in DocType 'Employee'
#: setup/doctype/employee/employee.json
msgctxt "Employee"
@@ -15221,12 +15229,6 @@
msgid "Company Shipping Address"
msgstr ""
-#. Description of the 'Tag Line' (Data) field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Company Tagline for website homepage"
-msgstr ""
-
#. Label of a Data field in DocType 'Sales Invoice'
#: accounts/doctype/sales_invoice/sales_invoice.json
msgctxt "Sales Invoice"
@@ -15237,7 +15239,7 @@
msgid "Company and Posting Date is mandatory"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:2232
+#: accounts/doctype/sales_invoice/sales_invoice.py:2203
msgid "Company currencies of both the companies should match for Inter Company Transactions."
msgstr ""
@@ -15247,18 +15249,18 @@
msgstr ""
#: accounts/doctype/bank_account/bank_account.py:58
-msgid "Company is manadatory for company account"
+msgid "Company is mandatory for company account"
msgstr ""
-#: accounts/doctype/subscription/subscription.py:383
+#: accounts/doctype/subscription/subscription.py:413
msgid "Company is mandatory was generating invoice. Please set default company in Global Defaults."
msgstr ""
-#: setup/doctype/company/company.js:153
+#: setup/doctype/company/company.js:161
msgid "Company name not same"
msgstr ""
-#: assets/doctype/asset/asset.py:205
+#: assets/doctype/asset/asset.py:206
msgid "Company of asset {0} and purchase document {1} doesn't matches."
msgstr ""
@@ -15305,7 +15307,7 @@
msgid "Company {} does not exist yet. Taxes setup aborted."
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:451
+#: accounts/doctype/pos_invoice/pos_invoice.py:449
msgid "Company {} does not match with POS Profile Company {}"
msgstr ""
@@ -15338,7 +15340,7 @@
msgid "Competitor Name"
msgstr ""
-#: public/js/utils/sales_common.js:408
+#: public/js/utils/sales_common.js:417
msgid "Competitors"
msgstr ""
@@ -15376,7 +15378,7 @@
#: accounts/doctype/subscription/subscription_list.js:8
#: assets/doctype/asset_repair/asset_repair_list.js:7
-#: buying/doctype/purchase_order/purchase_order_list.js:22
+#: buying/doctype/purchase_order/purchase_order_list.js:24
#: manufacturing/doctype/bom_creator/bom_creator_list.js:9
#: manufacturing/report/job_card_summary/job_card_summary.py:93
#: manufacturing/report/work_order_summary/work_order_summary.py:151
@@ -15386,7 +15388,7 @@
#: setup/doctype/transaction_deletion_record/transaction_deletion_record_list.js:9
#: stock/doctype/delivery_note/delivery_note_list.js:14
#: stock/doctype/material_request/material_request_list.js:13
-#: stock/doctype/purchase_receipt/purchase_receipt_list.js:14
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:16
msgid "Completed"
msgstr ""
@@ -15980,9 +15982,9 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
msgid "Consolidated Financial Statement"
msgstr ""
@@ -16028,7 +16030,7 @@
msgid "Consumed Amount"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:309
+#: assets/doctype/asset_capitalization/asset_capitalization.py:318
msgid "Consumed Asset Items is mandatory for Decapitalization"
msgstr ""
@@ -16099,7 +16101,7 @@
msgid "Consumed Stock Items"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:312
+#: assets/doctype/asset_capitalization/asset_capitalization.py:321
msgid "Consumed Stock Items or Consumed Asset Items is mandatory for Capitalization"
msgstr ""
@@ -16628,12 +16630,6 @@
msgid "Contacts"
msgstr ""
-#. Label of a Text field in DocType 'Homepage Section Card'
-#: portal/doctype/homepage_section_card/homepage_section_card.json
-msgctxt "Homepage Section Card"
-msgid "Content"
-msgstr ""
-
#. Label of a Data field in DocType 'Issue'
#: support/doctype/issue/issue.json
msgctxt "Issue"
@@ -16641,7 +16637,7 @@
msgstr ""
#: erpnext_integrations/doctype/plaid_settings/plaid_settings.js:136
-#: public/js/controllers/transaction.js:2044
+#: public/js/controllers/transaction.js:2074
#: selling/doctype/quotation/quotation.js:344
msgid "Continue"
msgstr ""
@@ -16887,7 +16883,7 @@
msgid "Conversion factor for default Unit of Measure must be 1 in row {0}"
msgstr ""
-#: controllers/accounts_controller.py:2315
+#: controllers/accounts_controller.py:2384
msgid "Conversion rate cannot be 0 or 1"
msgstr ""
@@ -17002,17 +16998,16 @@
#. Name of a DocType
#: accounts/doctype/cost_center/cost_center.json
-#: accounts/doctype/payment_entry/payment_entry.js:659
#: accounts/report/accounts_payable/accounts_payable.js:28
#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:62
#: accounts/report/accounts_receivable/accounts_receivable.js:30
-#: accounts/report/accounts_receivable/accounts_receivable.py:1024
+#: accounts/report/accounts_receivable/accounts_receivable.py:1047
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:62
#: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js:42
#: accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:181
#: accounts/report/general_ledger/general_ledger.js:152
-#: accounts/report/general_ledger/general_ledger.py:640
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:293
+#: accounts/report/general_ledger/general_ledger.py:643
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:300
#: accounts/report/purchase_register/purchase_register.js:46
#: accounts/report/sales_payment_summary/sales_payment_summary.py:29
#: accounts/report/sales_register/sales_register.js:52
@@ -17022,7 +17017,7 @@
#: assets/report/fixed_asset_register/fixed_asset_register.py:461
#: buying/report/procurement_tracker/procurement_tracker.js:16
#: buying/report/procurement_tracker/procurement_tracker.py:32
-#: public/js/financial_statements.js:184
+#: public/js/financial_statements.js:237
msgid "Cost Center"
msgstr ""
@@ -17087,6 +17082,12 @@
msgid "Cost Center"
msgstr ""
+#. Label of a shortcut in the Receivables Workspace
+#: accounts/workspace/receivables/receivables.json
+msgctxt "Cost Center"
+msgid "Cost Center"
+msgstr ""
+
#. Label of a Link field in DocType 'Cost Center Allocation Percentage'
#: accounts/doctype/cost_center_allocation_percentage/cost_center_allocation_percentage.json
msgctxt "Cost Center Allocation Percentage"
@@ -17392,7 +17393,7 @@
msgid "Cost Center Allocation Percentages"
msgstr ""
-#: public/js/utils/sales_common.js:374
+#: public/js/utils/sales_common.js:383
msgid "Cost Center For Item with Item Code {0} has been Changed to {1}"
msgstr ""
@@ -17421,8 +17422,8 @@
msgid "Cost Center is a part of Cost Center Allocation, hence cannot be converted to a group"
msgstr ""
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1261
-#: stock/doctype/purchase_receipt/purchase_receipt.py:790
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1235
+#: stock/doctype/purchase_receipt/purchase_receipt.py:788
msgid "Cost Center is required in row {0} in Taxes table for type {1}"
msgstr ""
@@ -17442,15 +17443,15 @@
msgid "Cost Center {0} cannot be used for allocation as it is used as main cost center in other allocation record."
msgstr ""
-#: assets/doctype/asset/asset.py:245
+#: assets/doctype/asset/asset.py:246
msgid "Cost Center {} doesn't belong to Company {}"
msgstr ""
-#: assets/doctype/asset/asset.py:252
+#: assets/doctype/asset/asset.py:253
msgid "Cost Center {} is a group cost center and group cost centers cannot be used in transactions"
msgstr ""
-#: accounts/report/financial_statements.py:624
+#: accounts/report/financial_statements.py:612
msgid "Cost Center: {0} does not exist"
msgstr ""
@@ -17589,7 +17590,7 @@
msgid "Could Not Delete Demo Data"
msgstr ""
-#: selling/doctype/quotation/quotation.py:546
+#: selling/doctype/quotation/quotation.py:551
msgid "Could not auto create Customer due to the following missing mandatory field(s):"
msgstr ""
@@ -17612,7 +17613,7 @@
msgstr ""
#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py:128
-#: accounts/report/financial_statements.py:248
+#: accounts/report/financial_statements.py:236
msgid "Could not retrieve information for {0}."
msgstr ""
@@ -17624,7 +17625,7 @@
msgid "Could not solve weighted score function. Make sure the formula is valid."
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1027
+#: accounts/doctype/sales_invoice/sales_invoice.py:1030
msgid "Could not update stock, invoice contains drop shipping item."
msgstr ""
@@ -17766,7 +17767,7 @@
#: accounts/doctype/account/account_tree.js:80
#: accounts/doctype/bank_clearance/bank_clearance.py:79
-#: accounts/doctype/journal_entry/journal_entry.js:308
+#: accounts/doctype/journal_entry/journal_entry.js:298
msgid "Cr"
msgstr ""
@@ -17836,39 +17837,39 @@
#: public/js/communication.js:24 public/js/communication.js:30
#: public/js/controllers/transaction.js:300
#: public/js/controllers/transaction.js:301
-#: public/js/controllers/transaction.js:2158
+#: public/js/controllers/transaction.js:2188
#: selling/doctype/customer/customer.js:165
#: selling/doctype/quotation/quotation.js:119
#: selling/doctype/quotation/quotation.js:129
-#: selling/doctype/sales_order/sales_order.js:554
+#: selling/doctype/sales_order/sales_order.js:548
+#: selling/doctype/sales_order/sales_order.js:559
+#: selling/doctype/sales_order/sales_order.js:560
#: selling/doctype/sales_order/sales_order.js:565
-#: selling/doctype/sales_order/sales_order.js:566
+#: selling/doctype/sales_order/sales_order.js:570
#: selling/doctype/sales_order/sales_order.js:571
#: selling/doctype/sales_order/sales_order.js:576
-#: selling/doctype/sales_order/sales_order.js:577
+#: selling/doctype/sales_order/sales_order.js:581
#: selling/doctype/sales_order/sales_order.js:582
#: selling/doctype/sales_order/sales_order.js:587
-#: selling/doctype/sales_order/sales_order.js:588
-#: selling/doctype/sales_order/sales_order.js:593
+#: selling/doctype/sales_order/sales_order.js:599
#: selling/doctype/sales_order/sales_order.js:605
-#: selling/doctype/sales_order/sales_order.js:611
-#: selling/doctype/sales_order/sales_order.js:612
-#: selling/doctype/sales_order/sales_order.js:614
-#: selling/doctype/sales_order/sales_order.js:745
-#: selling/doctype/sales_order/sales_order.js:853
-#: stock/doctype/delivery_note/delivery_note.js:98
-#: stock/doctype/delivery_note/delivery_note.js:99
-#: stock/doctype/delivery_note/delivery_note.js:113
+#: selling/doctype/sales_order/sales_order.js:606
+#: selling/doctype/sales_order/sales_order.js:608
+#: selling/doctype/sales_order/sales_order.js:739
+#: selling/doctype/sales_order/sales_order.js:847
+#: stock/doctype/delivery_note/delivery_note.js:89
+#: stock/doctype/delivery_note/delivery_note.js:90
+#: stock/doctype/delivery_note/delivery_note.js:104
+#: stock/doctype/delivery_note/delivery_note.js:167
+#: stock/doctype/delivery_note/delivery_note.js:172
#: stock/doctype/delivery_note/delivery_note.js:176
#: stock/doctype/delivery_note/delivery_note.js:181
-#: stock/doctype/delivery_note/delivery_note.js:185
#: stock/doctype/delivery_note/delivery_note.js:190
-#: stock/doctype/delivery_note/delivery_note.js:199
-#: stock/doctype/delivery_note/delivery_note.js:205
-#: stock/doctype/delivery_note/delivery_note.js:232
+#: stock/doctype/delivery_note/delivery_note.js:196
+#: stock/doctype/delivery_note/delivery_note.js:223
#: stock/doctype/item/item.js:105 stock/doctype/item/item.js:108
#: stock/doctype/item/item.js:112 stock/doctype/item/item.js:449
-#: stock/doctype/item/item.js:665
+#: stock/doctype/item/item.js:651
#: stock/doctype/material_request/material_request.js:114
#: stock/doctype/material_request/material_request.js:120
#: stock/doctype/material_request/material_request.js:123
@@ -17988,7 +17989,7 @@
msgid "Create Missing Party"
msgstr ""
-#: manufacturing/doctype/bom_creator/bom_creator.js:139
+#: manufacturing/doctype/bom_creator/bom_creator.js:150
msgid "Create Multi-level BOM"
msgstr ""
@@ -18086,6 +18087,10 @@
msgid "Create Sample Retention Stock Entry"
msgstr ""
+#: public/js/utils/serial_no_batch_selector.js:220
+msgid "Create Serial Nos"
+msgstr ""
+
#: stock/dashboard/item_dashboard.js:271
#: stock/doctype/material_request/material_request.js:376
msgid "Create Stock Entry"
@@ -18123,7 +18128,7 @@
msgid "Create Users"
msgstr ""
-#: stock/doctype/item/item.js:661
+#: stock/doctype/item/item.js:647
msgid "Create Variant"
msgstr ""
@@ -18234,7 +18239,7 @@
msgid "Create an Item"
msgstr ""
-#: stock/stock_ledger.py:1595
+#: stock/stock_ledger.py:1684
msgid "Create an incoming stock transaction for the Item."
msgstr ""
@@ -18299,7 +18304,7 @@
msgid "Creating Company and Importing Chart of Accounts"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:918
+#: selling/doctype/sales_order/sales_order.js:912
msgid "Creating Delivery Note ..."
msgstr ""
@@ -18311,7 +18316,7 @@
msgid "Creating Packing Slip ..."
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:1032
+#: selling/doctype/sales_order/sales_order.js:1026
msgid "Creating Purchase Order ..."
msgstr ""
@@ -18397,15 +18402,15 @@
msgid "Credit"
msgstr ""
-#: accounts/report/general_ledger/general_ledger.py:598
+#: accounts/report/general_ledger/general_ledger.py:601
msgid "Credit (Transaction)"
msgstr ""
-#: accounts/report/general_ledger/general_ledger.py:575
+#: accounts/report/general_ledger/general_ledger.py:578
msgid "Credit ({0})"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.js:546
+#: accounts/doctype/journal_entry/journal_entry.js:536
msgid "Credit Account"
msgstr ""
@@ -18507,7 +18512,7 @@
msgid "Credit Limit"
msgstr ""
-#: selling/doctype/customer/customer.py:545
+#: selling/doctype/customer/customer.py:546
msgid "Credit Limit Crossed"
msgstr ""
@@ -18548,10 +18553,10 @@
msgstr ""
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:173
-#: accounts/report/accounts_receivable/accounts_receivable.py:1047
+#: accounts/report/accounts_receivable/accounts_receivable.py:1070
#: controllers/sales_and_purchase_return.py:328
#: setup/setup_wizard/operations/install_fixtures.py:256
-#: stock/doctype/delivery_note/delivery_note.js:93
+#: stock/doctype/delivery_note/delivery_note.js:84
msgid "Credit Note"
msgstr ""
@@ -18610,16 +18615,16 @@
msgid "Credit in Company Currency"
msgstr ""
-#: selling/doctype/customer/customer.py:511
-#: selling/doctype/customer/customer.py:565
+#: selling/doctype/customer/customer.py:512
+#: selling/doctype/customer/customer.py:566
msgid "Credit limit has been crossed for customer {0} ({1}/{2})"
msgstr ""
-#: selling/doctype/customer/customer.py:327
+#: selling/doctype/customer/customer.py:328
msgid "Credit limit is already defined for the Company {0}"
msgstr ""
-#: selling/doctype/customer/customer.py:564
+#: selling/doctype/customer/customer.py:565
msgid "Credit limit reached for customer {0}"
msgstr ""
@@ -18696,17 +18701,17 @@
#: accounts/doctype/account/account_tree.js:121
#: accounts/report/account_balance/account_balance.py:28
-#: accounts/report/accounts_receivable/accounts_receivable.py:1056
+#: accounts/report/accounts_receivable/accounts_receivable.py:1079
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:208
#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:104
#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:94
#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:298
#: accounts/report/customer_ledger_summary/customer_ledger_summary.py:147
#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py:212
-#: accounts/report/financial_statements.py:643
+#: accounts/report/financial_statements.py:631
#: accounts/report/general_ledger/general_ledger.js:146
#: accounts/report/gross_profit/gross_profit.py:363
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:629
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:644
#: accounts/report/payment_ledger/payment_ledger.py:213
#: accounts/report/profitability_analysis/profitability_analysis.py:175
#: accounts/report/purchase_register/purchase_register.py:229
@@ -18716,7 +18721,7 @@
#: accounts/report/trial_balance_for_party/trial_balance_for_party.py:228
#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:218
#: manufacturing/doctype/bom_creator/bom_creator.js:77
-#: public/js/financial_statements.js:178 public/js/utils/unreconcile.js:63
+#: public/js/financial_statements.js:231 public/js/utils/unreconcile.js:63
#: selling/report/item_wise_sales_history/item_wise_sales_history.py:121
#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:72
#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:85
@@ -19012,8 +19017,8 @@
msgid "Currency can not be changed after making entries using some other currency"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1346
-#: accounts/doctype/payment_entry/payment_entry.py:1413 accounts/utils.py:2062
+#: accounts/doctype/payment_entry/payment_entry.py:1360
+#: accounts/doctype/payment_entry/payment_entry.py:1422 accounts/utils.py:2091
msgid "Currency for {0} must be {1}"
msgstr ""
@@ -19021,7 +19026,7 @@
msgid "Currency of the Closing Account must be {0}"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:573
+#: manufacturing/doctype/bom/bom.py:575
msgid "Currency of the price list {0} must be {1} or {2}"
msgstr ""
@@ -19212,14 +19217,6 @@
msgid "Custom"
msgstr ""
-#. Option for the 'Section Based On' (Select) field in DocType 'Homepage
-#. Section'
-#. Label of a Section Break field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Custom HTML"
-msgstr ""
-
#. Label of a Check field in DocType 'Payment Entry'
#: accounts/doctype/payment_entry/payment_entry.json
msgctxt "Payment Entry"
@@ -19240,7 +19237,7 @@
#: accounts/report/gross_profit/gross_profit.py:321
#: accounts/report/inactive_sales_items/inactive_sales_items.py:37
#: accounts/report/item_wise_sales_register/item_wise_sales_register.js:22
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:214
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:221
#: accounts/report/pos_register/pos_register.js:45
#: accounts/report/pos_register/pos_register.py:123
#: accounts/report/pos_register/pos_register.py:186
@@ -19276,7 +19273,7 @@
#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:64
#: setup/doctype/customer_group/customer_group.json
#: setup/doctype/territory/territory.json
-#: stock/doctype/delivery_note/delivery_note.js:368
+#: stock/doctype/delivery_note/delivery_note.js:359
#: stock/doctype/stock_entry/stock_entry.js:300
#: stock/report/delayed_item_report/delayed_item_report.js:37
#: stock/report/delayed_item_report/delayed_item_report.py:117
@@ -19333,13 +19330,13 @@
msgid "Customer"
msgstr ""
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
#. Label of a Link in the CRM Workspace
#. Label of a shortcut in the CRM Workspace
#. Label of a Link in the Selling Workspace
#. Label of a Link in the Home Workspace
#. Label of a shortcut in the Home Workspace
-#: accounts/workspace/accounting/accounting.json crm/workspace/crm/crm.json
+#: accounts/workspace/receivables/receivables.json crm/workspace/crm/crm.json
#: selling/workspace/selling/selling.json setup/workspace/home/home.json
msgctxt "Customer"
msgid "Customer"
@@ -19653,7 +19650,7 @@
msgid "Customer Code"
msgstr ""
-#: accounts/report/accounts_receivable/accounts_receivable.py:1004
+#: accounts/report/accounts_receivable/accounts_receivable.py:1027
msgid "Customer Contact"
msgstr ""
@@ -19676,10 +19673,10 @@
msgid "Customer Contact Email"
msgstr ""
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#. Name of a report
#. Label of a Link in the Selling Workspace
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
#: selling/report/customer_credit_balance/customer_credit_balance.json
#: selling/workspace/selling/selling.json
msgid "Customer Credit Balance"
@@ -19734,13 +19731,13 @@
#. Name of a DocType
#: accounts/report/accounts_receivable/accounts_receivable.js:118
-#: accounts/report/accounts_receivable/accounts_receivable.py:1074
+#: accounts/report/accounts_receivable/accounts_receivable.py:1097
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:99
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:188
#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:56
#: accounts/report/customer_ledger_summary/customer_ledger_summary.py:166
#: accounts/report/gross_profit/gross_profit.py:328
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:201
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:208
#: accounts/report/sales_register/sales_register.js:27
#: accounts/report/sales_register/sales_register.py:200
#: public/js/sales_trends_filters.js:26
@@ -19912,7 +19909,7 @@
msgid "Customer Group Name"
msgstr ""
-#: accounts/report/accounts_receivable/accounts_receivable.py:1174
+#: accounts/report/accounts_receivable/accounts_receivable.py:1197
msgid "Customer Group: {0} does not exist"
msgstr ""
@@ -19933,7 +19930,7 @@
msgid "Customer Items"
msgstr ""
-#: accounts/report/accounts_receivable/accounts_receivable.py:1065
+#: accounts/report/accounts_receivable/accounts_receivable.py:1088
msgid "Customer LPO"
msgstr ""
@@ -19942,9 +19939,9 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#: accounts/report/customer_ledger_summary/customer_ledger_summary.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
msgid "Customer Ledger Summary"
msgstr ""
@@ -19954,11 +19951,11 @@
msgid "Customer Mobile No"
msgstr ""
-#: accounts/report/accounts_receivable/accounts_receivable.py:1011
+#: accounts/report/accounts_receivable/accounts_receivable.py:1034
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:160
#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:92
#: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:34
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:220
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:227
#: accounts/report/sales_register/sales_register.py:191
#: selling/report/customer_credit_balance/customer_credit_balance.py:74
#: selling/report/inactive_customers/inactive_customers.py:79
@@ -20155,7 +20152,7 @@
msgid "Customer Provided"
msgstr ""
-#: setup/doctype/company/company.py:358
+#: setup/doctype/company/company.py:359
msgid "Customer Service"
msgstr ""
@@ -20206,8 +20203,8 @@
msgid "Customer required for 'Customerwise Discount'"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:983
-#: selling/doctype/sales_order/sales_order.py:332
+#: accounts/doctype/sales_invoice/sales_invoice.py:986
+#: selling/doctype/sales_order/sales_order.py:335
#: stock/doctype/delivery_note/delivery_note.py:354
msgid "Customer {0} does not belong to project {1}"
msgstr ""
@@ -20328,10 +20325,6 @@
msgid "Customerwise Discount"
msgstr ""
-#: portal/doctype/homepage/homepage.js:9
-msgid "Customize Homepage Sections"
-msgstr ""
-
#. Name of a DocType
#: stock/doctype/customs_tariff_number/customs_tariff_number.json
msgid "Customs Tariff Number"
@@ -20504,7 +20497,7 @@
msgid "Data exported from Tally that consists of the Chart of Accounts, Customers, Suppliers, Addresses, Items and UOMs"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.js:552
+#: accounts/doctype/journal_entry/journal_entry.js:542
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:36
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:150
#: accounts/report/account_balance/account_balance.js:16
@@ -20772,7 +20765,7 @@
msgid "Date of Joining"
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:262
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:267
msgid "Date of Transaction"
msgstr ""
@@ -20910,7 +20903,7 @@
msgid "Dear"
msgstr ""
-#: stock/reorder_item.py:246
+#: stock/reorder_item.py:285
msgid "Dear System Manager,"
msgstr ""
@@ -20937,15 +20930,15 @@
msgid "Debit"
msgstr ""
-#: accounts/report/general_ledger/general_ledger.py:591
+#: accounts/report/general_ledger/general_ledger.py:594
msgid "Debit (Transaction)"
msgstr ""
-#: accounts/report/general_ledger/general_ledger.py:569
+#: accounts/report/general_ledger/general_ledger.py:572
msgid "Debit ({0})"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.js:540
+#: accounts/doctype/journal_entry/journal_entry.js:530
msgid "Debit Account"
msgstr ""
@@ -20980,7 +20973,7 @@
msgstr ""
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:175
-#: accounts/report/accounts_receivable/accounts_receivable.py:1050
+#: accounts/report/accounts_receivable/accounts_receivable.py:1073
#: controllers/sales_and_purchase_return.py:332
#: setup/setup_wizard/operations/install_fixtures.py:257
#: stock/doctype/purchase_receipt/purchase_receipt.js:73
@@ -21022,11 +21015,11 @@
msgid "Debit To"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:864
+#: accounts/doctype/sales_invoice/sales_invoice.py:867
msgid "Debit To is required"
msgstr ""
-#: accounts/general_ledger.py:466
+#: accounts/general_ledger.py:465
msgid "Debit and Credit not equal for {0} #{1}. Difference is {2}."
msgstr ""
@@ -21066,7 +21059,7 @@
msgid "Decapitalized"
msgstr ""
-#: public/js/utils/sales_common.js:435
+#: public/js/utils/sales_common.js:444
msgid "Declare Lost"
msgstr ""
@@ -21106,12 +21099,6 @@
msgid "Default"
msgstr ""
-#. Option for the 'Hero Section Based On' (Select) field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Default"
-msgstr ""
-
#. Label of a Check field in DocType 'POS Payment Method'
#: accounts/doctype/pos_payment_method/pos_payment_method.json
msgctxt "POS Payment Method"
@@ -21208,7 +21195,7 @@
msgid "Default BOM for {0} not found"
msgstr ""
-#: controllers/accounts_controller.py:3157
+#: controllers/accounts_controller.py:3216
msgid "Default BOM not found for FG Item {0}"
msgstr ""
@@ -21885,7 +21872,7 @@
msgid "Deferred Revenue and Expense"
msgstr ""
-#: accounts/deferred_revenue.py:577
+#: accounts/deferred_revenue.py:569
msgid "Deferred accounting failed for some invoices:"
msgstr ""
@@ -21942,7 +21929,7 @@
msgid "Delayed Tasks Summary"
msgstr ""
-#: setup/doctype/company/company.js:171
+#: setup/doctype/company/company.js:176
msgid "Delete"
msgstr ""
@@ -21966,7 +21953,7 @@
msgid "Delete Transactions"
msgstr ""
-#: setup/doctype/company/company.js:171
+#: setup/doctype/company/company.js:176
msgid "Delete all the Transactions for this Company"
msgstr ""
@@ -22028,9 +22015,9 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
#: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
msgid "Delivered Items To Be Billed"
msgstr ""
@@ -22130,10 +22117,10 @@
#: accounts/doctype/sales_invoice/sales_invoice.js:281
#: accounts/doctype/sales_invoice/sales_invoice_list.js:27
#: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:20
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:279
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:286
#: accounts/report/sales_register/sales_register.py:243
-#: selling/doctype/sales_order/sales_order.js:565
-#: selling/doctype/sales_order/sales_order_list.js:55
+#: selling/doctype/sales_order/sales_order.js:559
+#: selling/doctype/sales_order/sales_order_list.js:57
#: stock/doctype/delivery_note/delivery_note.json
#: stock/doctype/delivery_trip/delivery_trip.js:51
#: stock/doctype/pick_list/pick_list.js:102
@@ -22253,7 +22240,7 @@
msgid "Delivery Note Trends"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1145
+#: accounts/doctype/sales_invoice/sales_invoice.py:1148
msgid "Delivery Note {0} is not submitted"
msgstr ""
@@ -22261,7 +22248,7 @@
msgid "Delivery Note(s) created for the Pick List"
msgstr ""
-#: accounts/report/accounts_receivable/accounts_receivable.py:1069
+#: accounts/report/accounts_receivable/accounts_receivable.py:1092
#: stock/doctype/delivery_trip/delivery_trip.js:67
msgid "Delivery Notes"
msgstr ""
@@ -22309,7 +22296,7 @@
msgstr ""
#. Name of a DocType
-#: stock/doctype/delivery_note/delivery_note.js:189
+#: stock/doctype/delivery_note/delivery_note.js:180
#: stock/doctype/delivery_trip/delivery_trip.json
msgid "Delivery Trip"
msgstr ""
@@ -22341,7 +22328,7 @@
msgid "Delivery to"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:348
+#: selling/doctype/sales_order/sales_order.py:351
msgid "Delivery warehouse required for stock item {0}"
msgstr ""
@@ -22494,15 +22481,12 @@
msgid "Depreciate based on shifts"
msgstr ""
+#: assets/report/fixed_asset_register/fixed_asset_register.py:205
#: assets/report/fixed_asset_register/fixed_asset_register.py:393
#: assets/report/fixed_asset_register/fixed_asset_register.py:454
msgid "Depreciated Amount"
msgstr ""
-#: assets/report/fixed_asset_register/fixed_asset_register.py:205
-msgid "Depreciatied Amount"
-msgstr ""
-
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:56
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:81
#: accounts/report/account_balance/account_balance.js:45
@@ -22625,15 +22609,15 @@
msgid "Depreciation Posting Date should not be equal to Available for Use Date."
msgstr ""
-#: assets/doctype/asset/asset.py:490
+#: assets/doctype/asset/asset.py:491
msgid "Depreciation Row {0}: Expected value after useful life must be greater than or equal to {1}"
msgstr ""
-#: assets/doctype/asset/asset.py:459
+#: assets/doctype/asset/asset.py:460
msgid "Depreciation Row {0}: Next Depreciation Date cannot be before Available-for-use Date"
msgstr ""
-#: assets/doctype/asset/asset.py:450
+#: assets/doctype/asset/asset.py:451
msgid "Depreciation Row {0}: Next Depreciation Date cannot be before Purchase Date"
msgstr ""
@@ -22668,21 +22652,21 @@
msgid "Depreciation Schedule View"
msgstr ""
-#: assets/doctype/asset/asset.py:346
+#: assets/doctype/asset/asset.py:347
msgid "Depreciation cannot be calculated for fully depreciated assets"
msgstr ""
#: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:71
#: accounts/report/gross_profit/gross_profit.py:245
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:175
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:185
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:192
#: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:71
#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:207
#: manufacturing/report/bom_stock_calculated/bom_stock_calculated.py:58
#: manufacturing/report/bom_stock_report/bom_stock_report.py:26
#: manufacturing/report/work_order_stock_report/work_order_stock_report.py:112
#: public/js/bank_reconciliation_tool/data_table_manager.js:56
-#: public/js/controllers/transaction.js:2108
+#: public/js/controllers/transaction.js:2138
#: selling/doctype/quotation/quotation.js:279
#: selling/report/item_wise_sales_history/item_wise_sales_history.py:41
#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:35
@@ -22799,12 +22783,6 @@
msgid "Description"
msgstr ""
-#. Label of a Text field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Description"
-msgstr ""
-
#. Label of a Long Text field in DocType 'Incoterm'
#: setup/doctype/incoterm/incoterm.json
msgctxt "Incoterm"
@@ -23266,7 +23244,7 @@
msgid "Desk User"
msgstr ""
-#: public/js/utils/sales_common.js:414
+#: public/js/utils/sales_common.js:423
msgid "Detailed Reason"
msgstr ""
@@ -23385,7 +23363,7 @@
msgid "Difference (Dr - Cr)"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:266
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:287
msgid "Difference Account"
msgstr ""
@@ -23418,11 +23396,11 @@
msgid "Difference Account must be a Asset/Liability type account, since this Stock Entry is an Opening Entry"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:713
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:714
msgid "Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:280
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:301
msgid "Difference Amount"
msgstr ""
@@ -23463,7 +23441,7 @@
msgid "Difference Amount (Company Currency)"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:183
+#: accounts/doctype/payment_entry/payment_entry.py:185
msgid "Difference Amount must be zero"
msgstr ""
@@ -23486,7 +23464,7 @@
msgid "Difference Value"
msgstr ""
-#: stock/doctype/delivery_note/delivery_note.js:375
+#: stock/doctype/delivery_note/delivery_note.js:366
msgid "Different 'Source Warehouse' and 'Target Warehouse' can be set for each row."
msgstr ""
@@ -23506,7 +23484,7 @@
msgid "Dimension Details"
msgstr ""
-#: accounts/report/budget_variance_report/budget_variance_report.js:98
+#: accounts/report/budget_variance_report/budget_variance_report.js:94
msgid "Dimension Filter"
msgstr ""
@@ -23829,15 +23807,15 @@
msgid "Disabled Account Selected"
msgstr ""
-#: stock/utils.py:407
+#: stock/utils.py:454
msgid "Disabled Warehouse {0} cannot be used for this transaction."
msgstr ""
-#: controllers/accounts_controller.py:547
+#: controllers/accounts_controller.py:550
msgid "Disabled pricing rules since this {} is an internal transfer"
msgstr ""
-#: controllers/accounts_controller.py:561
+#: controllers/accounts_controller.py:564
msgid "Disabled tax included prices since this {} is an internal transfer"
msgstr ""
@@ -24140,7 +24118,7 @@
msgid "Discount must be less than 100"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:2509
+#: accounts/doctype/payment_entry/payment_entry.py:2532
msgid "Discount of {} applied as per Payment Term"
msgstr ""
@@ -24226,7 +24204,7 @@
msgid "Dislikes"
msgstr ""
-#: setup/doctype/company/company.py:352
+#: setup/doctype/company/company.py:353
msgid "Dispatch"
msgstr ""
@@ -24627,7 +24605,7 @@
msgid "Download Backups"
msgstr ""
-#: public/js/utils/serial_no_batch_selector.js:190
+#: public/js/utils/serial_no_batch_selector.js:237
msgid "Download CSV Template"
msgstr ""
@@ -24705,7 +24683,7 @@
#: accounts/doctype/account/account_tree.js:80
#: accounts/doctype/bank_clearance/bank_clearance.py:79
-#: accounts/doctype/journal_entry/journal_entry.js:308
+#: accounts/doctype/journal_entry/journal_entry.js:298
msgid "Dr"
msgstr ""
@@ -24924,11 +24902,6 @@
msgid "Draft"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry_list.js:5
-msgctxt "docstatus,=,0"
-msgid "Draft"
-msgstr ""
-
#. Name of a DocType
#: setup/doctype/driver/driver.json
msgid "Driver"
@@ -25103,13 +25076,21 @@
msgid "Due Date cannot be before Posting / Supplier Invoice Date"
msgstr ""
-#: controllers/accounts_controller.py:573
+#: controllers/accounts_controller.py:576
msgid "Due Date is mandatory"
msgstr ""
#. Name of a DocType
+#. Label of a Card Break in the Receivables Workspace
#: accounts/doctype/dunning/dunning.json
#: accounts/doctype/sales_invoice/sales_invoice.js:155
+#: accounts/workspace/receivables/receivables.json
+msgid "Dunning"
+msgstr ""
+
+#. Label of a Link in the Receivables Workspace
+#: accounts/workspace/receivables/receivables.json
+msgctxt "Dunning"
msgid "Dunning"
msgstr ""
@@ -25172,7 +25153,9 @@
msgstr ""
#. Label of a Data field in DocType 'Dunning Type'
+#. Label of a Link in the Receivables Workspace
#: accounts/doctype/dunning_type/dunning_type.json
+#: accounts/workspace/receivables/receivables.json
msgctxt "Dunning Type"
msgid "Dunning Type"
msgstr ""
@@ -25193,7 +25176,7 @@
msgid "Duplicate Entry. Please check Authorization Rule {0}"
msgstr ""
-#: assets/doctype/asset/asset.py:300
+#: assets/doctype/asset/asset.py:301
msgid "Duplicate Finance Book"
msgstr ""
@@ -25211,7 +25194,7 @@
msgstr ""
#: accounts/doctype/pos_profile/pos_profile.py:135
-msgid "Duplicate customer group found in the cutomer group table"
+msgid "Duplicate customer group found in the customer group table"
msgstr ""
#: stock/doctype/item_manufacturer/item_manufacturer.py:44
@@ -25341,7 +25324,7 @@
msgid "Edit Full Form"
msgstr ""
-#: controllers/item_variant.py:154
+#: controllers/item_variant.py:158
msgid "Edit Not Allowed"
msgstr ""
@@ -25349,7 +25332,7 @@
msgid "Edit Note"
msgstr ""
-#: stock/doctype/delivery_note/delivery_note.js:379
+#: stock/doctype/delivery_note/delivery_note.js:370
msgid "Edit Posting Date and Time"
msgstr ""
@@ -25477,7 +25460,7 @@
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:27
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:40
-msgid "Electronic Equipments"
+msgid "Electronic Equipment"
msgstr ""
#. Name of a report
@@ -26153,7 +26136,7 @@
#: accounts/report/payment_ledger/payment_ledger.js:24
#: assets/report/fixed_asset_register/fixed_asset_register.js:75
#: projects/report/project_summary/project_summary.py:74
-#: public/js/financial_statements.js:138 public/js/setup_wizard.js:42
+#: public/js/financial_statements.js:191 public/js/setup_wizard.js:42
#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:24
#: templates/pages/projects.html:47
msgid "End Date"
@@ -26255,11 +26238,11 @@
#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:56
#: accounts/report/financial_ratios/financial_ratios.js:25
#: assets/report/fixed_asset_register/fixed_asset_register.js:90
-#: public/js/financial_statements.js:153
+#: public/js/financial_statements.js:206
msgid "End Year"
msgstr ""
-#: accounts/report/financial_statements.py:137
+#: accounts/report/financial_statements.py:125
msgid "End Year cannot be before Start Year"
msgstr ""
@@ -26305,6 +26288,10 @@
msgid "Enter First and Last name of Employee, based on Which Full Name will be updated. IN transactions, it will be Full Name which will be fetched."
msgstr ""
+#: public/js/utils/serial_no_batch_selector.js:208
+msgid "Enter Serial Nos"
+msgstr ""
+
#: stock/doctype/material_request/material_request.js:313
msgid "Enter Supplier"
msgstr ""
@@ -26333,7 +26320,7 @@
msgid "Enter amount to be redeemed."
msgstr ""
-#: stock/doctype/item/item.js:818
+#: stock/doctype/item/item.js:804
msgid "Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field."
msgstr ""
@@ -26345,7 +26332,7 @@
msgid "Enter customer's phone number"
msgstr ""
-#: assets/doctype/asset/asset.py:344
+#: assets/doctype/asset/asset.py:345
msgid "Enter depreciation details"
msgstr ""
@@ -26353,6 +26340,10 @@
msgid "Enter discount percentage."
msgstr ""
+#: public/js/utils/serial_no_batch_selector.js:211
+msgid "Enter each serial no in a new line"
+msgstr ""
+
#. Description of the 'Campaign' (Link) field in DocType 'Opportunity'
#: crm/doctype/opportunity/opportunity.json
msgctxt "Opportunity"
@@ -26360,7 +26351,7 @@
msgstr ""
#: accounts/doctype/bank_guarantee/bank_guarantee.py:51
-msgid "Enter the Bank Guarantee Number before submittting."
+msgid "Enter the Bank Guarantee Number before submitting."
msgstr ""
#: manufacturing/doctype/routing/routing.js:82
@@ -26371,14 +26362,14 @@
msgstr ""
#: accounts/doctype/bank_guarantee/bank_guarantee.py:53
-msgid "Enter the name of the Beneficiary before submittting."
+msgid "Enter the name of the Beneficiary before submitting."
msgstr ""
#: accounts/doctype/bank_guarantee/bank_guarantee.py:55
-msgid "Enter the name of the bank or lending institution before submittting."
+msgid "Enter the name of the bank or lending institution before submitting."
msgstr ""
-#: stock/doctype/item/item.js:838
+#: stock/doctype/item/item.js:824
msgid "Enter the opening stock units."
msgstr ""
@@ -26405,7 +26396,7 @@
msgid "Entity"
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:200
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:205
#: accounts/report/tds_computation_summary/tds_computation_summary.py:123
msgid "Entity Type"
msgstr ""
@@ -26456,7 +26447,7 @@
msgid "Equity/Liability Account"
msgstr ""
-#: accounts/doctype/payment_request/payment_request.py:395
+#: accounts/doctype/payment_request/payment_request.py:410
#: manufacturing/doctype/job_card/job_card.py:773
#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:197
msgid "Error"
@@ -26529,7 +26520,7 @@
msgstr ""
#: accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py:273
-msgid "Error Occured"
+msgid "Error Occurred"
msgstr ""
#: telephony/doctype/call_log/call_log.py:195
@@ -26541,14 +26532,14 @@
msgstr ""
#: erpnext_integrations/doctype/tally_migration/tally_migration.py:157
-msgid "Error occured while parsing Chart of Accounts: Please make sure that no two accounts have the same name"
+msgid "Error occurred while parsing Chart of Accounts: Please make sure that no two accounts have the same name"
msgstr ""
#: assets/doctype/asset/depreciation.py:406
msgid "Error while posting depreciation entries"
msgstr ""
-#: accounts/deferred_revenue.py:575
+#: accounts/deferred_revenue.py:567
msgid "Error while processing deferred accounting for {0}"
msgstr ""
@@ -26556,7 +26547,7 @@
msgid "Error while reposting item valuation"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:709
+#: accounts/doctype/payment_entry/payment_entry.js:720
msgid "Error: {0} is mandatory field"
msgstr ""
@@ -26625,7 +26616,7 @@
msgid "Example: ABCD.#####. If series is set and Batch No is not mentioned in transactions, then automatic batch number will be created based on this series. If you always want to explicitly mention Batch No for this item, leave this blank. Note: this setting will take priority over the Naming Series Prefix in Stock Settings."
msgstr ""
-#: stock/stock_ledger.py:1887
+#: stock/stock_ledger.py:1976
msgid "Example: Serial No {0} reserved in {1}."
msgstr ""
@@ -26663,7 +26654,7 @@
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:73
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:97
-#: setup/doctype/company/company.py:516
+#: setup/doctype/company/company.py:517
msgid "Exchange Gain/Loss"
msgstr ""
@@ -26685,8 +26676,8 @@
msgid "Exchange Gain/Loss"
msgstr ""
-#: controllers/accounts_controller.py:1279
-#: controllers/accounts_controller.py:1359
+#: controllers/accounts_controller.py:1313
+#: controllers/accounts_controller.py:1394
msgid "Exchange Gain/Loss amount has been booked through {0}"
msgstr ""
@@ -26979,7 +26970,7 @@
msgid "Expected Delivery Date"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:313
+#: selling/doctype/sales_order/sales_order.py:316
msgid "Expected Delivery Date should be after Sales Order Date"
msgstr ""
@@ -27101,7 +27092,7 @@
msgid "Expense"
msgstr ""
-#: controllers/stock_controller.py:367
+#: controllers/stock_controller.py:359
msgid "Expense / Difference account ({0}) must be a 'Profit or Loss' account"
msgstr ""
@@ -27188,7 +27179,7 @@
msgid "Expense Account"
msgstr ""
-#: controllers/stock_controller.py:347
+#: controllers/stock_controller.py:339
msgid "Expense Account Missing"
msgstr ""
@@ -27594,7 +27585,7 @@
msgid "Failed to setup defaults"
msgstr ""
-#: setup/doctype/company/company.py:698
+#: setup/doctype/company/company.py:699
msgid "Failed to setup defaults for country {0}. Please contact support."
msgstr ""
@@ -27675,7 +27666,7 @@
msgid "Fees"
msgstr ""
-#: public/js/utils/serial_no_batch_selector.js:260
+#: public/js/utils/serial_no_batch_selector.js:332
msgid "Fetch Based On"
msgstr ""
@@ -27725,7 +27716,7 @@
msgstr ""
#: accounts/doctype/dunning/dunning.js:131
-#: public/js/controllers/transaction.js:1082
+#: public/js/controllers/transaction.js:1083
msgid "Fetching exchange rates ..."
msgstr ""
@@ -27804,7 +27795,7 @@
#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:17
#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:17
-#: public/js/financial_statements.js:114
+#: public/js/financial_statements.js:167
msgid "Filter Based On"
msgstr ""
@@ -27840,7 +27831,7 @@
msgid "Filter on Payment"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:685
+#: accounts/doctype/payment_entry/payment_entry.js:696
#: public/js/bank_reconciliation_tool/dialog_manager.js:192
msgid "Filters"
msgstr ""
@@ -27907,7 +27898,7 @@
#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:32
#: accounts/report/trial_balance/trial_balance.js:70
#: assets/report/fixed_asset_register/fixed_asset_register.js:49
-#: public/js/financial_statements.js:108
+#: public/js/financial_statements.js:161
msgid "Finance Book"
msgstr ""
@@ -28025,12 +28016,17 @@
msgid "Financial Ratios"
msgstr ""
+#. Name of a Workspace
+#: accounts/workspace/financial_reports/financial_reports.json
+msgid "Financial Reports"
+msgstr ""
+
#. Title of an Onboarding Step
-#. Label of a Card Break in the Accounting Workspace
+#. Label of a Card Break in the Financial Reports Workspace
#: accounts/doctype/account/account_tree.js:158
#: accounts/onboarding_step/financial_statements/financial_statements.json
-#: accounts/workspace/accounting/accounting.json
-#: public/js/financial_statements.js:77
+#: accounts/workspace/financial_reports/financial_reports.json
+#: public/js/financial_statements.js:129
msgid "Financial Statements"
msgstr ""
@@ -28111,15 +28107,15 @@
msgid "Finished Good Item Quantity"
msgstr ""
-#: controllers/accounts_controller.py:3145
+#: controllers/accounts_controller.py:3204
msgid "Finished Good Item is not specified for service item {0}"
msgstr ""
-#: controllers/accounts_controller.py:3160
+#: controllers/accounts_controller.py:3219
msgid "Finished Good Item {0} Qty can not be zero"
msgstr ""
-#: controllers/accounts_controller.py:3154
+#: controllers/accounts_controller.py:3213
msgid "Finished Good Item {0} must be a sub-contracted item"
msgstr ""
@@ -28163,7 +28159,7 @@
msgid "Finished Good {0} must be a sub-contracted item."
msgstr ""
-#: setup/doctype/company/company.py:261
+#: setup/doctype/company/company.py:262
msgid "Finished Goods"
msgstr ""
@@ -28443,7 +28439,7 @@
msgid "Following Material Requests have been raised automatically based on Item's re-order level"
msgstr ""
-#: selling/doctype/customer/customer.py:739
+#: selling/doctype/customer/customer.py:740
msgid "Following fields are mandatory to create address:"
msgstr ""
@@ -28459,7 +28455,7 @@
msgid "For"
msgstr ""
-#: public/js/utils/sales_common.js:265
+#: public/js/utils/sales_common.js:274
msgid "For 'Product Bundle' items, Warehouse, Serial No and Batch No will be considered from the 'Packing List' table. If Warehouse and Batch No are same for all packing items for any 'Product Bundle' item, those values can be entered in the main Item table, values will be copied to 'Packing List' table."
msgstr ""
@@ -28479,6 +28475,10 @@
msgid "For Default Supplier (Optional)"
msgstr ""
+#: controllers/stock_controller.py:770
+msgid "For Item {0} cannot be received more than {1} qty against the {2} {3}"
+msgstr ""
+
#. Label of a Link field in DocType 'Job Card'
#: manufacturing/doctype/job_card/job_card.json
msgctxt "Job Card"
@@ -28525,7 +28525,7 @@
msgstr ""
#: manufacturing/doctype/production_plan/production_plan.js:331
-#: selling/doctype/sales_order/sales_order.js:814
+#: selling/doctype/sales_order/sales_order.js:808
#: stock/doctype/material_request/material_request.js:247
msgid "For Warehouse"
msgstr ""
@@ -28540,15 +28540,15 @@
msgid "For Warehouse is required before Submit"
msgstr ""
-#: public/js/utils/serial_no_batch_selector.js:112
+#: public/js/utils/serial_no_batch_selector.js:116
msgid "For Work Order"
msgstr ""
-#: controllers/status_updater.py:229
+#: controllers/status_updater.py:238
msgid "For an item {0}, quantity must be negative number"
msgstr ""
-#: controllers/status_updater.py:226
+#: controllers/status_updater.py:235
msgid "For an item {0}, quantity must be positive number"
msgstr ""
@@ -28578,7 +28578,7 @@
msgid "For individual supplier"
msgstr ""
-#: controllers/status_updater.py:234
+#: controllers/status_updater.py:243
msgid "For item {0}, rate must be a positive number. To Allow negative rates, enable {1} in {2}"
msgstr ""
@@ -28587,7 +28587,7 @@
msgstr ""
#: manufacturing/doctype/work_order/work_order.py:1523
-msgid "For operation {0}: Quantity ({1}) can not be greter than pending quantity({2})"
+msgid "For operation {0}: Quantity ({1}) can not be greater than pending quantity({2})"
msgstr ""
#: stock/doctype/stock_entry/stock_entry.py:1302
@@ -28600,8 +28600,8 @@
msgid "For reference"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:1218
-#: public/js/controllers/accounts.js:181
+#: accounts/doctype/payment_entry/payment_entry.js:1229
+#: public/js/controllers/accounts.js:182
msgid "For row {0} in {1}. To include {2} in Item rate, rows {3} must also be included"
msgstr ""
@@ -29041,7 +29041,7 @@
msgid "From Date and To Date are Mandatory"
msgstr ""
-#: accounts/report/financial_statements.py:142
+#: accounts/report/financial_statements.py:130
msgid "From Date and To Date are mandatory"
msgstr ""
@@ -29530,9 +29530,23 @@
msgid "Fully Depreciated"
msgstr ""
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Purchase
+#. Order'
+#: buying/doctype/purchase_order/purchase_order.json
+msgctxt "Purchase Order"
+msgid "Fully Paid"
+msgstr ""
+
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Sales
+#. Order'
+#: selling/doctype/sales_order/sales_order.json
+msgctxt "Sales Order"
+msgid "Fully Paid"
+msgstr ""
+
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:28
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:41
-msgid "Furnitures and Fixtures"
+msgid "Furniture and Fixtures"
msgstr ""
#: accounts/doctype/account/account_tree.js:111
@@ -29548,13 +29562,13 @@
msgstr ""
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:185
-#: accounts/report/accounts_receivable/accounts_receivable.py:1061
+#: accounts/report/accounts_receivable/accounts_receivable.py:1084
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:180
msgid "Future Payment Amount"
msgstr ""
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:184
-#: accounts/report/accounts_receivable/accounts_receivable.py:1060
+#: accounts/report/accounts_receivable/accounts_receivable.py:1083
msgid "Future Payment Ref"
msgstr ""
@@ -29574,7 +29588,7 @@
#. Name of a DocType
#: accounts/doctype/gl_entry/gl_entry.json
-#: accounts/report/general_ledger/general_ledger.py:554
+#: accounts/report/general_ledger/general_ledger.py:557
msgid "GL Entry"
msgstr ""
@@ -29635,7 +29649,7 @@
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:74
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:98
-#: setup/doctype/company/company.py:524
+#: setup/doctype/company/company.py:525
msgid "Gain/Loss on Asset Disposal"
msgstr ""
@@ -29673,13 +29687,13 @@
#. Description of a report in the Onboarding Step 'Financial Statements'
#. Name of a report
-#. Label of a Card Break in the Accounting Workspace
-#. Label of a Link in the Accounting Workspace
#. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#: accounts/doctype/account/account.js:95
#: accounts/onboarding_step/financial_statements/financial_statements.json
#: accounts/report/general_ledger/general_ledger.json
#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
msgid "General Ledger"
msgstr ""
@@ -29804,11 +29818,8 @@
msgid "Get Finished Goods for Manufacture"
msgstr ""
-#: accounts/doctype/invoice_discounting/invoice_discounting.js:157
-msgid "Get Invocies"
-msgstr ""
-
#: accounts/doctype/invoice_discounting/invoice_discounting.js:55
+#: accounts/doctype/invoice_discounting/invoice_discounting.js:157
msgid "Get Invoices"
msgstr ""
@@ -29854,9 +29865,9 @@
#: maintenance/doctype/maintenance_visit/maintenance_visit.js:132
#: public/js/controllers/buying.js:267
#: selling/doctype/quotation/quotation.js:160
-#: selling/doctype/sales_order/sales_order.js:129
-#: selling/doctype/sales_order/sales_order.js:649
-#: stock/doctype/delivery_note/delivery_note.js:169
+#: selling/doctype/sales_order/sales_order.js:132
+#: selling/doctype/sales_order/sales_order.js:643
+#: stock/doctype/delivery_note/delivery_note.js:160
#: stock/doctype/material_request/material_request.js:100
#: stock/doctype/material_request/material_request.js:162
#: stock/doctype/purchase_receipt/purchase_receipt.js:130
@@ -30090,7 +30101,7 @@
msgid "Goods"
msgstr ""
-#: setup/doctype/company/company.py:262
+#: setup/doctype/company/company.py:263
#: stock/doctype/stock_entry/stock_entry_list.js:14
msgid "Goods In Transit"
msgstr ""
@@ -30099,7 +30110,7 @@
msgid "Goods Transferred"
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:1622
+#: stock/doctype/stock_entry/stock_entry.py:1618
msgid "Goods are already received against the outward entry {0}"
msgstr ""
@@ -30123,7 +30134,7 @@
#: accounts/report/pos_register/pos_register.py:207
#: accounts/report/purchase_register/purchase_register.py:275
#: accounts/report/sales_register/sales_register.py:303
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:248
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:253
#: templates/includes/order/order_taxes.html:105 templates/pages/rfq.html:58
msgid "Grand Total"
msgstr ""
@@ -30410,10 +30421,10 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#: accounts/report/gross_profit/gross_profit.json
#: accounts/report/gross_profit/gross_profit.py:287
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
msgid "Gross Profit"
msgstr ""
@@ -30454,11 +30465,11 @@
msgid "Gross Purchase Amount"
msgstr ""
-#: assets/doctype/asset/asset.py:316
+#: assets/doctype/asset/asset.py:317
msgid "Gross Purchase Amount is mandatory"
msgstr ""
-#: assets/doctype/asset/asset.py:361
+#: assets/doctype/asset/asset.py:362
msgid "Gross Purchase Amount should be <b>equal</b> to purchase amount of one single Asset."
msgstr ""
@@ -30583,7 +30594,7 @@
msgid "Group by Voucher (Consolidated)"
msgstr ""
-#: stock/utils.py:401
+#: stock/utils.py:448
msgid "Group node warehouse is not allowed to select for transactions"
msgstr ""
@@ -30645,6 +30656,11 @@
msgid "Groups"
msgstr ""
+#: accounts/report/balance_sheet/balance_sheet.js:18
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:18
+msgid "Growth View"
+msgstr ""
+
#: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:245
#: stock/report/stock_ledger_variance/stock_ledger_variance.py:169
msgid "H - F"
@@ -30690,7 +30706,7 @@
#: accounts/report/budget_variance_report/budget_variance_report.js:66
#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:69
#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:60
-#: public/js/financial_statements.js:166
+#: public/js/financial_statements.js:219
#: public/js/purchase_trends_filters.js:21 public/js/sales_trends_filters.js:13
#: selling/report/sales_partner_target_variance_based_on_item_group/sales_partner_target_variance_based_on_item_group.js:35
#: selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.js:35
@@ -30915,7 +30931,7 @@
msgid "Here are the error logs for the aforementioned failed depreciation entries: {0}"
msgstr ""
-#: stock/stock_ledger.py:1580
+#: stock/stock_ledger.py:1669
msgid "Here are the options to proceed:"
msgstr ""
@@ -30940,24 +30956,6 @@
msgid "Here, your weekly offs are pre-populated based on the previous selections. You can add more rows to also add public and national holidays individually."
msgstr ""
-#. Label of a Attach Image field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Hero Image"
-msgstr ""
-
-#. Label of a Section Break field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Hero Section"
-msgstr ""
-
-#. Label of a Select field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Hero Section Based On"
-msgstr ""
-
#: stock/doctype/repost_item_valuation/repost_item_valuation.py:391
msgid "Hi,"
msgstr ""
@@ -31021,7 +31019,7 @@
msgstr ""
#: buying/doctype/purchase_order/purchase_order.js:288
-#: selling/doctype/sales_order/sales_order.js:545
+#: selling/doctype/sales_order/sales_order.js:539
msgid "Hold"
msgstr ""
@@ -31105,34 +31103,6 @@
msgid "Home"
msgstr ""
-#. Name of a DocType
-#: portal/doctype/homepage/homepage.json
-msgid "Homepage"
-msgstr ""
-
-#. Name of a DocType
-#: portal/doctype/homepage_section/homepage_section.json
-msgid "Homepage Section"
-msgstr ""
-
-#. Option for the 'Hero Section Based On' (Select) field in DocType 'Homepage'
-#. Label of a Link field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Homepage Section"
-msgstr ""
-
-#. Name of a DocType
-#: portal/doctype/homepage_section_card/homepage_section_card.json
-msgid "Homepage Section Card"
-msgstr ""
-
-#. Label of a Link field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Homepage Slideshow"
-msgstr ""
-
#. Label of a Currency field in DocType 'BOM Operation'
#: manufacturing/doctype/bom_operation/bom_operation.json
msgctxt "BOM Operation"
@@ -31197,7 +31167,7 @@
msgid "Hrs"
msgstr ""
-#: setup/doctype/company/company.py:364
+#: setup/doctype/company/company.py:365
msgid "Human Resources"
msgstr ""
@@ -31468,7 +31438,7 @@
msgid "If more than one package of the same type (for print)"
msgstr ""
-#: stock/stock_ledger.py:1590
+#: stock/stock_ledger.py:1679
msgid "If not, you can Cancel / Submit this entry"
msgstr ""
@@ -31496,7 +31466,7 @@
msgid "If the account is frozen, entries are allowed to restricted users."
msgstr ""
-#: stock/stock_ledger.py:1583
+#: stock/stock_ledger.py:1672
msgid "If the item is transacting as a Zero Valuation Rate item in this entry, please enable 'Allow Zero Valuation Rate' in the {0} Item table."
msgstr ""
@@ -31546,7 +31516,7 @@
msgid "If this is unchecked, direct GL entries will be created to book deferred revenue or expense"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:636
+#: accounts/doctype/payment_entry/payment_entry.py:638
msgid "If this is undesirable please cancel the corresponding Payment Entry."
msgstr ""
@@ -31572,7 +31542,7 @@
msgid "If ticked, the BOM cost will be automatically updated based on Valuation Rate / Price List Rate / last purchase rate of raw materials."
msgstr ""
-#: stock/doctype/item/item.js:828
+#: stock/doctype/item/item.js:814
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 ""
@@ -31656,7 +31626,7 @@
msgid "Ignore Exchange Rate Revaluation Journals"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:806
+#: selling/doctype/sales_order/sales_order.js:800
msgid "Ignore Existing Ordered Qty"
msgstr ""
@@ -31814,12 +31784,6 @@
msgid "Image"
msgstr ""
-#. Label of a Attach Image field in DocType 'Homepage Section Card'
-#: portal/doctype/homepage_section_card/homepage_section_card.json
-msgctxt "Homepage Section Card"
-msgid "Image"
-msgstr ""
-
#. Label of a Attach Image field in DocType 'Item'
#: stock/doctype/item/item.json
msgctxt "Item"
@@ -32144,6 +32108,11 @@
msgid "Import Type"
msgstr ""
+#: public/js/utils/serial_no_batch_selector.js:197
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:77
+msgid "Import Using CSV file"
+msgstr ""
+
#. Label of a HTML field in DocType 'Bank Statement Import'
#: accounts/doctype/bank_statement_import/bank_statement_import.json
msgctxt "Bank Statement Import"
@@ -32369,6 +32338,12 @@
msgid "In Words"
msgstr ""
+#. Label of a Small Text field in DocType 'Payment Entry'
+#: accounts/doctype/payment_entry/payment_entry.json
+msgctxt "Payment Entry"
+msgid "In Words"
+msgstr ""
+
#. Label of a Data field in DocType 'Purchase Invoice'
#: accounts/doctype/purchase_invoice/purchase_invoice.json
msgctxt "Purchase Invoice"
@@ -32429,6 +32404,12 @@
msgid "In Words (Company Currency)"
msgstr ""
+#. Label of a Small Text field in DocType 'Payment Entry'
+#: accounts/doctype/payment_entry/payment_entry.json
+msgctxt "Payment Entry"
+msgid "In Words (Company Currency)"
+msgstr ""
+
#. Label of a Data field in DocType 'Purchase Invoice'
#: accounts/doctype/purchase_invoice/purchase_invoice.json
msgctxt "Purchase Invoice"
@@ -32541,7 +32522,7 @@
msgid "In the case of 'Use Multi-Level BOM' in a work order, if the user wishes to add sub-assembly costs to Finished Goods items without using a job card as well the scrap items, then this option needs to be enable."
msgstr ""
-#: stock/doctype/item/item.js:853
+#: stock/doctype/item/item.js:839
msgid "In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc."
msgstr ""
@@ -32602,7 +32583,7 @@
msgid "Include Default FB Assets"
msgstr ""
-#: accounts/report/balance_sheet/balance_sheet.js:20
+#: accounts/report/balance_sheet/balance_sheet.js:34
#: accounts/report/cash_flow/cash_flow.js:20
#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.js:107
#: accounts/report/general_ledger/general_ledger.js:183
@@ -32618,7 +32599,7 @@
msgid "Include Expired"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:804
+#: selling/doctype/sales_order/sales_order.js:798
msgid "Include Exploded Items"
msgstr ""
@@ -32771,6 +32752,7 @@
#: accounts/report/account_balance/account_balance.js:28
#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.py:172
#: accounts/report/profitability_analysis/profitability_analysis.py:182
+#: public/js/financial_statements.js:35
msgid "Income"
msgstr ""
@@ -32794,7 +32776,8 @@
msgstr ""
#: accounts/report/account_balance/account_balance.js:51
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:286
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.js:65
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:293
msgid "Income Account"
msgstr ""
@@ -32916,11 +32899,11 @@
msgid "Incorrect Balance Qty After Transaction"
msgstr ""
-#: controllers/subcontracting_controller.py:706
+#: controllers/subcontracting_controller.py:710
msgid "Incorrect Batch Consumed"
msgstr ""
-#: assets/doctype/asset/asset.py:277
+#: assets/doctype/asset/asset.py:278
#: assets/doctype/asset_value_adjustment/asset_value_adjustment.py:74
msgid "Incorrect Date"
msgstr ""
@@ -32934,7 +32917,7 @@
msgid "Incorrect Movement Purpose"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:293
+#: accounts/doctype/payment_entry/payment_entry.py:295
msgid "Incorrect Payment Type"
msgstr ""
@@ -32943,7 +32926,7 @@
msgid "Incorrect Serial No Valuation"
msgstr ""
-#: controllers/subcontracting_controller.py:719
+#: controllers/subcontracting_controller.py:723
msgid "Incorrect Serial Number Consumed"
msgstr ""
@@ -33051,7 +33034,7 @@
msgid "Increment cannot be 0"
msgstr ""
-#: controllers/item_variant.py:110
+#: controllers/item_variant.py:114
msgid "Increment for Attribute {0} cannot be 0"
msgstr ""
@@ -33177,6 +33160,13 @@
msgid "Initiated"
msgstr ""
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Purchase
+#. Order'
+#: buying/doctype/purchase_order/purchase_order.json
+msgctxt "Purchase Order"
+msgid "Initiated"
+msgstr ""
+
#. Option for the 'Import Type' (Select) field in DocType 'Bank Statement
#. Import'
#: accounts/doctype/bank_statement_import/bank_statement_import.json
@@ -33195,11 +33185,11 @@
msgid "Inspected By"
msgstr ""
-#: controllers/stock_controller.py:678
+#: controllers/stock_controller.py:666
msgid "Inspection Rejected"
msgstr ""
-#: controllers/stock_controller.py:648 controllers/stock_controller.py:650
+#: controllers/stock_controller.py:636 controllers/stock_controller.py:638
msgid "Inspection Required"
msgstr ""
@@ -33221,7 +33211,7 @@
msgid "Inspection Required before Purchase"
msgstr ""
-#: controllers/stock_controller.py:665
+#: controllers/stock_controller.py:653
msgid "Inspection Submission"
msgstr ""
@@ -33243,7 +33233,7 @@
#. Name of a DocType
#: selling/doctype/installation_note/installation_note.json
-#: stock/doctype/delivery_note/delivery_note.js:180
+#: stock/doctype/delivery_note/delivery_note.js:171
msgid "Installation Note"
msgstr ""
@@ -33325,19 +33315,19 @@
msgid "Insufficient Capacity"
msgstr ""
-#: controllers/accounts_controller.py:3071
-#: controllers/accounts_controller.py:3095
+#: controllers/accounts_controller.py:3130
+#: controllers/accounts_controller.py:3154
msgid "Insufficient Permissions"
msgstr ""
#: stock/doctype/pick_list/pick_list.py:705
#: stock/doctype/stock_entry/stock_entry.py:776
-#: stock/serial_batch_bundle.py:880 stock/stock_ledger.py:1264
-#: stock/stock_ledger.py:1751
+#: stock/serial_batch_bundle.py:880 stock/stock_ledger.py:1369
+#: stock/stock_ledger.py:1840
msgid "Insufficient Stock"
msgstr ""
-#: stock/stock_ledger.py:1766
+#: stock/stock_ledger.py:1855
msgid "Insufficient Stock for Batch"
msgstr ""
@@ -33478,7 +33468,7 @@
msgid "Interest"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:2316
+#: accounts/doctype/payment_entry/payment_entry.py:2339
msgid "Interest and/or dunning fee"
msgstr ""
@@ -33502,15 +33492,15 @@
msgid "Internal Customer"
msgstr ""
-#: selling/doctype/customer/customer.py:217
+#: selling/doctype/customer/customer.py:218
msgid "Internal Customer for company {0} already exists"
msgstr ""
-#: controllers/accounts_controller.py:530
+#: controllers/accounts_controller.py:533
msgid "Internal Sale or Delivery Reference missing."
msgstr ""
-#: controllers/accounts_controller.py:532
+#: controllers/accounts_controller.py:535
msgid "Internal Sales Reference Missing"
msgstr ""
@@ -33524,7 +33514,7 @@
msgid "Internal Supplier for company {0} already exists"
msgstr ""
-#: stock/doctype/delivery_note/delivery_note_dashboard.py:25
+#: stock/doctype/delivery_note/delivery_note_dashboard.py:27
#: stock/doctype/material_request/material_request_dashboard.py:19
msgid "Internal Transfer"
msgstr ""
@@ -33559,7 +33549,7 @@
msgid "Internal Transfer"
msgstr ""
-#: controllers/accounts_controller.py:541
+#: controllers/accounts_controller.py:544
msgid "Internal Transfer Reference Missing"
msgstr ""
@@ -33573,7 +33563,7 @@
msgid "Internal Work History"
msgstr ""
-#: controllers/stock_controller.py:744
+#: controllers/stock_controller.py:735
msgid "Internal transfers can only be done in company's default currency"
msgstr ""
@@ -33610,20 +33600,20 @@
#: accounts/doctype/purchase_invoice/purchase_invoice.py:369
#: accounts/doctype/purchase_invoice/purchase_invoice.py:377
-#: accounts/doctype/sales_invoice/sales_invoice.py:873
-#: accounts/doctype/sales_invoice/sales_invoice.py:883
+#: accounts/doctype/sales_invoice/sales_invoice.py:876
+#: accounts/doctype/sales_invoice/sales_invoice.py:886
#: assets/doctype/asset_category/asset_category.py:68
#: assets/doctype/asset_category/asset_category.py:96
-#: controllers/accounts_controller.py:2462
-#: controllers/accounts_controller.py:2468
+#: controllers/accounts_controller.py:2531
+#: controllers/accounts_controller.py:2537
msgid "Invalid Account"
msgstr ""
-#: controllers/item_variant.py:125
+#: controllers/item_variant.py:129
msgid "Invalid Attribute"
msgstr ""
-#: controllers/accounts_controller.py:377
+#: controllers/accounts_controller.py:380
msgid "Invalid Auto Repeat Date"
msgstr ""
@@ -33631,7 +33621,7 @@
msgid "Invalid Barcode. There is no Item attached to this barcode."
msgstr ""
-#: public/js/controllers/transaction.js:2330
+#: public/js/controllers/transaction.js:2360
msgid "Invalid Blanket Order for the selected Customer and Item"
msgstr ""
@@ -33639,12 +33629,12 @@
msgid "Invalid Child Procedure"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:2000
+#: accounts/doctype/sales_invoice/sales_invoice.py:1977
msgid "Invalid Company for Inter Company Transaction."
msgstr ""
-#: assets/doctype/asset/asset.py:248 assets/doctype/asset/asset.py:255
-#: controllers/accounts_controller.py:2483
+#: assets/doctype/asset/asset.py:249 assets/doctype/asset/asset.py:256
+#: controllers/accounts_controller.py:2552
msgid "Invalid Cost Center"
msgstr ""
@@ -33652,7 +33642,7 @@
msgid "Invalid Credentials"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:315
+#: selling/doctype/sales_order/sales_order.py:318
msgid "Invalid Delivery Date"
msgstr ""
@@ -33669,7 +33659,7 @@
msgid "Invalid Formula"
msgstr ""
-#: assets/doctype/asset/asset.py:366
+#: assets/doctype/asset/asset.py:367
msgid "Invalid Gross Purchase Amount"
msgstr ""
@@ -33677,7 +33667,7 @@
msgid "Invalid Group By"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:376
+#: accounts/doctype/pos_invoice/pos_invoice.py:374
msgid "Invalid Item"
msgstr ""
@@ -33686,7 +33676,7 @@
msgstr ""
#: accounts/doctype/pos_closing_entry/pos_closing_entry.py:59
-#: accounts/general_ledger.py:678
+#: accounts/general_ledger.py:677
msgid "Invalid Opening Entry"
msgstr ""
@@ -33714,24 +33704,24 @@
msgid "Invalid Priority"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:989
+#: manufacturing/doctype/bom/bom.py:991
msgid "Invalid Process Loss Configuration"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:597
+#: accounts/doctype/payment_entry/payment_entry.py:599
msgid "Invalid Purchase Invoice"
msgstr ""
-#: controllers/accounts_controller.py:3110
+#: controllers/accounts_controller.py:3169
msgid "Invalid Qty"
msgstr ""
-#: controllers/accounts_controller.py:987
+#: controllers/accounts_controller.py:1021
msgid "Invalid Quantity"
msgstr ""
-#: assets/doctype/asset/asset.py:410 assets/doctype/asset/asset.py:416
-#: assets/doctype/asset/asset.py:443
+#: assets/doctype/asset/asset.py:411 assets/doctype/asset/asset.py:417
+#: assets/doctype/asset/asset.py:444
msgid "Invalid Schedule"
msgstr ""
@@ -33743,7 +33733,7 @@
msgid "Invalid URL"
msgstr ""
-#: controllers/item_variant.py:144
+#: controllers/item_variant.py:148
msgid "Invalid Value"
msgstr ""
@@ -33756,7 +33746,7 @@
msgid "Invalid condition expression"
msgstr ""
-#: selling/doctype/quotation/quotation.py:252
+#: selling/doctype/quotation/quotation.py:253
msgid "Invalid lost reason {0}, please create a new lost reason"
msgstr ""
@@ -33783,7 +33773,7 @@
msgid "Invalid {0}"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1998
+#: accounts/doctype/sales_invoice/sales_invoice.py:1975
msgid "Invalid {0} for Inter Company Transaction."
msgstr ""
@@ -33824,7 +33814,7 @@
msgstr ""
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:177
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:187
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:194
#: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:100
msgid "Invoice"
msgstr ""
@@ -33872,7 +33862,7 @@
msgid "Invoice Discounting"
msgstr ""
-#: accounts/report/accounts_receivable/accounts_receivable.py:1042
+#: accounts/report/accounts_receivable/accounts_receivable.py:1065
msgid "Invoice Grand Total"
msgstr ""
@@ -33999,7 +33989,7 @@
msgstr ""
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:168
-#: accounts/report/accounts_receivable/accounts_receivable.py:1044
+#: accounts/report/accounts_receivable/accounts_receivable.py:1067
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:168
#: accounts/report/customer_ledger_summary/customer_ledger_summary.py:104
msgid "Invoiced Amount"
@@ -34009,7 +33999,7 @@
msgid "Invoiced Qty"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:2051
+#: accounts/doctype/sales_invoice/sales_invoice.py:2028
#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:62
msgid "Invoices"
msgstr ""
@@ -34051,6 +34041,13 @@
msgid "Invoices and Payments have been Fetched and Allocated"
msgstr ""
+#. Label of a Card Break in the Payables Workspace
+#. Label of a Card Break in the Receivables Workspace
+#: accounts/workspace/payables/payables.json
+#: accounts/workspace/receivables/receivables.json
+msgid "Invoicing"
+msgstr ""
+
#. Label of a Section Break field in DocType 'Accounts Settings'
#: accounts/doctype/accounts_settings/accounts_settings.json
msgctxt "Accounts Settings"
@@ -34810,6 +34807,12 @@
msgid "Is Stock Item"
msgstr ""
+#. Label of a Check field in DocType 'Sales Order Item'
+#: selling/doctype/sales_order_item/sales_order_item.json
+msgctxt "Sales Order Item"
+msgid "Is Stock Item"
+msgstr ""
+
#. Label of a Check field in DocType 'Purchase Invoice'
#: accounts/doctype/purchase_invoice/purchase_invoice.json
msgctxt "Purchase Invoice"
@@ -35044,7 +35047,7 @@
msgid "It can take upto few hours for accurate stock values to be visible after merging items."
msgstr ""
-#: public/js/controllers/transaction.js:1809
+#: public/js/controllers/transaction.js:1839
msgid "It is needed to fetch Item Details."
msgstr ""
@@ -35060,7 +35063,7 @@
#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js:50
#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js:33
#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:206
-#: controllers/taxes_and_totals.py:1009
+#: controllers/taxes_and_totals.py:1018
#: manufacturing/report/bom_stock_calculated/bom_stock_calculated.py:51
#: manufacturing/report/bom_stock_report/bom_stock_report.py:25
#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:67
@@ -35071,7 +35074,7 @@
#: public/js/purchase_trends_filters.js:48
#: public/js/purchase_trends_filters.js:65 public/js/sales_trends_filters.js:23
#: public/js/sales_trends_filters.js:41 public/js/stock_analytics.js:61
-#: selling/doctype/sales_order/sales_order.js:983
+#: selling/doctype/sales_order/sales_order.js:977
#: selling/report/customer_wise_item_price/customer_wise_item_price.js:15
#: selling/report/item_wise_sales_history/item_wise_sales_history.js:37
#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:63
@@ -35305,7 +35308,7 @@
#: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:36
#: accounts/report/gross_profit/gross_profit.py:224
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:150
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:160
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:167
#: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:36
#: buying/report/purchase_order_analysis/purchase_order_analysis.py:193
#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:200
@@ -35321,12 +35324,12 @@
#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:86
#: manufacturing/report/work_order_stock_report/work_order_stock_report.py:119
#: projects/doctype/timesheet/timesheet.js:187
-#: public/js/controllers/transaction.js:2082 public/js/utils.js:459
+#: public/js/controllers/transaction.js:2112 public/js/utils.js:459
#: public/js/utils.js:606 selling/doctype/quotation/quotation.js:268
-#: selling/doctype/sales_order/sales_order.js:297
-#: selling/doctype/sales_order/sales_order.js:398
-#: selling/doctype/sales_order/sales_order.js:688
-#: selling/doctype/sales_order/sales_order.js:812
+#: selling/doctype/sales_order/sales_order.js:291
+#: selling/doctype/sales_order/sales_order.js:392
+#: selling/doctype/sales_order/sales_order.js:682
+#: selling/doctype/sales_order/sales_order.js:806
#: selling/report/customer_wise_item_price/customer_wise_item_price.py:29
#: selling/report/item_wise_sales_history/item_wise_sales_history.py:27
#: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:19
@@ -35831,7 +35834,7 @@
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:28
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:164
#: accounts/report/item_wise_sales_register/item_wise_sales_register.js:53
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:174
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:181
#: accounts/report/purchase_register/purchase_register.js:58
#: accounts/report/sales_register/sales_register.js:70
#: public/js/purchase_trends_filters.js:49 public/js/sales_trends_filters.js:24
@@ -36041,6 +36044,12 @@
msgid "Item Group"
msgstr ""
+#. Label of a Link field in DocType 'Stock Reconciliation Item'
+#: stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json
+msgctxt "Stock Reconciliation Item"
+msgid "Item Group"
+msgstr ""
+
#. Label of a Link field in DocType 'Supplier Quotation Item'
#: buying/doctype/supplier_quotation_item/supplier_quotation_item.json
msgctxt "Supplier Quotation Item"
@@ -36140,7 +36149,7 @@
#: accounts/report/gross_profit/gross_profit.py:231
#: accounts/report/inactive_sales_items/inactive_sales_items.py:33
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:156
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:166
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:173
#: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:70
#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:206
#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:95
@@ -36152,7 +36161,7 @@
#: manufacturing/report/production_planning_report/production_planning_report.py:356
#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:92
#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py:128
-#: public/js/controllers/transaction.js:2088
+#: public/js/controllers/transaction.js:2118
#: selling/report/customer_wise_item_price/customer_wise_item_price.py:35
#: selling/report/item_wise_sales_history/item_wise_sales_history.py:33
#: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:25
@@ -36793,8 +36802,8 @@
msgid "Item UOM"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:343
-#: accounts/doctype/pos_invoice/pos_invoice.py:350
+#: accounts/doctype/pos_invoice/pos_invoice.py:341
+#: accounts/doctype/pos_invoice/pos_invoice.py:348
msgid "Item Unavailable"
msgstr ""
@@ -36827,7 +36836,7 @@
msgid "Item Variant Settings"
msgstr ""
-#: stock/doctype/item/item.js:681
+#: stock/doctype/item/item.js:667
msgid "Item Variant {0} already exists with same attributes"
msgstr ""
@@ -36922,7 +36931,7 @@
msgid "Item and Warranty Details"
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:2329
+#: stock/doctype/stock_entry/stock_entry.py:2325
msgid "Item for row {0} does not match Material Request"
msgstr ""
@@ -36939,7 +36948,7 @@
msgstr ""
#: buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.py:42
-#: selling/doctype/sales_order/sales_order.js:990
+#: selling/doctype/sales_order/sales_order.js:984
msgid "Item name"
msgstr ""
@@ -36949,7 +36958,7 @@
msgid "Item operation"
msgstr ""
-#: controllers/accounts_controller.py:3137
+#: controllers/accounts_controller.py:3196
msgid "Item qty can not be updated as raw materials are already processed."
msgstr ""
@@ -36963,7 +36972,7 @@
msgid "Item to be manufactured or repacked"
msgstr ""
-#: stock/utils.py:517
+#: stock/utils.py:564
msgid "Item valuation reposting in progress. Report might show incorrect item valuation."
msgstr ""
@@ -36979,11 +36988,11 @@
msgid "Item {0} cannot be ordered more than {1} against Blanket Order {2}."
msgstr ""
-#: assets/doctype/asset/asset.py:230 stock/doctype/item/item.py:603
+#: assets/doctype/asset/asset.py:231 stock/doctype/item/item.py:603
msgid "Item {0} does not exist"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:558
+#: manufacturing/doctype/bom/bom.py:560
msgid "Item {0} does not exist in the system or has expired"
msgstr ""
@@ -36995,19 +37004,19 @@
msgid "Item {0} has already been returned"
msgstr ""
-#: assets/doctype/asset/asset.py:232
+#: assets/doctype/asset/asset.py:233
msgid "Item {0} has been disabled"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:642
-msgid "Item {0} has no Serial No. Only serilialized items can have delivery based on Serial No"
+#: selling/doctype/sales_order/sales_order.py:645
+msgid "Item {0} has no Serial No. Only serialized items can have delivery based on Serial No"
msgstr ""
#: stock/doctype/item/item.py:1102
msgid "Item {0} has reached its end of life on {1}"
msgstr ""
-#: stock/stock_ledger.py:102
+#: stock/stock_ledger.py:111
msgid "Item {0} ignored since it is not a stock item"
msgstr ""
@@ -37031,11 +37040,11 @@
msgid "Item {0} is not a stock Item"
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:1542
+#: stock/doctype/stock_entry/stock_entry.py:1538
msgid "Item {0} is not active or end of life has been reached"
msgstr ""
-#: assets/doctype/asset/asset.py:234
+#: assets/doctype/asset/asset.py:235
msgid "Item {0} must be a Fixed Asset Item"
msgstr ""
@@ -37047,7 +37056,7 @@
msgid "Item {0} must be a Sub-contracted Item"
msgstr ""
-#: assets/doctype/asset/asset.py:236
+#: assets/doctype/asset/asset.py:237
msgid "Item {0} must be a non-stock item"
msgstr ""
@@ -37059,7 +37068,7 @@
msgid "Item {0} not found."
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:338
+#: buying/doctype/purchase_order/purchase_order.py:342
msgid "Item {0}: Ordered qty {1} cannot be less than minimum order qty {2} (defined in Item)."
msgstr ""
@@ -37067,7 +37076,7 @@
msgid "Item {0}: {1} qty produced. "
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:1071
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:1131
msgid "Item {} does not exist."
msgstr ""
@@ -37089,9 +37098,9 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
msgid "Item-wise Purchase Register"
msgstr ""
@@ -37103,18 +37112,18 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
#: accounts/report/item_wise_sales_register/item_wise_sales_register.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
msgid "Item-wise Sales Register"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:309
+#: manufacturing/doctype/bom/bom.py:311
msgid "Item: {0} does not exist in the system"
msgstr ""
#: public/js/utils.js:442 setup/doctype/item_group/item_group.js:70
-#: stock/doctype/delivery_note/delivery_note.js:373
+#: stock/doctype/delivery_note/delivery_note.js:364
#: templates/generators/bom.html:38 templates/pages/rfq.html:37
msgid "Items"
msgstr ""
@@ -37287,7 +37296,7 @@
msgstr ""
#: manufacturing/doctype/production_plan/production_plan.py:1462
-#: selling/doctype/sales_order/sales_order.js:1024
+#: selling/doctype/sales_order/sales_order.js:1018
msgid "Items Required"
msgstr ""
@@ -37303,11 +37312,11 @@
msgid "Items and Pricing"
msgstr ""
-#: controllers/accounts_controller.py:3357
+#: controllers/accounts_controller.py:3416
msgid "Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}."
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:830
+#: selling/doctype/sales_order/sales_order.js:824
msgid "Items for Raw Material Request"
msgstr ""
@@ -37330,7 +37339,7 @@
msgid "Items to Order and Receive"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:258
+#: selling/doctype/sales_order/sales_order.js:252
msgid "Items to Reserve"
msgstr ""
@@ -37515,7 +37524,7 @@
msgid "Journal Entries"
msgstr ""
-#: accounts/utils.py:838
+#: accounts/utils.py:866
msgid "Journal Entries {0} are un-linked"
msgstr ""
@@ -37549,8 +37558,13 @@
#. Option for the 'Entry Type' (Select) field in DocType 'Journal Entry'
#. Label of a Link in the Accounting Workspace
#. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
+#. Label of a shortcut in the Payables Workspace
+#. Label of a shortcut in the Receivables Workspace
#: accounts/doctype/journal_entry/journal_entry.json
#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
+#: accounts/workspace/receivables/receivables.json
msgctxt "Journal Entry"
msgid "Journal Entry"
msgstr ""
@@ -37603,7 +37617,7 @@
msgid "Journal Entry Type"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:455
+#: accounts/doctype/journal_entry/journal_entry.py:471
msgid "Journal Entry for Asset scrapping cannot be cancelled. Please restore the Asset."
msgstr ""
@@ -37613,11 +37627,11 @@
msgid "Journal Entry for Scrap"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:215
+#: accounts/doctype/journal_entry/journal_entry.py:232
msgid "Journal Entry type should be set as Depreciation Entry for asset depreciation"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:581
+#: accounts/doctype/journal_entry/journal_entry.py:597
msgid "Journal Entry {0} does not have account {1} or already matched against other voucher"
msgstr ""
@@ -38157,6 +38171,11 @@
msgid "Ledger Merge Accounts"
msgstr ""
+#. Label of a Card Break in the Financial Reports Workspace
+#: accounts/workspace/financial_reports/financial_reports.json
+msgid "Ledgers"
+msgstr ""
+
#. Option for the 'Status' (Select) field in DocType 'Driver'
#: setup/doctype/driver/driver.json
msgctxt "Driver"
@@ -38181,7 +38200,7 @@
msgid "Left Index"
msgstr ""
-#: setup/doctype/company/company.py:388
+#: setup/doctype/company/company.py:389
msgid "Legal"
msgstr ""
@@ -38576,7 +38595,7 @@
msgid "Likes"
msgstr ""
-#: controllers/status_updater.py:353
+#: controllers/status_updater.py:362
msgid "Limit Crossed"
msgstr ""
@@ -38895,7 +38914,7 @@
msgstr ""
#: crm/report/lost_opportunity/lost_opportunity.py:49
-#: public/js/utils/sales_common.js:401
+#: public/js/utils/sales_common.js:410
msgid "Lost Reasons"
msgstr ""
@@ -39245,8 +39264,8 @@
msgid "Machine operator errors"
msgstr ""
-#: setup/doctype/company/company.py:562 setup/doctype/company/company.py:577
-#: setup/doctype/company/company.py:578 setup/doctype/company/company.py:579
+#: setup/doctype/company/company.py:563 setup/doctype/company/company.py:578
+#: setup/doctype/company/company.py:579 setup/doctype/company/company.py:580
msgid "Main"
msgstr ""
@@ -39379,7 +39398,7 @@
#: accounts/doctype/sales_invoice/sales_invoice.js:162
#: maintenance/doctype/maintenance_schedule/maintenance_schedule.json
#: maintenance/doctype/maintenance_visit/maintenance_visit.js:78
-#: selling/doctype/sales_order/sales_order.js:588
+#: selling/doctype/sales_order/sales_order.js:582
msgid "Maintenance Schedule"
msgstr ""
@@ -39524,7 +39543,7 @@
#. Name of a DocType
#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:83
#: maintenance/doctype/maintenance_visit/maintenance_visit.json
-#: selling/doctype/sales_order/sales_order.js:587
+#: selling/doctype/sales_order/sales_order.js:581
#: support/doctype/warranty_claim/warranty_claim.js:50
msgid "Maintenance Visit"
msgstr ""
@@ -39563,12 +39582,6 @@
msgid "Make"
msgstr ""
-#. Label of a Data field in DocType 'Vehicle'
-#: setup/doctype/vehicle/vehicle.json
-msgctxt "Vehicle"
-msgid "Make"
-msgstr ""
-
#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:56
msgid "Make "
msgstr ""
@@ -39664,7 +39677,7 @@
msgid "Manage your orders"
msgstr ""
-#: setup/doctype/company/company.py:370
+#: setup/doctype/company/company.py:371
msgid "Management"
msgstr ""
@@ -39672,11 +39685,11 @@
#: accounts/doctype/promotional_scheme/promotional_scheme.py:141
#: buying/doctype/supplier_quotation/supplier_quotation.js:60
#: manufacturing/doctype/bom/bom.js:71 manufacturing/doctype/bom/bom.js:482
-#: manufacturing/doctype/bom/bom.py:243
+#: manufacturing/doctype/bom/bom.py:245
#: manufacturing/doctype/bom_update_log/bom_update_log.py:73
-#: public/js/controllers/accounts.js:248
-#: public/js/controllers/transaction.js:2454 public/js/utils/party.js:273
-#: stock/doctype/delivery_note/delivery_note.js:147
+#: public/js/controllers/accounts.js:249
+#: public/js/controllers/transaction.js:2484 public/js/utils/party.js:273
+#: stock/doctype/delivery_note/delivery_note.js:138
#: stock/doctype/purchase_receipt/purchase_receipt.js:113
#: stock/doctype/purchase_receipt/purchase_receipt.js:198
#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:81
@@ -39705,7 +39718,7 @@
msgid "Mandatory Depends On"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1566
+#: accounts/doctype/sales_invoice/sales_invoice.py:1549
msgid "Mandatory Field"
msgstr ""
@@ -39721,7 +39734,7 @@
msgid "Mandatory For Profit and Loss Account"
msgstr ""
-#: selling/doctype/quotation/quotation.py:551
+#: selling/doctype/quotation/quotation.py:556
msgid "Mandatory Missing"
msgstr ""
@@ -39967,6 +39980,12 @@
msgid "Manufacturer"
msgstr ""
+#. Label of a Data field in DocType 'Vehicle'
+#: setup/doctype/vehicle/vehicle.json
+msgctxt "Vehicle"
+msgid "Manufacturer"
+msgstr ""
+
#: manufacturing/report/bom_stock_calculated/bom_stock_calculated.py:70
msgid "Manufacturer Part Number"
msgstr ""
@@ -40069,7 +40088,7 @@
msgid "Manufacturing Manager"
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:1693
+#: stock/doctype/stock_entry/stock_entry.py:1689
msgid "Manufacturing Quantity is mandatory"
msgstr ""
@@ -40277,6 +40296,10 @@
msgid "Margin Type"
msgstr ""
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:19
+msgid "Margin View"
+msgstr ""
+
#. Label of a Select field in DocType 'Employee'
#: setup/doctype/employee/employee.json
msgctxt "Employee"
@@ -40318,7 +40341,7 @@
msgid "Market Segment"
msgstr ""
-#: setup/doctype/company/company.py:322
+#: setup/doctype/company/company.py:323
msgid "Marketing"
msgstr ""
@@ -40440,7 +40463,7 @@
#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:186
#: manufacturing/doctype/job_card/job_card.js:57
#: manufacturing/doctype/production_plan/production_plan.js:113
-#: selling/doctype/sales_order/sales_order.js:576
+#: selling/doctype/sales_order/sales_order.js:570
#: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:36
#: stock/doctype/material_request/material_request.json
#: stock/doctype/material_request/material_request.py:365
@@ -40670,7 +40693,7 @@
msgid "Material Request Type"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:1507
+#: selling/doctype/sales_order/sales_order.py:1521
msgid "Material Request not created, as quantity for Raw Materials already available."
msgstr ""
@@ -40685,11 +40708,11 @@
msgid "Material Request used to make this Stock Entry"
msgstr ""
-#: controllers/subcontracting_controller.py:968
+#: controllers/subcontracting_controller.py:974
msgid "Material Request {0} is cancelled or stopped"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:845
+#: selling/doctype/sales_order/sales_order.js:839
msgid "Material Request {0} submitted."
msgstr ""
@@ -40827,7 +40850,7 @@
msgid "Materials Required (Exploded)"
msgstr ""
-#: controllers/subcontracting_controller.py:1158
+#: controllers/subcontracting_controller.py:1164
msgid "Materials are already received against the {0} {1}"
msgstr ""
@@ -40934,11 +40957,11 @@
msgid "Maximum Payment Amount"
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:2846
+#: stock/doctype/stock_entry/stock_entry.py:2842
msgid "Maximum Samples - {0} can be retained for Batch {1} and Item {2}."
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:2837
+#: stock/doctype/stock_entry/stock_entry.py:2833
msgid "Maximum Samples - {0} have already been retained for Batch {1} and Item {2} in Batch {3}."
msgstr ""
@@ -41002,7 +41025,7 @@
msgid "Meeting"
msgstr ""
-#: stock/stock_ledger.py:1596
+#: stock/stock_ledger.py:1685
msgid "Mention Valuation Rate in the Item master."
msgstr ""
@@ -41305,28 +41328,28 @@
msgid "Mismatch"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:1072
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:1132
msgid "Missing"
msgstr ""
#: accounts/doctype/pos_opening_entry/pos_opening_entry.py:69
#: accounts/doctype/pos_profile/pos_profile.py:166
#: accounts/doctype/purchase_invoice/purchase_invoice.py:548
-#: accounts/doctype/sales_invoice/sales_invoice.py:2067
-#: accounts/doctype/sales_invoice/sales_invoice.py:2631
+#: accounts/doctype/sales_invoice/sales_invoice.py:2044
+#: accounts/doctype/sales_invoice/sales_invoice.py:2602
#: assets/doctype/asset_category/asset_category.py:115
msgid "Missing Account"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1410
+#: accounts/doctype/sales_invoice/sales_invoice.py:1403
msgid "Missing Asset"
msgstr ""
-#: accounts/doctype/gl_entry/gl_entry.py:179 assets/doctype/asset/asset.py:264
+#: accounts/doctype/gl_entry/gl_entry.py:179 assets/doctype/asset/asset.py:265
msgid "Missing Cost Center"
msgstr ""
-#: assets/doctype/asset/asset.py:308
+#: assets/doctype/asset/asset.py:309
msgid "Missing Finance Book"
msgstr ""
@@ -41350,7 +41373,7 @@
msgid "Missing Serial No Bundle"
msgstr ""
-#: selling/doctype/customer/customer.py:742
+#: selling/doctype/customer/customer.py:743
msgid "Missing Values Required"
msgstr ""
@@ -41362,7 +41385,7 @@
msgid "Missing email template for dispatch. Please set one in Delivery Settings."
msgstr ""
-#: manufacturing/doctype/bom/bom.py:955
+#: manufacturing/doctype/bom/bom.py:957
#: manufacturing/doctype/work_order/work_order.py:979
msgid "Missing value"
msgstr ""
@@ -41508,7 +41531,7 @@
msgstr ""
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:213
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:236
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:243
#: accounts/report/purchase_register/purchase_register.py:201
#: accounts/report/sales_register/sales_register.py:222
msgid "Mode Of Payment"
@@ -41762,7 +41785,7 @@
#: buying/report/purchase_analytics/purchase_analytics.js:62
#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:58
#: manufacturing/report/production_analytics/production_analytics.js:35
-#: public/js/financial_statements.js:164
+#: public/js/financial_statements.js:217
#: public/js/purchase_trends_filters.js:19 public/js/sales_trends_filters.js:11
#: public/js/stock_analytics.js:53
#: selling/report/sales_analytics/sales_analytics.js:62
@@ -42066,10 +42089,6 @@
msgid "More columns found than expected. Please compare the uploaded file with standard template"
msgstr ""
-#: templates/includes/macros.html:57 templates/pages/home.html:40
-msgid "More details"
-msgstr ""
-
#: stock/doctype/batch/batch.js:111 stock/doctype/batch/batch_dashboard.py:10
msgid "Move"
msgstr ""
@@ -42078,7 +42097,7 @@
msgid "Move Item"
msgstr ""
-#: templates/includes/macros.html:201
+#: templates/includes/macros.html:169
msgid "Move to Cart"
msgstr ""
@@ -42124,7 +42143,7 @@
msgid "Multi-level BOM Creator"
msgstr ""
-#: selling/doctype/customer/customer.py:368
+#: selling/doctype/customer/customer.py:369
msgid "Multiple Loyalty Programs found for Customer {}. Please select manually."
msgstr ""
@@ -42147,7 +42166,7 @@
msgid "Multiple Warehouse Accounts"
msgstr ""
-#: controllers/accounts_controller.py:865
+#: controllers/accounts_controller.py:899
msgid "Multiple fiscal years exist for the date {0}. Please set company in Fiscal Year"
msgstr ""
@@ -42189,7 +42208,7 @@
#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py:357
#: crm/report/prospects_engaged_but_not_converted/prospects_engaged_but_not_converted.py:29
#: manufacturing/doctype/bom_creator/bom_creator.js:45
-#: public/js/utils/serial_no_batch_selector.js:332
+#: public/js/utils/serial_no_batch_selector.js:404
#: selling/doctype/quotation/quotation.js:261
msgid "Name"
msgstr ""
@@ -42427,11 +42446,11 @@
msgid "Needs Analysis"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:376
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:377
msgid "Negative Quantity is not allowed"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:380
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:381
msgid "Negative Valuation Rate is not allowed"
msgstr ""
@@ -42915,7 +42934,7 @@
msgid "Net Weight UOM"
msgstr ""
-#: controllers/accounts_controller.py:1179
+#: controllers/accounts_controller.py:1210
msgid "Net total calculation precision loss"
msgstr ""
@@ -43085,7 +43104,7 @@
msgid "New Workplace"
msgstr ""
-#: selling/doctype/customer/customer.py:337
+#: selling/doctype/customer/customer.py:338
msgid "New credit limit is less than current outstanding amount for the customer. Credit limit has to be atleast {0}"
msgstr ""
@@ -43256,7 +43275,7 @@
msgid "No Answer"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:2175
+#: accounts/doctype/sales_invoice/sales_invoice.py:2146
msgid "No Customer found for Inter Company Transactions which represents company {0}"
msgstr ""
@@ -43281,29 +43300,29 @@
msgid "No Item with Serial No {0}"
msgstr ""
-#: controllers/subcontracting_controller.py:1078
+#: controllers/subcontracting_controller.py:1084
msgid "No Items selected for transfer."
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:674
+#: selling/doctype/sales_order/sales_order.js:668
msgid "No Items with Bill of Materials to Manufacture"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:788
+#: selling/doctype/sales_order/sales_order.js:782
msgid "No Items with Bill of Materials."
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:192
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:213
msgid "No Outstanding Invoices found for this party"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:528
+#: accounts/doctype/pos_invoice/pos_invoice.py:526
msgid "No POS Profile found. Please create a New POS Profile first"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:1534
-#: accounts/doctype/journal_entry/journal_entry.py:1600
-#: accounts/doctype/journal_entry/journal_entry.py:1623
+#: accounts/doctype/journal_entry/journal_entry.py:1420
+#: accounts/doctype/journal_entry/journal_entry.py:1486
+#: accounts/doctype/journal_entry/journal_entry.py:1509
#: stock/doctype/item/item.py:1332
msgid "No Permission"
msgstr ""
@@ -43314,7 +43333,7 @@
msgstr ""
#: accounts/doctype/purchase_invoice/purchase_invoice.py:333
-#: accounts/doctype/sales_invoice/sales_invoice.py:946
+#: accounts/doctype/sales_invoice/sales_invoice.py:949
msgid "No Remarks"
msgstr ""
@@ -43322,7 +43341,7 @@
msgid "No Stock Available Currently"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:2159
+#: accounts/doctype/sales_invoice/sales_invoice.py:2130
msgid "No Supplier found for Inter Company Transactions which represents company {0}"
msgstr ""
@@ -43334,11 +43353,11 @@
msgid "No Terms"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:190
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:211
msgid "No Unreconciled Invoices and Payments found for this party and account"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:194
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:215
msgid "No Unreconciled Payments found for this party"
msgstr ""
@@ -43346,12 +43365,12 @@
msgid "No Work Orders were created"
msgstr ""
-#: stock/doctype/purchase_receipt/purchase_receipt.py:729
+#: stock/doctype/purchase_receipt/purchase_receipt.py:727
#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:606
msgid "No accounting entries for the following warehouses"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:648
+#: selling/doctype/sales_order/sales_order.py:651
msgid "No active BOM found for item {0}. Delivery by Serial No cannot be ensured"
msgstr ""
@@ -43387,11 +43406,11 @@
msgid "No employee was scheduled for call popup"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:1053
+#: accounts/doctype/payment_entry/payment_entry.js:1064
msgid "No gain or loss in the exchange rate"
msgstr ""
-#: controllers/subcontracting_controller.py:999
+#: controllers/subcontracting_controller.py:1005
msgid "No item available for transfer."
msgstr ""
@@ -43487,7 +43506,7 @@
msgid "No outstanding invoices require exchange rate revaluation"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1784
+#: accounts/doctype/payment_entry/payment_entry.py:1801
msgid "No outstanding {0} found for the {1} {2} which qualify the filters you have specified."
msgstr ""
@@ -43509,38 +43528,38 @@
msgid "No record found"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:649
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:677
msgid "No records found in Allocation table"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:551
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:579
msgid "No records found in the Invoices table"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:554
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:582
msgid "No records found in the Payments table"
msgstr ""
-#. Description of the 'Stock Frozen Upto' (Date) field in DocType 'Stock
+#. Description of the 'Stock Frozen Up To' (Date) field in DocType 'Stock
#. Settings'
#: stock/doctype/stock_settings/stock_settings.json
msgctxt "Stock Settings"
msgid "No stock transactions can be created or modified before this date."
msgstr ""
-#: controllers/accounts_controller.py:2366
+#: controllers/accounts_controller.py:2435
msgid "No updates pending for reposting"
msgstr ""
-#: templates/includes/macros.html:323 templates/includes/macros.html:356
+#: templates/includes/macros.html:291 templates/includes/macros.html:324
msgid "No values"
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:328
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:342
msgid "No {0} Accounts found for this company."
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:2226
+#: accounts/doctype/sales_invoice/sales_invoice.py:2197
msgid "No {0} found for Inter Company Transactions."
msgstr ""
@@ -43580,7 +43599,7 @@
msgid "Non Profit"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:1303
+#: manufacturing/doctype/bom/bom.py:1305
msgid "Non stock items"
msgstr ""
@@ -43591,7 +43610,7 @@
msgid "None"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:314
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:315
msgid "None of the items have any change in quantity or value."
msgstr ""
@@ -43603,8 +43622,8 @@
msgstr ""
#: accounts/doctype/mode_of_payment/mode_of_payment.py:66
-#: accounts/doctype/pos_invoice/pos_invoice.py:256
-#: accounts/doctype/sales_invoice/sales_invoice.py:524
+#: accounts/doctype/pos_invoice/pos_invoice.py:254
+#: accounts/doctype/sales_invoice/sales_invoice.py:525
#: assets/doctype/asset/asset.js:530 assets/doctype/asset/asset.js:547
#: controllers/buying_controller.py:206
#: selling/doctype/product_bundle/product_bundle.py:71
@@ -43641,12 +43660,26 @@
msgid "Not Delivered"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:740
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Purchase
+#. Order'
+#: buying/doctype/purchase_order/purchase_order.json
+msgctxt "Purchase Order"
+msgid "Not Initiated"
+msgstr ""
+
+#: buying/doctype/purchase_order/purchase_order.py:744
#: templates/pages/material_request_info.py:21 templates/pages/order.py:32
#: templates/pages/rfq.py:48
msgid "Not Permitted"
msgstr ""
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Sales
+#. Order'
+#: selling/doctype/sales_order/sales_order.json
+msgctxt "Sales Order"
+msgid "Not Requested"
+msgstr ""
+
#: selling/report/lost_quotations/lost_quotations.py:86
#: support/report/issue_analytics/issue_analytics.py:208
#: support/report/issue_summary/issue_summary.py:198
@@ -43695,24 +43728,24 @@
msgid "Not allowed to update stock transactions older than {0}"
msgstr ""
-#: accounts/doctype/gl_entry/gl_entry.py:445
-msgid "Not authorized to edit frozen Account {0}"
+#: setup/doctype/authorization_control/authorization_control.py:57
+msgid "Not authorized since {0} exceeds limits"
msgstr ""
-#: setup/doctype/authorization_control/authorization_control.py:57
-msgid "Not authroized since {0} exceeds limits"
+#: accounts/doctype/gl_entry/gl_entry.py:445
+msgid "Not authorized to edit frozen Account {0}"
msgstr ""
#: templates/includes/products_as_grid.html:20
msgid "Not in stock"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:663
+#: buying/doctype/purchase_order/purchase_order.py:667
#: manufacturing/doctype/work_order/work_order.py:1256
#: manufacturing/doctype/work_order/work_order.py:1390
#: manufacturing/doctype/work_order/work_order.py:1440
-#: selling/doctype/sales_order/sales_order.py:741
-#: selling/doctype/sales_order/sales_order.py:1490
+#: selling/doctype/sales_order/sales_order.py:755
+#: selling/doctype/sales_order/sales_order.py:1504
msgid "Not permitted"
msgstr ""
@@ -43720,10 +43753,10 @@
#: manufacturing/doctype/bom_update_log/bom_update_log.py:100
#: manufacturing/doctype/production_plan/production_plan.py:1607
#: public/js/controllers/buying.js:440 selling/doctype/customer/customer.py:125
-#: selling/doctype/sales_order/sales_order.js:963
+#: selling/doctype/sales_order/sales_order.js:957
#: stock/doctype/item/item.js:426 stock/doctype/item/item.py:539
#: stock/doctype/stock_entry/stock_entry.py:1288
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:731
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:732
msgid "Note"
msgstr ""
@@ -43764,7 +43797,7 @@
msgid "Note: Item {0} added multiple times"
msgstr ""
-#: controllers/accounts_controller.py:447
+#: controllers/accounts_controller.py:450
msgid "Note: Payment Entry will not be created since 'Cash or Bank Account' was not specified"
msgstr ""
@@ -43776,7 +43809,7 @@
msgid "Note: To merge the items, create a separate Stock Reconciliation for the old item {0}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:943
+#: accounts/doctype/journal_entry/journal_entry.py:895
msgid "Note: {0}"
msgstr ""
@@ -43947,12 +43980,6 @@
msgid "Notify customer and agent via email on the day of the appointment."
msgstr ""
-#. Label of a Select field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Number of Columns"
-msgstr ""
-
#. Label of a Int field in DocType 'Appointment Booking Settings'
#: crm/doctype/appointment_booking_settings/appointment_booking_settings.json
msgctxt "Appointment Booking Settings"
@@ -43991,13 +44018,6 @@
msgid "Number of Order"
msgstr ""
-#. Description of the 'Number of Columns' (Select) field in DocType 'Homepage
-#. Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Number of columns for this section. 3 cards will be shown per row if you select 3 columns."
-msgstr ""
-
#. Description of the 'Grace Period' (Int) field in DocType 'Subscription
#. Settings'
#: accounts/doctype/subscription_settings/subscription_settings.json
@@ -44111,7 +44131,7 @@
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:29
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:42
-msgid "Office Equipments"
+msgid "Office Equipment"
msgstr ""
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:62
@@ -44648,7 +44668,7 @@
msgid "Opening Accumulated Depreciation"
msgstr ""
-#: assets/doctype/asset/asset.py:427
+#: assets/doctype/asset/asset.py:428
msgid "Opening Accumulated Depreciation must be less than or equal to {0}"
msgstr ""
@@ -44698,7 +44718,7 @@
msgid "Opening Entry"
msgstr ""
-#: accounts/general_ledger.py:677
+#: accounts/general_ledger.py:676
msgid "Opening Entry can not be created after Period Closing Voucher is created."
msgstr ""
@@ -44800,7 +44820,7 @@
msgid "Operating Cost Per BOM Quantity"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:1319
+#: manufacturing/doctype/bom/bom.py:1321
msgid "Operating Cost as per Work Order / BOM"
msgstr ""
@@ -44984,7 +45004,7 @@
msgstr ""
#: manufacturing/doctype/work_order/work_order.js:220
-#: setup/doctype/company/company.py:340 templates/generators/bom.html:61
+#: setup/doctype/company/company.py:341 templates/generators/bom.html:61
msgid "Operations"
msgstr ""
@@ -45010,7 +45030,7 @@
msgid "Operations"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:964
+#: manufacturing/doctype/bom/bom.py:966
msgid "Operations cannot be left blank"
msgstr ""
@@ -45331,12 +45351,6 @@
msgid "Order Value"
msgstr ""
-#. Description of the 'Section Order' (Int) field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Order in which sections should appear. 0 is first, 1 is second and so on."
-msgstr ""
-
#: crm/report/campaign_efficiency/campaign_efficiency.py:27
#: crm/report/lead_owner_efficiency/lead_owner_efficiency.py:33
msgid "Order/Quot %"
@@ -45409,7 +45423,7 @@
#: buying/doctype/supplier/supplier_dashboard.py:14
#: selling/doctype/customer/customer_dashboard.py:21
-#: selling/doctype/sales_order/sales_order.py:731
+#: selling/doctype/sales_order/sales_order.py:745
#: setup/doctype/company/company_dashboard.py:23
msgid "Orders"
msgstr ""
@@ -45518,9 +45532,11 @@
msgid "Other Info"
msgstr ""
+#. Label of a Card Break in the Financial Reports Workspace
#. Label of a Card Break in the Buying Workspace
#. Label of a Card Break in the Selling Workspace
#. Label of a Card Break in the Stock Workspace
+#: accounts/workspace/financial_reports/financial_reports.json
#: buying/workspace/buying/buying.json selling/workspace/selling/selling.json
#: stock/workspace/stock/stock.json
msgid "Other Reports"
@@ -45588,7 +45604,7 @@
msgid "Out of Warranty"
msgstr ""
-#: templates/includes/macros.html:205
+#: templates/includes/macros.html:173
msgid "Out of stock"
msgstr ""
@@ -45644,7 +45660,7 @@
#: accounts/doctype/payment_entry/payment_entry.js:653
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:179
-#: accounts/report/accounts_receivable/accounts_receivable.py:1051
+#: accounts/report/accounts_receivable/accounts_receivable.py:1074
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:171
#: accounts/report/purchase_register/purchase_register.py:289
#: accounts/report/sales_register/sales_register.py:317
@@ -45750,11 +45766,11 @@
msgid "Over Delivery/Receipt Allowance (%)"
msgstr ""
-#: controllers/stock_controller.py:795
+#: controllers/stock_controller.py:896
msgid "Over Receipt"
msgstr ""
-#: controllers/status_updater.py:358
+#: controllers/status_updater.py:367
msgid "Over Receipt/Delivery of {0} {1} ignored for item {2} because you have {3} role."
msgstr ""
@@ -45770,17 +45786,17 @@
msgid "Over Transfer Allowance (%)"
msgstr ""
-#: controllers/status_updater.py:360
+#: controllers/status_updater.py:369
msgid "Overbilling of {0} {1} ignored for item {2} because you have {3} role."
msgstr ""
-#: controllers/accounts_controller.py:1680
+#: controllers/accounts_controller.py:1713
msgid "Overbilling of {} ignored because you have {} role."
msgstr ""
#: accounts/doctype/sales_invoice/sales_invoice.py:261
#: projects/report/project_summary/project_summary.py:94
-#: selling/doctype/sales_order/sales_order_list.js:16
+#: selling/doctype/sales_order/sales_order_list.js:18
msgid "Overdue"
msgstr ""
@@ -46020,6 +46036,12 @@
msgid "POS Invoice"
msgstr ""
+#. Label of a shortcut in the Receivables Workspace
+#: accounts/workspace/receivables/receivables.json
+msgctxt "POS Invoice"
+msgid "POS Invoice"
+msgstr ""
+
#. Label of a Link field in DocType 'POS Invoice Reference'
#: accounts/doctype/pos_invoice_reference/pos_invoice_reference.json
msgctxt "POS Invoice Reference"
@@ -46077,7 +46099,7 @@
msgid "POS Invoice isn't created by user {}"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:192
+#: accounts/doctype/pos_invoice/pos_invoice.py:191
msgid "POS Invoice should have {} field checked."
msgstr ""
@@ -46175,7 +46197,7 @@
msgid "POS Profile doesn't matches {}"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1116
+#: accounts/doctype/sales_invoice/sales_invoice.py:1119
msgid "POS Profile required to make POS Entry"
msgstr ""
@@ -46227,7 +46249,7 @@
msgstr ""
#: selling/page/point_of_sale/pos_controller.js:363
-msgid "POS invoice {0} created succesfully"
+msgid "POS invoice {0} created successfully"
msgstr ""
#. Option for the 'Series' (Select) field in DocType 'Cashier Closing'
@@ -46332,7 +46354,7 @@
msgid "Packed Items"
msgstr ""
-#: controllers/stock_controller.py:748
+#: controllers/stock_controller.py:739
msgid "Packed Items cannot be transferred internally"
msgstr ""
@@ -46373,7 +46395,7 @@
msgstr ""
#. Name of a DocType
-#: stock/doctype/delivery_note/delivery_note.js:195
+#: stock/doctype/delivery_note/delivery_note.js:186
#: stock/doctype/packing_slip/packing_slip.json
msgid "Packing Slip"
msgstr ""
@@ -46529,7 +46551,7 @@
msgstr ""
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:170
-#: accounts/report/accounts_receivable/accounts_receivable.py:1045
+#: accounts/report/accounts_receivable/accounts_receivable.py:1068
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:169
#: accounts/report/customer_ledger_summary/customer_ledger_summary.py:111
#: accounts/report/pos_register/pos_register.py:214
@@ -46609,7 +46631,7 @@
msgid "Paid Amount After Tax (Company Currency)"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:870
+#: accounts/doctype/payment_entry/payment_entry.js:881
msgid "Paid Amount cannot be greater than total negative outstanding amount {0}"
msgstr ""
@@ -46632,7 +46654,7 @@
msgstr ""
#: accounts/doctype/purchase_invoice/purchase_invoice.py:324
-#: accounts/doctype/sales_invoice/sales_invoice.py:991
+#: accounts/doctype/sales_invoice/sales_invoice.py:994
msgid "Paid amount + Write Off Amount can not be greater than Grand Total"
msgstr ""
@@ -46776,7 +46798,7 @@
msgid "Parent Company"
msgstr ""
-#: setup/doctype/company/company.py:459
+#: setup/doctype/company/company.py:460
msgid "Parent Company must be a group company"
msgstr ""
@@ -46989,6 +47011,20 @@
msgid "Partially Paid"
msgstr ""
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Purchase
+#. Order'
+#: buying/doctype/purchase_order/purchase_order.json
+msgctxt "Purchase Order"
+msgid "Partially Paid"
+msgstr ""
+
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Sales
+#. Order'
+#: selling/doctype/sales_order/sales_order.json
+msgctxt "Sales Order"
+msgid "Partially Paid"
+msgstr ""
+
#: stock/doctype/material_request/material_request_list.js:21
msgid "Partially Received"
msgstr ""
@@ -47035,6 +47071,10 @@
msgid "Parties"
msgstr ""
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:14
+msgid "Partly Billed"
+msgstr ""
+
#. Option for the 'Billing Status' (Select) field in DocType 'Sales Order'
#: selling/doctype/sales_order/sales_order.json
msgctxt "Sales Order"
@@ -47101,7 +47141,7 @@
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:151
#: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py:233
#: accounts/report/general_ledger/general_ledger.js:74
-#: accounts/report/general_ledger/general_ledger.py:630
+#: accounts/report/general_ledger/general_ledger.py:633
#: accounts/report/payment_ledger/payment_ledger.js:52
#: accounts/report/payment_ledger/payment_ledger.py:154
#: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js:46
@@ -47254,7 +47294,7 @@
msgid "Party Account No. (Bank Statement)"
msgstr ""
-#: controllers/accounts_controller.py:1914
+#: controllers/accounts_controller.py:1983
msgid "Party Account {0} currency ({1}) and document currency ({2}) should be same"
msgstr ""
@@ -47365,7 +47405,7 @@
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:145
#: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py:223
#: accounts/report/general_ledger/general_ledger.js:65
-#: accounts/report/general_ledger/general_ledger.py:629
+#: accounts/report/general_ledger/general_ledger.py:632
#: accounts/report/payment_ledger/payment_ledger.js:42
#: accounts/report/payment_ledger/payment_ledger.py:150
#: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js:35
@@ -47483,7 +47523,7 @@
msgid "Party Type and Party is required for Receivable / Payable account {0}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:432
+#: accounts/doctype/payment_entry/payment_entry.py:434
msgid "Party Type is mandatory"
msgstr ""
@@ -47497,7 +47537,7 @@
msgid "Party can only be one of {0}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:435
+#: accounts/doctype/payment_entry/payment_entry.py:437
msgid "Party is mandatory"
msgstr ""
@@ -47622,6 +47662,11 @@
msgid "Payable Account"
msgstr ""
+#. Name of a Workspace
+#: accounts/workspace/payables/payables.json
+msgid "Payables"
+msgstr ""
+
#. Label of a Check field in DocType 'Email Digest'
#: setup/doctype/email_digest/email_digest.json
msgctxt "Email Digest"
@@ -47644,7 +47689,7 @@
#: accounts/doctype/sales_invoice/sales_invoice_list.js:31
#: buying/doctype/purchase_order/purchase_order.js:328
#: buying/doctype/purchase_order/purchase_order_dashboard.py:20
-#: selling/doctype/sales_order/sales_order.js:612
+#: selling/doctype/sales_order/sales_order.js:606
#: selling/doctype/sales_order/sales_order_dashboard.py:28
msgid "Payment"
msgstr ""
@@ -47752,7 +47797,7 @@
msgid "Payment Entries"
msgstr ""
-#: accounts/utils.py:909
+#: accounts/utils.py:937
msgid "Payment Entries {0} are un-linked"
msgstr ""
@@ -47785,7 +47830,13 @@
#. Label of a Link in the Accounting Workspace
#. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
+#. Label of a shortcut in the Payables Workspace
+#. Label of a Link in the Receivables Workspace
+#. Label of a shortcut in the Receivables Workspace
#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
+#: accounts/workspace/receivables/receivables.json
msgctxt "Payment Entry"
msgid "Payment Entry"
msgstr ""
@@ -47807,19 +47858,19 @@
msgid "Payment Entry Reference"
msgstr ""
-#: accounts/doctype/payment_request/payment_request.py:395
+#: accounts/doctype/payment_request/payment_request.py:410
msgid "Payment Entry already exists"
msgstr ""
-#: accounts/utils.py:583
+#: accounts/utils.py:604
msgid "Payment Entry has been modified after you pulled it. Please pull it again."
msgstr ""
-#: accounts/doctype/payment_request/payment_request.py:544
+#: accounts/doctype/payment_request/payment_request.py:568
msgid "Payment Entry is already created"
msgstr ""
-#: controllers/accounts_controller.py:1130
+#: controllers/accounts_controller.py:1164
msgid "Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice."
msgstr ""
@@ -47862,8 +47913,8 @@
msgid "Payment Gateway Account"
msgstr ""
-#. Label of a Link in the Accounting Workspace
-#: accounts/workspace/accounting/accounting.json
+#. Label of a Link in the Receivables Workspace
+#: accounts/workspace/receivables/receivables.json
msgctxt "Payment Gateway Account"
msgid "Payment Gateway Account"
msgstr ""
@@ -47874,7 +47925,7 @@
msgid "Payment Gateway Account"
msgstr ""
-#: accounts/utils.py:1199
+#: accounts/utils.py:1227
msgid "Payment Gateway Account not created, please create one manually."
msgstr ""
@@ -47982,9 +48033,9 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
msgid "Payment Period Based On Invoice Date"
msgstr ""
@@ -48013,8 +48064,10 @@
msgid "Payment Reconciliation"
msgstr ""
-#. Label of a Link in the Accounting Workspace
-#: accounts/workspace/accounting/accounting.json
+#. Label of a Link in the Payables Workspace
+#. Label of a Link in the Receivables Workspace
+#: accounts/workspace/payables/payables.json
+#: accounts/workspace/receivables/receivables.json
msgctxt "Payment Reconciliation"
msgid "Payment Reconciliation"
msgstr ""
@@ -48029,7 +48082,7 @@
msgid "Payment Reconciliation Invoice"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:118
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:120
msgid "Payment Reconciliation Job: {0} is running for this party. Can't reconcile now."
msgstr ""
@@ -48062,7 +48115,7 @@
#: accounts/doctype/purchase_invoice/purchase_invoice.js:125
#: accounts/doctype/sales_invoice/sales_invoice.js:140
#: buying/doctype/purchase_order/purchase_order.js:335
-#: selling/doctype/sales_order/sales_order.js:611
+#: selling/doctype/sales_order/sales_order.js:605
msgid "Payment Request"
msgstr ""
@@ -48079,8 +48132,8 @@
msgid "Payment Request"
msgstr ""
-#. Label of a Link in the Accounting Workspace
-#: accounts/workspace/accounting/accounting.json
+#. Label of a Link in the Receivables Workspace
+#: accounts/workspace/receivables/receivables.json
msgctxt "Payment Request"
msgid "Payment Request"
msgstr ""
@@ -48091,7 +48144,7 @@
msgid "Payment Request Type"
msgstr ""
-#: accounts/doctype/payment_request/payment_request.py:478
+#: accounts/doctype/payment_request/payment_request.py:502
msgid "Payment Request for {0}"
msgstr ""
@@ -48099,6 +48152,10 @@
msgid "Payment Request took too long to respond. Please try requesting for payment again."
msgstr ""
+#: accounts/doctype/payment_request/payment_request.py:450
+msgid "Payment Requests cannot be created against: {0}"
+msgstr ""
+
#. Name of a DocType
#: accounts/doctype/payment_schedule/payment_schedule.json
msgid "Payment Schedule"
@@ -48146,13 +48203,13 @@
msgid "Payment Schedule"
msgstr ""
-#: public/js/controllers/transaction.js:924
+#: public/js/controllers/transaction.js:925
msgid "Payment Schedule Table"
msgstr ""
#. Name of a DocType
#: accounts/doctype/payment_term/payment_term.json
-#: accounts/report/accounts_receivable/accounts_receivable.py:1041
+#: accounts/report/accounts_receivable/accounts_receivable.py:1064
#: accounts/report/gross_profit/gross_profit.py:348
#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:30
msgid "Payment Term"
@@ -48320,19 +48377,19 @@
msgid "Payment Type"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:499
+#: accounts/doctype/payment_entry/payment_entry.py:501
msgid "Payment Type must be one of Receive, Pay and Internal Transfer"
msgstr ""
-#: accounts/utils.py:899
+#: accounts/utils.py:927
msgid "Payment Unlink Error"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:748
+#: accounts/doctype/journal_entry/journal_entry.py:764
msgid "Payment against {0} {1} cannot be greater than Outstanding Amount {2}"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:656
+#: accounts/doctype/pos_invoice/pos_invoice.py:649
msgid "Payment amount cannot be less than or equal to 0"
msgstr ""
@@ -48349,7 +48406,7 @@
msgid "Payment of {0} received successfully. Waiting for other requests to complete..."
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:313
+#: accounts/doctype/pos_invoice/pos_invoice.py:311
msgid "Payment related to {0} is not completed"
msgstr ""
@@ -48357,13 +48414,19 @@
msgid "Payment request failed"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:711
+#: accounts/doctype/payment_entry/payment_entry.py:713
msgid "Payment term {0} not used in {1}"
msgstr ""
+#. Label of a Card Break in the Accounting Workspace
+#. Label of a Card Break in the Payables Workspace
+#. Label of a Card Break in the Receivables Workspace
#: accounts/doctype/bank_account/bank_account_dashboard.py:13
#: accounts/report/sales_payment_summary/sales_payment_summary.py:27
#: accounts/report/sales_payment_summary/sales_payment_summary.py:43
+#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
+#: accounts/workspace/receivables/receivables.json
#: buying/doctype/supplier/supplier_dashboard.py:15
#: selling/doctype/customer/customer_dashboard.py:22
msgid "Payments"
@@ -48514,7 +48577,7 @@
#: buying/report/purchase_order_analysis/purchase_order_analysis.py:218
#: manufacturing/doctype/work_order/work_order.js:244
#: manufacturing/report/production_plan_summary/production_plan_summary.py:155
-#: selling/doctype/sales_order/sales_order.js:997
+#: selling/doctype/sales_order/sales_order.js:991
#: selling/report/pending_so_items_for_purchase_request/pending_so_items_for_purchase_request.py:45
msgid "Pending Qty"
msgstr ""
@@ -48716,7 +48779,7 @@
msgid "Period Based On"
msgstr ""
-#: accounts/general_ledger.py:691
+#: accounts/general_ledger.py:690
msgid "Period Closed"
msgstr ""
@@ -48821,7 +48884,7 @@
#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:64
#: accounts/report/financial_ratios/financial_ratios.js:33
#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:55
-#: public/js/financial_statements.js:161
+#: public/js/financial_statements.js:214
msgid "Periodicity"
msgstr ""
@@ -48866,7 +48929,8 @@
msgid "Personal"
msgstr ""
-#. Option for the 'Prefered Contact Email' (Select) field in DocType 'Employee'
+#. Option for the 'Preferred Contact Email' (Select) field in DocType
+#. 'Employee'
#. Label of a Data field in DocType 'Employee'
#: setup/doctype/employee/employee.json
msgctxt "Employee"
@@ -48970,7 +49034,7 @@
msgstr ""
#. Name of a DocType
-#: selling/doctype/sales_order/sales_order.js:554
+#: selling/doctype/sales_order/sales_order.js:548
#: stock/doctype/material_request/material_request.js:113
#: stock/doctype/pick_list/pick_list.json
msgid "Pick List"
@@ -49347,7 +49411,7 @@
msgid "Please Select a Company."
msgstr ""
-#: stock/doctype/delivery_note/delivery_note.js:148
+#: stock/doctype/delivery_note/delivery_note.js:139
msgid "Please Select a Customer"
msgstr ""
@@ -49361,7 +49425,7 @@
msgid "Please Set Supplier Group in Buying Settings."
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:1060
+#: accounts/doctype/payment_entry/payment_entry.js:1071
msgid "Please Specify Account"
msgstr ""
@@ -49385,7 +49449,7 @@
msgid "Please add a Temporary Opening account in Chart of Accounts"
msgstr ""
-#: public/js/utils/serial_no_batch_selector.js:443
+#: public/js/utils/serial_no_batch_selector.js:535
msgid "Please add atleast one Serial No / Batch No"
msgstr ""
@@ -49405,7 +49469,7 @@
msgid "Please add {1} role to user {0}."
msgstr ""
-#: controllers/stock_controller.py:808
+#: controllers/stock_controller.py:909
msgid "Please adjust the qty or edit {0} to proceed."
msgstr ""
@@ -49413,11 +49477,11 @@
msgid "Please attach CSV file"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:2764
+#: accounts/doctype/sales_invoice/sales_invoice.py:2735
msgid "Please cancel and amend the Payment Entry"
msgstr ""
-#: accounts/utils.py:898
+#: accounts/utils.py:926
msgid "Please cancel payment entry manually first"
msgstr ""
@@ -49426,11 +49490,11 @@
msgid "Please cancel related transaction."
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:884
+#: accounts/doctype/journal_entry/journal_entry.py:836
msgid "Please check Multi Currency option to allow accounts with other currency"
msgstr ""
-#: accounts/deferred_revenue.py:578
+#: accounts/deferred_revenue.py:570
msgid "Please check Process Deferred Accounting {0} and submit manually after resolving errors."
msgstr ""
@@ -49450,7 +49514,7 @@
msgid "Please check your email to confirm the appointment"
msgstr ""
-#: public/js/controllers/transaction.js:916
+#: public/js/controllers/transaction.js:917
msgid "Please clear the"
msgstr ""
@@ -49466,7 +49530,7 @@
msgid "Please click on 'Generate Schedule' to get schedule"
msgstr ""
-#: selling/doctype/customer/customer.py:537
+#: selling/doctype/customer/customer.py:538
msgid "Please contact any of the following users to extend the credit limits for {0}: {1}"
msgstr ""
@@ -49474,7 +49538,7 @@
msgid "Please contact any of the following users to {} this transaction."
msgstr ""
-#: selling/doctype/customer/customer.py:530
+#: selling/doctype/customer/customer.py:531
msgid "Please contact your administrator to extend the credit limits for {0}."
msgstr ""
@@ -49482,7 +49546,7 @@
msgid "Please convert the parent account in corresponding child company to a group account."
msgstr ""
-#: selling/doctype/quotation/quotation.py:549
+#: selling/doctype/quotation/quotation.py:554
msgid "Please create Customer from Lead {0}."
msgstr ""
@@ -49494,11 +49558,11 @@
msgid "Please create a new Accounting Dimension if required."
msgstr ""
-#: controllers/accounts_controller.py:531
+#: controllers/accounts_controller.py:534
msgid "Please create purchase from internal sale or delivery document itself"
msgstr ""
-#: assets/doctype/asset/asset.py:326
+#: assets/doctype/asset/asset.py:327
msgid "Please create purchase receipt or purchase invoice for the item {0}"
msgstr ""
@@ -49506,11 +49570,11 @@
msgid "Please delete Product Bundle {0}, before merging {1} into {2}"
msgstr ""
-#: assets/doctype/asset/asset.py:365
+#: assets/doctype/asset/asset.py:366
msgid "Please do not book expense of multiple assets against one single Asset."
msgstr ""
-#: controllers/item_variant.py:230
+#: controllers/item_variant.py:234
msgid "Please do not create more than 500 items at a time"
msgstr ""
@@ -49523,7 +49587,7 @@
msgstr ""
#: buying/doctype/request_for_quotation/request_for_quotation.js:135
-#: public/js/utils/serial_no_batch_selector.js:217
+#: public/js/utils/serial_no_batch_selector.js:289
#: regional/report/electronic_invoice_register/electronic_invoice_register.js:49
msgid "Please enable pop-ups"
msgstr ""
@@ -49536,7 +49600,7 @@
msgid "Please enable {} in {} to allow same item in multiple rows"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:868
+#: accounts/doctype/sales_invoice/sales_invoice.py:871
msgid "Please ensure {} account is a Balance Sheet account."
msgstr ""
@@ -49548,7 +49612,7 @@
msgid "Please ensure {} account {} is a Payable account. Change the account type to Payable or select a different account."
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:877
+#: accounts/doctype/sales_invoice/sales_invoice.py:880
msgid "Please ensure {} account {} is a Receivable account."
msgstr ""
@@ -49556,8 +49620,8 @@
msgid "Please enter <b>Difference Account</b> or set default <b>Stock Adjustment Account</b> for company {0}"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:432
-#: accounts/doctype/sales_invoice/sales_invoice.py:1021
+#: accounts/doctype/pos_invoice/pos_invoice.py:430
+#: accounts/doctype/sales_invoice/sales_invoice.py:1024
msgid "Please enter Account for Change Amount"
msgstr ""
@@ -49565,11 +49629,11 @@
msgid "Please enter Approving Role or Approving User"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:696
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:697
msgid "Please enter Cost Center"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:319
+#: selling/doctype/sales_order/sales_order.py:322
msgid "Please enter Delivery Date"
msgstr ""
@@ -49577,7 +49641,7 @@
msgid "Please enter Employee Id of this sales person"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:707
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:708
msgid "Please enter Expense Account"
msgstr ""
@@ -49586,7 +49650,7 @@
msgid "Please enter Item Code to get Batch Number"
msgstr ""
-#: public/js/controllers/transaction.js:2206
+#: public/js/controllers/transaction.js:2236
msgid "Please enter Item Code to get batch no"
msgstr ""
@@ -49595,7 +49659,7 @@
msgstr ""
#: maintenance/doctype/maintenance_schedule/maintenance_schedule.py:225
-msgid "Please enter Maintaince Details first"
+msgid "Please enter Maintenance Details first"
msgstr ""
#: manufacturing/doctype/production_plan/production_plan.py:177
@@ -49618,7 +49682,7 @@
msgid "Please enter Receipt Document"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:949
+#: accounts/doctype/journal_entry/journal_entry.py:901
msgid "Please enter Reference date"
msgstr ""
@@ -49630,6 +49694,10 @@
msgid "Please enter Root Type for account- {0}"
msgstr ""
+#: public/js/utils/serial_no_batch_selector.js:258
+msgid "Please enter Serial Nos"
+msgstr ""
+
#: stock/doctype/shipment/shipment.py:83
msgid "Please enter Shipment Parcel information"
msgstr ""
@@ -49647,7 +49715,7 @@
msgstr ""
#: accounts/doctype/purchase_invoice/purchase_invoice.py:609
-#: accounts/doctype/sales_invoice/sales_invoice.py:1017
+#: accounts/doctype/sales_invoice/sales_invoice.py:1020
msgid "Please enter Write Off Account"
msgstr ""
@@ -49659,7 +49727,7 @@
msgid "Please enter company name first"
msgstr ""
-#: controllers/accounts_controller.py:2309
+#: controllers/accounts_controller.py:2378
msgid "Please enter default currency in Company Master"
msgstr ""
@@ -49675,7 +49743,7 @@
msgid "Please enter parent cost center"
msgstr ""
-#: public/js/utils/barcode_scanner.js:145
+#: public/js/utils/barcode_scanner.js:160
msgid "Please enter quantity for item {0}"
msgstr ""
@@ -49687,11 +49755,11 @@
msgid "Please enter serial nos"
msgstr ""
-#: setup/doctype/company/company.js:147
+#: setup/doctype/company/company.js:155
msgid "Please enter the company name to confirm"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:659
+#: accounts/doctype/pos_invoice/pos_invoice.py:652
msgid "Please enter the phone number first"
msgstr ""
@@ -49739,7 +49807,7 @@
msgid "Please make sure the file you are using has 'Parent Account' column present in the header."
msgstr ""
-#: setup/doctype/company/company.js:149
+#: setup/doctype/company/company.js:157
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 ""
@@ -49747,11 +49815,11 @@
msgid "Please mention 'Weight UOM' along with Weight."
msgstr ""
-#: accounts/general_ledger.py:556
+#: accounts/general_ledger.py:555
msgid "Please mention Round Off Account in Company"
msgstr ""
-#: accounts/general_ledger.py:559
+#: accounts/general_ledger.py:558
msgid "Please mention Round Off Cost Center in Company"
msgstr ""
@@ -49788,12 +49856,12 @@
msgid "Please select <b>Template Type</b> to download template"
msgstr ""
-#: controllers/taxes_and_totals.py:641
-#: public/js/controllers/taxes_and_totals.js:675
+#: controllers/taxes_and_totals.py:651
+#: public/js/controllers/taxes_and_totals.js:688
msgid "Please select Apply Discount On"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:1455
+#: selling/doctype/sales_order/sales_order.py:1469
msgid "Please select BOM against item {0}"
msgstr ""
@@ -49809,12 +49877,12 @@
msgid "Please select Category first"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:1184
+#: accounts/doctype/payment_entry/payment_entry.js:1195
#: public/js/controllers/accounts.js:86 public/js/controllers/accounts.js:124
msgid "Please select Charge Type first"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.js:411
+#: accounts/doctype/journal_entry/journal_entry.js:401
msgid "Please select Company"
msgstr ""
@@ -49823,7 +49891,7 @@
msgid "Please select Company and Posting Date to getting entries"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.js:631
+#: accounts/doctype/journal_entry/journal_entry.js:606
msgid "Please select Company first"
msgstr ""
@@ -49836,7 +49904,7 @@
msgid "Please select Customer first"
msgstr ""
-#: setup/doctype/company/company.py:406
+#: setup/doctype/company/company.py:407
msgid "Please select Existing Company for creating Chart of Accounts"
msgstr ""
@@ -49864,15 +49932,15 @@
msgid "Please select Posting Date before selecting Party"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.js:632
+#: accounts/doctype/journal_entry/journal_entry.js:607
msgid "Please select Posting Date first"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:1002
+#: manufacturing/doctype/bom/bom.py:1004
msgid "Please select Price List"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:1457
+#: selling/doctype/sales_order/sales_order.py:1471
msgid "Please select Qty against item {0}"
msgstr ""
@@ -49892,11 +49960,11 @@
msgid "Please select Subcontracting Order instead of Purchase Order {0}"
msgstr ""
-#: controllers/accounts_controller.py:2219
+#: controllers/accounts_controller.py:2288
msgid "Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0}"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:1227
+#: manufacturing/doctype/bom/bom.py:1229
msgid "Please select a BOM"
msgstr ""
@@ -49905,9 +49973,9 @@
msgstr ""
#: accounts/doctype/payment_entry/payment_entry.js:168
-#: manufacturing/doctype/bom/bom.js:482 manufacturing/doctype/bom/bom.py:243
-#: public/js/controllers/accounts.js:248
-#: public/js/controllers/transaction.js:2454
+#: manufacturing/doctype/bom/bom.js:482 manufacturing/doctype/bom/bom.py:245
+#: public/js/controllers/accounts.js:249
+#: public/js/controllers/transaction.js:2484
msgid "Please select a Company first."
msgstr ""
@@ -49975,7 +50043,7 @@
msgid "Please select a value for {0} quotation_to {1}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:1684
+#: accounts/doctype/journal_entry/journal_entry.py:1570
msgid "Please select correct account"
msgstr ""
@@ -50036,8 +50104,8 @@
msgid "Please select {0}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:980
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:547
+#: accounts/doctype/payment_entry/payment_entry.js:991
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:575
#: accounts/doctype/tax_withholding_category/tax_withholding_category.py:81
msgid "Please select {0} first"
msgstr ""
@@ -50046,11 +50114,11 @@
msgid "Please set 'Apply Additional Discount On'"
msgstr ""
-#: assets/doctype/asset/depreciation.py:788
+#: assets/doctype/asset/depreciation.py:790
msgid "Please set 'Asset Depreciation Cost Center' in Company {0}"
msgstr ""
-#: assets/doctype/asset/depreciation.py:785
+#: assets/doctype/asset/depreciation.py:787
msgid "Please set 'Gain/Loss Account on Asset Disposal' in Company {0}"
msgstr ""
@@ -50102,7 +50170,7 @@
msgid "Please set Fixed Asset Account in {} against {}."
msgstr ""
-#: assets/doctype/asset/asset.py:434
+#: assets/doctype/asset/asset.py:435
msgid "Please set Number of Depreciations Booked"
msgstr ""
@@ -50132,11 +50200,11 @@
msgid "Please set a Company"
msgstr ""
-#: assets/doctype/asset/asset.py:261
+#: assets/doctype/asset/asset.py:262
msgid "Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {}"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:1246
+#: selling/doctype/sales_order/sales_order.py:1260
msgid "Please set a Supplier against the Items to be considered in the Purchase Order."
msgstr ""
@@ -50148,7 +50216,7 @@
msgid "Please set a default Holiday List for Employee {0} or Company {1}"
msgstr ""
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1003
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:991
msgid "Please set account in Warehouse {0}"
msgstr ""
@@ -50157,7 +50225,7 @@
msgid "Please set an Address on the Company '%s'"
msgstr ""
-#: controllers/stock_controller.py:342
+#: controllers/stock_controller.py:334
msgid "Please set an Expense Account in the Items table"
msgstr ""
@@ -50169,27 +50237,27 @@
msgid "Please set at least one row in the Taxes and Charges Table"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:2064
+#: accounts/doctype/sales_invoice/sales_invoice.py:2041
msgid "Please set default Cash or Bank account in Mode of Payment {0}"
msgstr ""
#: accounts/doctype/pos_opening_entry/pos_opening_entry.py:66
#: accounts/doctype/pos_profile/pos_profile.py:163
-#: accounts/doctype/sales_invoice/sales_invoice.py:2628
+#: accounts/doctype/sales_invoice/sales_invoice.py:2599
msgid "Please set default Cash or Bank account in Mode of Payment {}"
msgstr ""
#: accounts/doctype/pos_opening_entry/pos_opening_entry.py:68
#: accounts/doctype/pos_profile/pos_profile.py:165
-#: accounts/doctype/sales_invoice/sales_invoice.py:2630
+#: accounts/doctype/sales_invoice/sales_invoice.py:2601
msgid "Please set default Cash or Bank account in Mode of Payments {}"
msgstr ""
-#: accounts/utils.py:2057
+#: accounts/utils.py:2086
msgid "Please set default Exchange Gain/Loss Account in Company {}"
msgstr ""
-#: assets/doctype/asset_repair/asset_repair.py:335
+#: assets/doctype/asset_repair/asset_repair.py:331
msgid "Please set default Expense Account in Company {0}"
msgstr ""
@@ -50197,11 +50265,11 @@
msgid "Please set default UOM in Stock Settings"
msgstr ""
-#: controllers/stock_controller.py:208
+#: controllers/stock_controller.py:204
msgid "Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer"
msgstr ""
-#: accounts/utils.py:918
+#: accounts/utils.py:946
msgid "Please set default {0} in Company {1}"
msgstr ""
@@ -50218,11 +50286,11 @@
msgid "Please set filters"
msgstr ""
-#: controllers/accounts_controller.py:1827
+#: controllers/accounts_controller.py:1896
msgid "Please set one of the following:"
msgstr ""
-#: public/js/controllers/transaction.js:1937
+#: public/js/controllers/transaction.js:1967
msgid "Please set recurring after saving"
msgstr ""
@@ -50275,7 +50343,7 @@
msgid "Please share this email with your support team so that they can find and fix the issue."
msgstr ""
-#: public/js/controllers/transaction.js:1807
+#: public/js/controllers/transaction.js:1837
msgid "Please specify"
msgstr ""
@@ -50289,8 +50357,8 @@
msgid "Please specify Company to proceed"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:1195
-#: controllers/accounts_controller.py:2442 public/js/controllers/accounts.js:97
+#: accounts/doctype/payment_entry/payment_entry.js:1206
+#: controllers/accounts_controller.py:2511 public/js/controllers/accounts.js:97
msgid "Please specify a valid Row ID for row {0} in table {1}"
msgstr ""
@@ -50302,7 +50370,7 @@
msgid "Please specify at least one attribute in the Attributes table"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:371
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:372
msgid "Please specify either Quantity or Valuation Rate or both"
msgstr ""
@@ -50439,7 +50507,7 @@
msgstr ""
#: accounts/doctype/payment_entry/payment_entry.js:644
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:258
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:279
#: accounts/doctype/period_closing_voucher/period_closing_voucher.py:109
#: accounts/report/accounts_payable/accounts_payable.js:16
#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:15
@@ -50448,10 +50516,10 @@
#: accounts/report/bank_clearance_summary/bank_clearance_summary.py:35
#: accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:64
#: accounts/report/billed_items_to_be_received/billed_items_to_be_received.py:67
-#: accounts/report/general_ledger/general_ledger.py:560
+#: accounts/report/general_ledger/general_ledger.py:563
#: accounts/report/gross_profit/gross_profit.py:212
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:183
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:193
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:200
#: accounts/report/payment_ledger/payment_ledger.py:136
#: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:97
#: accounts/report/pos_register/pos_register.py:177
@@ -50759,7 +50827,7 @@
msgid "Posting Time"
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:1645
+#: stock/doctype/stock_entry/stock_entry.py:1641
msgid "Posting date and posting time is mandatory"
msgstr ""
@@ -50775,20 +50843,20 @@
msgid "Pre Sales"
msgstr ""
+#: setup/setup_wizard/operations/install_fixtures.py:260
+msgid "Preference"
+msgstr ""
+
#. Label of a Select field in DocType 'Employee'
#: setup/doctype/employee/employee.json
msgctxt "Employee"
-msgid "Prefered Contact Email"
+msgid "Preferred Contact Email"
msgstr ""
#. Label of a Data field in DocType 'Employee'
#: setup/doctype/employee/employee.json
msgctxt "Employee"
-msgid "Prefered Email"
-msgstr ""
-
-#: setup/setup_wizard/operations/install_fixtures.py:260
-msgid "Preference"
+msgid "Preferred Email"
msgstr ""
#. Label of a Data field in DocType 'Packed Item'
@@ -51325,7 +51393,7 @@
msgid "Price is not set for the item."
msgstr ""
-#: manufacturing/doctype/bom/bom.py:458
+#: manufacturing/doctype/bom/bom.py:460
msgid "Price not found for item {0} in price list {1}"
msgstr ""
@@ -52206,7 +52274,7 @@
msgid "Process Loss"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:985
+#: manufacturing/doctype/bom/bom.py:987
msgid "Process Loss Percentage cannot be greater than 100"
msgstr ""
@@ -52512,7 +52580,7 @@
#. Label of a Card Break in the Manufacturing Workspace
#: manufacturing/workspace/manufacturing/manufacturing.json
-#: setup/doctype/company/company.py:346
+#: setup/doctype/company/company.py:347
msgid "Production"
msgstr ""
@@ -52684,7 +52752,6 @@
msgstr ""
#: setup/setup_wizard/operations/install_fixtures.py:39
-#: templates/pages/home.html:31
msgid "Products"
msgstr ""
@@ -52721,7 +52788,7 @@
#. Label of a chart in the Accounting Workspace
#: accounts/workspace/accounting/accounting.json
-#: public/js/financial_statements.js:84
+#: public/js/financial_statements.js:136
msgid "Profit and Loss"
msgstr ""
@@ -52732,9 +52799,9 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
msgid "Profit and Loss Statement"
msgstr ""
@@ -52755,15 +52822,15 @@
msgid "Profit for the year"
msgstr ""
-#. Label of a Card Break in the Accounting Workspace
-#: accounts/workspace/accounting/accounting.json
+#. Label of a Card Break in the Financial Reports Workspace
+#: accounts/workspace/financial_reports/financial_reports.json
msgid "Profitability"
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#: accounts/report/profitability_analysis/profitability_analysis.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
msgid "Profitability Analysis"
msgstr ""
@@ -52790,10 +52857,10 @@
#: accounts/doctype/sales_invoice/sales_invoice.js:973
#: accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:73
#: accounts/report/general_ledger/general_ledger.js:162
-#: accounts/report/general_ledger/general_ledger.py:631
+#: accounts/report/general_ledger/general_ledger.py:634
#: accounts/report/gross_profit/gross_profit.py:300
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:220
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:258
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:265
#: accounts/report/purchase_register/purchase_register.py:207
#: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:73
#: accounts/report/sales_register/sales_register.py:228
@@ -52812,9 +52879,9 @@
#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:19
#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:51
#: projects/report/timesheet_billing_summary/timesheet_billing_summary.py:25
-#: public/js/financial_statements.js:194 public/js/projects/timer.js:10
+#: public/js/financial_statements.js:247 public/js/projects/timer.js:10
#: public/js/purchase_trends_filters.js:52 public/js/sales_trends_filters.js:28
-#: selling/doctype/sales_order/sales_order.js:593
+#: selling/doctype/sales_order/sales_order.js:587
#: selling/report/item_wise_sales_history/item_wise_sales_history.py:94
#: stock/report/reserved_stock/reserved_stock.js:139
#: stock/report/reserved_stock/reserved_stock.py:184
@@ -53528,10 +53595,6 @@
msgid "Provisional Profit / Loss (Credit)"
msgstr ""
-#: templates/pages/home.html:51
-msgid "Publications"
-msgstr ""
-
#. Label of a Date field in DocType 'Video'
#: utilities/doctype/video/video.json
msgctxt "Video"
@@ -53548,7 +53611,7 @@
#: accounts/doctype/shipping_rule/shipping_rule_dashboard.py:11
#: accounts/doctype/tax_category/tax_category_dashboard.py:10
#: projects/doctype/project/project_dashboard.py:16
-#: setup/doctype/company/company.py:334
+#: setup/doctype/company/company.py:335
msgid "Purchase"
msgstr ""
@@ -53644,11 +53707,11 @@
#: accounts/report/billed_items_to_be_received/billed_items_to_be_received.js:23
#: accounts/report/billed_items_to_be_received/billed_items_to_be_received.py:54
#: buying/doctype/purchase_order/purchase_order.js:323
-#: buying/doctype/purchase_order/purchase_order_list.js:37
+#: buying/doctype/purchase_order/purchase_order_list.js:39
#: buying/doctype/supplier_quotation/supplier_quotation_list.js:18
#: stock/doctype/purchase_receipt/purchase_receipt.js:110
#: stock/doctype/purchase_receipt/purchase_receipt.js:230
-#: stock/doctype/purchase_receipt/purchase_receipt_list.js:20
+#: stock/doctype/purchase_receipt/purchase_receipt_list.js:22
#: stock/doctype/stock_entry/stock_entry.js:262
msgid "Purchase Invoice"
msgstr ""
@@ -53711,10 +53774,12 @@
msgid "Purchase Invoice"
msgstr ""
-#. Label of a Link in the Accounting Workspace
#. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
+#. Label of a shortcut in the Payables Workspace
#. Label of a Link in the Buying Workspace
#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
#: buying/workspace/buying/buying.json
msgctxt "Purchase Invoice"
msgid "Purchase Invoice"
@@ -53762,15 +53827,15 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#. Label of a Link in the Buying Workspace
#: accounts/report/purchase_invoice_trends/purchase_invoice_trends.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
#: buying/workspace/buying/buying.json
msgid "Purchase Invoice Trends"
msgstr ""
-#: assets/doctype/asset/asset.py:212
+#: assets/doctype/asset/asset.py:213
msgid "Purchase Invoice cannot be made against an existing asset {0}"
msgstr ""
@@ -53779,7 +53844,7 @@
msgid "Purchase Invoice {0} is already submitted"
msgstr ""
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1811
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1769
msgid "Purchase Invoices"
msgstr ""
@@ -53794,7 +53859,7 @@
#: crm/doctype/contract/contract.json
#: crm/doctype/contract_template/contract_template.json
#: setup/doctype/incoterm/incoterm.json
-#: setup/doctype/supplier_group/supplier_group.json
+#: setup/doctype/supplier_group/supplier_group.json stock/doctype/bin/bin.json
#: stock/doctype/material_request/material_request.json
#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json
#: subcontracting/doctype/subcontracting_order/subcontracting_order.json
@@ -53822,8 +53887,8 @@
#: buying/report/purchase_order_analysis/purchase_order_analysis.py:167
#: controllers/buying_controller.py:624
#: manufacturing/doctype/blanket_order/blanket_order.js:45
-#: selling/doctype/sales_order/sales_order.js:109
-#: selling/doctype/sales_order/sales_order.js:582
+#: selling/doctype/sales_order/sales_order.js:112
+#: selling/doctype/sales_order/sales_order.js:576
#: stock/doctype/material_request/material_request.js:137
#: stock/doctype/purchase_receipt/purchase_receipt.js:194
msgid "Purchase Order"
@@ -53923,12 +53988,12 @@
msgid "Purchase Order Amount(Company Currency)"
msgstr ""
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
#. Name of a report
#. Label of a Link in the Buying Workspace
#. Label of a shortcut in the Buying Workspace
#. Label of a Link in the Stock Workspace
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
#: buying/report/purchase_order_analysis/purchase_order_analysis.json
#: buying/workspace/buying/buying.json stock/workspace/stock/stock.json
msgid "Purchase Order Analysis"
@@ -54026,7 +54091,7 @@
msgid "Purchase Order Trends"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:963
+#: selling/doctype/sales_order/sales_order.js:957
msgid "Purchase Order already created for all Sales Order items"
msgstr ""
@@ -54038,7 +54103,7 @@
msgid "Purchase Order {0} is not submitted"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:820
+#: buying/doctype/purchase_order/purchase_order.py:824
msgid "Purchase Orders"
msgstr ""
@@ -54048,7 +54113,7 @@
msgid "Purchase Orders Items Overdue"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:297
+#: buying/doctype/purchase_order/purchase_order.py:301
msgid "Purchase Orders are not allowed for {0} due to a scorecard standing of {1}."
msgstr ""
@@ -54064,7 +54129,7 @@
msgid "Purchase Orders to Receive"
msgstr ""
-#: controllers/accounts_controller.py:1476
+#: controllers/accounts_controller.py:1517
msgid "Purchase Orders {0} are un-linked"
msgstr ""
@@ -54081,7 +54146,7 @@
#: accounts/report/purchase_register/purchase_register.py:223
#: accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:20
#: buying/doctype/purchase_order/purchase_order.js:310
-#: buying/doctype/purchase_order/purchase_order_list.js:41
+#: buying/doctype/purchase_order/purchase_order_list.js:43
#: stock/doctype/purchase_receipt/purchase_receipt.json
#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:56
msgid "Purchase Receipt"
@@ -54236,9 +54301,9 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
#: accounts/report/purchase_register/purchase_register.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
msgid "Purchase Register"
msgstr ""
@@ -54513,14 +54578,14 @@
#: public/js/bom_configurator/bom_configurator.bundle.js:266
#: public/js/bom_configurator/bom_configurator.bundle.js:271
#: public/js/bom_configurator/bom_configurator.bundle.js:344
-#: public/js/utils.js:660 selling/doctype/sales_order/sales_order.js:321
-#: selling/doctype/sales_order/sales_order.js:416
-#: selling/doctype/sales_order/sales_order.js:704
-#: selling/doctype/sales_order/sales_order.js:821
+#: public/js/utils.js:660 selling/doctype/sales_order/sales_order.js:315
+#: selling/doctype/sales_order/sales_order.js:410
+#: selling/doctype/sales_order/sales_order.js:698
+#: selling/doctype/sales_order/sales_order.js:815
#: selling/report/sales_order_analysis/sales_order_analysis.py:255
#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:106
#: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:166
-#: stock/report/serial_no_ledger/serial_no_ledger.py:71
+#: stock/report/serial_no_ledger/serial_no_ledger.py:70
#: templates/generators/bom.html:50 templates/pages/rfq.html:40
msgid "Qty"
msgstr ""
@@ -54868,7 +54933,7 @@
msgid "Qty to Deliver"
msgstr ""
-#: public/js/utils/serial_no_batch_selector.js:249
+#: public/js/utils/serial_no_batch_selector.js:321
msgid "Qty to Fetch"
msgstr ""
@@ -55218,7 +55283,7 @@
msgid "Quality Inspection(s)"
msgstr ""
-#: setup/doctype/company/company.py:376
+#: setup/doctype/company/company.py:377
msgid "Quality Management"
msgstr ""
@@ -55322,7 +55387,7 @@
#: manufacturing/doctype/bom/bom.js:306
#: manufacturing/doctype/bom_creator/bom_creator.js:69
#: public/js/controllers/buying.js:518 public/js/stock_analytics.js:37
-#: public/js/utils/serial_no_batch_selector.js:321
+#: public/js/utils/serial_no_batch_selector.js:393
#: selling/report/item_wise_sales_history/item_wise_sales_history.py:42
#: selling/report/sales_analytics/sales_analytics.js:29
#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:67
@@ -55591,11 +55656,11 @@
msgid "Quantity of item obtained after manufacturing / repacking from given quantities of raw materials"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:621
+#: manufacturing/doctype/bom/bom.py:623
msgid "Quantity required for Item {0} in row {1}"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:566
+#: manufacturing/doctype/bom/bom.py:568
msgid "Quantity should be greater than 0"
msgstr ""
@@ -55623,7 +55688,7 @@
msgid "Quantity to Produce should be greater than zero."
msgstr ""
-#: public/js/utils/barcode_scanner.js:212
+#: public/js/utils/barcode_scanner.js:227
msgid "Quantity to Scan"
msgstr ""
@@ -55637,7 +55702,7 @@
#: buying/report/purchase_analytics/purchase_analytics.js:63
#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:59
#: manufacturing/report/production_analytics/production_analytics.js:36
-#: public/js/financial_statements.js:165
+#: public/js/financial_statements.js:218
#: public/js/purchase_trends_filters.js:20 public/js/sales_trends_filters.js:12
#: public/js/stock_analytics.js:54
#: selling/report/sales_analytics/sales_analytics.js:63
@@ -55737,7 +55802,7 @@
msgid "Quick Entry"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.js:537
+#: accounts/doctype/journal_entry/journal_entry.js:527
msgid "Quick Journal Entry"
msgstr ""
@@ -55780,7 +55845,7 @@
#: crm/report/lead_details/lead_details.js:38
#: manufacturing/doctype/blanket_order/blanket_order.js:33
#: selling/doctype/quotation/quotation.json
-#: selling/doctype/sales_order/sales_order.js:619
+#: selling/doctype/sales_order/sales_order.js:613
msgid "Quotation"
msgstr ""
@@ -55888,15 +55953,15 @@
msgid "Quotation Trends"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:380
+#: selling/doctype/sales_order/sales_order.py:383
msgid "Quotation {0} is cancelled"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:297
+#: selling/doctype/sales_order/sales_order.py:300
msgid "Quotation {0} not of type {1}"
msgstr ""
-#: selling/doctype/quotation/quotation.py:325
+#: selling/doctype/quotation/quotation.py:326
#: selling/page/sales_funnel/sales_funnel.py:57
msgid "Quotations"
msgstr ""
@@ -55973,7 +56038,7 @@
#: accounts/doctype/pos_closing_entry/closing_voucher_details.html:66
#: accounts/report/billed_items_to_be_received/billed_items_to_be_received.py:79
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:263
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:308
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:315
#: accounts/report/share_ledger/share_ledger.py:56 public/js/utils.js:669
#: selling/report/item_wise_sales_history/item_wise_sales_history.py:45
#: selling/report/sales_partner_transaction_summary/sales_partner_transaction_summary.py:68
@@ -56136,12 +56201,6 @@
msgid "Rate"
msgstr ""
-#. Label of a Float field in DocType 'Purchase Taxes and Charges'
-#: accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.json
-msgctxt "Purchase Taxes and Charges"
-msgid "Rate"
-msgstr ""
-
#. Label of a Currency field in DocType 'Quotation Item'
#: selling/doctype/quotation_item/quotation_item.json
msgctxt "Quotation Item"
@@ -56160,12 +56219,6 @@
msgid "Rate"
msgstr ""
-#. Label of a Float field in DocType 'Sales Taxes and Charges'
-#: accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.json
-msgctxt "Sales Taxes and Charges"
-msgid "Rate"
-msgstr ""
-
#. Label of a Int field in DocType 'Share Balance'
#: accounts/doctype/share_balance/share_balance.json
msgctxt "Share Balance"
@@ -56757,15 +56810,15 @@
msgid "Raw Materials Warehouse"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:614
+#: manufacturing/doctype/bom/bom.py:616
msgid "Raw Materials cannot be blank."
msgstr ""
#: buying/doctype/purchase_order/purchase_order.js:304
#: manufacturing/doctype/production_plan/production_plan.js:97
#: manufacturing/doctype/work_order/work_order.js:574
-#: selling/doctype/sales_order/sales_order.js:532
-#: selling/doctype/sales_order/sales_order_list.js:47
+#: selling/doctype/sales_order/sales_order.js:526
+#: selling/doctype/sales_order/sales_order_list.js:49
#: stock/doctype/material_request/material_request.js:166
#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:106
msgid "Re-open"
@@ -56793,10 +56846,6 @@
msgid "Read Only"
msgstr ""
-#: templates/pages/home.html:63
-msgid "Read blog"
-msgstr ""
-
#. Label of a Data field in DocType 'Quality Inspection Reading'
#: stock/doctype/quality_inspection_reading/quality_inspection_reading.json
msgctxt "Quality Inspection Reading"
@@ -56889,7 +56938,7 @@
msgstr ""
#: buying/doctype/purchase_order/purchase_order.js:565
-#: selling/doctype/sales_order/sales_order.js:1118
+#: selling/doctype/sales_order/sales_order.js:1112
msgid "Reason for Hold"
msgstr ""
@@ -56899,11 +56948,11 @@
msgid "Reason for Leaving"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:1133
+#: selling/doctype/sales_order/sales_order.js:1127
msgid "Reason for hold:"
msgstr ""
-#: manufacturing/doctype/bom_creator/bom_creator.js:133
+#: manufacturing/doctype/bom_creator/bom_creator.js:144
msgid "Rebuild Tree"
msgstr ""
@@ -56997,7 +57046,7 @@
msgstr ""
#: accounts/report/accounts_receivable/accounts_receivable.js:67
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:229
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:236
#: accounts/report/sales_register/sales_register.py:215
#: accounts/report/sales_register/sales_register.py:269
msgid "Receivable Account"
@@ -57013,6 +57062,11 @@
msgid "Receivable/Payable Account: {0} doesn't belong to company {1}"
msgstr ""
+#. Name of a Workspace
+#: accounts/workspace/receivables/receivables.json
+msgid "Receivables"
+msgstr ""
+
#. Label of a Check field in DocType 'Email Digest'
#: setup/doctype/email_digest/email_digest.json
msgctxt "Email Digest"
@@ -57069,7 +57123,7 @@
msgid "Received Amount After Tax (Company Currency)"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:874
+#: accounts/doctype/payment_entry/payment_entry.py:891
msgid "Received Amount cannot be greater than Paid Amount"
msgstr ""
@@ -57078,9 +57132,9 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
#: accounts/report/received_items_to_be_billed/received_items_to_be_billed.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
msgid "Received Items To Be Billed"
msgstr ""
@@ -57232,7 +57286,7 @@
msgid "Reconcile"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:304
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:325
msgid "Reconcile Entries"
msgstr ""
@@ -57303,7 +57357,7 @@
msgid "Records"
msgstr ""
-#: regional/united_arab_emirates/utils.py:178
+#: regional/united_arab_emirates/utils.py:176
msgid "Recoverable Standard Rated expenses should not be set when Reverse Charge Applicable is Y"
msgstr ""
@@ -57428,7 +57482,7 @@
#: manufacturing/doctype/job_card/job_card_dashboard.py:10
#: manufacturing/doctype/work_order/work_order_dashboard.py:10
#: selling/doctype/sales_order/sales_order_dashboard.py:27
-#: stock/doctype/delivery_note/delivery_note_dashboard.py:22
+#: stock/doctype/delivery_note/delivery_note_dashboard.py:23
#: stock/doctype/material_request/material_request_dashboard.py:14
#: stock/doctype/purchase_receipt/purchase_receipt_dashboard.py:27
#: subcontracting/doctype/subcontracting_order/subcontracting_order_dashboard.py:7
@@ -57576,7 +57630,7 @@
msgid "Reference"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:947
+#: accounts/doctype/journal_entry/journal_entry.py:899
msgid "Reference #{0} dated {1}"
msgstr ""
@@ -57590,7 +57644,7 @@
msgid "Reference Date"
msgstr ""
-#: public/js/controllers/transaction.js:2043
+#: public/js/controllers/transaction.js:2073
msgid "Reference Date for Early Payment Discount"
msgstr ""
@@ -57612,7 +57666,7 @@
msgid "Reference Doctype"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:553
+#: accounts/doctype/payment_entry/payment_entry.py:555
msgid "Reference Doctype must be one of {0}"
msgstr ""
@@ -57781,19 +57835,19 @@
msgid "Reference Name"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:516
+#: accounts/doctype/journal_entry/journal_entry.py:532
msgid "Reference No & Reference Date is required for {0}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1067
+#: accounts/doctype/payment_entry/payment_entry.py:1087
msgid "Reference No and Reference Date is mandatory for Bank transaction"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:521
+#: accounts/doctype/journal_entry/journal_entry.py:537
msgid "Reference No is mandatory if you entered Reference Date"
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:255
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:260
msgid "Reference No."
msgstr ""
@@ -57974,7 +58028,7 @@
msgid "References"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:629
+#: accounts/doctype/payment_entry/payment_entry.py:631
msgid "References {0} of type {1} had no outstanding amount left before submitting the Payment Entry. Now they have a negative outstanding amount."
msgstr ""
@@ -58010,7 +58064,7 @@
msgid "Refresh Token"
msgstr ""
-#: stock/reorder_item.py:264
+#: stock/reorder_item.py:303
msgid "Regards,"
msgstr ""
@@ -58141,7 +58195,7 @@
#: buying/doctype/purchase_order/purchase_order_dashboard.py:19
#: buying/doctype/supplier_quotation/supplier_quotation_dashboard.py:14
-#: stock/doctype/delivery_note/delivery_note_dashboard.py:21
+#: stock/doctype/delivery_note/delivery_note_dashboard.py:22
#: stock/doctype/purchase_receipt/purchase_receipt_dashboard.py:23
msgid "Related"
msgstr ""
@@ -58184,7 +58238,7 @@
msgstr ""
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:186
-#: accounts/report/accounts_receivable/accounts_receivable.py:1062
+#: accounts/report/accounts_receivable/accounts_receivable.py:1085
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:181
msgid "Remaining Balance"
msgstr ""
@@ -58212,8 +58266,8 @@
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:240
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:311
#: accounts/print_format/payment_receipt_voucher/payment_receipt_voucher.html:11
-#: accounts/report/accounts_receivable/accounts_receivable.py:1094
-#: accounts/report/general_ledger/general_ledger.py:658
+#: accounts/report/accounts_receivable/accounts_receivable.py:1117
+#: accounts/report/general_ledger/general_ledger.py:661
#: accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:116
#: accounts/report/purchase_register/purchase_register.py:296
#: accounts/report/sales_register/sales_register.py:333
@@ -58336,7 +58390,7 @@
msgid "Remarks Column Length"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:322
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:323
msgid "Removed items with no change in quantity or value."
msgstr ""
@@ -58389,9 +58443,9 @@
msgid "Rented"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order_list.js:32
+#: buying/doctype/purchase_order/purchase_order_list.js:34
#: crm/doctype/opportunity/opportunity.js:113
-#: stock/doctype/delivery_note/delivery_note.js:237
+#: stock/doctype/delivery_note/delivery_note.js:228
#: stock/doctype/purchase_receipt/purchase_receipt.js:240
#: support/doctype/issue/issue.js:30
msgid "Reopen"
@@ -58549,14 +58603,21 @@
msgid "Report Type is mandatory"
msgstr ""
-#. Label of a Card Break in the Accounting Workspace
+#: accounts/report/balance_sheet/balance_sheet.js:17
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:17
+msgid "Report View"
+msgstr ""
+
+#. Label of a Card Break in the Payables Workspace
+#. Label of a Card Break in the Receivables Workspace
#. Label of a Card Break in the Assets Workspace
#. Label of a Card Break in the CRM Workspace
#. Label of a Card Break in the Manufacturing Workspace
#. Label of a Card Break in the Projects Workspace
#. Label of a Card Break in the Support Workspace
#: accounts/doctype/cost_center/cost_center_dashboard.py:7
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
+#: accounts/workspace/receivables/receivables.json
#: assets/workspace/assets/assets.json config/projects.py:73
#: crm/workspace/crm/crm.json
#: manufacturing/workspace/manufacturing/manufacturing.json
@@ -58825,7 +58886,7 @@
msgid "Request for Quotation Supplier"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:577
+#: selling/doctype/sales_order/sales_order.js:571
msgid "Request for Raw Materials"
msgstr ""
@@ -58839,6 +58900,13 @@
msgid "Requested"
msgstr ""
+#. Option for the 'Advance Payment Status' (Select) field in DocType 'Sales
+#. Order'
+#: selling/doctype/sales_order/sales_order.json
+msgctxt "Sales Order"
+msgid "Requested"
+msgstr ""
+
#. Name of a report
#. Label of a Link in the Stock Workspace
#: stock/report/requested_items_to_be_transferred/requested_items_to_be_transferred.json
@@ -59038,7 +59106,7 @@
msgid "Research"
msgstr ""
-#: setup/doctype/company/company.py:382
+#: setup/doctype/company/company.py:383
msgid "Research & Development"
msgstr ""
@@ -59089,7 +59157,7 @@
msgid "Reserve"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:328
+#: selling/doctype/sales_order/sales_order.js:322
msgid "Reserve Stock"
msgstr ""
@@ -59180,16 +59248,16 @@
msgid "Reserved Quantity for Production"
msgstr ""
-#: stock/stock_ledger.py:1893
+#: stock/stock_ledger.py:1982
msgid "Reserved Serial No."
msgstr ""
#. Name of a report
#: selling/doctype/sales_order/sales_order.js:79
-#: selling/doctype/sales_order/sales_order.js:380
+#: selling/doctype/sales_order/sales_order.js:374
#: stock/doctype/pick_list/pick_list.js:120
#: stock/report/reserved_stock/reserved_stock.json
-#: stock/report/stock_balance/stock_balance.py:459 stock/stock_ledger.py:1873
+#: stock/report/stock_balance/stock_balance.py:459 stock/stock_ledger.py:1962
msgid "Reserved Stock"
msgstr ""
@@ -59199,7 +59267,7 @@
msgid "Reserved Stock"
msgstr ""
-#: stock/stock_ledger.py:1923
+#: stock/stock_ledger.py:2012
msgid "Reserved Stock for Batch"
msgstr ""
@@ -59231,7 +59299,7 @@
msgid "Reserved for sub contracting"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:341
+#: selling/doctype/sales_order/sales_order.js:335
#: stock/doctype/pick_list/pick_list.js:237
msgid "Reserving Stock..."
msgstr ""
@@ -59481,7 +59549,7 @@
msgstr ""
#: buying/doctype/purchase_order/purchase_order.js:290
-#: selling/doctype/sales_order/sales_order.js:521
+#: selling/doctype/sales_order/sales_order.js:515
msgid "Resume"
msgstr ""
@@ -59739,7 +59807,7 @@
#: accounts/doctype/purchase_invoice/purchase_invoice_dashboard.py:25
#: accounts/doctype/sales_invoice/sales_invoice_dashboard.py:35
-#: stock/doctype/delivery_note/delivery_note_dashboard.py:23
+#: stock/doctype/delivery_note/delivery_note_dashboard.py:24
#: stock/doctype/purchase_receipt/purchase_receipt_dashboard.py:30
#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt_dashboard.py:27
msgid "Returns"
@@ -60236,7 +60304,7 @@
msgid "Rounding Loss Allowance should be between 0 and 1"
msgstr ""
-#: controllers/stock_controller.py:222 controllers/stock_controller.py:239
+#: controllers/stock_controller.py:216 controllers/stock_controller.py:231
msgid "Rounding gain/loss Entry for Stock Transfer"
msgstr ""
@@ -60246,12 +60314,6 @@
msgid "Route"
msgstr ""
-#. Label of a Data field in DocType 'Homepage Section Card'
-#: portal/doctype/homepage_section_card/homepage_section_card.json
-msgctxt "Homepage Section Card"
-msgid "Route"
-msgstr ""
-
#. Label of a Data field in DocType 'Sales Partner'
#: setup/doctype/sales_partner/sales_partner.json
msgctxt "Sales Partner"
@@ -60283,11 +60345,11 @@
msgid "Routing Name"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:427
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:428
msgid "Row #"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:333
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:334
msgid "Row # {0}:"
msgstr ""
@@ -60303,13 +60365,13 @@
msgid "Row # {0}: Returned Item {1} does not exist in {2} {3}"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:441
-#: accounts/doctype/sales_invoice/sales_invoice.py:1738
+#: accounts/doctype/pos_invoice/pos_invoice.py:439
+#: accounts/doctype/sales_invoice/sales_invoice.py:1715
msgid "Row #{0} (Payment Table): Amount must be negative"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:439
-#: accounts/doctype/sales_invoice/sales_invoice.py:1733
+#: accounts/doctype/pos_invoice/pos_invoice.py:437
+#: accounts/doctype/sales_invoice/sales_invoice.py:1710
msgid "Row #{0} (Payment Table): Amount must be positive"
msgstr ""
@@ -60338,20 +60400,20 @@
msgid "Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1}"
msgstr ""
-#: controllers/accounts_controller.py:853
+#: controllers/accounts_controller.py:887
msgid "Row #{0}: Account {1} does not belong to company {2}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:303
-#: accounts/doctype/payment_entry/payment_entry.py:387
+#: accounts/doctype/payment_entry/payment_entry.py:305
+#: accounts/doctype/payment_entry/payment_entry.py:389
msgid "Row #{0}: Allocated Amount cannot be greater than outstanding amount."
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:399
+#: accounts/doctype/payment_entry/payment_entry.py:401
msgid "Row #{0}: Allocated amount:{1} is greater than outstanding amount:{2} for Payment Term {3}"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:300
+#: assets/doctype/asset_capitalization/asset_capitalization.py:309
msgid "Row #{0}: Amount must be a positive number"
msgstr ""
@@ -60359,7 +60421,7 @@
msgid "Row #{0}: Asset {1} cannot be submitted, it is already {2}"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:347
+#: buying/doctype/purchase_order/purchase_order.py:351
msgid "Row #{0}: BOM is not specified for subcontracting item {0}"
msgstr ""
@@ -60367,27 +60429,27 @@
msgid "Row #{0}: Batch No {1} is already selected."
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:734
+#: accounts/doctype/payment_entry/payment_entry.py:736
msgid "Row #{0}: Cannot allocate more than {1} against payment term {2}"
msgstr ""
-#: controllers/accounts_controller.py:3005
+#: controllers/accounts_controller.py:3064
msgid "Row #{0}: Cannot delete item {1} which has already been billed."
msgstr ""
-#: controllers/accounts_controller.py:2979
+#: controllers/accounts_controller.py:3038
msgid "Row #{0}: Cannot delete item {1} which has already been delivered"
msgstr ""
-#: controllers/accounts_controller.py:2998
+#: controllers/accounts_controller.py:3057
msgid "Row #{0}: Cannot delete item {1} which has already been received"
msgstr ""
-#: controllers/accounts_controller.py:2985
+#: controllers/accounts_controller.py:3044
msgid "Row #{0}: Cannot delete item {1} which has work order assigned to it."
msgstr ""
-#: controllers/accounts_controller.py:2991
+#: controllers/accounts_controller.py:3050
msgid "Row #{0}: Cannot delete item {1} which is assigned to customer's purchase order."
msgstr ""
@@ -60395,7 +60457,7 @@
msgid "Row #{0}: Cannot select Supplier Warehouse while suppling raw materials to subcontractor"
msgstr ""
-#: controllers/accounts_controller.py:3250
+#: controllers/accounts_controller.py:3309
msgid "Row #{0}: Cannot set Rate if amount is greater than billed amount for Item {1}."
msgstr ""
@@ -60411,23 +60473,23 @@
msgid "Row #{0}: Clearance date {1} cannot be before Cheque Date {2}"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:277
+#: assets/doctype/asset_capitalization/asset_capitalization.py:286
msgid "Row #{0}: Consumed Asset {1} cannot be Draft"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:279
+#: assets/doctype/asset_capitalization/asset_capitalization.py:288
msgid "Row #{0}: Consumed Asset {1} cannot be cancelled"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:264
+#: assets/doctype/asset_capitalization/asset_capitalization.py:273
msgid "Row #{0}: Consumed Asset {1} cannot be the same as the Target Asset"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:273
+#: assets/doctype/asset_capitalization/asset_capitalization.py:282
msgid "Row #{0}: Consumed Asset {1} cannot be {2}"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:283
+#: assets/doctype/asset_capitalization/asset_capitalization.py:292
msgid "Row #{0}: Consumed Asset {1} does not belong to company {2}"
msgstr ""
@@ -60443,31 +60505,31 @@
msgid "Row #{0}: Dates overlapping with other row"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:371
+#: buying/doctype/purchase_order/purchase_order.py:375
msgid "Row #{0}: Default BOM not found for FG Item {1}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:270
+#: accounts/doctype/payment_entry/payment_entry.py:272
msgid "Row #{0}: Duplicate entry in References {1} {2}"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:234
+#: selling/doctype/sales_order/sales_order.py:237
msgid "Row #{0}: Expected Delivery Date cannot be before Purchase Order Date"
msgstr ""
-#: controllers/stock_controller.py:344
+#: controllers/stock_controller.py:336
msgid "Row #{0}: Expense Account not set for the Item {1}. {2}"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:374
+#: buying/doctype/purchase_order/purchase_order.py:378
msgid "Row #{0}: Finished Good Item Qty can not be zero"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:358
+#: buying/doctype/purchase_order/purchase_order.py:362
msgid "Row #{0}: Finished Good Item is not specified for service item {1}"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:365
+#: buying/doctype/purchase_order/purchase_order.py:369
msgid "Row #{0}: Finished Good Item {1} must be a sub-contracted item"
msgstr ""
@@ -60475,11 +60537,11 @@
msgid "Row #{0}: Finished Good reference is mandatory for Scrap Item {1}."
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:555
+#: accounts/doctype/journal_entry/journal_entry.py:571
msgid "Row #{0}: For {1}, you can select reference document only if account gets credited"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:561
+#: accounts/doctype/journal_entry/journal_entry.py:577
msgid "Row #{0}: For {1}, you can select reference document only if account gets debited"
msgstr ""
@@ -60487,7 +60549,7 @@
msgid "Row #{0}: From Date cannot be before To Date"
msgstr ""
-#: public/js/utils/barcode_scanner.js:474
+#: public/js/utils/barcode_scanner.js:489
msgid "Row #{0}: Item added"
msgstr ""
@@ -60499,19 +60561,19 @@
msgid "Row #{0}: Item {1} has been picked, please reserve stock from the Pick List."
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:490
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:491
msgid "Row #{0}: Item {1} is not a Serialized/Batched Item. It cannot have a Serial No/Batch No against it."
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:294
+#: assets/doctype/asset_capitalization/asset_capitalization.py:303
msgid "Row #{0}: Item {1} is not a service item"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:252
+#: assets/doctype/asset_capitalization/asset_capitalization.py:261
msgid "Row #{0}: Item {1} is not a stock item"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:655
+#: accounts/doctype/payment_entry/payment_entry.py:657
msgid "Row #{0}: Journal Entry {1} does not have account {2} or already matched against another voucher"
msgstr ""
@@ -60519,7 +60581,7 @@
msgid "Row #{0}: Maximum Net Rate cannot be greater than Minimum Net Rate"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:532
+#: selling/doctype/sales_order/sales_order.py:535
msgid "Row #{0}: Not allowed to change Supplier as Purchase Order already exists"
msgstr ""
@@ -60551,16 +60613,16 @@
msgid "Row #{0}: Please set reorder quantity"
msgstr ""
-#: controllers/accounts_controller.py:364
+#: controllers/accounts_controller.py:367
msgid "Row #{0}: Please update deferred revenue/expense account in item row or default account in company master"
msgstr ""
-#: public/js/utils/barcode_scanner.js:472
+#: public/js/utils/barcode_scanner.js:487
msgid "Row #{0}: Qty increased by {1}"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:255
-#: assets/doctype/asset_capitalization/asset_capitalization.py:297
+#: assets/doctype/asset_capitalization/asset_capitalization.py:264
+#: assets/doctype/asset_capitalization/asset_capitalization.py:306
msgid "Row #{0}: Qty must be a positive number"
msgstr ""
@@ -60568,8 +60630,8 @@
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 ""
-#: controllers/accounts_controller.py:984
-#: controllers/accounts_controller.py:3107
+#: controllers/accounts_controller.py:1018
+#: controllers/accounts_controller.py:3166
msgid "Row #{0}: Quantity for Item {1} cannot be zero."
msgstr ""
@@ -60585,11 +60647,11 @@
msgid "Row #{0}: Received Qty must be equal to Accepted + Rejected Qty for Item {1}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:1005
+#: accounts/doctype/payment_entry/payment_entry.js:1016
msgid "Row #{0}: Reference Document Type must be one of Purchase Order, Purchase Invoice or Journal Entry"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:997
+#: accounts/doctype/payment_entry/payment_entry.js:1008
msgid "Row #{0}: Reference Document Type must be one of Sales Order, Sales Invoice, Journal Entry or Dunning"
msgstr ""
@@ -60633,19 +60695,19 @@
msgid "Row #{0}: Serial No {1} is already selected."
msgstr ""
-#: controllers/accounts_controller.py:392
+#: controllers/accounts_controller.py:395
msgid "Row #{0}: Service End Date cannot be before Invoice Posting Date"
msgstr ""
-#: controllers/accounts_controller.py:388
+#: controllers/accounts_controller.py:391
msgid "Row #{0}: Service Start Date cannot be greater than Service End Date"
msgstr ""
-#: controllers/accounts_controller.py:384
+#: controllers/accounts_controller.py:387
msgid "Row #{0}: Service Start and End Date is required for deferred accounting"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:388
+#: selling/doctype/sales_order/sales_order.py:391
msgid "Row #{0}: Set Supplier for item {1}"
msgstr ""
@@ -60653,7 +60715,7 @@
msgid "Row #{0}: Status is mandatory"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:365
+#: accounts/doctype/journal_entry/journal_entry.py:381
msgid "Row #{0}: Status must be {1} for Invoice Discounting {2}"
msgstr ""
@@ -60689,7 +60751,7 @@
msgid "Row #{0}: The batch {1} has already expired."
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1710
+#: accounts/doctype/sales_invoice/sales_invoice.py:1687
msgid "Row #{0}: The following Serial Nos are not present in Delivery Note {1}:"
msgstr ""
@@ -60701,11 +60763,11 @@
msgid "Row #{0}: You cannot use the inventory dimension '{1}' in Stock Reconciliation to modify the quantity or valuation rate. Stock reconciliation with inventory dimensions is intended solely for performing opening entries."
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1409
+#: accounts/doctype/sales_invoice/sales_invoice.py:1402
msgid "Row #{0}: You must select an Asset for Item {1}."
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1719
+#: accounts/doctype/sales_invoice/sales_invoice.py:1696
msgid "Row #{0}: {1} Serial numbers required for Item {2}. You have provided {3}."
msgstr ""
@@ -60733,15 +60795,15 @@
msgid "Row #{}: Currency of {} - {} doesn't matches company currency."
msgstr ""
-#: assets/doctype/asset/asset.py:274
+#: assets/doctype/asset/asset.py:275
msgid "Row #{}: Depreciation Posting Date should not be equal to Available for Use Date."
msgstr ""
-#: assets/doctype/asset/asset.py:307
+#: assets/doctype/asset/asset.py:308
msgid "Row #{}: Finance Book should not be empty since you're using multiple."
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:340
+#: accounts/doctype/pos_invoice/pos_invoice.py:338
msgid "Row #{}: Item Code: {} is not available under warehouse {}."
msgstr ""
@@ -60762,23 +60824,23 @@
msgstr ""
#: assets/doctype/asset_maintenance/asset_maintenance.py:43
-msgid "Row #{}: Please asign task to a member."
+msgid "Row #{}: Please assign task to a member."
msgstr ""
-#: assets/doctype/asset/asset.py:299
+#: assets/doctype/asset/asset.py:300
msgid "Row #{}: Please use a different Finance Book."
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:400
+#: accounts/doctype/pos_invoice/pos_invoice.py:398
msgid "Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {}"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:347
+#: accounts/doctype/pos_invoice/pos_invoice.py:345
msgid "Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}."
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:373
-msgid "Row #{}: You cannot add postive quantities in a return invoice. Please remove item {} to complete the return."
+#: accounts/doctype/pos_invoice/pos_invoice.py:371
+msgid "Row #{}: You cannot add positive quantities in a return invoice. Please remove item {} to complete the return."
msgstr ""
#: stock/doctype/pick_list/pick_list.py:83
@@ -60821,11 +60883,11 @@
msgid "Row {0}: Accepted Qty and Rejected Qty can't be zero at the same time."
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:493
+#: accounts/doctype/journal_entry/journal_entry.py:509
msgid "Row {0}: Account {1} and Party Type {2} have different account types"
msgstr ""
-#: controllers/accounts_controller.py:2467
+#: controllers/accounts_controller.py:2536
msgid "Row {0}: Account {1} is a Group Account"
msgstr ""
@@ -60833,19 +60895,19 @@
msgid "Row {0}: Activity Type is mandatory."
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:545
+#: accounts/doctype/journal_entry/journal_entry.py:561
msgid "Row {0}: Advance against Customer must be credit"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:547
+#: accounts/doctype/journal_entry/journal_entry.py:563
msgid "Row {0}: Advance against Supplier must be debit"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:643
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:671
msgid "Row {0}: Allocated amount {1} must be less than or equal to invoice outstanding amount {2}"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:635
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:663
msgid "Row {0}: Allocated amount {1} must be less than or equal to remaining payment amount {2}"
msgstr ""
@@ -60853,7 +60915,7 @@
msgid "Row {0}: Bill of Materials not found for the Item {1}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:844
+#: accounts/doctype/journal_entry/journal_entry.py:796
msgid "Row {0}: Both Debit and Credit values cannot be zero"
msgstr ""
@@ -60861,7 +60923,7 @@
msgid "Row {0}: Conversion Factor is mandatory"
msgstr ""
-#: controllers/accounts_controller.py:2480
+#: controllers/accounts_controller.py:2549
msgid "Row {0}: Cost Center {1} does not belong to Company {2}"
msgstr ""
@@ -60869,15 +60931,15 @@
msgid "Row {0}: Cost center is required for an item {1}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:631
+#: accounts/doctype/journal_entry/journal_entry.py:647
msgid "Row {0}: Credit entry can not be linked with a {1}"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:432
+#: manufacturing/doctype/bom/bom.py:434
msgid "Row {0}: Currency of the BOM #{1} should be equal to the selected currency {2}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:626
+#: accounts/doctype/journal_entry/journal_entry.py:642
msgid "Row {0}: Debit entry can not be linked with a {1}"
msgstr ""
@@ -60885,11 +60947,11 @@
msgid "Row {0}: Delivery Warehouse ({1}) and Customer Warehouse ({2}) can not be same"
msgstr ""
-#: assets/doctype/asset/asset.py:416
+#: assets/doctype/asset/asset.py:417
msgid "Row {0}: Depreciation Start Date is required"
msgstr ""
-#: controllers/accounts_controller.py:2140
+#: controllers/accounts_controller.py:2209
msgid "Row {0}: Due Date in the Payment Terms table cannot be before Posting Date"
msgstr ""
@@ -60901,12 +60963,12 @@
msgid "Row {0}: Enter location for the asset item {1}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:934
-#: controllers/taxes_and_totals.py:1106
+#: accounts/doctype/journal_entry/journal_entry.py:886
+#: controllers/taxes_and_totals.py:1115
msgid "Row {0}: Exchange Rate is mandatory"
msgstr ""
-#: assets/doctype/asset/asset.py:407
+#: assets/doctype/asset/asset.py:408
msgid "Row {0}: Expected Value After Useful Life must be less than Gross Purchase Amount"
msgstr ""
@@ -60935,7 +60997,7 @@
msgid "Row {0}: From Time and To Time of {1} is overlapping with {2}"
msgstr ""
-#: controllers/stock_controller.py:739
+#: controllers/stock_controller.py:730
msgid "Row {0}: From Warehouse is mandatory for internal transfers"
msgstr ""
@@ -60947,11 +61009,11 @@
msgid "Row {0}: Hours value must be greater than zero."
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:649
+#: accounts/doctype/journal_entry/journal_entry.py:665
msgid "Row {0}: Invalid reference {1}"
msgstr ""
-#: controllers/taxes_and_totals.py:127
+#: controllers/taxes_and_totals.py:128
msgid "Row {0}: Item Tax template updated as per validity and rate applied"
msgstr ""
@@ -60975,11 +61037,11 @@
msgid "Row {0}: Packing Slip is already created for Item {1}."
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:671
+#: accounts/doctype/journal_entry/journal_entry.py:687
msgid "Row {0}: Party / Account does not match with {1} / {2} in {3} {4}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:484
+#: accounts/doctype/journal_entry/journal_entry.py:500
msgid "Row {0}: Party Type and Party is required for Receivable / Payable account {1}"
msgstr ""
@@ -60987,11 +61049,11 @@
msgid "Row {0}: Payment Term is mandatory"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:538
+#: accounts/doctype/journal_entry/journal_entry.py:554
msgid "Row {0}: Payment against Sales/Purchase Order should always be marked as advance"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:531
+#: accounts/doctype/journal_entry/journal_entry.py:547
msgid "Row {0}: Please check 'Is Advance' against Account {1} if this is an advance entry."
msgstr ""
@@ -61055,7 +61117,7 @@
msgid "Row {0}: Subcontracted Item is mandatory for the raw material {1}"
msgstr ""
-#: controllers/stock_controller.py:730
+#: controllers/stock_controller.py:721
msgid "Row {0}: Target Warehouse is mandatory for internal transfers"
msgstr ""
@@ -61067,7 +61129,7 @@
msgid "Row {0}: To set {1} periodicity, difference between from and to date must be greater than or equal to {2}"
msgstr ""
-#: assets/doctype/asset/asset.py:440
+#: assets/doctype/asset/asset.py:441
msgid "Row {0}: Total Number of Depreciations cannot be less than or equal to Number of Depreciations Booked"
msgstr ""
@@ -61075,7 +61137,7 @@
msgid "Row {0}: UOM Conversion Factor is mandatory"
msgstr ""
-#: controllers/accounts_controller.py:783
+#: controllers/accounts_controller.py:786
msgid "Row {0}: user has not applied the rule {1} on the item {2}"
msgstr ""
@@ -61087,15 +61149,15 @@
msgid "Row {0}: {1} must be greater than 0"
msgstr ""
-#: controllers/accounts_controller.py:508
+#: controllers/accounts_controller.py:511
msgid "Row {0}: {1} {2} cannot be same as {3} (Party Account) {4}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:685
+#: accounts/doctype/journal_entry/journal_entry.py:701
msgid "Row {0}: {1} {2} does not match with {3}"
msgstr ""
-#: controllers/accounts_controller.py:2459
+#: controllers/accounts_controller.py:2528
msgid "Row {0}: {3} Account {1} does not belong to Company {2}"
msgstr ""
@@ -61130,7 +61192,7 @@
msgid "Rows with Same Account heads will be merged on Ledger"
msgstr ""
-#: controllers/accounts_controller.py:2149
+#: controllers/accounts_controller.py:2218
msgid "Rows with duplicate due dates in other rows were found: {0}"
msgstr ""
@@ -61138,7 +61200,7 @@
msgid "Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually."
msgstr ""
-#: controllers/accounts_controller.py:208
+#: controllers/accounts_controller.py:211
msgid "Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry."
msgstr ""
@@ -61377,7 +61439,7 @@
#: accounts/doctype/tax_category/tax_category_dashboard.py:9
#: projects/doctype/project/project_dashboard.py:15
#: regional/report/vat_audit_report/vat_audit_report.py:184
-#: setup/doctype/company/company.py:328 setup/doctype/company/company.py:491
+#: setup/doctype/company/company.py:329 setup/doctype/company/company.py:492
#: setup/doctype/company/company_dashboard.py:9
#: setup/doctype/sales_person/sales_person_dashboard.py:12
#: setup/setup_wizard/operations/install_fixtures.py:250
@@ -61415,7 +61477,7 @@
msgid "Sales"
msgstr ""
-#: setup/doctype/company/company.py:491
+#: setup/doctype/company/company.py:492
msgid "Sales Account"
msgstr ""
@@ -61461,9 +61523,9 @@
#: accounts/report/gross_profit/gross_profit.py:199
#: accounts/report/gross_profit/gross_profit.py:206
#: selling/doctype/quotation/quotation_list.js:20
-#: selling/doctype/sales_order/sales_order.js:571
-#: selling/doctype/sales_order/sales_order_list.js:51
-#: stock/doctype/delivery_note/delivery_note.js:231
+#: selling/doctype/sales_order/sales_order.js:565
+#: selling/doctype/sales_order/sales_order_list.js:53
+#: stock/doctype/delivery_note/delivery_note.js:222
#: stock/doctype/delivery_note/delivery_note_list.js:61
msgid "Sales Invoice"
msgstr ""
@@ -61525,11 +61587,13 @@
msgid "Sales Invoice"
msgstr ""
-#. Label of a Link in the Accounting Workspace
#. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
+#. Label of a shortcut in the Receivables Workspace
#. Label of a Link in the Selling Workspace
#. Label of a shortcut in the Home Workspace
#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
#: selling/workspace/selling/selling.json setup/workspace/home/home.json
msgctxt "Sales Invoice"
msgid "Sales Invoice"
@@ -61604,10 +61668,10 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#. Label of a Link in the Selling Workspace
#: accounts/report/sales_invoice_trends/sales_invoice_trends.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
#: selling/workspace/selling/selling.json
msgid "Sales Invoice Trends"
msgstr ""
@@ -61616,7 +61680,7 @@
msgid "Sales Invoice {0} has already been submitted"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:469
+#: selling/doctype/sales_order/sales_order.py:472
msgid "Sales Invoice {0} must be deleted before cancelling this Sales Order"
msgstr ""
@@ -61648,7 +61712,7 @@
#: setup/doctype/incoterm/incoterm.json
#: setup/doctype/sales_partner/sales_partner.json
#: setup/doctype/sales_person/sales_person.json
-#: setup/doctype/territory/territory.json
+#: setup/doctype/territory/territory.json stock/doctype/bin/bin.json
#: stock/doctype/packing_slip/packing_slip.json
msgid "Sales Manager"
msgstr ""
@@ -61679,10 +61743,14 @@
msgid "Sales Monthly History"
msgstr ""
+#: selling/page/sales_funnel/sales_funnel.js:129
+msgid "Sales Opportunities by Source"
+msgstr ""
+
#. Name of a DocType
#. Title of an Onboarding Step
#: accounts/doctype/sales_invoice/sales_invoice.js:236
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:272
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:279
#: accounts/report/sales_register/sales_register.py:236
#: controllers/selling_controller.py:421
#: maintenance/doctype/maintenance_schedule/maintenance_schedule.js:64
@@ -61700,7 +61768,7 @@
#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:13
#: selling/report/sales_order_analysis/sales_order_analysis.js:34
#: selling/report/sales_order_analysis/sales_order_analysis.py:222
-#: stock/doctype/delivery_note/delivery_note.js:143
+#: stock/doctype/delivery_note/delivery_note.js:134
#: stock/doctype/material_request/material_request.js:161
#: stock/report/delayed_item_report/delayed_item_report.js:31
#: stock/report/delayed_item_report/delayed_item_report.py:155
@@ -61832,11 +61900,11 @@
msgid "Sales Order"
msgstr ""
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
#. Name of a report
#. Label of a Link in the Selling Workspace
#. Label of a Link in the Stock Workspace
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
#: selling/report/sales_order_analysis/sales_order_analysis.json
#: selling/workspace/selling/selling.json stock/workspace/stock/stock.json
msgid "Sales Order Analysis"
@@ -61855,8 +61923,8 @@
msgstr ""
#. Name of a DocType
-#: selling/doctype/sales_order/sales_order.js:266
-#: selling/doctype/sales_order/sales_order.js:710
+#: selling/doctype/sales_order/sales_order.js:260
+#: selling/doctype/sales_order/sales_order.js:704
#: selling/doctype/sales_order_item/sales_order_item.json
msgid "Sales Order Item"
msgstr ""
@@ -61945,11 +62013,11 @@
msgid "Sales Order required for Item {0}"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:255
+#: selling/doctype/sales_order/sales_order.py:258
msgid "Sales Order {0} already exists against Customer's Purchase Order {1}. To allow multiple Sales Orders, Enable {2} in {3}"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1139
+#: accounts/doctype/sales_invoice/sales_invoice.py:1142
msgid "Sales Order {0} is not submitted"
msgstr ""
@@ -61991,7 +62059,7 @@
#. Name of a DocType
#: accounts/report/accounts_receivable/accounts_receivable.js:133
-#: accounts/report/accounts_receivable/accounts_receivable.py:1083
+#: accounts/report/accounts_receivable/accounts_receivable.py:1106
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:117
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:197
#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:74
@@ -62123,25 +62191,25 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#. Label of a Link in the Selling Workspace
#: accounts/report/sales_partners_commission/sales_partners_commission.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
#: selling/workspace/selling/selling.json
msgid "Sales Partners Commission"
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#: accounts/report/sales_payment_summary/sales_payment_summary.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
msgid "Sales Payment Summary"
msgstr ""
#. Name of a DocType
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:155
#: accounts/report/accounts_receivable/accounts_receivable.js:139
-#: accounts/report/accounts_receivable/accounts_receivable.py:1080
+#: accounts/report/accounts_receivable/accounts_receivable.py:1103
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:123
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:194
#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:80
@@ -62237,19 +62305,23 @@
msgid "Sales Pipeline Analytics"
msgstr ""
+#: selling/page/sales_funnel/sales_funnel.js:131
+msgid "Sales Pipeline by Stage"
+msgstr ""
+
#: stock/report/item_prices/item_prices.py:58
msgid "Sales Price List"
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Receivables Workspace
#: accounts/report/sales_register/sales_register.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/receivables/receivables.json
msgid "Sales Register"
msgstr ""
#: accounts/report/gross_profit/gross_profit.py:777
-#: stock/doctype/delivery_note/delivery_note.js:184
+#: stock/doctype/delivery_note/delivery_note.js:175
msgid "Sales Return"
msgstr ""
@@ -62522,7 +62594,7 @@
msgid "Same Item"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:349
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:350
msgid "Same item and warehouse combination already entered."
msgstr ""
@@ -62553,7 +62625,7 @@
msgstr ""
#: manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:93
-#: public/js/controllers/transaction.js:2101
+#: public/js/controllers/transaction.js:2131
msgid "Sample Size"
msgstr ""
@@ -62563,7 +62635,7 @@
msgid "Sample Size"
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:2828
+#: stock/doctype/stock_entry/stock_entry.py:2824
msgid "Sample quantity {0} cannot be more than received quantity {1}"
msgstr ""
@@ -62637,7 +62709,7 @@
msgstr ""
#: accounts/doctype/bank_statement_import/bank_statement_import.js:139
-#: accounts/doctype/journal_entry/journal_entry.js:560
+#: accounts/doctype/journal_entry/journal_entry.js:550
#: accounts/doctype/ledger_merge/ledger_merge.js:75
#: accounts/doctype/purchase_invoice/purchase_invoice.js:252
#: accounts/doctype/purchase_invoice/purchase_invoice.js:288
@@ -62658,7 +62730,7 @@
msgid "Savings"
msgstr ""
-#: public/js/utils/barcode_scanner.js:191
+#: public/js/utils/barcode_scanner.js:206
msgid "Scan Barcode"
msgstr ""
@@ -62734,7 +62806,7 @@
msgid "Scan Barcode"
msgstr ""
-#: public/js/utils/serial_no_batch_selector.js:147
+#: public/js/utils/serial_no_batch_selector.js:151
msgid "Scan Batch No"
msgstr ""
@@ -62750,11 +62822,11 @@
msgid "Scan Mode"
msgstr ""
-#: public/js/utils/serial_no_batch_selector.js:132
+#: public/js/utils/serial_no_batch_selector.js:136
msgid "Scan Serial No"
msgstr ""
-#: public/js/utils/barcode_scanner.js:157
+#: public/js/utils/barcode_scanner.js:172
msgid "Scan barcode for item {0}"
msgstr ""
@@ -62768,7 +62840,7 @@
msgid "Scanned Cheque"
msgstr ""
-#: public/js/utils/barcode_scanner.js:223
+#: public/js/utils/barcode_scanner.js:238
msgid "Scanned Quantity"
msgstr ""
@@ -63060,36 +63132,11 @@
msgid "Secondary Role"
msgstr ""
-#. Label of a Select field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Section Based On"
-msgstr ""
-
-#. Label of a Section Break field in DocType 'Homepage Section'
-#. Label of a Table field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Section Cards"
-msgstr ""
-
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:169
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:174
#: accounts/report/tds_computation_summary/tds_computation_summary.py:117
msgid "Section Code"
msgstr ""
-#. Label of a Code field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Section HTML"
-msgstr ""
-
-#. Label of a Int field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Section Order"
-msgstr ""
-
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:95
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:140
msgid "Secured Loans"
@@ -63109,7 +63156,7 @@
msgstr ""
#: buying/doctype/purchase_order/purchase_order.js:180
-#: selling/doctype/sales_order/sales_order.js:894
+#: selling/doctype/sales_order/sales_order.js:888
msgid "Select"
msgstr ""
@@ -63129,19 +63176,19 @@
msgid "Select Attribute Values"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:695
+#: selling/doctype/sales_order/sales_order.js:689
msgid "Select BOM"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:684
+#: selling/doctype/sales_order/sales_order.js:678
msgid "Select BOM and Qty for Production"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:809
+#: selling/doctype/sales_order/sales_order.js:803
msgid "Select BOM, Qty and For Warehouse"
msgstr ""
-#: public/js/utils/sales_common.js:316
+#: public/js/utils/sales_common.js:325
#: selling/page/point_of_sale/pos_item_details.js:203
#: stock/doctype/pick_list/pick_list.js:318
msgid "Select Batch No"
@@ -63190,7 +63237,7 @@
msgid "Select Default Supplier"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:231
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:252
msgid "Select Difference Account"
msgstr ""
@@ -63212,19 +63259,19 @@
msgid "Select Finished Good"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:968
+#: selling/doctype/sales_order/sales_order.js:962
msgid "Select Items"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:867
+#: selling/doctype/sales_order/sales_order.js:861
msgid "Select Items based on Delivery Date"
msgstr ""
-#: public/js/controllers/transaction.js:2129
+#: public/js/controllers/transaction.js:2159
msgid "Select Items for Quality Inspection"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:719
+#: selling/doctype/sales_order/sales_order.js:713
msgid "Select Items to Manufacture"
msgstr ""
@@ -63248,13 +63295,13 @@
msgid "Select Quantity"
msgstr ""
-#: public/js/utils/sales_common.js:316
+#: public/js/utils/sales_common.js:325
#: selling/page/point_of_sale/pos_item_details.js:203
#: stock/doctype/pick_list/pick_list.js:318
msgid "Select Serial No"
msgstr ""
-#: public/js/utils/sales_common.js:319 stock/doctype/pick_list/pick_list.js:321
+#: public/js/utils/sales_common.js:328 stock/doctype/pick_list/pick_list.js:321
msgid "Select Serial and Batch"
msgstr ""
@@ -63290,6 +63337,11 @@
msgid "Select Time"
msgstr ""
+#: accounts/report/balance_sheet/balance_sheet.js:14
+#: accounts/report/profit_and_loss_statement/profit_and_loss_statement.js:14
+msgid "Select View"
+msgstr ""
+
#: public/js/bank_reconciliation_tool/dialog_manager.js:248
msgid "Select Vouchers to Match"
msgstr ""
@@ -63330,7 +63382,7 @@
msgid "Select a company"
msgstr ""
-#: stock/doctype/item/item.js:823
+#: stock/doctype/item/item.js:809
msgid "Select an Item Group."
msgstr ""
@@ -63342,7 +63394,7 @@
msgid "Select an item from each set to be used in the Sales Order."
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1566
+#: accounts/doctype/sales_invoice/sales_invoice.py:1549
msgid "Select change amount account"
msgstr ""
@@ -63357,7 +63409,7 @@
msgid "Select company name first."
msgstr ""
-#: controllers/accounts_controller.py:2325
+#: controllers/accounts_controller.py:2394
msgid "Select finance book for the item {0} at row {1}"
msgstr ""
@@ -63429,7 +63481,7 @@
msgid "Selected POS Opening Entry should be open."
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:2221
+#: accounts/doctype/sales_invoice/sales_invoice.py:2192
msgid "Selected Price List should have buying and selling fields checked."
msgstr ""
@@ -63711,7 +63763,7 @@
msgid "Serial / Batch Bundle"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:364
+#: accounts/doctype/pos_invoice/pos_invoice.py:362
msgid "Serial / Batch Bundle Missing"
msgstr ""
@@ -63728,14 +63780,14 @@
#. Name of a DocType
#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:73
#: manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:116
-#: public/js/controllers/transaction.js:2114
-#: public/js/utils/serial_no_batch_selector.js:278
+#: public/js/controllers/transaction.js:2144
+#: public/js/utils/serial_no_batch_selector.js:350
#: stock/doctype/serial_no/serial_no.json
#: stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:160
#: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:64
#: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:150
#: stock/report/serial_no_ledger/serial_no_ledger.js:39
-#: stock/report/serial_no_ledger/serial_no_ledger.py:58
+#: stock/report/serial_no_ledger/serial_no_ledger.py:57
#: stock/report/stock_ledger/stock_ledger.py:246
msgid "Serial No"
msgstr ""
@@ -63940,7 +63992,7 @@
msgid "Serial No and Batch for Finished Good"
msgstr ""
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:574
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:577
msgid "Serial No is mandatory"
msgstr ""
@@ -63948,11 +64000,11 @@
msgid "Serial No is mandatory for Item {0}"
msgstr ""
-#: public/js/utils/serial_no_batch_selector.js:388
+#: public/js/utils/serial_no_batch_selector.js:480
msgid "Serial No {0} already exists"
msgstr ""
-#: public/js/utils/barcode_scanner.js:296
+#: public/js/utils/barcode_scanner.js:311
msgid "Serial No {0} already scanned"
msgstr ""
@@ -63969,12 +64021,16 @@
msgid "Serial No {0} does not exist"
msgstr ""
-#: public/js/utils/barcode_scanner.js:387
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2112
+msgid "Serial No {0} does not exists"
+msgstr ""
+
+#: public/js/utils/barcode_scanner.js:402
msgid "Serial No {0} has already scanned."
msgstr ""
-#: public/js/utils/barcode_scanner.js:482
-#: public/js/utils/barcode_scanner.js:489
+#: public/js/utils/barcode_scanner.js:499
+#: public/js/utils/barcode_scanner.js:506
msgid "Serial No {0} is already added"
msgstr ""
@@ -63994,19 +64050,19 @@
msgid "Serial No: {0} has already been transacted into another POS Invoice."
msgstr ""
-#: public/js/utils/barcode_scanner.js:247
+#: public/js/utils/barcode_scanner.js:262
#: public/js/utils/serial_no_batch_selector.js:15
-#: public/js/utils/serial_no_batch_selector.js:174
+#: public/js/utils/serial_no_batch_selector.js:178
#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:48
msgid "Serial Nos"
msgstr ""
#: public/js/utils/serial_no_batch_selector.js:20
-#: public/js/utils/serial_no_batch_selector.js:179
+#: public/js/utils/serial_no_batch_selector.js:183
msgid "Serial Nos / Batch Nos"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1715
+#: accounts/doctype/sales_invoice/sales_invoice.py:1692
msgid "Serial Nos Mismatch"
msgstr ""
@@ -64016,11 +64072,11 @@
msgid "Serial Nos and Batches"
msgstr ""
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1048
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1074
msgid "Serial Nos are created successfully"
msgstr ""
-#: stock/stock_ledger.py:1883
+#: stock/stock_ledger.py:1972
msgid "Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding."
msgstr ""
@@ -64141,11 +64197,11 @@
msgid "Serial and Batch Bundle"
msgstr ""
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1227
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1253
msgid "Serial and Batch Bundle created"
msgstr ""
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1269
+#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1295
msgid "Serial and Batch Bundle updated"
msgstr ""
@@ -64200,11 +64256,11 @@
msgid "Serial and Batch Summary"
msgstr ""
-#: stock/utils.py:380
+#: stock/utils.py:427
msgid "Serial number {0} entered more than once"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.js:555
+#: accounts/doctype/journal_entry/journal_entry.js:545
msgid "Series"
msgstr ""
@@ -64743,11 +64799,11 @@
msgid "Service Stop Date"
msgstr ""
-#: accounts/deferred_revenue.py:48 public/js/controllers/transaction.js:1237
+#: accounts/deferred_revenue.py:48 public/js/controllers/transaction.js:1239
msgid "Service Stop Date cannot be after Service End Date"
msgstr ""
-#: accounts/deferred_revenue.py:45 public/js/controllers/transaction.js:1234
+#: accounts/deferred_revenue.py:45 public/js/controllers/transaction.js:1236
msgid "Service Stop Date cannot be before Service Start Date"
msgstr ""
@@ -64825,10 +64881,6 @@
msgid "Set Loyalty Program"
msgstr ""
-#: portal/doctype/homepage/homepage.js:6
-msgid "Set Meta Tags"
-msgstr ""
-
#: accounts/doctype/purchase_invoice/purchase_invoice.js:272
msgid "Set New Release Date"
msgstr ""
@@ -64945,7 +64997,7 @@
msgid "Set Valuation Rate Based on Source Warehouse"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:190
+#: selling/doctype/sales_order/sales_order.js:184
msgid "Set Warehouse"
msgstr ""
@@ -64958,7 +65010,7 @@
msgid "Set as Completed"
msgstr ""
-#: public/js/utils/sales_common.js:397
+#: public/js/utils/sales_common.js:406
#: selling/doctype/quotation/quotation.js:124
msgid "Set as Lost"
msgstr ""
@@ -64968,11 +65020,11 @@
msgid "Set as Open"
msgstr ""
-#: setup/doctype/company/company.py:418
+#: setup/doctype/company/company.py:419
msgid "Set default inventory account for perpetual inventory"
msgstr ""
-#: setup/doctype/company/company.py:428
+#: setup/doctype/company/company.py:429
msgid "Set default {0} account for non stock items"
msgstr ""
@@ -65022,15 +65074,15 @@
msgid "Set up your Warehouse"
msgstr ""
-#: assets/doctype/asset/asset.py:664
+#: assets/doctype/asset/asset.py:672
msgid "Set {0} in asset category {1} for company {2}"
msgstr ""
-#: assets/doctype/asset/asset.py:949
+#: assets/doctype/asset/asset.py:953
msgid "Set {0} in asset category {1} or company {2}"
msgstr ""
-#: assets/doctype/asset/asset.py:945
+#: assets/doctype/asset/asset.py:949
msgid "Set {0} in company {1}"
msgstr ""
@@ -65110,12 +65162,11 @@
msgid "Setting up company"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:954
+#: manufacturing/doctype/bom/bom.py:956
#: manufacturing/doctype/work_order/work_order.py:978
msgid "Setting {} is required"
msgstr ""
-#. Label of a Card Break in the Accounting Workspace
#. Label of a Card Break in the Buying Workspace
#. Label of a Card Break in the CRM Workspace
#. Label of a Card Break in the Manufacturing Workspace
@@ -65124,7 +65175,6 @@
#. Name of a Workspace
#. Label of a Card Break in the Stock Workspace
#. Label of a Card Break in the Support Workspace
-#: accounts/workspace/accounting/accounting.json
#: buying/workspace/buying/buying.json crm/workspace/crm/crm.json
#: manufacturing/workspace/manufacturing/manufacturing.json
#: projects/workspace/projects/projects.json
@@ -65281,7 +65331,7 @@
msgstr ""
#. Name of a DocType
-#: stock/doctype/delivery_note/delivery_note.js:175
+#: stock/doctype/delivery_note/delivery_note.js:166
#: stock/doctype/shipment/shipment.json
msgid "Shipment"
msgstr ""
@@ -65701,7 +65751,7 @@
msgid "Show Completed"
msgstr ""
-#: accounts/report/budget_variance_report/budget_variance_report.js:111
+#: accounts/report/budget_variance_report/budget_variance_report.js:107
msgid "Show Cumulative Amount"
msgstr ""
@@ -65862,7 +65912,7 @@
msgid "Show only the Immediate Upcoming Term"
msgstr ""
-#: stock/utils.py:541
+#: stock/utils.py:588
msgid "Show pending entries"
msgstr ""
@@ -66036,12 +66086,6 @@
msgid "Skype ID"
msgstr ""
-#. Option for the 'Hero Section Based On' (Select) field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Slideshow"
-msgstr ""
-
#: setup/setup_wizard/operations/install_fixtures.py:223
msgid "Small"
msgstr ""
@@ -66052,7 +66096,7 @@
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:32
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:45
-msgid "Softwares"
+msgid "Software"
msgstr ""
#: assets/doctype/asset/asset_list.js:11
@@ -66318,7 +66362,7 @@
msgid "Spacer"
msgstr ""
-#: assets/doctype/asset/asset.js:467 stock/doctype/batch/batch.js:146
+#: assets/doctype/asset/asset.js:467 stock/doctype/batch/batch.js:143
#: support/doctype/issue/issue.js:100
msgid "Split"
msgstr ""
@@ -66327,7 +66371,7 @@
msgid "Split Asset"
msgstr ""
-#: stock/doctype/batch/batch.js:145
+#: stock/doctype/batch/batch.js:142
msgid "Split Batch"
msgstr ""
@@ -66352,11 +66396,11 @@
msgid "Split Qty"
msgstr ""
-#: assets/doctype/asset/asset.py:1044
+#: assets/doctype/asset/asset.py:1050
msgid "Split qty cannot be grater than or equal to asset qty"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1810
+#: accounts/doctype/payment_entry/payment_entry.py:1827
msgid "Splitting {0} {1} into {2} rows as per Payment Terms"
msgstr ""
@@ -66451,7 +66495,7 @@
#: assets/report/fixed_asset_register/fixed_asset_register.js:68
#: projects/report/project_summary/project_summary.py:70
#: projects/report/timesheet_billing_summary/timesheet_billing_summary.js:52
-#: public/js/financial_statements.js:131
+#: public/js/financial_statements.js:184
#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:17
msgid "Start Date"
msgstr ""
@@ -66574,11 +66618,11 @@
#: accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js:48
#: accounts/report/financial_ratios/financial_ratios.js:17
#: assets/report/fixed_asset_register/fixed_asset_register.js:82
-#: public/js/financial_statements.js:145
+#: public/js/financial_statements.js:198
msgid "Start Year"
msgstr ""
-#: accounts/report/financial_statements.py:134
+#: accounts/report/financial_statements.py:122
msgid "Start Year and End Year are mandatory"
msgstr ""
@@ -66693,22 +66737,22 @@
#: projects/report/delayed_tasks_summary/delayed_tasks_summary.py:92
#: projects/report/project_summary/project_summary.js:24
#: projects/report/project_summary/project_summary.py:58
-#: selling/doctype/sales_order/sales_order.js:523
-#: selling/doctype/sales_order/sales_order.js:527
-#: selling/doctype/sales_order/sales_order.js:534
-#: selling/doctype/sales_order/sales_order.js:545
-#: selling/doctype/sales_order/sales_order.js:547
+#: selling/doctype/sales_order/sales_order.js:517
+#: selling/doctype/sales_order/sales_order.js:521
+#: selling/doctype/sales_order/sales_order.js:528
+#: selling/doctype/sales_order/sales_order.js:539
+#: selling/doctype/sales_order/sales_order.js:541
#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js:90
#: selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:68
#: selling/report/sales_order_analysis/sales_order_analysis.js:55
#: selling/report/sales_order_analysis/sales_order_analysis.py:228
-#: stock/doctype/delivery_note/delivery_note.js:219
-#: stock/doctype/delivery_note/delivery_note.js:238
+#: stock/doctype/delivery_note/delivery_note.js:210
+#: stock/doctype/delivery_note/delivery_note.js:229
#: stock/doctype/purchase_receipt/purchase_receipt.js:222
#: stock/doctype/purchase_receipt/purchase_receipt.js:240
#: stock/report/reserved_stock/reserved_stock.js:127
#: stock/report/reserved_stock/reserved_stock.py:178
-#: stock/report/serial_no_ledger/serial_no_ledger.py:52
+#: stock/report/serial_no_ledger/serial_no_ledger.py:51
#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:106
#: subcontracting/doctype/subcontracting_order/subcontracting_order.js:108
#: support/report/issue_analytics/issue_analytics.js:52
@@ -67236,7 +67280,7 @@
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:50
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:73
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1211
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1187
#: accounts/report/account_balance/account_balance.js:56
msgid "Stock Adjustment"
msgstr ""
@@ -67400,7 +67444,7 @@
msgid "Stock Entry {0} created"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:1254
+#: accounts/doctype/journal_entry/journal_entry.py:1140
msgid "Stock Entry {0} is not submitted"
msgstr ""
@@ -67412,7 +67456,7 @@
#. Label of a Date field in DocType 'Stock Settings'
#: stock/doctype/stock_settings/stock_settings.json
msgctxt "Stock Settings"
-msgid "Stock Frozen Upto"
+msgid "Stock Frozen Up To"
msgstr ""
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:20
@@ -67481,6 +67525,7 @@
msgstr ""
#. Name of a role
+#: accounts/doctype/fiscal_year/fiscal_year.json
#: assets/doctype/asset_movement/asset_movement.json
#: assets/doctype/location/location.json
#: buying/doctype/buying_settings/buying_settings.json
@@ -67488,6 +67533,7 @@
#: selling/doctype/product_bundle/product_bundle.json
#: setup/doctype/incoterm/incoterm.json
#: setup/doctype/item_group/item_group.json setup/doctype/uom/uom.json
+#: stock/doctype/bin/bin.json
#: stock/doctype/customs_tariff_number/customs_tariff_number.json
#: stock/doctype/delivery_note/delivery_note.json
#: stock/doctype/inventory_dimension/inventory_dimension.json
@@ -67533,7 +67579,7 @@
msgstr ""
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:254
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:299
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:306
#: stock/report/stock_qty_vs_serial_no_count/stock_qty_vs_serial_no_count.py:34
msgid "Stock Qty"
msgstr ""
@@ -67629,11 +67675,11 @@
#: selling/doctype/sales_order/sales_order.js:68
#: selling/doctype/sales_order/sales_order.js:74
#: selling/doctype/sales_order/sales_order.js:79
-#: selling/doctype/sales_order/sales_order.js:184
+#: selling/doctype/sales_order/sales_order.js:178
#: stock/doctype/pick_list/pick_list.js:110
#: stock/doctype/pick_list/pick_list.js:119
#: stock/doctype/pick_list/pick_list.js:120
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:466
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:467
#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:965
#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:978
#: stock/doctype/stock_reservation_entry/stock_reservation_entry.py:992
@@ -67658,7 +67704,7 @@
msgstr ""
#. Name of a DocType
-#: selling/doctype/sales_order/sales_order.js:389
+#: selling/doctype/sales_order/sales_order.js:383
#: stock/doctype/stock_reservation_entry/stock_reservation_entry.json
#: stock/report/reserved_stock/reserved_stock.js:56
#: stock/report/reserved_stock/reserved_stock.py:171
@@ -67693,7 +67739,7 @@
msgid "Stock Reserved Qty (in Stock UOM)"
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:1502
+#: stock/doctype/stock_entry/stock_entry.py:1498
msgid "Stock Return"
msgstr ""
@@ -67733,7 +67779,7 @@
msgstr ""
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:256
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:301
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:308
#: buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py:215
#: buying/report/supplier_quotation_comparison/supplier_quotation_comparison.py:232
#: stock/report/batch_item_expiry_status/batch_item_expiry_status.py:35
@@ -67917,7 +67963,7 @@
msgid "Stock UOM Quantity"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:374
+#: selling/doctype/sales_order/sales_order.js:368
msgid "Stock Unreservation"
msgstr ""
@@ -68028,7 +68074,7 @@
msgid "Stock cannot be reserved in the group warehouse {0}."
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1008
+#: accounts/doctype/sales_invoice/sales_invoice.py:1011
msgid "Stock cannot be updated against Delivery Note {0}"
msgstr ""
@@ -68062,7 +68108,7 @@
msgid "Stock will be reserved on submission of <b>Purchase Receipt</b> created against Material Receipt for Sales Order."
msgstr ""
-#: stock/utils.py:532
+#: stock/utils.py:579
msgid "Stock/Accounts can not be frozen as processing of backdated entries is going on. Please try again later."
msgstr ""
@@ -68147,7 +68193,7 @@
msgid "Stopped Work Order cannot be cancelled, Unstop it first to cancel"
msgstr ""
-#: setup/doctype/company/company.py:259
+#: setup/doctype/company/company.py:260
#: setup/setup_wizard/operations/defaults_setup.py:34
#: setup/setup_wizard/operations/install_fixtures.py:481
#: stock/doctype/item/item.py:282
@@ -68305,7 +68351,7 @@
#. Name of a DocType
#: buying/doctype/purchase_order/purchase_order.js:318
-#: controllers/subcontracting_controller.py:802
+#: controllers/subcontracting_controller.py:806
#: subcontracting/doctype/subcontracting_order/subcontracting_order.json
#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:78
msgid "Subcontracting Order"
@@ -68357,7 +68403,7 @@
msgid "Subcontracting Order Supplied Item"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:857
+#: buying/doctype/purchase_order/purchase_order.py:861
msgid "Subcontracting Order {0} created."
msgstr ""
@@ -68482,7 +68528,7 @@
msgid "Submit"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:853
+#: buying/doctype/purchase_order/purchase_order.py:857
#: subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:698
msgid "Submit Action Failed"
msgstr ""
@@ -68636,7 +68682,7 @@
#: accounts/doctype/subscription/subscription.json
#: buying/doctype/supplier_quotation/supplier_quotation_dashboard.py:16
#: selling/doctype/quotation/quotation_dashboard.py:12
-#: stock/doctype/delivery_note/delivery_note_dashboard.py:24
+#: stock/doctype/delivery_note/delivery_note_dashboard.py:25
#: stock/doctype/purchase_receipt/purchase_receipt_dashboard.py:31
msgid "Subscription"
msgstr ""
@@ -68673,11 +68719,11 @@
msgid "Subscription End Date"
msgstr ""
-#: accounts/doctype/subscription/subscription.py:350
+#: accounts/doctype/subscription/subscription.py:380
msgid "Subscription End Date is mandatory to follow calendar months"
msgstr ""
-#: accounts/doctype/subscription/subscription.py:340
+#: accounts/doctype/subscription/subscription.py:370
msgid "Subscription End Date must be after {0} as per the subscription plan"
msgstr ""
@@ -68776,12 +68822,6 @@
msgid "Subscriptions"
msgstr ""
-#. Label of a Data field in DocType 'Homepage Section Card'
-#: portal/doctype/homepage_section_card/homepage_section_card.json
-msgctxt "Homepage Section Card"
-msgid "Subtitle"
-msgstr ""
-
#. Label of a Int field in DocType 'Bulk Transaction Log'
#: bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.json
msgctxt "Bulk Transaction Log"
@@ -68827,7 +68867,7 @@
msgid "Successful"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:516
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.py:538
msgid "Successfully Reconciled"
msgstr ""
@@ -68839,10 +68879,6 @@
msgid "Successfully changed Stock UOM, please redefine conversion factors for new UOM."
msgstr ""
-#: setup/doctype/company/company.js:164
-msgid "Successfully deleted all transactions related to this company!"
-msgstr ""
-
#: accounts/doctype/bank_statement_import/bank_statement_import.js:468
msgid "Successfully imported {0}"
msgstr ""
@@ -69044,7 +69080,7 @@
#: public/js/purchase_trends_filters.js:66
#: regional/report/irs_1099/irs_1099.py:79
#: selling/doctype/customer/customer.js:207
-#: selling/doctype/sales_order/sales_order.js:1011
+#: selling/doctype/sales_order/sales_order.js:1005
#: stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.js:8
msgid "Supplier"
msgstr ""
@@ -69211,11 +69247,11 @@
msgid "Supplier"
msgstr ""
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Payables Workspace
#. Label of a Link in the Buying Workspace
#. Label of a Link in the Home Workspace
#. Label of a shortcut in the Home Workspace
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/payables/payables.json
#: buying/workspace/buying/buying.json setup/workspace/home/home.json
msgctxt "Supplier"
msgid "Supplier"
@@ -69352,7 +69388,7 @@
#. Name of a DocType
#: accounts/report/accounts_payable/accounts_payable.js:122
#: accounts/report/accounts_payable_summary/accounts_payable_summary.js:105
-#: accounts/report/accounts_receivable/accounts_receivable.py:1087
+#: accounts/report/accounts_receivable/accounts_receivable.py:1110
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:201
#: accounts/report/customer_ledger_summary/customer_ledger_summary.py:176
#: accounts/report/purchase_register/purchase_register.js:27
@@ -69440,7 +69476,7 @@
msgid "Supplier Invoice"
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:213
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:218
msgid "Supplier Invoice Date"
msgstr ""
@@ -69450,13 +69486,13 @@
msgid "Supplier Invoice Date"
msgstr ""
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1536
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1494
msgid "Supplier Invoice Date cannot be greater than Posting Date"
msgstr ""
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:59
-#: accounts/report/general_ledger/general_ledger.py:653
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:207
+#: accounts/report/general_ledger/general_ledger.py:656
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:212
msgid "Supplier Invoice No"
msgstr ""
@@ -69472,7 +69508,7 @@
msgid "Supplier Invoice No"
msgstr ""
-#: accounts/doctype/purchase_invoice/purchase_invoice.py:1561
+#: accounts/doctype/purchase_invoice/purchase_invoice.py:1519
msgid "Supplier Invoice No exists in Purchase Invoice {0}"
msgstr ""
@@ -69494,13 +69530,15 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
+#. Label of a Link in the Payables Workspace
#: accounts/report/supplier_ledger_summary/supplier_ledger_summary.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
+#: accounts/workspace/payables/payables.json
msgid "Supplier Ledger Summary"
msgstr ""
-#: accounts/report/accounts_receivable/accounts_receivable.py:1018
+#: accounts/report/accounts_receivable/accounts_receivable.py:1041
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:160
#: accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:197
#: accounts/report/purchase_register/purchase_register.py:177
@@ -70008,8 +70046,6 @@
#: manufacturing/doctype/bom_update_log/bom_update_log.json
#: manufacturing/doctype/downtime_entry/downtime_entry.json
#: manufacturing/doctype/job_card/job_card.json
-#: portal/doctype/homepage/homepage.json
-#: portal/doctype/homepage_section/homepage_section.json
#: projects/doctype/activity_type/activity_type.json
#: projects/doctype/project_template/project_template.json
#: projects/doctype/project_type/project_type.json
@@ -70097,7 +70133,7 @@
msgid "System will fetch all the entries if limit value is zero."
msgstr ""
-#: controllers/accounts_controller.py:1640
+#: controllers/accounts_controller.py:1673
msgid "System will not check over billing since amount for Item {0} in {1} is zero"
msgstr ""
@@ -70108,7 +70144,7 @@
msgid "System will notify to increase or decrease quantity or amount "
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:224
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:229
#: accounts/report/tds_computation_summary/tds_computation_summary.py:125
msgid "TCS Rate %"
msgstr ""
@@ -70122,7 +70158,7 @@
msgid "TDS Payable"
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:224
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:229
#: accounts/report/tds_computation_summary/tds_computation_summary.py:125
msgid "TDS Rate %"
msgstr ""
@@ -70137,12 +70173,6 @@
msgid "Tag"
msgstr ""
-#. Label of a Data field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Tag Line"
-msgstr ""
-
#. Label of an action in the Onboarding Step 'Accounts Settings'
#: accounts/onboarding_step/accounts_settings/accounts_settings.json
msgid "Take a quick walk-through of Accounts Settings"
@@ -70219,23 +70249,23 @@
msgid "Target Asset Location"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:239
+#: assets/doctype/asset_capitalization/asset_capitalization.py:248
msgid "Target Asset {0} cannot be cancelled"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:237
+#: assets/doctype/asset_capitalization/asset_capitalization.py:246
msgid "Target Asset {0} cannot be submitted"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:233
+#: assets/doctype/asset_capitalization/asset_capitalization.py:242
msgid "Target Asset {0} cannot be {1}"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:243
+#: assets/doctype/asset_capitalization/asset_capitalization.py:252
msgid "Target Asset {0} does not belong to company {1}"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:224
+#: assets/doctype/asset_capitalization/asset_capitalization.py:233
msgid "Target Asset {0} needs to be composite asset"
msgstr ""
@@ -70315,15 +70345,15 @@
msgid "Target Item Name"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:194
+#: assets/doctype/asset_capitalization/asset_capitalization.py:203
msgid "Target Item {0} is neither a Fixed Asset nor a Stock Item"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:198
+#: assets/doctype/asset_capitalization/asset_capitalization.py:207
msgid "Target Item {0} must be a Fixed Asset item"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:200
+#: assets/doctype/asset_capitalization/asset_capitalization.py:209
msgid "Target Item {0} must be a Stock Item"
msgstr ""
@@ -70363,7 +70393,7 @@
msgid "Target Qty"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:205
+#: assets/doctype/asset_capitalization/asset_capitalization.py:214
msgid "Target Qty must be a positive number"
msgstr ""
@@ -70433,7 +70463,7 @@
msgid "Target Warehouse Address"
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:215
+#: assets/doctype/asset_capitalization/asset_capitalization.py:224
msgid "Target Warehouse is mandatory for Decapitalization"
msgstr ""
@@ -70631,7 +70661,7 @@
msgid "Tax Account"
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:242
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:247
#: accounts/report/tds_computation_summary/tds_computation_summary.py:137
msgid "Tax Amount"
msgstr ""
@@ -70896,6 +70926,11 @@
msgid "Tax Id: "
msgstr ""
+#. Label of a Card Break in the Accounting Workspace
+#: accounts/workspace/accounting/accounting.json
+msgid "Tax Masters"
+msgstr ""
+
#: accounts/doctype/account/account_tree.js:119
msgid "Tax Rate"
msgstr ""
@@ -70906,6 +70941,18 @@
msgid "Tax Rate"
msgstr ""
+#. Label of a Float field in DocType 'Purchase Taxes and Charges'
+#: accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.json
+msgctxt "Purchase Taxes and Charges"
+msgid "Tax Rate"
+msgstr ""
+
+#. Label of a Float field in DocType 'Sales Taxes and Charges'
+#: accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.json
+msgctxt "Sales Taxes and Charges"
+msgid "Tax Rate"
+msgstr ""
+
#. Label of a Table field in DocType 'Item Tax Template'
#: accounts/doctype/item_tax_template/item_tax_template.json
msgctxt "Item Tax Template"
@@ -71102,7 +71149,7 @@
msgid "Tax will be withheld only for amount exceeding the cumulative threshold"
msgstr ""
-#: controllers/taxes_and_totals.py:1009
+#: controllers/taxes_and_totals.py:1018
msgid "Taxable Amount"
msgstr ""
@@ -71112,12 +71159,10 @@
msgid "Taxable Amount"
msgstr ""
-#. Label of a Card Break in the Accounting Workspace
#: accounts/doctype/pos_closing_entry/closing_voucher_details.html:60
#: accounts/doctype/tax_category/tax_category_dashboard.py:12
#: accounts/report/sales_payment_summary/sales_payment_summary.py:26
#: accounts/report/sales_payment_summary/sales_payment_summary.py:42
-#: accounts/workspace/accounting/accounting.json
msgid "Taxes"
msgstr ""
@@ -71656,7 +71701,9 @@
msgid "Terms and Conditions"
msgstr ""
+#. Label of a Link in the Accounting Workspace
#. Label of a Text Editor field in DocType 'Terms and Conditions'
+#: accounts/workspace/accounting/accounting.json
#: setup/doctype/terms_and_conditions/terms_and_conditions.json
msgctxt "Terms and Conditions"
msgid "Terms and Conditions"
@@ -71704,10 +71751,8 @@
msgid "Terms and Conditions Help"
msgstr ""
-#. Label of a Link in the Accounting Workspace
#. Label of a Link in the Buying Workspace
#. Label of a Link in the Selling Workspace
-#: accounts/workspace/accounting/accounting.json
#: buying/workspace/buying/buying.json selling/workspace/selling/selling.json
msgctxt "Terms and Conditions"
msgid "Terms and Conditions Template"
@@ -71715,7 +71760,7 @@
#. Name of a DocType
#: accounts/report/accounts_receivable/accounts_receivable.js:145
-#: accounts/report/accounts_receivable/accounts_receivable.py:1071
+#: accounts/report/accounts_receivable/accounts_receivable.py:1094
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.js:111
#: accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:185
#: accounts/report/customer_ledger_summary/customer_ledger_summary.js:68
@@ -71723,7 +71768,7 @@
#: accounts/report/gross_profit/gross_profit.py:335
#: accounts/report/inactive_sales_items/inactive_sales_items.js:9
#: accounts/report/inactive_sales_items/inactive_sales_items.py:21
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:247
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:254
#: accounts/report/sales_register/sales_register.py:207
#: crm/report/lead_details/lead_details.js:47
#: crm/report/lead_details/lead_details.py:34
@@ -71974,7 +72019,7 @@
msgid "The Loyalty Program isn't valid for the selected company"
msgstr ""
-#: accounts/doctype/payment_request/payment_request.py:723
+#: accounts/doctype/payment_request/payment_request.py:747
msgid "The Payment Request {0} is already paid, cannot process payment twice"
msgstr ""
@@ -71986,7 +72031,7 @@
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 ""
-#: stock/doctype/stock_entry/stock_entry.py:1765
+#: stock/doctype/stock_entry/stock_entry.py:1761
msgid "The Process Loss Qty has reset as per job cards Process Loss Qty"
msgstr ""
@@ -72162,7 +72207,7 @@
msgid "The selected BOMs are not for the same item"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:417
+#: accounts/doctype/pos_invoice/pos_invoice.py:415
msgid "The selected change account {} doesn't belongs to Company {}."
msgstr ""
@@ -72178,7 +72223,7 @@
msgid "The seller and the buyer cannot be the same"
msgstr ""
-#: stock/doctype/batch/batch.py:376
+#: stock/doctype/batch/batch.py:378
msgid "The serial no {0} does not belong to item {1}"
msgstr ""
@@ -72194,7 +72239,7 @@
msgid "The shares don't exist with the {0}"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:460
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:461
msgid "The stock has been reserved for the following Items and Warehouses, un-reserve the same to {0} the Stock Reconciliation: <br /><br /> {1}"
msgstr ""
@@ -72202,6 +72247,11 @@
msgid "The sync has started in the background, please check the {0} list for new records."
msgstr ""
+#: accounts/doctype/journal_entry/journal_entry.py:155
+#: accounts/doctype/journal_entry/journal_entry.py:162
+msgid "The task has been enqueued as a background job."
+msgstr ""
+
#: stock/doctype/stock_entry/stock_entry.py:244
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 Entry and revert to the Draft stage"
msgstr ""
@@ -72210,11 +72260,11 @@
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 Entry and revert to the Submitted stage"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:753
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:754
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 ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:764
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:765
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 ""
@@ -72237,7 +72287,7 @@
msgid "The value of {0} differs between Items {1} and {2}"
msgstr ""
-#: controllers/item_variant.py:147
+#: controllers/item_variant.py:151
msgid "The value {0} is already assigned to an existing Item {1}."
msgstr ""
@@ -72258,14 +72308,14 @@
msgstr ""
#: stock/doctype/material_request/material_request.py:779
-msgid "The {0} {1} created sucessfully"
+msgid "The {0} {1} created successfully"
msgstr ""
#: manufacturing/doctype/job_card/job_card.py:762
msgid "The {0} {1} is used to calculate the valuation cost for the finished good {2}."
msgstr ""
-#: assets/doctype/asset/asset.py:500
+#: assets/doctype/asset/asset.py:501
msgid "There are active maintenance or repairs against the asset. You must complete all of them before cancelling the asset."
msgstr ""
@@ -72285,7 +72335,7 @@
msgid "There are only {0} asset created or linked to {1}. Please create or link {2} Assets with respective document."
msgstr ""
-#: stock/doctype/item/item.js:843
+#: stock/doctype/item/item.js:829
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 <a href='https://docs.erpnext.com/docs/v13/user/manual/en/stock/articles/item-valuation-fifo-and-moving-average' target='_blank'>Item Valuation, FIFO and Moving Average.</a>"
msgstr ""
@@ -72309,7 +72359,7 @@
msgid "There is already an active Subcontracting BOM {0} for the Finished Good {1}."
msgstr ""
-#: stock/doctype/batch/batch.py:384
+#: stock/doctype/batch/batch.py:386
msgid "There is no batch found against the {0}: {1}"
msgstr ""
@@ -72346,7 +72396,7 @@
msgid "There were errors while sending email. Please try again."
msgstr ""
-#: accounts/utils.py:896
+#: accounts/utils.py:924
msgid "There were issues unlinking payment entry {0}."
msgstr ""
@@ -72393,11 +72443,11 @@
msgid "This covers all scorecards tied to this Setup"
msgstr ""
-#: controllers/status_updater.py:341
+#: controllers/status_updater.py:350
msgid "This document is over limit by {0} {1} for item {4}. Are you making another {3} against the same {2}?"
msgstr ""
-#: stock/doctype/delivery_note/delivery_note.js:369
+#: stock/doctype/delivery_note/delivery_note.js:360
msgid "This field is used to set the 'Customer'."
msgstr ""
@@ -72465,10 +72515,6 @@
msgid "This is a root territory and cannot be edited."
msgstr ""
-#: portal/doctype/homepage/homepage.py:31
-msgid "This is an example website auto-generated from ERPNext"
-msgstr ""
-
#: stock/doctype/item/item_dashboard.py:7
msgid "This is based on stock movement. See {0} for details"
msgstr ""
@@ -72501,7 +72547,7 @@
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 ""
-#: stock/doctype/item/item.js:833
+#: stock/doctype/item/item.js:819
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 ""
@@ -72509,7 +72555,7 @@
msgid "This item filter has already been applied for the {0}"
msgstr ""
-#: stock/doctype/delivery_note/delivery_note.js:380
+#: stock/doctype/delivery_note/delivery_note.js:371
msgid "This option can be checked to edit the 'Posting Date' and 'Posting Time' fields."
msgstr ""
@@ -72517,7 +72563,7 @@
msgid "This schedule was created when Asset {0} was adjusted through Asset Value Adjustment {1}."
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:509
+#: assets/doctype/asset_capitalization/asset_capitalization.py:516
msgid "This schedule was created when Asset {0} was consumed through Asset Capitalization {1}."
msgstr ""
@@ -72525,7 +72571,7 @@
msgid "This schedule was created when Asset {0} was repaired through Asset Repair {1}."
msgstr ""
-#: assets/doctype/asset_capitalization/asset_capitalization.py:676
+#: assets/doctype/asset_capitalization/asset_capitalization.py:674
msgid "This schedule was created when Asset {0} was restored on Asset Capitalization {1}'s cancellation."
msgstr ""
@@ -72533,7 +72579,7 @@
msgid "This schedule was created when Asset {0} was restored."
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1328
+#: accounts/doctype/sales_invoice/sales_invoice.py:1325
msgid "This schedule was created when Asset {0} was returned through Sales Invoice {1}."
msgstr ""
@@ -72541,11 +72587,11 @@
msgid "This schedule was created when Asset {0} was scrapped."
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1339
+#: accounts/doctype/sales_invoice/sales_invoice.py:1336
msgid "This schedule was created when Asset {0} was sold through Sales Invoice {1}."
msgstr ""
-#: assets/doctype/asset/asset.py:1111
+#: assets/doctype/asset/asset.py:1117
msgid "This schedule was created when Asset {0} was updated after being split into new Asset {1}."
msgstr ""
@@ -72561,7 +72607,7 @@
msgid "This schedule was created when Asset {0}'s shifts were adjusted through Asset Shift Allocation {1}."
msgstr ""
-#: assets/doctype/asset/asset.py:1174
+#: assets/doctype/asset/asset.py:1180
msgid "This schedule was created when new Asset {0} was split from Asset {1}."
msgstr ""
@@ -72572,7 +72618,7 @@
msgid "This section allows the user to set the Body and Closing text of the Dunning Letter for the Dunning Type based on language, which can be used in Print."
msgstr ""
-#: stock/doctype/delivery_note/delivery_note.js:374
+#: stock/doctype/delivery_note/delivery_note.js:365
msgid "This table is used to set details about the 'Item', 'Qty', 'Basic Rate', etc."
msgstr ""
@@ -72880,7 +72926,7 @@
msgid "Timesheet for tasks."
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:753
+#: accounts/doctype/sales_invoice/sales_invoice.py:756
msgid "Timesheet {0} is already completed or cancelled"
msgstr ""
@@ -72895,7 +72941,7 @@
msgstr ""
#: utilities/activation.py:126
-msgid "Timesheets help keep track of time, cost and billing for activites done by your team"
+msgid "Timesheets help keep track of time, cost and billing for activities done by your team"
msgstr ""
#. Label of a Section Break field in DocType 'Communication Medium'
@@ -72927,18 +72973,6 @@
msgid "Title"
msgstr ""
-#. Label of a Data field in DocType 'Homepage'
-#: portal/doctype/homepage/homepage.json
-msgctxt "Homepage"
-msgid "Title"
-msgstr ""
-
-#. Label of a Data field in DocType 'Homepage Section Card'
-#: portal/doctype/homepage_section_card/homepage_section_card.json
-msgctxt "Homepage Section Card"
-msgid "Title"
-msgstr ""
-
#. Label of a Data field in DocType 'Incoterm'
#: setup/doctype/incoterm/incoterm.json
msgctxt "Incoterm"
@@ -73122,9 +73156,9 @@
msgid "To Be Paid"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order_list.js:20
-#: selling/doctype/sales_order/sales_order_list.js:34
-#: selling/doctype/sales_order/sales_order_list.js:37
+#: buying/doctype/purchase_order/purchase_order_list.js:22
+#: selling/doctype/sales_order/sales_order_list.js:36
+#: selling/doctype/sales_order/sales_order_list.js:39
#: stock/doctype/delivery_note/delivery_note_list.js:12
#: stock/doctype/purchase_receipt/purchase_receipt_list.js:12
msgid "To Bill"
@@ -73356,7 +73390,7 @@
msgid "To Date"
msgstr ""
-#: controllers/accounts_controller.py:377
+#: controllers/accounts_controller.py:380
#: setup/doctype/holiday_list/holiday_list.py:115
msgid "To Date cannot be before From Date"
msgstr ""
@@ -73367,7 +73401,7 @@
msgid "To Date cannot be before From Date."
msgstr ""
-#: accounts/report/financial_statements.py:145
+#: accounts/report/financial_statements.py:133
msgid "To Date cannot be less than From Date"
msgstr ""
@@ -73385,8 +73419,8 @@
msgid "To Datetime"
msgstr ""
-#: selling/doctype/sales_order/sales_order_list.js:20
-#: selling/doctype/sales_order/sales_order_list.js:28
+#: selling/doctype/sales_order/sales_order_list.js:22
+#: selling/doctype/sales_order/sales_order_list.js:30
msgid "To Deliver"
msgstr ""
@@ -73403,7 +73437,7 @@
msgid "To Deliver"
msgstr ""
-#: selling/doctype/sales_order/sales_order_list.js:24
+#: selling/doctype/sales_order/sales_order_list.js:26
msgid "To Deliver and Bill"
msgstr ""
@@ -73482,6 +73516,17 @@
msgid "To Package No."
msgstr ""
+#: buying/doctype/purchase_order/purchase_order_list.js:12
+#: selling/doctype/sales_order/sales_order_list.js:14
+msgid "To Pay"
+msgstr ""
+
+#. Option for the 'Status' (Select) field in DocType 'Sales Order'
+#: selling/doctype/sales_order/sales_order.json
+msgctxt "Sales Order"
+msgid "To Pay"
+msgstr ""
+
#. Label of a Date field in DocType 'Payment Reconciliation'
#: accounts/doctype/payment_reconciliation/payment_reconciliation.json
msgctxt "Payment Reconciliation"
@@ -73511,7 +73556,7 @@
msgid "To Range"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order_list.js:16
+#: buying/doctype/purchase_order/purchase_order_list.js:18
msgid "To Receive"
msgstr ""
@@ -73521,7 +73566,7 @@
msgid "To Receive"
msgstr ""
-#: buying/doctype/purchase_order/purchase_order_list.js:13
+#: buying/doctype/purchase_order/purchase_order_list.js:15
msgid "To Receive and Bill"
msgstr ""
@@ -73656,11 +73701,11 @@
msgid "To add subcontracted Item's raw materials if include exploded items is disabled."
msgstr ""
-#: controllers/status_updater.py:336
+#: controllers/status_updater.py:345
msgid "To allow over billing, update \"Over Billing Allowance\" in Accounts Settings or the Item."
msgstr ""
-#: controllers/status_updater.py:332
+#: controllers/status_updater.py:341
msgid "To allow over receipt / delivery, update \"Over Receipt/Delivery Allowance\" in Stock Settings or the Item."
msgstr ""
@@ -73677,7 +73722,7 @@
msgid "To be Delivered to Customer"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:520
+#: accounts/doctype/sales_invoice/sales_invoice.py:521
msgid "To cancel a {} you need to cancel the POS Closing Entry {}."
msgstr ""
@@ -73697,8 +73742,8 @@
msgid "To include non-stock items in the material request planning. i.e. Items for which 'Maintain Stock' checkbox is unticked."
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1615
-#: controllers/accounts_controller.py:2490
+#: accounts/doctype/payment_entry/payment_entry.py:1625
+#: controllers/accounts_controller.py:2559
msgid "To include tax in row {0} in Item rate, taxes in rows {1} must also be included"
msgstr ""
@@ -73710,7 +73755,7 @@
msgid "To overrule this, enable '{0}' in company {1}"
msgstr ""
-#: controllers/item_variant.py:150
+#: controllers/item_variant.py:154
msgid "To still proceed with editing this Attribute Value, enable {0} in Item Variant Settings."
msgstr ""
@@ -73727,7 +73772,7 @@
msgid "To use a different finance book, please uncheck 'Include Default FB Assets'"
msgstr ""
-#: accounts/report/financial_statements.py:588
+#: accounts/report/financial_statements.py:576
#: accounts/report/general_ledger/general_ledger.py:273
#: accounts/report/trial_balance/trial_balance.py:278
msgid "To use a different finance book, please uncheck 'Include Default FB Entries'"
@@ -73768,9 +73813,9 @@
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:277
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:315
#: accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py:233
-#: accounts/report/financial_statements.py:664
+#: accounts/report/financial_statements.py:652
#: accounts/report/general_ledger/general_ledger.py:56
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:621
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:636
#: accounts/report/profitability_analysis/profitability_analysis.py:93
#: accounts/report/profitability_analysis/profitability_analysis.py:98
#: accounts/report/trial_balance/trial_balance.py:344
@@ -74024,7 +74069,7 @@
msgid "Total Allocations"
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:230
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:235
#: accounts/report/tds_computation_summary/tds_computation_summary.py:131
#: selling/page/sales_funnel/sales_funnel.py:151
#: stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py:67
@@ -74251,7 +74296,7 @@
msgid "Total Credit"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:208
+#: accounts/doctype/journal_entry/journal_entry.py:225
msgid "Total Credit/ Debit Amount should be same as linked Journal Entry"
msgstr ""
@@ -74261,7 +74306,7 @@
msgid "Total Debit"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:850
+#: accounts/doctype/journal_entry/journal_entry.py:802
msgid "Total Debit must be equal to Total Credit. The difference is {0}"
msgstr ""
@@ -74459,7 +74504,7 @@
msgid "Total Order Value"
msgstr ""
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:614
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:629
msgid "Total Other Charges"
msgstr ""
@@ -74491,7 +74536,7 @@
msgid "Total Paid Amount"
msgstr ""
-#: controllers/accounts_controller.py:2197
+#: controllers/accounts_controller.py:2266
msgid "Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total"
msgstr ""
@@ -74675,7 +74720,7 @@
msgid "Total Tasks"
msgstr ""
-#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:607
+#: accounts/report/item_wise_sales_register/item_wise_sales_register.py:622
#: accounts/report/purchase_register/purchase_register.py:263
msgid "Total Tax"
msgstr ""
@@ -74907,7 +74952,7 @@
msgid "Total Working Hours"
msgstr ""
-#: controllers/accounts_controller.py:1800
+#: controllers/accounts_controller.py:1838
msgid "Total advance ({0}) against Order {1} cannot be greater than the Grand Total ({2})"
msgstr ""
@@ -74915,12 +74960,12 @@
msgid "Total allocated percentage for sales team should be 100"
msgstr ""
-#: selling/doctype/customer/customer.py:156
+#: selling/doctype/customer/customer.py:157
msgid "Total contribution percentage should be equal to 100"
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:446
-#: accounts/doctype/sales_invoice/sales_invoice.py:504
+#: accounts/doctype/pos_invoice/pos_invoice.py:444
+#: accounts/doctype/sales_invoice/sales_invoice.py:505
msgid "Total payments amount can't be greater than {}"
msgstr ""
@@ -74930,8 +74975,8 @@
#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:765
#: accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:766
-#: accounts/report/financial_statements.py:351
-#: accounts/report/financial_statements.py:352
+#: accounts/report/financial_statements.py:339
+#: accounts/report/financial_statements.py:340
msgid "Total {0} ({1})"
msgstr ""
@@ -75178,7 +75223,7 @@
msgid "Transaction Settings"
msgstr ""
-#: accounts/report/tax_withholding_details/tax_withholding_details.py:253
+#: accounts/report/tax_withholding_details/tax_withholding_details.py:258
msgid "Transaction Type"
msgstr ""
@@ -75192,11 +75237,15 @@
msgid "Transaction currency must be same as Payment Gateway currency"
msgstr ""
+#: accounts/doctype/bank_transaction/bank_transaction.py:64
+msgid "Transaction currency: {0} cannot be different from Bank Account({1}) currency: {2}"
+msgstr ""
+
#: manufacturing/doctype/job_card/job_card.py:647
msgid "Transaction not allowed against stopped Work Order {0}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1092
+#: accounts/doctype/payment_entry/payment_entry.py:1112
msgid "Transaction reference no {0} dated {1}"
msgstr ""
@@ -75290,7 +75339,7 @@
msgstr ""
#: stock/doctype/material_request/material_request_list.js:27
-msgid "Transfered"
+msgid "Transferred"
msgstr ""
#. Option for the 'Status' (Select) field in DocType 'Material Request'
@@ -75428,10 +75477,11 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
#. Label of a shortcut in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#: accounts/report/trial_balance/trial_balance.json
#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
msgid "Trial Balance"
msgstr ""
@@ -75441,9 +75491,9 @@
msgstr ""
#. Name of a report
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#: accounts/report/trial_balance_for_party/trial_balance_for_party.json
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
msgid "Trial Balance for Party"
msgstr ""
@@ -75453,7 +75503,7 @@
msgid "Trial Period End Date"
msgstr ""
-#: accounts/doctype/subscription/subscription.py:326
+#: accounts/doctype/subscription/subscription.py:356
msgid "Trial Period End Date Cannot be before Trial Period Start Date"
msgstr ""
@@ -75463,18 +75513,18 @@
msgid "Trial Period Start Date"
msgstr ""
-#: accounts/doctype/subscription/subscription.py:332
+#: accounts/doctype/subscription/subscription.py:362
msgid "Trial Period Start date cannot be after Subscription Start Date"
msgstr ""
#: accounts/doctype/subscription/subscription_list.js:4
-msgid "Trialling"
+msgid "Trialing"
msgstr ""
#. Option for the 'Status' (Select) field in DocType 'Subscription'
#: accounts/doctype/subscription/subscription.json
msgctxt "Subscription"
-msgid "Trialling"
+msgid "Trialing"
msgstr ""
#. Description of the 'General Ledger' (Int) field in DocType 'Accounts
@@ -75669,9 +75719,9 @@
msgid "Types of activities for Time Logs"
msgstr ""
-#. Label of a Link in the Accounting Workspace
+#. Label of a Link in the Financial Reports Workspace
#. Name of a report
-#: accounts/workspace/accounting/accounting.json
+#: accounts/workspace/financial_reports/financial_reports.json
#: regional/report/uae_vat_201/uae_vat_201.json
msgid "UAE VAT 201"
msgstr ""
@@ -75699,7 +75749,7 @@
#: manufacturing/report/bom_explorer/bom_explorer.py:58
#: manufacturing/report/bom_operations_time/bom_operations_time.py:110
#: public/js/stock_analytics.js:63 public/js/utils.js:632
-#: selling/doctype/sales_order/sales_order.js:1005
+#: selling/doctype/sales_order/sales_order.js:999
#: selling/report/item_wise_sales_history/item_wise_sales_history.py:43
#: selling/report/sales_analytics/sales_analytics.py:76
#: setup/doctype/uom/uom.json
@@ -76044,7 +76094,7 @@
msgid "UOM Name"
msgstr ""
-#: stock/doctype/stock_entry/stock_entry.py:2777
+#: stock/doctype/stock_entry/stock_entry.py:2773
msgid "UOM conversion factor required for UOM: {0} in Item: {1}"
msgstr ""
@@ -76092,10 +76142,6 @@
msgid "UnReconcile"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:791
-msgid "Unable to automatically determine {0} accounts. Set them up in the {1} table if needed."
-msgstr ""
-
#: setup/utils.py:117
msgid "Unable to find exchange rate for {0} to {1} for key date {2}. Please create a Currency Exchange record manually"
msgstr ""
@@ -76381,11 +76427,11 @@
msgid "Unreserve"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:424
+#: selling/doctype/sales_order/sales_order.js:418
msgid "Unreserve Stock"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:436
+#: selling/doctype/sales_order/sales_order.js:430
#: stock/doctype/pick_list/pick_list.js:252
msgid "Unreserving Stock..."
msgstr ""
@@ -76472,9 +76518,9 @@
#: accounts/doctype/cost_center/cost_center.js:102
#: public/js/bom_configurator/bom_configurator.bundle.js:367
#: public/js/utils.js:551 public/js/utils.js:767
-#: public/js/utils/barcode_scanner.js:161
+#: public/js/utils/barcode_scanner.js:176
#: public/js/utils/serial_no_batch_selector.js:17
-#: public/js/utils/serial_no_batch_selector.js:176
+#: public/js/utils/serial_no_batch_selector.js:180
#: stock/doctype/stock_reconciliation/stock_reconciliation.js:160
msgid "Update"
msgstr ""
@@ -76690,7 +76736,7 @@
msgid "Update latest price in all BOMs"
msgstr ""
-#: assets/doctype/asset/asset.py:337
+#: assets/doctype/asset/asset.py:338
msgid "Update stock must be enabled for the purchase invoice {0}"
msgstr ""
@@ -76819,12 +76865,6 @@
msgid "Use for Shopping Cart"
msgstr ""
-#. Description of the 'Section HTML' (Code) field in DocType 'Homepage Section'
-#: portal/doctype/homepage_section/homepage_section.json
-msgctxt "Homepage Section"
-msgid "Use this field to render any custom HTML in the section."
-msgstr ""
-
#. Label of a Int field in DocType 'Coupon Code'
#: accounts/doctype/coupon_code/coupon_code.json
msgctxt "Coupon Code"
@@ -76904,7 +76944,8 @@
msgstr ""
#. Label of a Link field in DocType 'Employee'
-#. Option for the 'Prefered Contact Email' (Select) field in DocType 'Employee'
+#. Option for the 'Preferred Contact Email' (Select) field in DocType
+#. 'Employee'
#: setup/doctype/employee/employee.json
msgctxt "Employee"
msgid "User ID"
@@ -76914,7 +76955,7 @@
msgid "User ID not set for Employee {0}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.js:554
+#: accounts/doctype/journal_entry/journal_entry.js:544
msgid "User Remark"
msgstr ""
@@ -77009,10 +77050,6 @@
msgid "Users with this role are allowed to set frozen accounts and create / modify accounting entries against frozen accounts"
msgstr ""
-#: stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js:77
-msgid "Using CSV File"
-msgstr ""
-
#: stock/doctype/stock_settings/stock_settings.js:22
msgid "Using negative stock disables FIFO/Moving average valuation when inventory is negative."
msgstr ""
@@ -77094,7 +77131,7 @@
msgstr ""
#: stock/doctype/item_price/item_price.py:62
-msgid "Valid From Date must be lesser than Valid Upto Date."
+msgid "Valid From Date must be lesser than Valid Up To Date."
msgstr ""
#: regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py:45
@@ -77125,45 +77162,45 @@
#. Label of a Date field in DocType 'Coupon Code'
#: accounts/doctype/coupon_code/coupon_code.json
msgctxt "Coupon Code"
-msgid "Valid Upto"
+msgid "Valid Up To"
msgstr ""
#. Label of a Date field in DocType 'Employee'
#: setup/doctype/employee/employee.json
msgctxt "Employee"
-msgid "Valid Upto"
+msgid "Valid Up To"
msgstr ""
#. Label of a Date field in DocType 'Item Price'
#: stock/doctype/item_price/item_price.json
msgctxt "Item Price"
-msgid "Valid Upto"
+msgid "Valid Up To"
msgstr ""
#. Label of a Date field in DocType 'Lower Deduction Certificate'
#: regional/doctype/lower_deduction_certificate/lower_deduction_certificate.json
msgctxt "Lower Deduction Certificate"
-msgid "Valid Upto"
+msgid "Valid Up To"
msgstr ""
#. Label of a Date field in DocType 'Pricing Rule'
#: accounts/doctype/pricing_rule/pricing_rule.json
msgctxt "Pricing Rule"
-msgid "Valid Upto"
+msgid "Valid Up To"
msgstr ""
#. Label of a Date field in DocType 'Promotional Scheme'
#: accounts/doctype/promotional_scheme/promotional_scheme.json
msgctxt "Promotional Scheme"
-msgid "Valid Upto"
+msgid "Valid Up To"
msgstr ""
#: regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py:40
-msgid "Valid Upto date cannot be before Valid From date"
+msgid "Valid Up To date cannot be before Valid From date"
msgstr ""
#: regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py:48
-msgid "Valid Upto date not in Fiscal Year {0}"
+msgid "Valid Up To date not in Fiscal Year {0}"
msgstr ""
#. Label of a Table field in DocType 'Shipping Rule'
@@ -77180,7 +77217,7 @@
msgid "Valid till Date cannot be before Transaction Date"
msgstr ""
-#: selling/doctype/quotation/quotation.py:145
+#: selling/doctype/quotation/quotation.py:146
msgid "Valid till date cannot be before transaction date"
msgstr ""
@@ -77238,7 +77275,7 @@
msgid "Validity in Days"
msgstr ""
-#: selling/doctype/quotation/quotation.py:343
+#: selling/doctype/quotation/quotation.py:344
msgid "Validity period of this quotation has ended."
msgstr ""
@@ -77266,7 +77303,7 @@
#: accounts/report/gross_profit/gross_profit.py:266
#: stock/report/item_prices/item_prices.py:57
-#: stock/report/serial_no_ledger/serial_no_ledger.py:65
+#: stock/report/serial_no_ledger/serial_no_ledger.py:64
#: stock/report/stock_balance/stock_balance.py:449
#: stock/report/stock_ledger/stock_ledger.py:207
msgid "Valuation Rate"
@@ -77355,11 +77392,11 @@
msgid "Valuation Rate (In / Out)"
msgstr ""
-#: stock/stock_ledger.py:1599
+#: stock/stock_ledger.py:1688
msgid "Valuation Rate Missing"
msgstr ""
-#: stock/stock_ledger.py:1577
+#: stock/stock_ledger.py:1666
msgid "Valuation Rate for the Item {0}, is required to do accounting entries for {1} {2}."
msgstr ""
@@ -77367,7 +77404,7 @@
msgid "Valuation Rate is mandatory if Opening Stock entered"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:513
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:514
msgid "Valuation Rate required for Item {0} at row {1}"
msgstr ""
@@ -77378,16 +77415,16 @@
msgid "Valuation and Total"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:730
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:731
msgid "Valuation rate for customer provided items has been set to zero."
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1639
-#: controllers/accounts_controller.py:2514
+#: accounts/doctype/payment_entry/payment_entry.py:1649
+#: controllers/accounts_controller.py:2583
msgid "Valuation type charges can not be marked as Inclusive"
msgstr ""
-#: public/js/controllers/accounts.js:202
+#: public/js/controllers/accounts.js:203
msgid "Valuation type charges can not marked as Inclusive"
msgstr ""
@@ -77477,7 +77514,7 @@
msgid "Value Proposition"
msgstr ""
-#: controllers/item_variant.py:121
+#: controllers/item_variant.py:125
msgid "Value for Attribute {0} must be within the range of {1} to {2} in the increments of {3} for Item {4}"
msgstr ""
@@ -77862,12 +77899,12 @@
msgid "Voucher Name"
msgstr ""
-#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:252
-#: accounts/report/accounts_receivable/accounts_receivable.py:1027
+#: accounts/doctype/payment_reconciliation/payment_reconciliation.js:273
+#: accounts/report/accounts_receivable/accounts_receivable.py:1050
#: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.js:42
#: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py:213
#: accounts/report/general_ledger/general_ledger.js:49
-#: accounts/report/general_ledger/general_ledger.py:622
+#: accounts/report/general_ledger/general_ledger.py:625
#: accounts/report/payment_ledger/payment_ledger.js:65
#: accounts/report/payment_ledger/payment_ledger.py:167
#: accounts/report/voucher_wise_balance/voucher_wise_balance.py:19
@@ -77880,7 +77917,7 @@
#: stock/report/reserved_stock/reserved_stock.py:151
#: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:51
#: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:114
-#: stock/report/serial_no_ledger/serial_no_ledger.py:31
+#: stock/report/serial_no_ledger/serial_no_ledger.py:30
#: stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:118
#: stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:142
#: stock/report/stock_ledger_variance/stock_ledger_variance.py:72
@@ -77951,7 +77988,7 @@
msgid "Voucher Qty"
msgstr ""
-#: accounts/report/general_ledger/general_ledger.py:616
+#: accounts/report/general_ledger/general_ledger.py:619
msgid "Voucher Subtype"
msgstr ""
@@ -77961,9 +77998,9 @@
msgid "Voucher Subtype"
msgstr ""
-#: accounts/report/accounts_receivable/accounts_receivable.py:1025
+#: accounts/report/accounts_receivable/accounts_receivable.py:1048
#: accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py:203
-#: accounts/report/general_ledger/general_ledger.py:614
+#: accounts/report/general_ledger/general_ledger.py:617
#: accounts/report/payment_ledger/payment_ledger.py:158
#: accounts/report/purchase_register/purchase_register.py:158
#: accounts/report/sales_register/sales_register.py:172
@@ -78051,11 +78088,11 @@
msgid "Voucher Type"
msgstr ""
-#: accounts/doctype/bank_transaction/bank_transaction.py:159
+#: accounts/doctype/bank_transaction/bank_transaction.py:177
msgid "Voucher {0} is over-allocated by {1}"
msgstr ""
-#: accounts/doctype/bank_transaction/bank_transaction.py:231
+#: accounts/doctype/bank_transaction/bank_transaction.py:249
msgid "Voucher {0} value is broken: {1}"
msgstr ""
@@ -78165,9 +78202,9 @@
#: manufacturing/report/production_planning_report/production_planning_report.py:405
#: manufacturing/report/work_order_stock_report/work_order_stock_report.js:9
#: public/js/stock_analytics.js:45 public/js/utils.js:498
-#: public/js/utils/serial_no_batch_selector.js:86
-#: selling/doctype/sales_order/sales_order.js:306
-#: selling/doctype/sales_order/sales_order.js:407
+#: public/js/utils/serial_no_batch_selector.js:90
+#: selling/doctype/sales_order/sales_order.js:300
+#: selling/doctype/sales_order/sales_order.js:401
#: selling/report/sales_order_analysis/sales_order_analysis.js:49
#: selling/report/sales_order_analysis/sales_order_analysis.py:334
#: selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py:78
@@ -78192,7 +78229,7 @@
#: stock/report/serial_and_batch_summary/serial_and_batch_summary.js:34
#: stock/report/serial_and_batch_summary/serial_and_batch_summary.py:140
#: stock/report/serial_no_ledger/serial_no_ledger.js:22
-#: stock/report/serial_no_ledger/serial_no_ledger.py:45
+#: stock/report/serial_no_ledger/serial_no_ledger.py:44
#: stock/report/stock_ageing/stock_ageing.js:23
#: stock/report/stock_ageing/stock_ageing.py:146
#: stock/report/stock_analytics/stock_analytics.js:50
@@ -78406,6 +78443,10 @@
msgid "Warehouse"
msgstr ""
+#: stock/page/warehouse_capacity_summary/warehouse_capacity_summary.js:4
+msgid "Warehouse Capacity Summary"
+msgstr ""
+
#: stock/doctype/putaway_rule/putaway_rule.py:78
msgid "Warehouse Capacity for Item '{0}' must be greater than the existing stock level of {1} {2}."
msgstr ""
@@ -78527,11 +78568,11 @@
msgid "Warehouse not found against the account {0}"
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:366
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:367
msgid "Warehouse not found in the system"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1002
+#: accounts/doctype/sales_invoice/sales_invoice.py:1005
#: stock/doctype/delivery_note/delivery_note.py:362
msgid "Warehouse required for stock Item {0}"
msgstr ""
@@ -78554,11 +78595,11 @@
msgid "Warehouse {0} does not belong to Company {1}."
msgstr ""
-#: stock/utils.py:394
+#: stock/utils.py:441
msgid "Warehouse {0} does not belong to company {1}"
msgstr ""
-#: controllers/stock_controller.py:252
+#: controllers/stock_controller.py:244
msgid "Warehouse {0} is not linked to any account, please mention the account in the warehouse record or set default inventory account in company {1}."
msgstr ""
@@ -78680,8 +78721,8 @@
msgid "Warn for new Request for Quotations"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:637
-#: controllers/accounts_controller.py:1643
+#: accounts/doctype/payment_entry/payment_entry.py:639
+#: controllers/accounts_controller.py:1676
#: stock/doctype/delivery_trip/delivery_trip.js:123
#: utilities/transaction_base.py:122
msgid "Warning"
@@ -78695,7 +78736,7 @@
msgid "Warning!"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:1260
+#: accounts/doctype/journal_entry/journal_entry.py:1146
msgid "Warning: Another {0} # {1} exists against stock entry {2}"
msgstr ""
@@ -78703,7 +78744,7 @@
msgid "Warning: Material Requested Qty is less than Minimum Order Qty"
msgstr ""
-#: selling/doctype/sales_order/sales_order.py:249
+#: selling/doctype/sales_order/sales_order.py:252
msgid "Warning: Sales Order {0} already exists against Customer's Purchase Order {1}"
msgstr ""
@@ -79236,7 +79277,7 @@
msgid "Wheels"
msgstr ""
-#: stock/doctype/item/item.js:848
+#: stock/doctype/item/item.js:834
msgid "When creating an Item, entering a value for this field will automatically create an Item Price at the backend."
msgstr ""
@@ -79323,7 +79364,7 @@
msgid "Work Done"
msgstr ""
-#: setup/doctype/company/company.py:260
+#: setup/doctype/company/company.py:261
msgid "Work In Progress"
msgstr ""
@@ -79363,7 +79404,7 @@
#: manufacturing/report/process_loss_report/process_loss_report.py:68
#: manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js:30
#: manufacturing/report/work_order_stock_report/work_order_stock_report.py:104
-#: selling/doctype/sales_order/sales_order.js:566
+#: selling/doctype/sales_order/sales_order.js:560
#: stock/doctype/material_request/material_request.js:152
#: stock/doctype/material_request/material_request.py:779
#: templates/pages/material_request_info.html:45
@@ -79476,7 +79517,7 @@
msgid "Work Order has been {0}"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:673
+#: selling/doctype/sales_order/sales_order.js:667
msgid "Work Order not created"
msgstr ""
@@ -79489,7 +79530,7 @@
msgid "Work Orders"
msgstr ""
-#: selling/doctype/sales_order/sales_order.js:737
+#: selling/doctype/sales_order/sales_order.js:731
msgid "Work Orders Created: {0}"
msgstr ""
@@ -79686,7 +79727,7 @@
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:72
#: accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:96
-#: setup/doctype/company/company.py:509
+#: setup/doctype/company/company.py:510
msgid "Write Off"
msgstr ""
@@ -79877,7 +79918,7 @@
msgid "Wrong Company"
msgstr ""
-#: setup/doctype/company/company.js:167
+#: setup/doctype/company/company.js:172
msgid "Wrong Password"
msgstr ""
@@ -79941,7 +79982,7 @@
#: buying/report/purchase_analytics/purchase_analytics.js:64
#: manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.js:61
#: manufacturing/report/production_analytics/production_analytics.js:37
-#: public/js/financial_statements.js:167
+#: public/js/financial_statements.js:220
#: public/js/purchase_trends_filters.js:22 public/js/sales_trends_filters.js:14
#: public/js/stock_analytics.js:55
#: selling/report/sales_analytics/sales_analytics.js:64
@@ -80082,11 +80123,11 @@
msgid "Yes"
msgstr ""
-#: controllers/accounts_controller.py:3092
+#: controllers/accounts_controller.py:3151
msgid "You are not allowed to update as per the conditions set in {} Workflow."
msgstr ""
-#: accounts/general_ledger.py:666
+#: accounts/general_ledger.py:665
msgid "You are not authorized to add or update entries before {0}"
msgstr ""
@@ -80114,7 +80155,7 @@
msgid "You can also set default CWIP account in Company {}"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:870
+#: accounts/doctype/sales_invoice/sales_invoice.py:873
msgid "You can change the parent account to a Balance Sheet account or select a different account."
msgstr ""
@@ -80122,11 +80163,11 @@
msgid "You can not cancel this Period Closing Voucher, please cancel the future Period Closing Vouchers first"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:567
+#: accounts/doctype/journal_entry/journal_entry.py:583
msgid "You can not enter current voucher in 'Against Journal Entry' column"
msgstr ""
-#: accounts/doctype/subscription/subscription.py:184
+#: accounts/doctype/subscription/subscription.py:183
msgid "You can only have Plans with the same billing cycle in a Subscription"
msgstr ""
@@ -80172,11 +80213,11 @@
msgid "You cannot create or cancel any accounting entries with in the closed Accounting Period {0}"
msgstr ""
-#: accounts/general_ledger.py:690
+#: accounts/general_ledger.py:689
msgid "You cannot create/amend any accounting entries till this date."
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:857
+#: accounts/doctype/journal_entry/journal_entry.py:809
msgid "You cannot credit and debit same account at the same time"
msgstr ""
@@ -80196,7 +80237,7 @@
msgid "You cannot repost item valuation before {}"
msgstr ""
-#: accounts/doctype/subscription/subscription.py:703
+#: accounts/doctype/subscription/subscription.py:735
msgid "You cannot restart a Subscription that is not cancelled."
msgstr ""
@@ -80208,7 +80249,7 @@
msgid "You cannot submit the order without payment."
msgstr ""
-#: controllers/accounts_controller.py:3068
+#: controllers/accounts_controller.py:3127
msgid "You do not have permissions to {} items in a {}."
msgstr ""
@@ -80252,7 +80293,7 @@
msgid "You must select a customer before adding an item."
msgstr ""
-#: accounts/doctype/pos_invoice/pos_invoice.py:253
+#: accounts/doctype/pos_invoice/pos_invoice.py:251
msgid "You need to cancel POS Closing Entry {} to be able to cancel this document."
msgstr ""
@@ -80337,11 +80378,11 @@
msgid "Zip File"
msgstr ""
-#: stock/reorder_item.py:244
+#: stock/reorder_item.py:283
msgid "[Important] [ERPNext] Auto Reorder Errors"
msgstr ""
-#: controllers/status_updater.py:238
+#: controllers/status_updater.py:247
msgid "`Allow Negative rates for Items`"
msgstr ""
@@ -80545,7 +80586,7 @@
msgid "old_parent"
msgstr ""
-#: controllers/accounts_controller.py:999
+#: controllers/accounts_controller.py:1033
msgid "or"
msgstr ""
@@ -80553,7 +80594,7 @@
msgid "or its descendants"
msgstr ""
-#: templates/includes/macros.html:239 templates/includes/macros.html:243
+#: templates/includes/macros.html:207 templates/includes/macros.html:211
msgid "out of 5"
msgstr ""
@@ -80598,7 +80639,7 @@
msgid "per hour"
msgstr ""
-#: stock/stock_ledger.py:1592
+#: stock/stock_ledger.py:1681
msgid "performing either one below:"
msgstr ""
@@ -80622,11 +80663,11 @@
msgid "quotation_item"
msgstr ""
-#: templates/includes/macros.html:234
+#: templates/includes/macros.html:202
msgid "ratings"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1085
+#: accounts/doctype/payment_entry/payment_entry.py:1105
msgid "received from"
msgstr ""
@@ -80703,15 +80744,15 @@
msgid "sandbox"
msgstr ""
-#: public/js/controllers/transaction.js:919
+#: public/js/controllers/transaction.js:920
msgid "selected Payment Terms Template"
msgstr ""
-#: accounts/doctype/subscription/subscription.py:679
+#: accounts/doctype/subscription/subscription.py:711
msgid "subscription is already cancelled."
msgstr ""
-#: controllers/status_updater.py:344 controllers/status_updater.py:364
+#: controllers/status_updater.py:353 controllers/status_updater.py:373
msgid "target_ref_field"
msgstr ""
@@ -80727,12 +80768,12 @@
msgid "title"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:1085
+#: accounts/doctype/payment_entry/payment_entry.py:1105
#: accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:27
msgid "to"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:2766
+#: accounts/doctype/sales_invoice/sales_invoice.py:2737
msgid "to unallocate the amount of this Return Invoice before cancelling it."
msgstr ""
@@ -80768,7 +80809,7 @@
msgid "{0}"
msgstr ""
-#: controllers/accounts_controller.py:844
+#: controllers/accounts_controller.py:878
msgid "{0} '{1}' is disabled"
msgstr ""
@@ -80788,7 +80829,7 @@
msgid "{0} <b>{1}</b> has submitted Assets. Remove Item <b>{2}</b> from table to continue."
msgstr ""
-#: controllers/accounts_controller.py:1824
+#: controllers/accounts_controller.py:1893
msgid "{0} Account not found against Customer {1}."
msgstr ""
@@ -80804,7 +80845,7 @@
msgid "{0} Digest"
msgstr ""
-#: accounts/utils.py:1258
+#: accounts/utils.py:1286
msgid "{0} Number {1} is already used in {2} {3}"
msgstr ""
@@ -80832,19 +80873,19 @@
msgid "{0} account not found while submitting purchase receipt"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:978
+#: accounts/doctype/journal_entry/journal_entry.py:930
msgid "{0} against Bill {1} dated {2}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:987
+#: accounts/doctype/journal_entry/journal_entry.py:939
msgid "{0} against Purchase Order {1}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:954
+#: accounts/doctype/journal_entry/journal_entry.py:906
msgid "{0} against Sales Invoice {1}"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:961
+#: accounts/doctype/journal_entry/journal_entry.py:913
msgid "{0} against Sales Order {1}"
msgstr ""
@@ -80878,11 +80919,11 @@
msgid "{0} created"
msgstr ""
-#: setup/doctype/company/company.py:190
+#: setup/doctype/company/company.py:191
msgid "{0} currency must be same as company's default currency. Please select another account."
msgstr ""
-#: buying/doctype/purchase_order/purchase_order.py:306
+#: buying/doctype/purchase_order/purchase_order.py:310
msgid "{0} currently has a {1} Supplier Scorecard standing, and Purchase Orders to this supplier should be issued with caution."
msgstr ""
@@ -80906,7 +80947,7 @@
msgid "{0} for {1}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:362
+#: accounts/doctype/payment_entry/payment_entry.py:364
msgid "{0} has Payment Term based allocation enabled. Select a Payment Term for Row #{1} in Payment References section"
msgstr ""
@@ -80914,7 +80955,7 @@
msgid "{0} has been submitted successfully"
msgstr ""
-#: controllers/accounts_controller.py:2143
+#: controllers/accounts_controller.py:2212
msgid "{0} in row {1}"
msgstr ""
@@ -80922,18 +80963,18 @@
msgid "{0} is a mandatory Accounting Dimension. <br>Please set a value for {0} in Accounting Dimensions section."
msgstr ""
-#: controllers/accounts_controller.py:159
+#: controllers/accounts_controller.py:162
msgid "{0} is blocked so this transaction cannot proceed"
msgstr ""
#: accounts/doctype/budget/budget.py:57
-#: accounts/doctype/payment_entry/payment_entry.py:540
+#: accounts/doctype/payment_entry/payment_entry.py:542
#: accounts/report/general_ledger/general_ledger.py:62
#: accounts/report/pos_register/pos_register.py:110 controllers/trends.py:50
msgid "{0} is mandatory"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:972
+#: accounts/doctype/sales_invoice/sales_invoice.py:975
msgid "{0} is mandatory for Item {1}"
msgstr ""
@@ -80946,11 +80987,11 @@
msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}"
msgstr ""
-#: controllers/accounts_controller.py:2422
+#: controllers/accounts_controller.py:2491
msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}."
msgstr ""
-#: selling/doctype/customer/customer.py:198
+#: selling/doctype/customer/customer.py:199
msgid "{0} is not a company bank account"
msgstr ""
@@ -80962,7 +81003,7 @@
msgid "{0} is not a stock Item"
msgstr ""
-#: controllers/item_variant.py:140
+#: controllers/item_variant.py:144
msgid "{0} is not a valid Value for Attribute {1} of Item {2}."
msgstr ""
@@ -80978,7 +81019,7 @@
msgid "{0} is not the default supplier for any items."
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:2277
+#: accounts/doctype/payment_entry/payment_entry.py:2300
msgid "{0} is on hold till {1}"
msgstr ""
@@ -81001,11 +81042,11 @@
msgid "{0} must be negative in return document"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:2011
+#: accounts/doctype/sales_invoice/sales_invoice.py:1988
msgid "{0} not allowed to transact with {1}. Please change the Company."
msgstr ""
-#: manufacturing/doctype/bom/bom.py:465
+#: manufacturing/doctype/bom/bom.py:467
msgid "{0} not found for item {1}"
msgstr ""
@@ -81017,11 +81058,11 @@
msgid "{0} payment entries can not be filtered by {1}"
msgstr ""
-#: controllers/stock_controller.py:798
+#: controllers/stock_controller.py:899
msgid "{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}."
msgstr ""
-#: stock/doctype/stock_reconciliation/stock_reconciliation.py:450
+#: stock/doctype/stock_reconciliation/stock_reconciliation.py:451
msgid "{0} units are reserved for Item {1} in Warehouse {2}, please un-reserve the same to {3} the Stock Reconciliation."
msgstr ""
@@ -81037,20 +81078,20 @@
msgid "{0} units of {1} are required in {2}{3}, on {4} {5} for {6} to complete the transaction."
msgstr ""
-#: stock/stock_ledger.py:1235 stock/stock_ledger.py:1740
-#: stock/stock_ledger.py:1756
+#: stock/stock_ledger.py:1340 stock/stock_ledger.py:1829
+#: stock/stock_ledger.py:1845
msgid "{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction."
msgstr ""
-#: stock/stock_ledger.py:1866 stock/stock_ledger.py:1916
+#: stock/stock_ledger.py:1955 stock/stock_ledger.py:2005
msgid "{0} units of {1} needed in {2} on {3} {4} to complete this transaction."
msgstr ""
-#: stock/stock_ledger.py:1229
+#: stock/stock_ledger.py:1334
msgid "{0} units of {1} needed in {2} to complete this transaction."
msgstr ""
-#: stock/utils.py:385
+#: stock/utils.py:432
msgid "{0} valid serial nos for Item {1}"
msgstr ""
@@ -81066,6 +81107,10 @@
msgid "{0} {1}"
msgstr ""
+#: public/js/utils/serial_no_batch_selector.js:203
+msgid "{0} {1} Manually"
+msgstr ""
+
#: accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:433
msgid "{0} {1} Partially Reconciled"
msgstr ""
@@ -81078,9 +81123,9 @@
msgid "{0} {1} created"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:504
-#: accounts/doctype/payment_entry/payment_entry.py:560
-#: accounts/doctype/payment_entry/payment_entry.py:2042
+#: accounts/doctype/payment_entry/payment_entry.py:506
+#: accounts/doctype/payment_entry/payment_entry.py:562
+#: accounts/doctype/payment_entry/payment_entry.py:2065
msgid "{0} {1} does not exist"
msgstr ""
@@ -81088,16 +81133,16 @@
msgid "{0} {1} has accounting entries in currency {2} for company {3}. Please select a receivable or payable account with currency {2}."
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:372
+#: accounts/doctype/payment_entry/payment_entry.py:374
msgid "{0} {1} has already been fully paid."
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:382
+#: accounts/doctype/payment_entry/payment_entry.py:384
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 ""
-#: buying/doctype/purchase_order/purchase_order.py:445
-#: selling/doctype/sales_order/sales_order.py:478
+#: buying/doctype/purchase_order/purchase_order.py:449
+#: selling/doctype/sales_order/sales_order.py:481
#: stock/doctype/material_request/material_request.py:198
msgid "{0} {1} has been modified. Please refresh."
msgstr ""
@@ -81106,16 +81151,16 @@
msgid "{0} {1} has not been submitted so the action cannot be completed"
msgstr ""
-#: accounts/doctype/bank_transaction/bank_transaction.py:72
+#: accounts/doctype/bank_transaction/bank_transaction.py:90
msgid "{0} {1} is allocated twice in this Bank Transaction"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:589
+#: accounts/doctype/payment_entry/payment_entry.py:591
msgid "{0} {1} is associated with {2}, but Party Account is {3}"
msgstr ""
#: controllers/buying_controller.py:624 controllers/selling_controller.py:421
-#: controllers/subcontracting_controller.py:802
+#: controllers/subcontracting_controller.py:806
msgid "{0} {1} is cancelled or closed"
msgstr ""
@@ -81127,7 +81172,7 @@
msgid "{0} {1} is cancelled so the action cannot be completed"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:709
+#: accounts/doctype/journal_entry/journal_entry.py:725
msgid "{0} {1} is closed"
msgstr ""
@@ -81139,7 +81184,7 @@
msgid "{0} {1} is frozen"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:706
+#: accounts/doctype/journal_entry/journal_entry.py:722
msgid "{0} {1} is fully billed"
msgstr ""
@@ -81147,7 +81192,7 @@
msgid "{0} {1} is not active"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:567
+#: accounts/doctype/payment_entry/payment_entry.py:569
msgid "{0} {1} is not associated with {2} {3}"
msgstr ""
@@ -81155,12 +81200,12 @@
msgid "{0} {1} is not in any active Fiscal Year"
msgstr ""
-#: accounts/doctype/journal_entry/journal_entry.py:703
-#: accounts/doctype/journal_entry/journal_entry.py:744
+#: accounts/doctype/journal_entry/journal_entry.py:719
+#: accounts/doctype/journal_entry/journal_entry.py:760
msgid "{0} {1} is not submitted"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:596
+#: accounts/doctype/payment_entry/payment_entry.py:598
msgid "{0} {1} is on hold"
msgstr ""
@@ -81168,7 +81213,7 @@
msgid "{0} {1} is {2}"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.py:601
+#: accounts/doctype/payment_entry/payment_entry.py:603
msgid "{0} {1} must be submitted"
msgstr ""
@@ -81180,7 +81225,7 @@
msgid "{0} {1} status is {2}"
msgstr ""
-#: public/js/utils/serial_no_batch_selector.js:185
+#: public/js/utils/serial_no_batch_selector.js:189
msgid "{0} {1} via CSV File"
msgstr ""
@@ -81207,7 +81252,7 @@
msgid "{0} {1}: Accounting Entry for {2} can only be made in currency: {3}"
msgstr ""
-#: controllers/stock_controller.py:373
+#: controllers/stock_controller.py:365
msgid "{0} {1}: Cost Center is mandatory for Item {2}"
msgstr ""
@@ -81264,19 +81309,19 @@
msgid "{0}: {1} does not exists"
msgstr ""
-#: accounts/doctype/payment_entry/payment_entry.js:713
+#: accounts/doctype/payment_entry/payment_entry.js:724
msgid "{0}: {1} must be less than {2}"
msgstr ""
-#: manufacturing/doctype/bom/bom.py:212
+#: manufacturing/doctype/bom/bom.py:214
msgid "{0}{1} Did you rename the item? Please contact Administrator / Tech support"
msgstr ""
-#: controllers/stock_controller.py:1062
+#: controllers/stock_controller.py:1160
msgid "{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity})"
msgstr ""
-#: accounts/report/accounts_receivable/accounts_receivable.py:1125
+#: accounts/report/accounts_receivable/accounts_receivable.py:1148
msgid "{range4}-Above"
msgstr ""
@@ -81288,7 +81333,7 @@
msgid "{} Assets created for {}"
msgstr ""
-#: accounts/doctype/sales_invoice/sales_invoice.py:1798
+#: accounts/doctype/sales_invoice/sales_invoice.py:1775
msgid "{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {}"
msgstr ""
diff --git a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
index ceb4406..75d890c 100644
--- a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
@@ -222,7 +222,7 @@
def validate_maintenance_detail(self):
if not self.get("items"):
- throw(_("Please enter Maintaince Details first"))
+ throw(_("Please enter Maintenance Details first"))
for d in self.get("items"):
if not d.item_code:
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index f034ed2..6f35206 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -176,8 +176,10 @@
def autoname(self):
# ignore amended documents while calculating current index
+
+ search_key = f"{self.doctype}-{self.item}%"
existing_boms = frappe.get_all(
- "BOM", filters={"item": self.item, "amended_from": ["is", "not set"]}, pluck="name"
+ "BOM", filters={"name": ("like", search_key), "amended_from": ["is", "not set"]}, pluck="name"
)
if existing_boms:
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index 0acc2b1..aa7bc5b 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -1520,7 +1520,7 @@
if row.get("qty") > row.get("pending_qty"):
frappe.throw(
- _("For operation {0}: Quantity ({1}) can not be greter than pending quantity({2})").format(
+ _("For operation {0}: Quantity ({1}) can not be greater than pending quantity({2})").format(
frappe.bold(row.get("operation")),
frappe.bold(row.get("qty")),
frappe.bold(row.get("pending_qty")),
diff --git a/erpnext/patches/v14_0/migrate_gl_to_payment_ledger.py b/erpnext/patches/v14_0/migrate_gl_to_payment_ledger.py
index 72c8c07..95b5bc5 100644
--- a/erpnext/patches/v14_0/migrate_gl_to_payment_ledger.py
+++ b/erpnext/patches/v14_0/migrate_gl_to_payment_ledger.py
@@ -188,4 +188,4 @@
raise err
else:
break
- print(f"{processed} records have been sucessfully migrated")
+ print(f"{processed} records have been successfully migrated")
diff --git a/erpnext/public/js/controllers/accounts.js b/erpnext/public/js/controllers/accounts.js
index 7879173..f0d8cbb 100644
--- a/erpnext/public/js/controllers/accounts.js
+++ b/erpnext/public/js/controllers/accounts.js
@@ -160,7 +160,7 @@
let tax = frappe.get_doc(cdt, cdn);
try {
me.validate_taxes_and_charges(cdt, cdn);
- me.validate_inclusive_tax(tax);
+ me.validate_inclusive_tax(tax, frm);
} catch(e) {
tax.included_in_print_rate = 0;
refresh_field("included_in_print_rate", tax.name, tax.parentfield);
@@ -170,7 +170,8 @@
});
},
- validate_inclusive_tax: function(tax) {
+ validate_inclusive_tax: function(tax, frm) {
+ this.frm = this.frm || frm;
let actual_type_error = function() {
var msg = __("Actual type tax cannot be included in Item rate in row {0}", [tax.idx])
frappe.throw(msg);
@@ -186,12 +187,12 @@
if(tax.charge_type == "Actual") {
// inclusive tax cannot be of type Actual
actual_type_error();
- } else if(tax.charge_type == "On Previous Row Amount" &&
+ } else if (tax.charge_type == "On Previous Row Amount" && this.frm &&
!cint(this.frm.doc["taxes"][tax.row_id - 1].included_in_print_rate)
) {
// referred row should also be an inclusive tax
on_previous_row_error(tax.row_id);
- } else if(tax.charge_type == "On Previous Row Total") {
+ } else if (tax.charge_type == "On Previous Row Total" && this.frm) {
var taxes_not_included = $.map(this.frm.doc["taxes"].slice(0, tax.row_id),
function(t) { return cint(t.included_in_print_rate) ? null : t; });
if(taxes_not_included.length > 0) {
diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js
index d24c4e6..bd5a136 100644
--- a/erpnext/public/js/controllers/taxes_and_totals.js
+++ b/erpnext/public/js/controllers/taxes_and_totals.js
@@ -103,7 +103,7 @@
this.determine_exclusive_rate();
this.calculate_net_total();
this.calculate_taxes();
- this.manipulate_grand_total_for_inclusive_tax();
+ this.adjust_grand_total_for_inclusive_tax();
this.calculate_totals();
this._cleanup();
}
@@ -185,7 +185,7 @@
if (!this.discount_amount_applied) {
erpnext.accounts.taxes.validate_taxes_and_charges(tax.doctype, tax.name);
- erpnext.accounts.taxes.validate_inclusive_tax(tax);
+ erpnext.accounts.taxes.validate_inclusive_tax(tax, this.frm);
}
frappe.model.round_floats_in(tax);
});
@@ -248,7 +248,7 @@
if(!me.discount_amount_applied && item.qty && (total_inclusive_tax_amount_per_qty || cumulated_tax_fraction)) {
var amount = flt(item.amount) - total_inclusive_tax_amount_per_qty;
- item.net_amount = flt(amount / (1 + cumulated_tax_fraction));
+ item.net_amount = flt(amount / (1 + cumulated_tax_fraction), precision("net_amount", item));
item.net_rate = item.qty ? flt(item.net_amount / item.qty, precision("net_rate", item)) : 0;
me.set_in_company_currency(item, ["net_rate", "net_amount"]);
@@ -303,6 +303,8 @@
me.frm.doc.net_total += item.net_amount;
me.frm.doc.base_net_total += item.base_net_amount;
});
+
+ frappe.model.round_floats_in(this.frm.doc, ["total", "base_total", "net_total", "base_net_total"]);
}
calculate_shipping_charges() {
@@ -521,8 +523,17 @@
}
}
+ /**
+ * @deprecated Use adjust_grand_total_for_inclusive_tax instead.
+ */
manipulate_grand_total_for_inclusive_tax() {
+ // for backward compatablility - if in case used by an external application
+ this.adjust_grand_total_for_inclusive_tax()
+ }
+
+ adjust_grand_total_for_inclusive_tax() {
var me = this;
+
// if fully inclusive taxes and diff
if (this.frm.doc["taxes"] && this.frm.doc["taxes"].length) {
var any_inclusive_tax = false;
@@ -548,7 +559,9 @@
diff = flt(diff, precision("rounding_adjustment"));
if ( diff && Math.abs(diff) <= (5.0 / Math.pow(10, precision("tax_amount", last_tax))) ) {
- me.frm.doc.rounding_adjustment = diff;
+ me.frm.doc.grand_total_diff = diff;
+ } else {
+ me.frm.doc.grand_total_diff = 0;
}
}
}
@@ -559,7 +572,7 @@
var me = this;
var tax_count = this.frm.doc["taxes"] ? this.frm.doc["taxes"].length : 0;
this.frm.doc.grand_total = flt(tax_count
- ? this.frm.doc["taxes"][tax_count - 1].total + flt(this.frm.doc.rounding_adjustment)
+ ? this.frm.doc["taxes"][tax_count - 1].total + flt(this.frm.doc.grand_total_diff)
: this.frm.doc.net_total);
if(in_list(["Quotation", "Sales Order", "Delivery Note", "Sales Invoice", "POS Invoice"], this.frm.doc.doctype)) {
@@ -619,7 +632,7 @@
if(frappe.meta.get_docfield(this.frm.doc.doctype, "rounded_total", this.frm.doc.name)) {
this.frm.doc.rounded_total = round_based_on_smallest_currency_fraction(this.frm.doc.grand_total,
this.frm.doc.currency, precision("rounded_total"));
- this.frm.doc.rounding_adjustment += flt(this.frm.doc.rounded_total - this.frm.doc.grand_total,
+ this.frm.doc.rounding_adjustment = flt(this.frm.doc.rounded_total - this.frm.doc.grand_total,
precision("rounding_adjustment"));
this.set_in_company_currency(this.frm.doc, ["rounding_adjustment", "rounded_total"]);
@@ -687,8 +700,7 @@
if (total_for_discount_amount) {
$.each(this.frm._items || [], function(i, item) {
distributed_amount = flt(me.frm.doc.discount_amount) * item.net_amount / total_for_discount_amount;
- item.net_amount = flt(item.net_amount - distributed_amount,
- precision("base_amount", item));
+ item.net_amount = flt(item.net_amount - distributed_amount, precision("net_amount", item));
net_total += item.net_amount;
// discount amount rounding loss adjustment if no taxes
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 525e646..4ea834b 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -790,42 +790,25 @@
if (me.frm.doc.price_list_currency == company_currency) {
me.frm.set_value('plc_conversion_rate', 1.0);
}
- if (company_doc && company_doc.default_letter_head) {
- if(me.frm.fields_dict.letter_head) {
- me.frm.set_value("letter_head", company_doc.default_letter_head);
+ if (company_doc){
+ if (company_doc.default_letter_head) {
+ if(me.frm.fields_dict.letter_head) {
+ me.frm.set_value("letter_head", company_doc.default_letter_head);
+ }
+ }
+ let selling_doctypes_for_tc = ["Sales Invoice", "Quotation", "Sales Order", "Delivery Note"];
+ if (company_doc.default_selling_terms && frappe.meta.has_field(me.frm.doc.doctype, "tc_name") &&
+ selling_doctypes_for_tc.includes(me.frm.doc.doctype) && !me.frm.doc.tc_name) {
+ me.frm.set_value("tc_name", company_doc.default_selling_terms);
+ }
+ let buying_doctypes_for_tc = ["Request for Quotation", "Supplier Quotation", "Purchase Order",
+ "Material Request", "Purchase Receipt"];
+ // Purchase Invoice is excluded as per issue #3345
+ if (company_doc.default_buying_terms && frappe.meta.has_field(me.frm.doc.doctype, "tc_name") &&
+ buying_doctypes_for_tc.includes(me.frm.doc.doctype) && !me.frm.doc.tc_name) {
+ me.frm.set_value("tc_name", company_doc.default_buying_terms);
}
}
-
- if (
- company_doc.default_selling_terms &&
- frappe.meta.has_field(me.frm.doc.doctype, "tc_name") &&
- [
- "Sales Invoice",
- "Quotation",
- "Sales Order",
- "Delivery Note",
- ].includes(me.frm.doc.doctype) &&
- !me.frm.doc.tc_name
- ) {
- me.frm.set_value("tc_name", company_doc.default_selling_terms);
- }
-
- if (
- company_doc.default_buying_terms &&
- frappe.meta.has_field(me.frm.doc.doctype, "tc_name") &&
- [
- "Request for Quotation",
- "Supplier Quotation",
- "Purchase Order",
- // Purchase Invoice is excluded as per issue #3345
- "Material Request",
- "Purchase Receipt",
- ].includes(me.frm.doc.doctype) &&
- !me.frm.doc.tc_name
- ) {
- me.frm.set_value("tc_name", company_doc.default_buying_terms);
- }
-
frappe.run_serially([
() => me.frm.script_manager.trigger("currency"),
() => me.update_item_tax_map(),
diff --git a/erpnext/public/js/financial_statements.js b/erpnext/public/js/financial_statements.js
index 17341d1..43e58c2 100644
--- a/erpnext/public/js/financial_statements.js
+++ b/erpnext/public/js/financial_statements.js
@@ -2,7 +2,58 @@
erpnext.financial_statements = {
"filters": get_filters(),
+ "baseData": null,
"formatter": function(value, row, column, data, default_formatter, filter) {
+ if(frappe.query_report.get_filter_value("selected_view") == "Growth" && data && column.colIndex >= 3){
+ //Assuming that the first three columns are s.no, account name and the very first year of the accounting values, to calculate the relative percentage values of the successive columns.
+ const lastAnnualValue = row[column.colIndex - 1].content;
+ const currentAnnualvalue = data[column.fieldname];
+ if(currentAnnualvalue == undefined) return 'NA'; //making this not applicable for undefined/null values
+ let annualGrowth = 0;
+ if(lastAnnualValue == 0 && currentAnnualvalue > 0){
+ //If the previous year value is 0 and the current value is greater than 0
+ annualGrowth = 1;
+ }
+ else if(lastAnnualValue > 0){
+ annualGrowth = (currentAnnualvalue - lastAnnualValue) / lastAnnualValue;
+ }
+
+ const growthPercent = (Math.round(annualGrowth*10000)/100); //calculating the rounded off percentage
+
+ value = $(`<span>${((growthPercent >=0)? '+':'' )+growthPercent+'%'}</span>`);
+ if(growthPercent < 0){
+ value = $(value).addClass("text-danger");
+ }
+ else{
+ value = $(value).addClass("text-success");
+ }
+ value = $(value).wrap("<p></p>").parent().html();
+
+ return value;
+ }
+ else if(frappe.query_report.get_filter_value("selected_view") == "Margin" && data){
+ if(column.fieldname =="account" && data.account_name == __("Income")){
+ //Taking the total income from each column (for all the financial years) as the base (100%)
+ this.baseData = row;
+ }
+ if(column.colIndex >= 2){
+ //Assuming that the first two columns are s.no and account name, to calculate the relative percentage values of the successive columns.
+ const currentAnnualvalue = data[column.fieldname];
+ const baseValue = this.baseData[column.colIndex].content;
+ if(currentAnnualvalue == undefined || baseValue <= 0) return 'NA';
+ const marginPercent = Math.round((currentAnnualvalue/baseValue)*10000)/100;
+
+ value = $(`<span>${marginPercent+'%'}</span>`);
+ if(marginPercent < 0)
+ value = $(value).addClass("text-danger");
+ else
+ value = $(value).addClass("text-success");
+ value = $(value).wrap("<p></p>").parent().html();
+ return value;
+ }
+
+ }
+
if (data && column.fieldname=="account") {
value = data.account_name || value;
@@ -74,22 +125,24 @@
});
});
- const views_menu = report.page.add_custom_button_group(__('Financial Statements'));
+ if (report.page){
+ const views_menu = report.page.add_custom_button_group(__('Financial Statements'));
- report.page.add_custom_menu_item(views_menu, __("Balance Sheet"), function() {
- var filters = report.get_values();
- frappe.set_route('query-report', 'Balance Sheet', {company: filters.company});
- });
+ report.page.add_custom_menu_item(views_menu, __("Balance Sheet"), function() {
+ var filters = report.get_values();
+ frappe.set_route('query-report', 'Balance Sheet', {company: filters.company});
+ });
- report.page.add_custom_menu_item(views_menu, __("Profit and Loss"), function() {
- var filters = report.get_values();
- frappe.set_route('query-report', 'Profit and Loss Statement', {company: filters.company});
- });
+ report.page.add_custom_menu_item(views_menu, __("Profit and Loss"), function() {
+ var filters = report.get_values();
+ frappe.set_route('query-report', 'Profit and Loss Statement', {company: filters.company});
+ });
- report.page.add_custom_menu_item(views_menu, __("Cash Flow Statement"), function() {
- var filters = report.get_values();
- frappe.set_route('query-report', 'Cash Flow', {company: filters.company});
- });
+ report.page.add_custom_menu_item(views_menu, __("Cash Flow Statement"), function() {
+ var filters = report.get_values();
+ frappe.set_route('query-report', 'Cash Flow', {company: filters.company});
+ });
+ }
}
};
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index 44a4957..80ade70 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -71,6 +71,10 @@
let warehouse = this.item?.type_of_transaction === "Outward" ?
(this.item.warehouse || this.item.s_warehouse) : "";
+ if (!warehouse && this.frm.doc.doctype === 'Stock Reconciliation') {
+ warehouse = this.get_warehouse();
+ }
+
return {
'item_code': this.item.item_code,
'warehouse': ["=", warehouse]
diff --git a/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.json b/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.json
index d332b4e..ecc198a 100644
--- a/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.json
+++ b/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.json
@@ -64,7 +64,7 @@
{
"fieldname": "valid_upto",
"fieldtype": "Date",
- "label": "Valid Upto",
+ "label": "Valid Up To",
"reqd": 1
},
{
@@ -135,7 +135,7 @@
],
"index_web_pages_for_search": 1,
"links": [],
- "modified": "2023-04-18 08:25:35.302081",
+ "modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Regional",
"name": "Lower Deduction Certificate",
diff --git a/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py b/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py
index 72b3a49..6982ad1 100644
--- a/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py
+++ b/erpnext/regional/doctype/lower_deduction_certificate/lower_deduction_certificate.py
@@ -37,7 +37,7 @@
def validate_dates(self):
if getdate(self.valid_upto) < getdate(self.valid_from):
- frappe.throw(_("Valid Upto date cannot be before Valid From date"))
+ frappe.throw(_("Valid Up To date cannot be before Valid From date"))
fiscal_year = get_fiscal_year(fiscal_year=self.fiscal_year, as_dict=True)
@@ -45,7 +45,7 @@
frappe.throw(_("Valid From date not in Fiscal Year {0}").format(frappe.bold(self.fiscal_year)))
if not (fiscal_year.year_start_date <= getdate(self.valid_upto) <= fiscal_year.year_end_date):
- frappe.throw(_("Valid Upto date not in Fiscal Year {0}").format(frappe.bold(self.fiscal_year)))
+ frappe.throw(_("Valid Up To date not in Fiscal Year {0}").format(frappe.bold(self.fiscal_year)))
def validate_supplier_against_tax_category(self):
duplicate_certificate = frappe.db.get_value(
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index efb9820..2f6775f 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -124,6 +124,7 @@
),
title=_("Note"),
indicator="yellow",
+ alert=True,
)
return new_customer_name
diff --git a/erpnext/selling/doctype/customer/test_customer.py b/erpnext/selling/doctype/customer/test_customer.py
index 29dbd4f..47153a8 100644
--- a/erpnext/selling/doctype/customer/test_customer.py
+++ b/erpnext/selling/doctype/customer/test_customer.py
@@ -427,11 +427,11 @@
if not allowed_to_interact_with:
allowed_to_interact_with = represents_company
- exisiting_representative = frappe.db.get_value(
+ existing_representative = frappe.db.get_value(
"Customer", {"represents_company": represents_company}
)
- if exisiting_representative:
- return exisiting_representative
+ if existing_representative:
+ return existing_representative
if not frappe.db.exists("Customer", customer_name):
customer = frappe.get_doc(
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index 654f297..13d17d6 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -346,8 +346,8 @@
return _make_sales_order(source_name, target_doc)
-def _make_sales_order(source_name, target_doc=None, customer_group=None, ignore_permissions=False):
- customer = _make_customer(source_name, ignore_permissions, customer_group)
+def _make_sales_order(source_name, target_doc=None, ignore_permissions=False):
+ customer = _make_customer(source_name, ignore_permissions)
ordered_items = frappe._dict(
frappe.db.get_all(
"Sales Order Item",
@@ -391,7 +391,6 @@
balance_qty = obj.qty - ordered_items.get(obj.item_code, 0.0)
target.qty = balance_qty if balance_qty > 0 else 0
target.stock_qty = flt(target.qty) * flt(obj.conversion_factor)
- target.delivery_date = nowdate()
if obj.against_blanket_order:
target.against_blanket_order = obj.against_blanket_order
@@ -507,50 +506,51 @@
return doclist
-def _make_customer(source_name, ignore_permissions=False, customer_group=None):
+def _make_customer(source_name, ignore_permissions=False):
quotation = frappe.db.get_value(
- "Quotation", source_name, ["order_type", "party_name", "customer_name"], as_dict=1
+ "Quotation",
+ source_name,
+ ["order_type", "quotation_to", "party_name", "customer_name"],
+ as_dict=1,
)
- if quotation and quotation.get("party_name"):
- if not frappe.db.exists("Customer", quotation.get("party_name")):
- lead_name = quotation.get("party_name")
- customer_name = frappe.db.get_value(
- "Customer", {"lead_name": lead_name}, ["name", "customer_name"], as_dict=True
- )
- if not customer_name:
- from erpnext.crm.doctype.lead.lead import _make_customer
+ if quotation.quotation_to == "Customer":
+ return frappe.get_doc("Customer", quotation.party_name)
- customer_doclist = _make_customer(lead_name, ignore_permissions=ignore_permissions)
- customer = frappe.get_doc(customer_doclist)
- customer.flags.ignore_permissions = ignore_permissions
- customer.customer_group = customer_group
+ # If the Quotation is not to a Customer, it must be to a Lead.
+ # Check if a Customer already exists for the Lead.
+ existing_customer_for_lead = frappe.db.get_value("Customer", {"lead_name": quotation.party_name})
+ if existing_customer_for_lead:
+ return frappe.get_doc("Customer", existing_customer_for_lead)
- try:
- customer.insert()
- return customer
- except frappe.NameError:
- if frappe.defaults.get_global_default("cust_master_name") == "Customer Name":
- customer.run_method("autoname")
- customer.name += "-" + lead_name
- customer.insert()
- return customer
- else:
- raise
- except frappe.MandatoryError as e:
- mandatory_fields = e.args[0].split(":")[1].split(",")
- mandatory_fields = [customer.meta.get_label(field.strip()) for field in mandatory_fields]
+ # If no Customer exists for the Lead, create a new Customer.
+ return create_customer_from_lead(quotation.party_name, ignore_permissions=ignore_permissions)
- frappe.local.message_log = []
- lead_link = frappe.utils.get_link_to_form("Lead", lead_name)
- message = (
- _("Could not auto create Customer due to the following missing mandatory field(s):") + "<br>"
- )
- message += "<br><ul><li>" + "</li><li>".join(mandatory_fields) + "</li></ul>"
- message += _("Please create Customer from Lead {0}.").format(lead_link)
- frappe.throw(message, title=_("Mandatory Missing"))
- else:
- return customer_name
- else:
- return frappe.get_doc("Customer", quotation.get("party_name"))
+def create_customer_from_lead(lead_name, ignore_permissions=False):
+ from erpnext.crm.doctype.lead.lead import _make_customer
+
+ customer = _make_customer(lead_name, ignore_permissions=ignore_permissions)
+ customer.flags.ignore_permissions = ignore_permissions
+
+ try:
+ customer.insert()
+ return customer
+ except frappe.MandatoryError as e:
+ handle_mandatory_error(e, customer, lead_name)
+
+
+def handle_mandatory_error(e, customer, lead_name):
+ from frappe.utils import get_link_to_form
+
+ mandatory_fields = e.args[0].split(":")[1].split(",")
+ mandatory_fields = [customer.meta.get_label(field.strip()) for field in mandatory_fields]
+
+ frappe.local.message_log = []
+ message = (
+ _("Could not auto create Customer due to the following missing mandatory field(s):") + "<br>"
+ )
+ message += "<br><ul><li>" + "</li><li>".join(mandatory_fields) + "</li></ul>"
+ message += _("Please create Customer from Lead {0}.").format(get_link_to_form("Lead", lead_name))
+
+ frappe.throw(message, title=_("Mandatory Missing"))
diff --git a/erpnext/selling/doctype/quotation/test_quotation.py b/erpnext/selling/doctype/quotation/test_quotation.py
index 2a4855e..0b0d6e7 100644
--- a/erpnext/selling/doctype/quotation/test_quotation.py
+++ b/erpnext/selling/doctype/quotation/test_quotation.py
@@ -99,7 +99,6 @@
self.assertEqual(sales_order.get("items")[0].prevdoc_docname, quotation.name)
self.assertEqual(sales_order.customer, "_Test Customer")
- sales_order.delivery_date = "2014-01-01"
sales_order.naming_series = "_T-Quotation-"
sales_order.transaction_date = nowdate()
sales_order.insert()
@@ -132,7 +131,6 @@
self.assertEqual(sales_order.get("items")[0].prevdoc_docname, quotation.name)
self.assertEqual(sales_order.customer, "_Test Customer")
- sales_order.delivery_date = "2014-01-01"
sales_order.naming_series = "_T-Quotation-"
sales_order.transaction_date = nowdate()
sales_order.insert()
@@ -609,6 +607,61 @@
quotation.items[0].conversion_factor = 2.23
self.assertRaises(frappe.ValidationError, quotation.save)
+ def test_item_tax_template_for_quotation(self):
+ from erpnext.stock.doctype.item.test_item import make_item
+
+ if not frappe.db.exists("Account", {"account_name": "_Test Vat", "company": "_Test Company"}):
+ frappe.get_doc(
+ {
+ "doctype": "Account",
+ "account_name": "_Test Vat",
+ "company": "_Test Company",
+ "account_type": "Tax",
+ "root_type": "Asset",
+ "is_group": 0,
+ "parent_account": "Tax Assets - _TC",
+ "tax_rate": 10,
+ }
+ ).insert()
+
+ if not frappe.db.exists("Item Tax Template", "Vat Template - _TC"):
+ doc = frappe.get_doc(
+ {
+ "doctype": "Item Tax Template",
+ "name": "Vat Template",
+ "title": "Vat Template",
+ "company": "_Test Company",
+ "taxes": [
+ {
+ "tax_type": "_Test Vat - _TC",
+ "tax_rate": 5,
+ }
+ ],
+ }
+ ).insert()
+
+ item_doc = make_item("_Test Item Tax Template QTN", {"is_stock_item": 1})
+ if not frappe.db.exists(
+ "Item Tax", {"parent": item_doc.name, "item_tax_template": "Vat Template - _TC"}
+ ):
+ item_doc.append("taxes", {"item_tax_template": "Vat Template - _TC"})
+ item_doc.save()
+
+ quotation = make_quotation(
+ item_code="_Test Item Tax Template QTN", qty=1, rate=100, do_not_submit=1
+ )
+ self.assertFalse(quotation.taxes)
+
+ quotation.append_taxes_from_item_tax_template()
+ quotation.save()
+ self.assertTrue(quotation.taxes)
+ for row in quotation.taxes:
+ self.assertEqual(row.account_head, "_Test Vat - _TC")
+ self.assertAlmostEqual(row.base_tax_amount, quotation.total * 5 / 100)
+
+ item_doc.taxes = []
+ item_doc.save()
+
test_records = frappe.get_test_records("Quotation")
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 5d1d769..79f24d1 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -643,7 +643,7 @@
if not frappe.get_cached_value("Item", item.item_code, "has_serial_no"):
frappe.throw(
_(
- "Item {0} has no Serial No. Only serilialized items can have delivery based on Serial No"
+ "Item {0} has no Serial No. Only serialized items can have delivery based on Serial No"
).format(item.item_code)
)
if not frappe.db.exists("BOM", {"item": item.item_code, "is_active": 1}):
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.json b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
index 87aeeac..9599980 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.json
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
@@ -118,6 +118,7 @@
"oldfieldtype": "Link",
"options": "Item",
"print_width": "150px",
+ "reqd": 1,
"width": "150px"
},
{
@@ -908,7 +909,7 @@
"idx": 1,
"istable": 1,
"links": [],
- "modified": "2023-11-24 13:24:55.756320",
+ "modified": "2024-01-25 14:24:00.330219",
"modified_by": "Administrator",
"module": "Selling",
"name": "Sales Order Item",
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.py b/erpnext/selling/doctype/sales_order_item/sales_order_item.py
index 25f5b4b..fa7b9b9 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.py
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.py
@@ -43,7 +43,8 @@
gross_profit: DF.Currency
image: DF.Attach | None
is_free_item: DF.Check
- item_code: DF.Link | None
+ is_stock_item: DF.Check
+ item_code: DF.Link
item_group: DF.Link | None
item_name: DF.Data
item_tax_rate: DF.Code | None
diff --git a/erpnext/selling/page/point_of_sale/pos_controller.js b/erpnext/selling/page/point_of_sale/pos_controller.js
index feecd9c..80e1c20 100644
--- a/erpnext/selling/page/point_of_sale/pos_controller.js
+++ b/erpnext/selling/page/point_of_sale/pos_controller.js
@@ -360,7 +360,7 @@
this.order_summary.load_summary_of(this.frm.doc, true);
frappe.show_alert({
indicator: 'green',
- message: __('POS invoice {0} created succesfully', [r.doc.name])
+ message: __('POS invoice {0} created successfully', [r.doc.name])
});
});
}
diff --git a/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py b/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py
index 00acc80..72b7fa2 100644
--- a/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py
+++ b/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py
@@ -210,7 +210,6 @@
.where(
(so.docstatus == 1)
& (so.status.isin(["To Deliver and Bill", "To Bill", "To Pay"]))
- & (so.payment_terms_template != "NULL")
& (so.company == conditions.company)
& (so.transaction_date[conditions.start_date : conditions.end_date])
)
diff --git a/erpnext/setup/doctype/authorization_control/authorization_control.py b/erpnext/setup/doctype/authorization_control/authorization_control.py
index 9446fb4..27313ae 100644
--- a/erpnext/setup/doctype/authorization_control/authorization_control.py
+++ b/erpnext/setup/doctype/authorization_control/authorization_control.py
@@ -54,7 +54,7 @@
if not has_common(appr_roles, frappe.get_roles()) and not has_common(
appr_users, [session["user"]]
):
- frappe.msgprint(_("Not authroized since {0} exceeds limits").format(_(based_on)))
+ frappe.msgprint(_("Not authorized since {0} exceeds limits").format(_(based_on)))
frappe.throw(_("Can be approved by {0}").format(comma_or(appr_roles + appr_users)))
def validate_auth_rule(self, doctype_name, total, based_on, cond, company, master_name=""):
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 68a3854..876b6a4 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -908,8 +908,8 @@
@frappe.whitelist()
def is_deletion_job_running(company):
job_id = generate_id_for_deletion_job(company)
- job_name = get_job(job_id).get_id() # job name will have site prefix
if is_job_enqueued(job_id):
+ job_name = get_job(job_id).get_id() # job name will have site prefix
frappe.throw(
_("A Transaction Deletion Job: {0} is already running for {1}").format(
frappe.bold(get_link_to_form("RQ Job", job_name)), frappe.bold(company)
diff --git a/erpnext/setup/doctype/employee/employee.json b/erpnext/setup/doctype/employee/employee.json
index daf2df5..fc1fc9b 100644
--- a/erpnext/setup/doctype/employee/employee.json
+++ b/erpnext/setup/doctype/employee/employee.json
@@ -441,13 +441,13 @@
{
"fieldname": "prefered_contact_email",
"fieldtype": "Select",
- "label": "Prefered Contact Email",
+ "label": "Preferred Contact Email",
"options": "\nCompany Email\nPersonal Email\nUser ID"
},
{
"fieldname": "prefered_email",
"fieldtype": "Data",
- "label": "Prefered Email",
+ "label": "Preferred Email",
"options": "Email",
"read_only": 1
},
@@ -524,7 +524,7 @@
{
"fieldname": "valid_upto",
"fieldtype": "Date",
- "label": "Valid Upto"
+ "label": "Valid Up To"
},
{
"fieldname": "place_of_issue",
@@ -824,7 +824,7 @@
"image_field": "image",
"is_tree": 1,
"links": [],
- "modified": "2024-01-03 17:36:20.984421",
+ "modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Setup",
"name": "Employee",
diff --git a/erpnext/setup/doctype/transaction_deletion_record/test_transaction_deletion_record.py b/erpnext/setup/doctype/transaction_deletion_record/test_transaction_deletion_record.py
index 319d435..844e786 100644
--- a/erpnext/setup/doctype/transaction_deletion_record/test_transaction_deletion_record.py
+++ b/erpnext/setup/doctype/transaction_deletion_record/test_transaction_deletion_record.py
@@ -4,9 +4,10 @@
import unittest
import frappe
+from frappe.tests.utils import FrappeTestCase
-class TestTransactionDeletionRecord(unittest.TestCase):
+class TestTransactionDeletionRecord(FrappeTestCase):
def setUp(self):
create_company("Dunder Mifflin Paper Co")
@@ -14,7 +15,7 @@
frappe.db.rollback()
def test_doctypes_contain_company_field(self):
- tdr = create_transaction_deletion_request("Dunder Mifflin Paper Co")
+ tdr = create_transaction_deletion_doc("Dunder Mifflin Paper Co")
for doctype in tdr.doctypes:
contains_company = False
doctype_fields = frappe.get_meta(doctype.doctype_name).as_dict()["fields"]
@@ -27,17 +28,27 @@
def test_no_of_docs_is_correct(self):
for i in range(5):
create_task("Dunder Mifflin Paper Co")
- tdr = create_transaction_deletion_request("Dunder Mifflin Paper Co")
+ tdr = create_transaction_deletion_doc("Dunder Mifflin Paper Co")
for doctype in tdr.doctypes:
if doctype.doctype_name == "Task":
self.assertEqual(doctype.no_of_docs, 5)
def test_deletion_is_successful(self):
create_task("Dunder Mifflin Paper Co")
- create_transaction_deletion_request("Dunder Mifflin Paper Co")
+ create_transaction_deletion_doc("Dunder Mifflin Paper Co")
tasks_containing_company = frappe.get_all("Task", filters={"company": "Dunder Mifflin Paper Co"})
self.assertEqual(tasks_containing_company, [])
+ def test_company_transaction_deletion_request(self):
+ from erpnext.setup.doctype.company.company import create_transaction_deletion_request
+
+ # don't reuse below company for other test cases
+ company = "Deep Space Exploration"
+ create_company(company)
+
+ # below call should not raise any exceptions or throw errors
+ create_transaction_deletion_request(company)
+
def create_company(company_name):
company = frappe.get_doc(
@@ -46,7 +57,7 @@
company.insert(ignore_if_duplicate=True)
-def create_transaction_deletion_request(company):
+def create_transaction_deletion_doc(company):
tdr = frappe.get_doc({"doctype": "Transaction Deletion Record", "company": company})
tdr.insert()
tdr.submit()
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 7d7b0cd..58990d4 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -796,36 +796,36 @@
updated_dn = []
for dnd in dn_details:
- billed_amt_agianst_dn = 0
+ billed_amt_against_dn = 0
# If delivered against Sales Invoice
if dnd.si_detail:
- billed_amt_agianst_dn = flt(dnd.amount)
- billed_against_so -= billed_amt_agianst_dn
+ billed_amt_against_dn = flt(dnd.amount)
+ billed_against_so -= billed_amt_against_dn
else:
# Get billed amount directly against Delivery Note
- billed_amt_agianst_dn = frappe.db.sql(
+ billed_amt_against_dn = frappe.db.sql(
"""select sum(amount) from `tabSales Invoice Item`
where dn_detail=%s and docstatus=1""",
dnd.name,
)
- billed_amt_agianst_dn = billed_amt_agianst_dn and billed_amt_agianst_dn[0][0] or 0
+ billed_amt_against_dn = billed_amt_against_dn and billed_amt_against_dn[0][0] or 0
# Distribute billed amount directly against SO between DNs based on FIFO
- if billed_against_so and billed_amt_agianst_dn < dnd.amount:
- pending_to_bill = flt(dnd.amount) - billed_amt_agianst_dn
+ if billed_against_so and billed_amt_against_dn < dnd.amount:
+ pending_to_bill = flt(dnd.amount) - billed_amt_against_dn
if pending_to_bill <= billed_against_so:
- billed_amt_agianst_dn += pending_to_bill
+ billed_amt_against_dn += pending_to_bill
billed_against_so -= pending_to_bill
else:
- billed_amt_agianst_dn += billed_against_so
+ billed_amt_against_dn += billed_against_so
billed_against_so = 0
frappe.db.set_value(
"Delivery Note Item",
dnd.name,
"billed_amt",
- billed_amt_agianst_dn,
+ billed_amt_against_dn,
update_modified=update_modified,
)
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note_dashboard.py b/erpnext/stock/doctype/delivery_note/delivery_note_dashboard.py
index d4a574d..2440701 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note_dashboard.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note_dashboard.py
@@ -8,6 +8,7 @@
"Stock Entry": "delivery_note_no",
"Quality Inspection": "reference_name",
"Auto Repeat": "reference_document",
+ "Purchase Receipt": "inter_company_reference",
},
"internal_links": {
"Sales Order": ["items", "against_sales_order"],
@@ -22,6 +23,9 @@
{"label": _("Reference"), "items": ["Sales Order", "Shipment", "Quality Inspection"]},
{"label": _("Returns"), "items": ["Stock Entry"]},
{"label": _("Subscription"), "items": ["Auto Repeat"]},
- {"label": _("Internal Transfer"), "items": ["Material Request", "Purchase Order"]},
+ {
+ "label": _("Internal Transfer"),
+ "items": ["Material Request", "Purchase Order", "Purchase Receipt"],
+ },
],
}
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index 3fdda2c..0f12f38 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -1597,8 +1597,8 @@
{
"item_code": args.item or args.item_code or "_Test Item",
"warehouse": args.warehouse or "_Test Warehouse - _TC",
- "qty": args.qty if args.get("qty") is not None else 1,
- "rate": args.rate if args.get("rate") is not None else 100,
+ "qty": args.get("qty", 1),
+ "rate": args.get("rate", 100),
"conversion_factor": 1.0,
"serial_and_batch_bundle": bundle_id,
"allow_zero_valuation_rate": args.allow_zero_valuation_rate or 1,
diff --git a/erpnext/stock/doctype/item_price/item_price.json b/erpnext/stock/doctype/item_price/item_price.json
index f4d9bb0..2390ee2 100644
--- a/erpnext/stock/doctype/item_price/item_price.json
+++ b/erpnext/stock/doctype/item_price/item_price.json
@@ -191,7 +191,7 @@
{
"fieldname": "valid_upto",
"fieldtype": "Date",
- "label": "Valid Upto"
+ "label": "Valid Up To"
},
{
"fieldname": "section_break_24",
@@ -220,7 +220,7 @@
"idx": 1,
"index_web_pages_for_search": 1,
"links": [],
- "modified": "2022-11-15 08:26:04.041861",
+ "modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Stock",
"name": "Item Price",
diff --git a/erpnext/stock/doctype/item_price/item_price.py b/erpnext/stock/doctype/item_price/item_price.py
index 89a130a..de2add6 100644
--- a/erpnext/stock/doctype/item_price/item_price.py
+++ b/erpnext/stock/doctype/item_price/item_price.py
@@ -59,7 +59,7 @@
def validate_dates(self):
if self.valid_from and self.valid_upto:
if getdate(self.valid_from) > getdate(self.valid_upto):
- frappe.throw(_("Valid From Date must be lesser than Valid Upto Date."))
+ frappe.throw(_("Valid From Date must be lesser than Valid Up To Date."))
def update_price_list_details(self):
if self.price_list:
diff --git a/erpnext/stock/doctype/item_price/test_item_price.py b/erpnext/stock/doctype/item_price/test_item_price.py
index 8fd4938..63d717c 100644
--- a/erpnext/stock/doctype/item_price/test_item_price.py
+++ b/erpnext/stock/doctype/item_price/test_item_price.py
@@ -64,7 +64,7 @@
# Enter invalid dates valid_from >= valid_upto
doc.valid_from = "2017-04-20"
doc.valid_upto = "2017-04-17"
- # Valid Upto Date can not be less/equal than Valid From Date
+ # Valid Up To Date can not be less/equal than Valid From Date
self.assertRaises(frappe.ValidationError, doc.save)
def test_price_in_a_qty(self):
diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js
index d90b71a..e80218a 100644
--- a/erpnext/stock/doctype/material_request/material_request.js
+++ b/erpnext/stock/doctype/material_request/material_request.js
@@ -429,6 +429,9 @@
rate: function(frm, doctype, name) {
const item = locals[doctype][name];
+ item.amount = flt(item.qty) * flt(item.rate);
+ frappe.model.set_value(doctype, name, "amount", item.amount);
+ refresh_field("amount", item.name, item.parentfield);
frm.events.get_item_data(frm, item, false);
},
@@ -514,6 +517,13 @@
schedule_date() {
set_schedule_date(this.frm);
}
+
+ qty(doc, cdt, cdn) {
+ var row = frappe.get_doc(cdt, cdn);
+ row.amount = flt(row.qty) * flt(row.rate);
+ frappe.model.set_value(cdt, cdn, "amount", row.amount);
+ refresh_field("amount", row.name, row.parentfield);
+ }
};
// for backward compatibility: combine new and previous states
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index ad9b34c..e784b70 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -776,7 +776,7 @@
)
else:
msgprint(
- _("The {0} {1} created sucessfully").format(frappe.bold(_("Work Order")), work_orders_list[0])
+ _("The {0} {1} created successfully").format(frappe.bold(_("Work Order")), work_orders_list[0])
)
if errors:
diff --git a/erpnext/stock/doctype/material_request/material_request_list.js b/erpnext/stock/doctype/material_request/material_request_list.js
index de7a3d0..c85bd71 100644
--- a/erpnext/stock/doctype/material_request/material_request_list.js
+++ b/erpnext/stock/doctype/material_request/material_request_list.js
@@ -24,7 +24,7 @@
} else if (doc.material_request_type == "Purchase") {
return [__("Ordered"), "green", "per_ordered,=,100"];
} else if (doc.material_request_type == "Material Transfer") {
- return [__("Transfered"), "green", "per_ordered,=,100"];
+ return [__("Transferred"), "green", "per_ordered,=,100"];
} else if (doc.material_request_type == "Material Issue") {
return [__("Issued"), "green", "per_ordered,=,100"];
} else if (doc.material_request_type == "Customer Provided") {
diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py
index 3e44049..48397a3 100644
--- a/erpnext/stock/doctype/material_request/test_material_request.py
+++ b/erpnext/stock/doctype/material_request/test_material_request.py
@@ -774,6 +774,62 @@
self.assertEqual(mr.per_ordered, 100)
self.assertEqual(existing_requested_qty, current_requested_qty)
+ def test_auto_email_users_with_company_user_permissions(self):
+ from erpnext.stock.reorder_item import get_email_list
+
+ comapnywise_users = {
+ "_Test Company": "test_auto_email_@example.com",
+ "_Test Company 1": "test_auto_email_1@example.com",
+ }
+
+ permissions = []
+
+ for company, user in comapnywise_users.items():
+ if not frappe.db.exists("User", user):
+ frappe.get_doc(
+ {
+ "doctype": "User",
+ "email": user,
+ "first_name": user,
+ "send_notifications": 0,
+ "enabled": 1,
+ "user_type": "System User",
+ "roles": [{"role": "Purchase Manager"}],
+ }
+ ).insert(ignore_permissions=True)
+
+ if not frappe.db.exists(
+ "User Permission", {"user": user, "allow": "Company", "for_value": company}
+ ):
+ perm_doc = frappe.get_doc(
+ {
+ "doctype": "User Permission",
+ "user": user,
+ "allow": "Company",
+ "for_value": company,
+ "apply_to_all_doctypes": 1,
+ }
+ ).insert(ignore_permissions=True)
+
+ permissions.append(perm_doc)
+
+ comapnywise_mr_list = frappe._dict({})
+ mr1 = make_material_request()
+ comapnywise_mr_list.setdefault(mr1.company, []).append(mr1.name)
+
+ mr2 = make_material_request(
+ company="_Test Company 1", warehouse="Stores - _TC1", cost_center="Main - _TC1"
+ )
+ comapnywise_mr_list.setdefault(mr2.company, []).append(mr2.name)
+
+ for company, mr_list in comapnywise_mr_list.items():
+ emails = get_email_list(company)
+
+ self.assertTrue(comapnywise_users[company] in emails)
+
+ for perm in permissions:
+ perm.delete()
+
def get_in_transit_warehouse(company):
if not frappe.db.exists("Warehouse Type", "Transit"):
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index fcb7a6d..bf6080b 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -951,32 +951,32 @@
billed_against_po = flt(po_billed_amt_details.get(pr_item.purchase_order_item))
# Get billed amount directly against Purchase Receipt
- billed_amt_agianst_pr = flt(pr_items_billed_amount.get(pr_item.name, 0))
+ billed_amt_against_pr = flt(pr_items_billed_amount.get(pr_item.name, 0))
# Distribute billed amount directly against PO between PRs based on FIFO
- if billed_against_po and billed_amt_agianst_pr < pr_item.amount:
- pending_to_bill = flt(pr_item.amount) - billed_amt_agianst_pr
+ if billed_against_po and billed_amt_against_pr < pr_item.amount:
+ pending_to_bill = flt(pr_item.amount) - billed_amt_against_pr
if pending_to_bill <= billed_against_po:
- billed_amt_agianst_pr += pending_to_bill
+ billed_amt_against_pr += pending_to_bill
billed_against_po -= pending_to_bill
else:
- billed_amt_agianst_pr += billed_against_po
+ billed_amt_against_pr += billed_against_po
billed_against_po = 0
po_billed_amt_details[pr_item.purchase_order_item] = billed_against_po
- if pr_item.billed_amt != billed_amt_agianst_pr:
+ if pr_item.billed_amt != billed_amt_against_pr:
# update existing doc if possible
if pr_doc and pr_item.parent == pr_doc.name:
pr_item = next((item for item in pr_doc.items if item.name == pr_item.name), None)
- pr_item.db_set("billed_amt", billed_amt_agianst_pr, update_modified=update_modified)
+ pr_item.db_set("billed_amt", billed_amt_against_pr, update_modified=update_modified)
else:
frappe.db.set_value(
"Purchase Receipt Item",
pr_item.name,
"billed_amt",
- billed_amt_agianst_pr,
+ billed_amt_against_pr,
update_modified=update_modified,
)
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js
index 4029f0c..f19f1ff 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js
@@ -8,8 +8,10 @@
return [__("Closed"), "green", "status,=,Closed"];
} else if (flt(doc.per_returned, 2) === 100) {
return [__("Return Issued"), "grey", "per_returned,=,100"];
- } else if (flt(doc.grand_total) !== 0 && flt(doc.per_billed, 2) < 100) {
+ } else if (flt(doc.grand_total) !== 0 && flt(doc.per_billed, 2) == 0) {
return [__("To Bill"), "orange", "per_billed,<,100"];
+ } else if (flt(doc.per_billed, 2) > 0 && flt(doc.per_billed, 2) < 100) {
+ return [__("Partly Billed"), "yellow", "per_billed,<,100"];
} else if (flt(doc.grand_total) === 0 || flt(doc.per_billed, 2) === 100) {
return [__("Completed"), "green", "per_billed,=,100"];
}
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index 57ba5bb..dd68d16 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -21,9 +21,7 @@
get_serial_nos_from_bundle,
make_serial_batch_bundle,
)
-from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
-from erpnext.stock.stock_ledger import SerialNoExistsInFutureTransaction
class TestPurchaseReceipt(FrappeTestCase):
@@ -722,7 +720,7 @@
pr2.load_from_db()
self.assertEqual(pr2.get("items")[0].billed_amt, 2000)
self.assertEqual(pr2.per_billed, 80)
- self.assertEqual(pr2.status, "To Bill")
+ self.assertEqual(pr2.status, "Partly Billed")
pr2.cancel()
pi2.reload()
@@ -735,7 +733,6 @@
po.cancel()
def test_serial_no_against_purchase_receipt(self):
- from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
item_code = "Test Manual Created Serial No"
if not frappe.db.exists("Item", item_code):
@@ -1020,6 +1017,11 @@
def test_stock_transfer_from_purchase_receipt_with_valuation(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
+ from erpnext.stock.doctype.stock_reconciliation.test_stock_reconciliation import (
+ create_stock_reconciliation,
+ )
+ from erpnext.stock.get_item_details import get_valuation_rate
+ from erpnext.stock.utils import get_stock_balance
prepare_data_for_internal_transfer()
@@ -1034,6 +1036,22 @@
company="_Test Company with perpetual inventory",
)
+ if (
+ get_valuation_rate(
+ pr1.items[0].item_code, "_Test Company with perpetual inventory", warehouse="Stores - TCP1"
+ )
+ != 50
+ ):
+ balance = get_stock_balance(item_code=pr1.items[0].item_code, warehouse="Stores - TCP1")
+ create_stock_reconciliation(
+ item_code=pr1.items[0].item_code,
+ company="_Test Company with perpetual inventory",
+ warehouse="Stores - TCP1",
+ qty=balance,
+ rate=50,
+ do_not_save=True,
+ )
+
customer = "_Test Internal Customer 2"
company = "_Test Company with perpetual inventory"
@@ -1071,7 +1089,8 @@
sl_entries = get_sl_entries("Purchase Receipt", pr.name)
expected_gle = [
- ["Stock In Hand - TCP1", 272.5, 0.0],
+ ["Stock In Hand - TCP1", 250.0, 0.0],
+ ["Cost of Goods Sold - TCP1", 22.5, 0.0],
["_Test Account Stock In Hand - TCP1", 0.0, 250.0],
["_Test Account Shipping Charges - TCP1", 0.0, 22.5],
]
@@ -1133,7 +1152,7 @@
pi.load_from_db()
pr.load_from_db()
- self.assertEqual(pr.status, "To Bill")
+ self.assertEqual(pr.status, "Partly Billed")
self.assertAlmostEqual(pr.per_billed, 50.0, places=2)
def test_purchase_receipt_with_exchange_rate_difference(self):
@@ -1687,7 +1706,7 @@
pr.items[0].rejected_warehouse = from_warehouse
pr.save()
- self.assertRaises(OverAllowanceError, pr.submit)
+ self.assertRaises(frappe.ValidationError, pr.submit)
# Step 5: Test Over Receipt Allowance
frappe.db.set_single_value("Stock Settings", "over_delivery_receipt_allowance", 50)
@@ -1701,6 +1720,7 @@
to_warehouse=target_warehouse,
)
+ pr.reload()
pr.submit()
frappe.db.set_single_value("Stock Settings", "over_delivery_receipt_allowance", 0)
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 63cc938..9cad8f6 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
@@ -250,6 +250,7 @@
for d in self.entries:
available_qty = 0
+
if self.has_serial_no:
d.incoming_rate = abs(sn_obj.serial_no_incoming_rate.get(d.serial_no, 0.0))
else:
@@ -892,6 +893,13 @@
elif batch_nos:
self.set("entries", batch_nos)
+ def delete_serial_batch_entries(self):
+ SBBE = frappe.qb.DocType("Serial and Batch Entry")
+
+ frappe.qb.from_(SBBE).delete().where(SBBE.parent == self.name).run()
+
+ self.set("entries", [])
+
@frappe.whitelist()
def download_blank_csv_template(content):
@@ -1374,10 +1382,12 @@
elif kwargs.based_on == "Expiry":
order_by = "amc_expiry_date asc"
- filters = {"item_code": kwargs.item_code, "warehouse": ("is", "set")}
+ filters = {"item_code": kwargs.item_code}
- if kwargs.warehouse:
- filters["warehouse"] = kwargs.warehouse
+ if not kwargs.get("ignore_warehouse"):
+ filters["warehouse"] = ("is", "set")
+ if kwargs.warehouse:
+ filters["warehouse"] = kwargs.warehouse
# Since SLEs are not present against Reserved Stock [POS invoices, SRE], need to ignore reserved serial nos.
ignore_serial_nos = get_reserved_serial_nos(kwargs)
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 96c249f..c371b70 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -640,7 +640,7 @@
frappe.throw(_("Source and target warehouse cannot be same for row {0}").format(d.idx))
if not (d.s_warehouse or d.t_warehouse):
- frappe.throw(_("Atleast one warehouse is mandatory"))
+ frappe.throw(_("At least one warehouse is mandatory"))
def validate_work_order(self):
if self.purpose in (
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 6819968..788ae0d 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -156,6 +156,7 @@
"warehouse": item.warehouse,
"posting_date": self.posting_date,
"posting_time": self.posting_time,
+ "ignore_warehouse": 1,
}
)
)
@@ -780,7 +781,20 @@
current_qty = 0.0
if row.current_serial_and_batch_bundle:
- current_qty = self.get_qty_for_serial_and_batch_bundle(row)
+ current_qty = self.get_current_qty_for_serial_or_batch(row)
+ elif row.serial_no:
+ item_dict = get_stock_balance_for(
+ row.item_code,
+ row.warehouse,
+ self.posting_date,
+ self.posting_time,
+ voucher_no=self.name,
+ )
+
+ current_qty = item_dict.get("qty")
+ row.current_serial_no = item_dict.get("serial_nos")
+ row.current_valuation_rate = item_dict.get("rate")
+ val_rate = item_dict.get("rate")
elif row.batch_no:
current_qty = get_batch_qty_for_stock_reco(
row.item_code, row.warehouse, row.batch_no, self.posting_date, self.posting_time, self.name
@@ -788,15 +802,16 @@
precesion = row.precision("current_qty")
if flt(current_qty, precesion) != flt(row.current_qty, precesion):
- val_rate = get_valuation_rate(
- row.item_code,
- row.warehouse,
- self.doctype,
- self.name,
- company=self.company,
- batch_no=row.batch_no,
- serial_and_batch_bundle=row.current_serial_and_batch_bundle,
- )
+ if not row.serial_no:
+ val_rate = get_valuation_rate(
+ row.item_code,
+ row.warehouse,
+ self.doctype,
+ self.name,
+ company=self.company,
+ batch_no=row.batch_no,
+ serial_and_batch_bundle=row.current_serial_and_batch_bundle,
+ )
row.current_valuation_rate = val_rate
row.current_qty = current_qty
@@ -842,11 +857,56 @@
return allow_negative_stock
- def get_qty_for_serial_and_batch_bundle(self, row):
+ def get_current_qty_for_serial_or_batch(self, row):
doc = frappe.get_doc("Serial and Batch Bundle", row.current_serial_and_batch_bundle)
- precision = doc.entries[0].precision("qty")
+ current_qty = 0.0
+ if doc.has_serial_no:
+ current_qty = self.get_current_qty_for_serial_nos(doc)
+ elif doc.has_batch_no:
+ current_qty = self.get_current_qty_for_batch_nos(doc)
- current_qty = 0
+ return abs(current_qty)
+
+ def get_current_qty_for_serial_nos(self, doc):
+ serial_nos_details = get_available_serial_nos(
+ frappe._dict(
+ {
+ "item_code": doc.item_code,
+ "warehouse": doc.warehouse,
+ "posting_date": self.posting_date,
+ "posting_time": self.posting_time,
+ "voucher_no": self.name,
+ "ignore_warehouse": 1,
+ }
+ )
+ )
+
+ if not serial_nos_details:
+ return 0.0
+
+ doc.delete_serial_batch_entries()
+ current_qty = 0.0
+ for serial_no_row in serial_nos_details:
+ current_qty += 1
+ doc.append(
+ "entries",
+ {
+ "serial_no": serial_no_row.serial_no,
+ "qty": -1,
+ "warehouse": doc.warehouse,
+ "batch_no": serial_no_row.batch_no,
+ },
+ )
+
+ doc.set_incoming_rate(save=True)
+ doc.calculate_qty_and_amount(save=True)
+ doc.db_update_all()
+
+ return current_qty
+
+ def get_current_qty_for_batch_nos(self, doc):
+ current_qty = 0.0
+ precision = doc.entries[0].precision("qty")
for d in doc.entries:
qty = (
get_batch_qty(
@@ -864,7 +924,7 @@
current_qty += qty
- return abs(current_qty)
+ return current_qty
def get_batch_qty_for_stock_reco(
diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
index 70e9fb2..0bbfed4 100644
--- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
@@ -925,6 +925,74 @@
self.assertEqual(len(serial_batch_bundle), 0)
+ def test_backdated_purchase_receipt_with_stock_reco(self):
+ item_code = self.make_item(
+ properties={
+ "is_stock_item": 1,
+ "has_serial_no": 1,
+ "serial_no_series": "TEST-SERIAL-.###",
+ }
+ ).name
+
+ warehouse = "_Test Warehouse - _TC"
+
+ # Step - 1: Create a Backdated Purchase Receipt
+
+ pr1 = make_purchase_receipt(
+ item_code=item_code, warehouse=warehouse, qty=10, rate=100, posting_date=add_days(nowdate(), -3)
+ )
+ pr1.reload()
+
+ serial_nos = sorted(get_serial_nos_from_bundle(pr1.items[0].serial_and_batch_bundle))[:5]
+
+ # Step - 2: Create a Stock Reconciliation
+ sr1 = create_stock_reconciliation(
+ item_code=item_code,
+ warehouse=warehouse,
+ qty=5,
+ serial_no=serial_nos,
+ )
+
+ data = frappe.get_all(
+ "Stock Ledger Entry",
+ fields=["serial_no", "actual_qty", "stock_value_difference"],
+ filters={"voucher_no": sr1.name, "is_cancelled": 0},
+ order_by="creation",
+ )
+
+ for d in data:
+ if d.actual_qty < 0:
+ self.assertEqual(d.actual_qty, -10.0)
+ self.assertAlmostEqual(d.stock_value_difference, -1000.0)
+ else:
+ self.assertEqual(d.actual_qty, 5.0)
+ self.assertAlmostEqual(d.stock_value_difference, 500.0)
+
+ # Step - 3: Create a Purchase Receipt before the first Purchase Receipt
+ make_purchase_receipt(
+ item_code=item_code, warehouse=warehouse, qty=10, rate=200, posting_date=add_days(nowdate(), -5)
+ )
+
+ data = frappe.get_all(
+ "Stock Ledger Entry",
+ fields=["serial_no", "actual_qty", "stock_value_difference"],
+ filters={"voucher_no": sr1.name, "is_cancelled": 0},
+ order_by="creation",
+ )
+
+ for d in data:
+ if d.actual_qty < 0:
+ self.assertEqual(d.actual_qty, -20.0)
+ self.assertAlmostEqual(d.stock_value_difference, -3000.0)
+ else:
+ self.assertEqual(d.actual_qty, 5.0)
+ self.assertAlmostEqual(d.stock_value_difference, 500.0)
+
+ active_serial_no = frappe.get_all(
+ "Serial No", filters={"status": "Active", "item_code": item_code}
+ )
+ self.assertEqual(len(active_serial_no), 5)
+
def create_batch_item_with_batch(item_name, batch_id):
batch_item_doc = create_item(item_name, is_stock_item=1)
diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.json b/erpnext/stock/doctype/stock_settings/stock_settings.json
index 1228290..f84456a 100644
--- a/erpnext/stock/doctype/stock_settings/stock_settings.json
+++ b/erpnext/stock/doctype/stock_settings/stock_settings.json
@@ -176,7 +176,7 @@
"description": "No stock transactions can be created or modified before this date.",
"fieldname": "stock_frozen_upto",
"fieldtype": "Date",
- "label": "Stock Frozen Upto"
+ "label": "Stock Frozen Up To"
},
{
"description": "Stock transactions that are older than the mentioned days cannot be modified.",
@@ -427,7 +427,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
- "modified": "2023-10-18 12:35:30.068799",
+ "modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Stock",
"name": "Stock Settings",
diff --git a/erpnext/stock/reorder_item.py b/erpnext/stock/reorder_item.py
index 4cd9cbb..276531a 100644
--- a/erpnext/stock/reorder_item.py
+++ b/erpnext/stock/reorder_item.py
@@ -145,6 +145,7 @@
mr.log_error("Unable to create material request")
+ company_wise_mr = frappe._dict({})
for request_type in material_requests:
for company in material_requests[request_type]:
try:
@@ -206,17 +207,19 @@
mr.submit()
mr_list.append(mr)
+ company_wise_mr.setdefault(company, []).append(mr)
+
except Exception:
_log_exception(mr)
- if mr_list:
+ if company_wise_mr:
if getattr(frappe.local, "reorder_email_notify", None) is None:
frappe.local.reorder_email_notify = cint(
frappe.db.get_single_value("Stock Settings", "reorder_email_notify")
)
if frappe.local.reorder_email_notify:
- send_email_notification(mr_list)
+ send_email_notification(company_wise_mr)
if exceptions_list:
notify_errors(exceptions_list)
@@ -224,20 +227,56 @@
return mr_list
-def send_email_notification(mr_list):
+def send_email_notification(company_wise_mr):
"""Notify user about auto creation of indent"""
- email_list = frappe.db.sql_list(
- """select distinct r.parent
- from `tabHas Role` r, tabUser p
- where p.name = r.parent and p.enabled = 1 and p.docstatus < 2
- and r.role in ('Purchase Manager','Stock Manager')
- and p.name not in ('Administrator', 'All', 'Guest')"""
+ for company, mr_list in company_wise_mr.items():
+ email_list = get_email_list(company)
+
+ if not email_list:
+ continue
+
+ msg = frappe.render_template("templates/emails/reorder_item.html", {"mr_list": mr_list})
+
+ frappe.sendmail(
+ recipients=email_list, subject=_("Auto Material Requests Generated"), message=msg
+ )
+
+
+def get_email_list(company):
+ users = get_comapny_wise_users(company)
+ user_table = frappe.qb.DocType("User")
+ role_table = frappe.qb.DocType("Has Role")
+
+ query = (
+ frappe.qb.from_(user_table)
+ .inner_join(role_table)
+ .on(user_table.name == role_table.parent)
+ .select(user_table.email)
+ .where(
+ (role_table.role.isin(["Purchase Manager", "Stock Manager"]))
+ & (user_table.name.notin(["Administrator", "All", "Guest"]))
+ & (user_table.enabled == 1)
+ & (user_table.docstatus < 2)
+ )
)
- msg = frappe.render_template("templates/emails/reorder_item.html", {"mr_list": mr_list})
+ if users:
+ query = query.where(user_table.name.isin(users))
- frappe.sendmail(recipients=email_list, subject=_("Auto Material Requests Generated"), message=msg)
+ emails = query.run(as_dict=True)
+
+ return list(set([email.email for email in emails]))
+
+
+def get_comapny_wise_users(company):
+ users = frappe.get_all(
+ "User Permission",
+ filters={"allow": "Company", "for_value": company, "apply_to_all_doctypes": 1},
+ fields=["user"],
+ )
+
+ return [user.user for user in users]
def notify_errors(exceptions_list):
@@ -246,7 +285,7 @@
_("Dear System Manager,")
+ "<br>"
+ _(
- "An error occured for certain Items while creating Material Requests based on Re-order level. Please rectify these issues :"
+ "An error occurred for certain Items while creating Material Requests based on Re-order level. Please rectify these issues :"
)
+ "<br>"
)
diff --git a/erpnext/stock/report/stock_balance/stock_balance.js b/erpnext/stock/report/stock_balance/stock_balance.js
index 6de5f00..fe6e83e 100644
--- a/erpnext/stock/report/stock_balance/stock_balance.js
+++ b/erpnext/stock/report/stock_balance/stock_balance.js
@@ -99,7 +99,7 @@
"fieldname": 'ignore_closing_balance',
"label": __('Ignore Closing Balance'),
"fieldtype": 'Check',
- "default": 1
+ "default": 0
},
],
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index 0370666..45764f3 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -9,9 +9,18 @@
import frappe
from frappe import _, scrub
from frappe.model.meta import get_field_precision
-from frappe.query_builder import Case
from frappe.query_builder.functions import CombineDatetime, Sum
-from frappe.utils import cint, flt, get_link_to_form, getdate, now, nowdate, nowtime, parse_json
+from frappe.utils import (
+ cint,
+ cstr,
+ flt,
+ get_link_to_form,
+ getdate,
+ now,
+ nowdate,
+ nowtime,
+ parse_json,
+)
import erpnext
from erpnext.stock.doctype.bin.bin import update_qty as update_bin_qty
@@ -712,11 +721,10 @@
if (
sle.voucher_type == "Stock Reconciliation"
- and (
- sle.batch_no or (sle.has_batch_no and sle.serial_and_batch_bundle and not sle.has_serial_no)
- )
+ and (sle.batch_no or sle.serial_no or sle.serial_and_batch_bundle)
and sle.voucher_detail_no
and not self.args.get("sle_id")
+ and sle.is_cancelled == 0
):
self.reset_actual_qty_for_stock_reco(sle)
@@ -737,6 +745,23 @@
if sle.serial_and_batch_bundle:
self.calculate_valuation_for_serial_batch_bundle(sle)
+ elif sle.serial_no and not self.args.get("sle_id"):
+ # Only run in reposting
+ self.get_serialized_values(sle)
+ self.wh_data.qty_after_transaction += flt(sle.actual_qty)
+ if sle.voucher_type == "Stock Reconciliation" and not sle.batch_no:
+ self.wh_data.qty_after_transaction = sle.qty_after_transaction
+
+ self.wh_data.stock_value = flt(self.wh_data.qty_after_transaction) * flt(
+ self.wh_data.valuation_rate
+ )
+ elif (
+ sle.batch_no
+ and frappe.db.get_value("Batch", sle.batch_no, "use_batchwise_valuation", cache=True)
+ and not self.args.get("sle_id")
+ ):
+ # Only run in reposting
+ self.update_batched_values(sle)
else:
if sle.voucher_type == "Stock Reconciliation" and not sle.batch_no and not has_dimensions:
# assert
@@ -782,6 +807,45 @@
):
self.update_outgoing_rate_on_transaction(sle)
+ def get_serialized_values(self, sle):
+ incoming_rate = flt(sle.incoming_rate)
+ actual_qty = flt(sle.actual_qty)
+ serial_nos = cstr(sle.serial_no).split("\n")
+
+ if incoming_rate < 0:
+ # wrong incoming rate
+ incoming_rate = self.wh_data.valuation_rate
+
+ stock_value_change = 0
+ if actual_qty > 0:
+ stock_value_change = actual_qty * incoming_rate
+ else:
+ # In case of delivery/stock issue, get average purchase rate
+ # of serial nos of current entry
+ if not sle.is_cancelled:
+ outgoing_value = self.get_incoming_value_for_serial_nos(sle, serial_nos)
+ stock_value_change = -1 * outgoing_value
+ else:
+ stock_value_change = actual_qty * sle.outgoing_rate
+
+ new_stock_qty = self.wh_data.qty_after_transaction + actual_qty
+
+ if new_stock_qty > 0:
+ new_stock_value = (
+ self.wh_data.qty_after_transaction * self.wh_data.valuation_rate
+ ) + stock_value_change
+ if new_stock_value >= 0:
+ # calculate new valuation rate only if stock value is positive
+ # else it remains the same as that of previous entry
+ self.wh_data.valuation_rate = new_stock_value / new_stock_qty
+
+ if not self.wh_data.valuation_rate and sle.voucher_detail_no:
+ allow_zero_rate = self.check_if_allow_zero_valuation_rate(
+ sle.voucher_type, sle.voucher_detail_no
+ )
+ if not allow_zero_rate:
+ self.wh_data.valuation_rate = self.get_fallback_rate(sle)
+
def reset_actual_qty_for_stock_reco(self, sle):
doc = frappe.get_cached_doc("Stock Reconciliation", sle.voucher_no)
doc.recalculate_current_qty(sle.voucher_detail_no, sle.creation, sle.actual_qty > 0)
@@ -795,6 +859,36 @@
if abs(sle.actual_qty) == 0.0:
sle.is_cancelled = 1
+ if sle.serial_and_batch_bundle and frappe.get_cached_value(
+ "Item", sle.item_code, "has_serial_no"
+ ):
+ self.update_serial_no_status(sle)
+
+ def update_serial_no_status(self, sle):
+ from erpnext.stock.serial_batch_bundle import get_serial_nos
+
+ serial_nos = get_serial_nos(sle.serial_and_batch_bundle)
+ if not serial_nos:
+ return
+
+ warehouse = None
+ status = "Inactive"
+
+ if sle.actual_qty > 0:
+ warehouse = sle.warehouse
+ status = "Active"
+
+ sn_table = frappe.qb.DocType("Serial No")
+
+ query = (
+ frappe.qb.update(sn_table)
+ .set(sn_table.warehouse, warehouse)
+ .set(sn_table.status, status)
+ .where(sn_table.name.isin(serial_nos))
+ )
+
+ query.run()
+
def calculate_valuation_for_serial_batch_bundle(self, sle):
doc = frappe.get_cached_doc("Serial and Batch Bundle", sle.serial_and_batch_bundle)
@@ -1171,11 +1265,12 @@
outgoing_rate = get_batch_incoming_rate(
item_code=sle.item_code,
warehouse=sle.warehouse,
- serial_and_batch_bundle=sle.serial_and_batch_bundle,
+ batch_no=sle.batch_no,
posting_date=sle.posting_date,
posting_time=sle.posting_time,
creation=sle.creation,
)
+
if outgoing_rate is None:
# This can *only* happen if qty available for the batch is zero.
# in such case fall back various other rates.
@@ -1449,11 +1544,10 @@
def get_batch_incoming_rate(
- item_code, warehouse, serial_and_batch_bundle, posting_date, posting_time, creation=None
+ item_code, warehouse, batch_no, posting_date, posting_time, creation=None
):
sle = frappe.qb.DocType("Stock Ledger Entry")
- batch_ledger = frappe.qb.DocType("Serial and Batch Entry")
timestamp_condition = CombineDatetime(sle.posting_date, sle.posting_time) < CombineDatetime(
posting_date, posting_time
@@ -1464,28 +1558,13 @@
== CombineDatetime(posting_date, posting_time)
) & (sle.creation < creation)
- batches = frappe.get_all(
- "Serial and Batch Entry", fields=["batch_no"], filters={"parent": serial_and_batch_bundle}
- )
-
batch_details = (
frappe.qb.from_(sle)
- .inner_join(batch_ledger)
- .on(sle.serial_and_batch_bundle == batch_ledger.parent)
- .select(
- Sum(
- Case()
- .when(sle.actual_qty > 0, batch_ledger.qty * batch_ledger.incoming_rate)
- .else_(batch_ledger.qty * batch_ledger.outgoing_rate * -1)
- ).as_("batch_value"),
- Sum(Case().when(sle.actual_qty > 0, batch_ledger.qty).else_(batch_ledger.qty * -1)).as_(
- "batch_qty"
- ),
- )
+ .select(Sum(sle.stock_value_difference).as_("batch_value"), Sum(sle.actual_qty).as_("batch_qty"))
.where(
(sle.item_code == item_code)
& (sle.warehouse == warehouse)
- & (batch_ledger.batch_no.isin([row.batch_no for row in batches]))
+ & (sle.batch_no == batch_no)
& (sle.is_cancelled == 0)
)
.where(timestamp_condition)
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index f29e7ea..76af5d7 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -289,6 +289,21 @@
in_rate = batch_obj.get_incoming_rate()
+ elif (args.get("serial_no") or "").strip() and not args.get("serial_and_batch_bundle"):
+ in_rate = get_avg_purchase_rate(args.get("serial_no"))
+ elif (
+ args.get("batch_no")
+ and frappe.db.get_value("Batch", args.get("batch_no"), "use_batchwise_valuation", cache=True)
+ and not args.get("serial_and_batch_bundle")
+ ):
+ in_rate = get_batch_incoming_rate(
+ item_code=args.get("item_code"),
+ warehouse=args.get("warehouse"),
+ batch_no=args.get("batch_no"),
+ posting_date=args.get("posting_date"),
+ posting_time=args.get("posting_time"),
+ )
+
else:
valuation_method = get_valuation_method(args.get("item_code"))
previous_sle = get_previous_sle(args)
@@ -319,6 +334,38 @@
return flt(in_rate)
+def get_batch_incoming_rate(
+ item_code, warehouse, batch_no, posting_date, posting_time, creation=None
+):
+
+ sle = frappe.qb.DocType("Stock Ledger Entry")
+
+ timestamp_condition = CombineDatetime(sle.posting_date, sle.posting_time) < CombineDatetime(
+ posting_date, posting_time
+ )
+ if creation:
+ timestamp_condition |= (
+ CombineDatetime(sle.posting_date, sle.posting_time)
+ == CombineDatetime(posting_date, posting_time)
+ ) & (sle.creation < creation)
+
+ batch_details = (
+ frappe.qb.from_(sle)
+ .select(Sum(sle.stock_value_difference).as_("batch_value"), Sum(sle.actual_qty).as_("batch_qty"))
+ .where(
+ (sle.item_code == item_code)
+ & (sle.warehouse == warehouse)
+ & (sle.batch_no == batch_no)
+ & (sle.serial_and_batch_bundle.isnull())
+ & (sle.is_cancelled == 0)
+ )
+ .where(timestamp_condition)
+ ).run(as_dict=True)
+
+ if batch_details and batch_details[0].batch_qty:
+ return batch_details[0].batch_value / batch_details[0].batch_qty
+
+
def get_avg_purchase_rate(serial_nos):
"""get average value of serial numbers"""
diff --git a/erpnext/utilities/activation.py b/erpnext/utilities/activation.py
index 4c8379e..581b53d 100644
--- a/erpnext/utilities/activation.py
+++ b/erpnext/utilities/activation.py
@@ -124,7 +124,7 @@
doctype="Timesheet",
title=_("Add Timesheets"),
description=_(
- "Timesheets help keep track of time, cost and billing for activites done by your team"
+ "Timesheets help keep track of time, cost and billing for activities done by your team"
),
action=_("Create Timesheet"),
route="List/Timesheet",
diff --git a/erpnext/utilities/web_form/addresses/addresses.json b/erpnext/utilities/web_form/addresses/addresses.json
index 2f5e180..4e2d8e3 100644
--- a/erpnext/utilities/web_form/addresses/addresses.json
+++ b/erpnext/utilities/web_form/addresses/addresses.json
@@ -8,26 +8,29 @@
"allow_print": 0,
"amount": 0.0,
"amount_based_on_field": 0,
+ "anonymous": 0,
+ "apply_document_permissions": 1,
+ "condition_json": "[]",
"creation": "2016-06-24 15:50:33.196990",
"doc_type": "Address",
"docstatus": 0,
"doctype": "Web Form",
"idx": 0,
"is_standard": 1,
+ "list_columns": [],
+ "list_title": "",
"login_required": 1,
"max_attachment_size": 0,
- "modified": "2019-10-15 06:55:30.405119",
- "modified_by": "Administrator",
+ "modified": "2024-01-24 10:28:35.026064",
+ "modified_by": "rohitw1991@gmail.com",
"module": "Utilities",
"name": "addresses",
"owner": "Administrator",
"published": 1,
"route": "address",
- "route_to_success_link": 0,
"show_attachments": 0,
- "show_in_grid": 0,
+ "show_list": 1,
"show_sidebar": 0,
- "sidebar_items": [],
"success_url": "/addresses",
"title": "Address",
"web_form_fields": [