From 9a11df59fc3b415d4b15a71d10df4656a0b339d8 Mon Sep 17 00:00:00 2001 From: NIYAZ RAZAK <76736615+niyazrazak@users.noreply.github.com> Date: Sat, 24 Aug 2024 12:56:33 +0300 Subject: [PATCH 01/13] fix: incorrect amount in bank clearance --- erpnext/accounts/doctype/bank_clearance/bank_clearance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/bank_clearance/bank_clearance.py b/erpnext/accounts/doctype/bank_clearance/bank_clearance.py index 63758a5e7fb..131b2ccde73 100644 --- a/erpnext/accounts/doctype/bank_clearance/bank_clearance.py +++ b/erpnext/accounts/doctype/bank_clearance/bank_clearance.py @@ -155,7 +155,7 @@ def get_payment_entries_for_bank_clearance( "Payment Entry" as payment_document, name as payment_entry, reference_no as cheque_number, reference_date as cheque_date, if(paid_from=%(account)s, paid_amount + total_taxes_and_charges, 0) as credit, - if(paid_from=%(account)s, 0, received_amount) as debit, + if(paid_from=%(account)s, 0, received_amount + total_taxes_and_charges) as debit, posting_date, ifnull(party,if(paid_from=%(account)s,paid_to,paid_from)) as against_account, clearance_date, if(paid_to=%(account)s, paid_to_account_currency, paid_from_account_currency) as account_currency from `tabPayment Entry` From 4a3eca963c32b6a46dfe713339e34661ac0eb27e Mon Sep 17 00:00:00 2001 From: devdiogenes Date: Wed, 11 Sep 2024 20:42:45 +0000 Subject: [PATCH 02/13] fix: Call super onload_post_render inside pos_invoice.js --- erpnext/accounts/doctype/pos_invoice/pos_invoice.js | 1 + 1 file changed, 1 insertion(+) diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.js b/erpnext/accounts/doctype/pos_invoice/pos_invoice.js index 52c770667cd..a72993b6449 100644 --- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.js +++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.js @@ -44,6 +44,7 @@ erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnex } onload_post_render(frm) { + super.onload_post_render(); this.pos_profile(frm); } From ac5e449592d23b33461b0263c9d72aba09a84a33 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 16 Oct 2024 13:26:23 +0200 Subject: [PATCH 03/13] chore(tests): remove noop ad-hoc record creation --- erpnext/accounts/doctype/account/test_account.py | 3 --- erpnext/buying/doctype/supplier/test_supplier.py | 3 --- erpnext/controllers/tests/test_mapper.py | 4 ++-- erpnext/manufacturing/doctype/job_card/test_job_card.py | 5 ++--- erpnext/manufacturing/doctype/routing/test_routing.py | 5 ++--- .../doctype/workstation/test_workstation.py | 1 - erpnext/selling/doctype/customer/test_customer.py | 9 --------- erpnext/stock/doctype/warehouse/test_warehouse.py | 6 ------ erpnext/stock/tests/test_get_item_details.py | 5 ----- 9 files changed, 6 insertions(+), 35 deletions(-) diff --git a/erpnext/accounts/doctype/account/test_account.py b/erpnext/accounts/doctype/account/test_account.py index 4dbef8aabb9..795ee006806 100644 --- a/erpnext/accounts/doctype/account/test_account.py +++ b/erpnext/accounts/doctype/account/test_account.py @@ -4,7 +4,6 @@ import unittest import frappe from frappe.tests import IntegrationTestCase -from frappe.tests.utils import make_test_records from frappe.utils import nowdate from erpnext.accounts.doctype.account.account import ( @@ -202,8 +201,6 @@ class TestAccount(IntegrationTestCase): In a parent->child company setup, child should inherit parent account currency if explicitly specified. """ - make_test_records("Company") - frappe.local.flags.pop("ignore_root_company_validation", None) def create_bank_account(): diff --git a/erpnext/buying/doctype/supplier/test_supplier.py b/erpnext/buying/doctype/supplier/test_supplier.py index 74fb3be020d..d409541075f 100644 --- a/erpnext/buying/doctype/supplier/test_supplier.py +++ b/erpnext/buying/doctype/supplier/test_supplier.py @@ -3,7 +3,6 @@ import frappe -from frappe.tests.utils import make_test_records from erpnext.accounts.party import get_due_date from erpnext.controllers.website_list_for_contact import get_customers_suppliers @@ -105,8 +104,6 @@ class TestSupplier(IntegrationTestCase): self.assertEqual(due_date, "2017-01-22") def test_supplier_disabled(self): - make_test_records("Item") - frappe.db.set_value("Supplier", "_Test Supplier", "disabled", 1) from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order diff --git a/erpnext/controllers/tests/test_mapper.py b/erpnext/controllers/tests/test_mapper.py index 0a7c3815a19..53eb75058ec 100644 --- a/erpnext/controllers/tests/test_mapper.py +++ b/erpnext/controllers/tests/test_mapper.py @@ -5,15 +5,15 @@ import frappe import frappe.utils from frappe.model import mapper from frappe.tests import IntegrationTestCase -from frappe.tests.utils import make_test_records from frappe.utils import add_months, nowdate +EXTRA_TEST_RECORD_DEPENDENCIES = ["Item"] + class TestMapper(IntegrationTestCase): def test_map_docs(self): """Test mapping of multiple source docs on a single target doc""" - make_test_records("Item") items = ["_Test Item", "_Test Item 2", "_Test FG Item"] # Make source docs (quotations) and a target doc (sales order) diff --git a/erpnext/manufacturing/doctype/job_card/test_job_card.py b/erpnext/manufacturing/doctype/job_card/test_job_card.py index 3966ffcf4e7..618d7dd3f8f 100644 --- a/erpnext/manufacturing/doctype/job_card/test_job_card.py +++ b/erpnext/manufacturing/doctype/job_card/test_job_card.py @@ -6,7 +6,6 @@ from typing import Literal import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -from frappe.tests.utils import make_test_records from frappe.utils import random_string from frappe.utils.data import add_to_date, now, today @@ -25,6 +24,8 @@ from erpnext.manufacturing.doctype.work_order.work_order import WorkOrder from erpnext.manufacturing.doctype.workstation.test_workstation import make_workstation from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry +EXTRA_TEST_RECORD_DEPENDENCIES = ["UOM"] + class UnitTestJobCard(UnitTestCase): """ @@ -501,8 +502,6 @@ class TestJobCard(IntegrationTestCase): {"operation": "Test Operation B1", "workstation": "Test Workstation A", "time_in_mins": 20}, ] - make_test_records("UOM") - warehouse = create_warehouse("Test Warehouse 123 for Job Card") setup_operations(operations) diff --git a/erpnext/manufacturing/doctype/routing/test_routing.py b/erpnext/manufacturing/doctype/routing/test_routing.py index 6fe6a5456e5..8e9db3938fc 100644 --- a/erpnext/manufacturing/doctype/routing/test_routing.py +++ b/erpnext/manufacturing/doctype/routing/test_routing.py @@ -2,12 +2,13 @@ # See license.txt import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -from frappe.tests.utils import make_test_records from erpnext.manufacturing.doctype.job_card.job_card import OperationSequenceError from erpnext.manufacturing.doctype.work_order.test_work_order import make_wo_order_test_record from erpnext.stock.doctype.item.test_item import make_item +EXTRA_TEST_RECORD_DEPENDENCIES = ["UOM"] + class UnitTestRouting(UnitTestCase): """ @@ -33,8 +34,6 @@ class TestRouting(IntegrationTestCase): {"operation": "Test Operation B", "workstation": "Test Workstation A", "time_in_mins": 20}, ] - make_test_records("UOM") - setup_operations(operations) routing_doc = create_routing(routing_name="Testing Route", operations=operations) bom_doc = setup_bom(item_code=self.item_code, routing=routing_doc.name) diff --git a/erpnext/manufacturing/doctype/workstation/test_workstation.py b/erpnext/manufacturing/doctype/workstation/test_workstation.py index dbd867b62bc..ad2cea8ac32 100644 --- a/erpnext/manufacturing/doctype/workstation/test_workstation.py +++ b/erpnext/manufacturing/doctype/workstation/test_workstation.py @@ -2,7 +2,6 @@ # See license.txt import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -from frappe.tests.utils import make_test_records from erpnext.manufacturing.doctype.operation.test_operation import make_operation from erpnext.manufacturing.doctype.routing.test_routing import create_routing, setup_bom diff --git a/erpnext/selling/doctype/customer/test_customer.py b/erpnext/selling/doctype/customer/test_customer.py index 9f1166562c9..eb3d3f2392f 100644 --- a/erpnext/selling/doctype/customer/test_customer.py +++ b/erpnext/selling/doctype/customer/test_customer.py @@ -6,7 +6,6 @@ import json import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -from frappe.tests.utils import make_test_records from frappe.utils import flt from erpnext.accounts.party import get_due_date @@ -32,10 +31,6 @@ class UnitTestCustomer(UnitTestCase): class TestCustomer(IntegrationTestCase): - def setUp(self): - if not frappe.get_value("Item", "_Test Item"): - make_test_records("Item") - def tearDown(self): set_credit_limit("_Test Customer", "_Test Company", 0) @@ -205,8 +200,6 @@ class TestCustomer(IntegrationTestCase): frappe.db.rollback() def test_freezed_customer(self): - make_test_records("Item") - frappe.db.set_value("Customer", "_Test Customer", "is_frozen", 1) from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order @@ -230,8 +223,6 @@ class TestCustomer(IntegrationTestCase): frappe.delete_doc("Customer", customer.name) def test_disabled_customer(self): - make_test_records("Item") - frappe.db.set_value("Customer", "_Test Customer", "disabled", 1) from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order diff --git a/erpnext/stock/doctype/warehouse/test_warehouse.py b/erpnext/stock/doctype/warehouse/test_warehouse.py index f1da5c8aea1..50f1a482e87 100644 --- a/erpnext/stock/doctype/warehouse/test_warehouse.py +++ b/erpnext/stock/doctype/warehouse/test_warehouse.py @@ -3,7 +3,6 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -from frappe.tests.utils import make_test_records import erpnext from erpnext.accounts.doctype.account.test_account import create_account @@ -22,11 +21,6 @@ class UnitTestWarehouse(UnitTestCase): class TestWarehouse(IntegrationTestCase): - def setUp(self): - super().setUp() - if not frappe.get_value("Item", "_Test Item"): - make_test_records("Item") - def test_parent_warehouse(self): parent_warehouse = frappe.get_doc("Warehouse", "_Test Warehouse Group - _TC") self.assertEqual(parent_warehouse.is_group, 1) diff --git a/erpnext/stock/tests/test_get_item_details.py b/erpnext/stock/tests/test_get_item_details.py index e2fb5608dc5..208398303ce 100644 --- a/erpnext/stock/tests/test_get_item_details.py +++ b/erpnext/stock/tests/test_get_item_details.py @@ -1,6 +1,5 @@ import frappe from frappe.tests import IntegrationTestCase -from frappe.tests.utils import make_test_records from erpnext.stock.get_item_details import get_item_details @@ -8,10 +7,6 @@ EXTRA_TEST_RECORD_DEPENDENCIES = ["Customer", "Supplier", "Item", "Price List", class TestGetItemDetail(IntegrationTestCase): - def setUp(self): - make_test_records("Price List") - super().setUp() - def test_get_item_detail_purchase_order(self): args = frappe._dict( { From 0b98fbe960e375bfa999ec9807bfc46fd93f2ec7 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 16 Oct 2024 15:01:03 +0200 Subject: [PATCH 04/13] test: remove no-op flags in preparation of cleaning upstream --- erpnext/accounts/doctype/tax_rule/tax_rule.py | 3 --- erpnext/stock/doctype/item_attribute/item_attribute.py | 3 --- 2 files changed, 6 deletions(-) diff --git a/erpnext/accounts/doctype/tax_rule/tax_rule.py b/erpnext/accounts/doctype/tax_rule/tax_rule.py index 1c0c0a3c1d6..f122e41ef70 100644 --- a/erpnext/accounts/doctype/tax_rule/tax_rule.py +++ b/erpnext/accounts/doctype/tax_rule/tax_rule.py @@ -62,9 +62,6 @@ class TaxRule(Document): use_for_shopping_cart: DF.Check # end: auto-generated types - def __setup__(self): - self.flags.ignore_these_exceptions_in_test = [ConflictingTaxRule] - def validate(self): self.validate_tax_template() self.validate_from_to_dates("from_date", "to_date") diff --git a/erpnext/stock/doctype/item_attribute/item_attribute.py b/erpnext/stock/doctype/item_attribute/item_attribute.py index 04421d6292e..3c10c0018e7 100644 --- a/erpnext/stock/doctype/item_attribute/item_attribute.py +++ b/erpnext/stock/doctype/item_attribute/item_attribute.py @@ -37,9 +37,6 @@ class ItemAttribute(Document): to_range: DF.Float # end: auto-generated types - def __setup__(self): - self.flags.ignore_these_exceptions_in_test = [InvalidItemAttributeValueError] - def validate(self): frappe.flags.attribute_values = None self.validate_numeric() From d7ab7fd672cc9fff11ccdc6677d74d2158115a4a Mon Sep 17 00:00:00 2001 From: David Date: Wed, 16 Oct 2024 15:32:08 +0200 Subject: [PATCH 05/13] test: don't create current fiscal year as it fails to create --- .../doctype/fiscal_year/test_fiscal_year.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/fiscal_year/test_fiscal_year.py b/erpnext/accounts/doctype/fiscal_year/test_fiscal_year.py index 1e179b15313..0f0a6837cba 100644 --- a/erpnext/accounts/doctype/fiscal_year/test_fiscal_year.py +++ b/erpnext/accounts/doctype/fiscal_year/test_fiscal_year.py @@ -38,8 +38,21 @@ def test_record_generator(): ] start = 2012 + this_year = now_datetime().year end = now_datetime().year + 25 - for year in range(start, end): + # The current year fails to load with the following error: + # Year start date or end date is overlapping with 2024. To avoid please set company + # This is a quick-fix: if current FY is needed, please refactor test data properly + for year in range(start, this_year): + test_records.append( + { + "doctype": "Fiscal Year", + "year": f"_Test Fiscal Year {year}", + "year_start_date": f"{year}-01-01", + "year_end_date": f"{year}-12-31", + } + ) + for year in range(this_year + 1, end): test_records.append( { "doctype": "Fiscal Year", From e46736ce357cda4787ca0c96daba9c6749e3f788 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 16 Oct 2024 16:49:07 +0200 Subject: [PATCH 06/13] test: don't delete global test records (it's forbidden) --- .../bank_clearance/test_bank_clearance.py | 20 ------------------- .../bank_transaction/test_bank_transaction.py | 13 ------------ .../test_bank_reconciliation_statement.py | 18 ----------------- ...test_opportunity_summary_by_sales_stage.py | 1 - .../test_sales_pipeline_analytics.py | 1 - ...st_payment_terms_status_for_sales_order.py | 7 ------- erpnext/setup/utils.py | 2 -- 7 files changed, 62 deletions(-) diff --git a/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py b/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py index dd25cad2666..087e41b3e5f 100644 --- a/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py +++ b/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py @@ -26,9 +26,6 @@ class TestBankClearance(IntegrationTestCase): create_item("_Test Item") create_cost_center(cost_center_name="_Test Cost Center", company="_Test Company") - clear_payment_entries() - clear_loan_transactions() - clear_pos_sales_invoices() make_bank_account() add_transactions() @@ -123,23 +120,6 @@ class TestBankClearance(IntegrationTestCase): self.assertEqual(si_clearance_date, date) -def clear_payment_entries(): - frappe.db.delete("Payment Entry") - - -def clear_pos_sales_invoices(): - frappe.db.delete("Sales Invoice", {"is_pos": 1}) - - -@if_lending_app_installed -def clear_loan_transactions(): - for dt in [ - "Loan Disbursement", - "Loan Repayment", - ]: - frappe.db.delete(dt) - - def make_bank_account(): if not frappe.db.get_value("Account", "_Test Bank Clearance - _TC"): frappe.get_doc( diff --git a/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py b/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py index 6f7f52eb3f6..5bc6d0a8202 100644 --- a/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py +++ b/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py @@ -32,14 +32,6 @@ class UnitTestBankTransaction(UnitTestCase): class TestBankTransaction(IntegrationTestCase): def setUp(self): - for dt in [ - "Bank Transaction", - "Payment Entry", - "Payment Entry Reference", - "POS Profile", - ]: - frappe.db.delete(dt) - clear_loan_transactions() make_pos_profile() # generate and use a uniq hash identifier for 'Bank Account' and it's linked GL 'Account' to avoid validation error @@ -231,11 +223,6 @@ class TestBankTransaction(IntegrationTestCase): self.assertEqual(linked_payments[0]["name"], repayment_entry.name) -@if_lending_app_installed -def clear_loan_transactions(): - frappe.db.delete("Loan Repayment") - - def create_bank_account( bank_name="Citi Bank", gl_account="_Test Bank - _TC", bank_account_name="Checking Account" ): diff --git a/erpnext/accounts/report/bank_reconciliation_statement/test_bank_reconciliation_statement.py b/erpnext/accounts/report/bank_reconciliation_statement/test_bank_reconciliation_statement.py index 7002bb6111a..1fed7a43f7d 100644 --- a/erpnext/accounts/report/bank_reconciliation_statement/test_bank_reconciliation_statement.py +++ b/erpnext/accounts/report/bank_reconciliation_statement/test_bank_reconciliation_statement.py @@ -11,15 +11,6 @@ from erpnext.tests.utils import if_lending_app_installed class TestBankReconciliationStatement(IntegrationTestCase): - def setUp(self): - for dt in [ - "Journal Entry", - "Journal Entry Account", - "Payment Entry", - ]: - frappe.db.delete(dt) - clear_loan_transactions() - @if_lending_app_installed def test_loan_entries_in_bank_reco_statement(self): from lending.loan_management.doctype.loan.test_loan import create_loan_accounts @@ -42,12 +33,3 @@ class TestBankReconciliationStatement(IntegrationTestCase): result = execute(filters) self.assertEqual(result[1][0].payment_entry, repayment_entry.name) - - -@if_lending_app_installed -def clear_loan_transactions(): - for dt in [ - "Loan Disbursement", - "Loan Repayment", - ]: - frappe.db.delete(dt) diff --git a/erpnext/crm/report/opportunity_summary_by_sales_stage/test_opportunity_summary_by_sales_stage.py b/erpnext/crm/report/opportunity_summary_by_sales_stage/test_opportunity_summary_by_sales_stage.py index 1a6ffd5e717..012ac5dc78f 100644 --- a/erpnext/crm/report/opportunity_summary_by_sales_stage/test_opportunity_summary_by_sales_stage.py +++ b/erpnext/crm/report/opportunity_summary_by_sales_stage/test_opportunity_summary_by_sales_stage.py @@ -16,7 +16,6 @@ from erpnext.crm.report.sales_pipeline_analytics.test_sales_pipeline_analytics i class TestOpportunitySummaryBySalesStage(IntegrationTestCase): @classmethod def setUpClass(self): - frappe.db.delete("Opportunity") create_company() create_customer() create_opportunity() diff --git a/erpnext/crm/report/sales_pipeline_analytics/test_sales_pipeline_analytics.py b/erpnext/crm/report/sales_pipeline_analytics/test_sales_pipeline_analytics.py index 94c3581245a..b29668fa030 100644 --- a/erpnext/crm/report/sales_pipeline_analytics/test_sales_pipeline_analytics.py +++ b/erpnext/crm/report/sales_pipeline_analytics/test_sales_pipeline_analytics.py @@ -8,7 +8,6 @@ from erpnext.crm.report.sales_pipeline_analytics.sales_pipeline_analytics import class TestSalesPipelineAnalytics(IntegrationTestCase): def setUp(self): - frappe.db.delete("Opportunity") create_company() create_customer() create_opportunity() diff --git a/erpnext/selling/report/payment_terms_status_for_sales_order/test_payment_terms_status_for_sales_order.py b/erpnext/selling/report/payment_terms_status_for_sales_order/test_payment_terms_status_for_sales_order.py index 26a854ac4fb..6575cf9ff69 100644 --- a/erpnext/selling/report/payment_terms_status_for_sales_order/test_payment_terms_status_for_sales_order.py +++ b/erpnext/selling/report/payment_terms_status_for_sales_order/test_payment_terms_status_for_sales_order.py @@ -21,16 +21,9 @@ EXTRA_TEST_RECORD_DEPENDENCIES = [ class TestPaymentTermsStatusForSalesOrder(IntegrationTestCase): - def setUp(self): - self.cleanup_old_entries() - def tearDown(self): frappe.db.rollback() - def cleanup_old_entries(self): - frappe.db.delete("Sales Invoice", filters={"company": "_Test Company"}) - frappe.db.delete("Sales Order", filters={"company": "_Test Company"}) - def create_payment_terms_template(self): # create template for 50-50 payments template = None diff --git a/erpnext/setup/utils.py b/erpnext/setup/utils.py index 705fb1f2fcf..13759ff8f58 100644 --- a/erpnext/setup/utils.py +++ b/erpnext/setup/utils.py @@ -36,8 +36,6 @@ def before_tests(): } ) - frappe.db.sql("delete from `tabItem Price`") - _enable_all_roles_for_admin() set_defaults_for_tests() From 895143a84735c91984f4803601c47b28e47d779b Mon Sep 17 00:00:00 2001 From: David Date: Wed, 16 Oct 2024 18:13:40 +0200 Subject: [PATCH 07/13] fix(testing): setup class must invoke super --- .../doctype/bank_clearance/test_bank_clearance.py | 1 + .../loyalty_point_entry/test_loyalty_point_entry.py | 1 + .../doctype/loyalty_program/test_loyalty_program.py | 3 ++- .../test_opening_invoice_creation_tool.py | 2 +- .../doctype/purchase_invoice/test_purchase_invoice.py | 4 ++-- erpnext/accounts/doctype/tax_rule/test_tax_rule.py | 1 + .../test_tax_withholding_category.py | 3 ++- .../test_deferred_revenue_and_expense.py | 4 +--- .../test_sales_payment_summary.py | 3 ++- erpnext/assets/doctype/asset/test_asset.py | 1 + .../test_asset_shift_allocation.py | 1 + erpnext/crm/doctype/appointment/test_appointment.py | 4 +++- .../test_opportunity_summary_by_sales_stage.py | 3 ++- erpnext/manufacturing/doctype/routing/test_routing.py | 1 + .../report/issue_analytics/test_issue_analytics.py | 11 ++++++----- erpnext/tests/test_point_of_sale.py | 8 -------- 16 files changed, 27 insertions(+), 24 deletions(-) diff --git a/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py b/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py index 087e41b3e5f..8c8bda311e3 100644 --- a/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py +++ b/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py @@ -18,6 +18,7 @@ from erpnext.tests.utils import if_lending_app_installed, if_lending_app_not_ins class TestBankClearance(IntegrationTestCase): @classmethod def setUpClass(cls): + super().setUpClass() create_warehouse( warehouse_name="_Test Warehouse", properties={"parent_warehouse": "All Warehouses - _TC"}, diff --git a/erpnext/accounts/doctype/loyalty_point_entry/test_loyalty_point_entry.py b/erpnext/accounts/doctype/loyalty_point_entry/test_loyalty_point_entry.py index 4b185a45ae0..c085e6caf5e 100644 --- a/erpnext/accounts/doctype/loyalty_point_entry/test_loyalty_point_entry.py +++ b/erpnext/accounts/doctype/loyalty_point_entry/test_loyalty_point_entry.py @@ -13,6 +13,7 @@ from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sal class TestLoyaltyPointEntry(IntegrationTestCase): @classmethod def setUpClass(cls): + super().setUpClass() # Create test records create_records() cls.loyalty_program_name = "Test Single Loyalty" diff --git a/erpnext/accounts/doctype/loyalty_program/test_loyalty_program.py b/erpnext/accounts/doctype/loyalty_program/test_loyalty_program.py index ee44ffcdc13..604e95df6b8 100644 --- a/erpnext/accounts/doctype/loyalty_program/test_loyalty_program.py +++ b/erpnext/accounts/doctype/loyalty_program/test_loyalty_program.py @@ -15,7 +15,8 @@ from erpnext.accounts.party import get_dashboard_info class TestLoyaltyProgram(IntegrationTestCase): @classmethod - def setUpClass(self): + def setUpClass(cls): + super().setUpClass() # create relevant item, customer, loyalty program, etc create_records() diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py b/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py index 1f9436a860c..decff33aeb1 100644 --- a/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py +++ b/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py @@ -26,7 +26,7 @@ class UnitTestOpeningInvoiceCreationTool(UnitTestCase): class TestOpeningInvoiceCreationTool(IntegrationTestCase): @classmethod - def setUpClass(self): + def setUpClass(cls): if not frappe.db.exists("Company", "_Test Opening Invoice Company"): make_company() create_dimension() diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py index fdf4608ad62..b020b4fd905 100644 --- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py @@ -44,13 +44,13 @@ IGNORE_TEST_RECORD_DEPENDENCIES = ["Serial No"] class TestPurchaseInvoice(IntegrationTestCase, StockTestMixin): @classmethod - def setUpClass(self): + def setUpClass(cls): super().setUpClass() unlink_payment_on_cancel_of_invoice() frappe.db.set_single_value("Buying Settings", "allow_multiple_items", 1) @classmethod - def tearDownClass(self): + def tearDownClass(cls): unlink_payment_on_cancel_of_invoice(0) def tearDown(self): diff --git a/erpnext/accounts/doctype/tax_rule/test_tax_rule.py b/erpnext/accounts/doctype/tax_rule/test_tax_rule.py index dcc5c988e8c..2602ea14861 100644 --- a/erpnext/accounts/doctype/tax_rule/test_tax_rule.py +++ b/erpnext/accounts/doctype/tax_rule/test_tax_rule.py @@ -13,6 +13,7 @@ from erpnext.crm.doctype.opportunity.test_opportunity import make_opportunity class TestTaxRule(IntegrationTestCase): @classmethod def setUpClass(cls): + super().setUpClass() frappe.db.set_single_value("Shopping Cart Settings", "enabled", 0) @classmethod diff --git a/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py index 0b3fd082c8e..9cda3036135 100644 --- a/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py +++ b/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py @@ -27,7 +27,8 @@ class UnitTestTaxWithholdingCategory(UnitTestCase): class TestTaxWithholdingCategory(IntegrationTestCase): @classmethod - def setUpClass(self): + def setUpClass(cls): + super().setUpClass() # create relevant supplier, etc create_records() create_tax_withholding_category_records() diff --git a/erpnext/accounts/report/deferred_revenue_and_expense/test_deferred_revenue_and_expense.py b/erpnext/accounts/report/deferred_revenue_and_expense/test_deferred_revenue_and_expense.py index 50e3e4b23c3..1d652a86f67 100644 --- a/erpnext/accounts/report/deferred_revenue_and_expense/test_deferred_revenue_and_expense.py +++ b/erpnext/accounts/report/deferred_revenue_and_expense/test_deferred_revenue_and_expense.py @@ -14,9 +14,7 @@ from erpnext.accounts.utils import get_fiscal_year class TestDeferredRevenueAndExpense(IntegrationTestCase, AccountsTestMixin): - @classmethod - def setUpClass(self): - self.maxDiff = None + maxDiff = None def clear_old_entries(self): sinv = qb.DocType("Sales Invoice") diff --git a/erpnext/accounts/report/sales_payment_summary/test_sales_payment_summary.py b/erpnext/accounts/report/sales_payment_summary/test_sales_payment_summary.py index ea444b3444c..481e9381ff1 100644 --- a/erpnext/accounts/report/sales_payment_summary/test_sales_payment_summary.py +++ b/erpnext/accounts/report/sales_payment_summary/test_sales_payment_summary.py @@ -17,7 +17,8 @@ EXTRA_TEST_RECORD_DEPENDENCIES = ["Sales Invoice"] class TestSalesPaymentSummary(IntegrationTestCase): @classmethod - def setUpClass(self): + def setUpClass(cls): + super().setUpClass() create_records() pes = frappe.get_all("Payment Entry") jes = frappe.get_all("Journal Entry") diff --git a/erpnext/assets/doctype/asset/test_asset.py b/erpnext/assets/doctype/asset/test_asset.py index 431110a382a..f475a785e4f 100644 --- a/erpnext/assets/doctype/asset/test_asset.py +++ b/erpnext/assets/doctype/asset/test_asset.py @@ -45,6 +45,7 @@ from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_pu class AssetSetup(IntegrationTestCase): @classmethod def setUpClass(cls): + super().setUpClass() set_depreciation_settings_in_company() create_asset_data() enable_cwip_accounting("Computers") diff --git a/erpnext/assets/doctype/asset_shift_allocation/test_asset_shift_allocation.py b/erpnext/assets/doctype/asset_shift_allocation/test_asset_shift_allocation.py index a739a7551db..4295901568b 100644 --- a/erpnext/assets/doctype/asset_shift_allocation/test_asset_shift_allocation.py +++ b/erpnext/assets/doctype/asset_shift_allocation/test_asset_shift_allocation.py @@ -23,6 +23,7 @@ class UnitTestAssetShiftAllocation(UnitTestCase): class TestAssetShiftAllocation(IntegrationTestCase): @classmethod def setUpClass(cls): + super().setUpClass() create_asset_shift_factors() @classmethod diff --git a/erpnext/crm/doctype/appointment/test_appointment.py b/erpnext/crm/doctype/appointment/test_appointment.py index 3e5f2526a76..e88a3dc67e5 100644 --- a/erpnext/crm/doctype/appointment/test_appointment.py +++ b/erpnext/crm/doctype/appointment/test_appointment.py @@ -27,7 +27,9 @@ def create_test_appointment(): class TestAppointment(IntegrationTestCase): - def setUpClass(): + @classmethod + def setUpClass(cls): + super().setUpClass() frappe.db.delete("Lead", {"email_id": LEAD_EMAIL}) def setUp(self): diff --git a/erpnext/crm/report/opportunity_summary_by_sales_stage/test_opportunity_summary_by_sales_stage.py b/erpnext/crm/report/opportunity_summary_by_sales_stage/test_opportunity_summary_by_sales_stage.py index 012ac5dc78f..63d6cae3b00 100644 --- a/erpnext/crm/report/opportunity_summary_by_sales_stage/test_opportunity_summary_by_sales_stage.py +++ b/erpnext/crm/report/opportunity_summary_by_sales_stage/test_opportunity_summary_by_sales_stage.py @@ -15,7 +15,8 @@ from erpnext.crm.report.sales_pipeline_analytics.test_sales_pipeline_analytics i class TestOpportunitySummaryBySalesStage(IntegrationTestCase): @classmethod - def setUpClass(self): + def setUpClass(cls): + super().setUpClass() create_company() create_customer() create_opportunity() diff --git a/erpnext/manufacturing/doctype/routing/test_routing.py b/erpnext/manufacturing/doctype/routing/test_routing.py index 6fe6a5456e5..7e1ac11486a 100644 --- a/erpnext/manufacturing/doctype/routing/test_routing.py +++ b/erpnext/manufacturing/doctype/routing/test_routing.py @@ -21,6 +21,7 @@ class UnitTestRouting(UnitTestCase): class TestRouting(IntegrationTestCase): @classmethod def setUpClass(cls): + super().setUpClass() cls.item_code = "Test Routing Item - A" @classmethod diff --git a/erpnext/support/report/issue_analytics/test_issue_analytics.py b/erpnext/support/report/issue_analytics/test_issue_analytics.py index 05ff98f5cd6..1598ef9d295 100644 --- a/erpnext/support/report/issue_analytics/test_issue_analytics.py +++ b/erpnext/support/report/issue_analytics/test_issue_analytics.py @@ -16,17 +16,18 @@ months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", class TestIssueAnalytics(IntegrationTestCase): @classmethod - def setUpClass(self): + def setUpClass(cls): + super().setUpClass() frappe.db.sql("delete from `tabIssue` where company='_Test Company'") frappe.db.set_single_value("Support Settings", "track_service_level_agreement", 1) current_month_date = getdate() last_month_date = add_months(current_month_date, -1) - self.current_month = str(months[current_month_date.month - 1]).lower() - self.last_month = str(months[last_month_date.month - 1]).lower() + cls.current_month = str(months[current_month_date.month - 1]).lower() + cls.last_month = str(months[last_month_date.month - 1]).lower() if current_month_date.year != last_month_date.year: - self.current_month += "_" + str(current_month_date.year) - self.last_month += "_" + str(last_month_date.year) + cls.current_month += "_" + str(current_month_date.year) + cls.last_month += "_" + str(last_month_date.year) def test_issue_analytics(self): create_service_level_agreements_for_issues() diff --git a/erpnext/tests/test_point_of_sale.py b/erpnext/tests/test_point_of_sale.py index 014a0ac53aa..589c7cb0e48 100644 --- a/erpnext/tests/test_point_of_sale.py +++ b/erpnext/tests/test_point_of_sale.py @@ -12,14 +12,6 @@ from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry class TestPointOfSale(IntegrationTestCase): - @classmethod - def setUpClass(cls) -> None: - frappe.db.savepoint("before_test_point_of_sale") - - @classmethod - def tearDownClass(cls) -> None: - frappe.db.rollback(save_point="before_test_point_of_sale") - def test_item_search(self): """ Test Stock and Service Item Search. From 97a27aba9eb18f90f005851eb88f953f043383f7 Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Thu, 17 Oct 2024 07:31:12 +0530 Subject: [PATCH 08/13] fix: Chinese Simplified translations --- erpnext/locale/zh.po | 54 ++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/erpnext/locale/zh.po b/erpnext/locale/zh.po index db9337ea6a9..0fecc275299 100644 --- a/erpnext/locale/zh.po +++ b/erpnext/locale/zh.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: frappe\n" "Report-Msgid-Bugs-To: info@erpnext.com\n" "POT-Creation-Date: 2024-10-13 09:35+0000\n" -"PO-Revision-Date: 2024-10-15 02:02\n" +"PO-Revision-Date: 2024-10-17 02:01\n" "Last-Translator: info@erpnext.com\n" "Language-Team: Chinese Simplified\n" "MIME-Version: 1.0\n" @@ -71,7 +71,7 @@ msgstr " 跳过物料转移" #: erpnext/public/js/bom_configurator/bom_configurator.bundle.js:133 #: erpnext/public/js/bom_configurator/bom_configurator.bundle.js:163 msgid " Sub Assembly" -msgstr " 次级装配" +msgstr " 半成品" #: erpnext/projects/doctype/project_update/project_update.py:104 msgid " Summary" @@ -83,7 +83,7 @@ msgstr "“客户提供的物料”也不能是采购物料" #: erpnext/stock/doctype/item/item.py:235 msgid "\"Customer Provided Item\" cannot have Valuation Rate" -msgstr "“客户提供的物料”不能具有估值价格" +msgstr "“客户提供的物料”不能具有估价率" #: erpnext/stock/doctype/item/item.py:311 msgid "\"Is Fixed Asset\" cannot be unchecked, as Asset record exists against the item" @@ -303,11 +303,11 @@ msgstr "" #: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:223 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:124 msgid "(C) Total Qty in Queue" -msgstr "" +msgstr "(C) 队列中的总数量" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:184 msgid "(C) Total qty in queue" -msgstr "" +msgstr "(C) 队列中的总数量" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:194 #: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:233 @@ -384,15 +384,15 @@ msgstr "" #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:95 #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:347 msgid "0 - 30 Days" -msgstr "" +msgstr "0 - 30 天" #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:114 msgid "0-30" -msgstr "" +msgstr "0-30" #: erpnext/manufacturing/report/work_order_summary/work_order_summary.py:110 msgid "0-30 Days" -msgstr "" +msgstr "0-30 天" #. Description of the 'Conversion Factor' (Float) field in DocType 'Loyalty #. Program' @@ -403,7 +403,7 @@ msgstr "" #. Option for the 'Frequency' (Select) field in DocType 'Video Settings' #: erpnext/utilities/doctype/video_settings/video_settings.json msgid "1 hr" -msgstr "" +msgstr "1小时" #. Option for the 'No of Employees' (Select) field in DocType 'Lead' #. Option for the 'No of Employees' (Select) field in DocType 'Opportunity' @@ -412,7 +412,7 @@ msgstr "" #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json msgid "1-10" -msgstr "" +msgstr "1-10" #. Option for the 'No of Employees' (Select) field in DocType 'Lead' #. Option for the 'No of Employees' (Select) field in DocType 'Opportunity' @@ -421,7 +421,7 @@ msgstr "" #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json msgid "1000+" -msgstr "" +msgstr "1000+" #. Option for the 'No of Employees' (Select) field in DocType 'Lead' #. Option for the 'No of Employees' (Select) field in DocType 'Opportunity' @@ -450,7 +450,7 @@ msgstr "" #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json msgid "201-500" -msgstr "" +msgstr "201-500" #. Option for the 'Periodicity' (Select) field in DocType 'Asset Maintenance #. Task' @@ -461,20 +461,20 @@ msgstr "" #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:96 #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:348 msgid "30 - 60 Days" -msgstr "" +msgstr "30 - 60 天" #. Option for the 'Frequency' (Select) field in DocType 'Video Settings' #: erpnext/utilities/doctype/video_settings/video_settings.json msgid "30 mins" -msgstr "" +msgstr "30 分钟" #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:115 msgid "30-60" -msgstr "" +msgstr "30-60" #: erpnext/manufacturing/report/work_order_summary/work_order_summary.py:110 msgid "30-60 Days" -msgstr "" +msgstr "30-60 天" #. Option for the 'No of Employees' (Select) field in DocType 'Lead' #. Option for the 'No of Employees' (Select) field in DocType 'Opportunity' @@ -483,7 +483,7 @@ msgstr "" #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json msgid "501-1000" -msgstr "" +msgstr "501-1000" #. Option for the 'No of Employees' (Select) field in DocType 'Lead' #. Option for the 'No of Employees' (Select) field in DocType 'Opportunity' @@ -492,35 +492,35 @@ msgstr "" #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json msgid "51-200" -msgstr "" +msgstr "51-200" #. Option for the 'Frequency' (Select) field in DocType 'Video Settings' #: erpnext/utilities/doctype/video_settings/video_settings.json msgid "6 hrs" -msgstr "" +msgstr "6 小时" #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:97 #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:349 msgid "60 - 90 Days" -msgstr "" +msgstr "60 - 90 天" #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:116 msgid "60-90" -msgstr "" +msgstr "60-90" #: erpnext/manufacturing/report/work_order_summary/work_order_summary.py:110 msgid "60-90 Days" -msgstr "" +msgstr "60-90 天" #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:98 #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:350 msgid "90 - 120 Days" -msgstr "" +msgstr "90 - 120 天" #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:117 #: erpnext/manufacturing/report/work_order_summary/work_order_summary.py:110 msgid "90 Above" -msgstr "" +msgstr "90 以上" #: erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.py:61 msgid "From Time cannot be later than To Time for {0}" @@ -554,13 +554,13 @@ msgstr "" #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.json #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "
Other Details
" -msgstr "" +msgstr "
其他详细信息
" #. Content of the 'no_bank_transactions' (HTML) field in DocType 'Bank #. Reconciliation Tool' #: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.json msgid "
No Matching Bank Transactions Found
" -msgstr "" +msgstr "
未找到匹配的银行交易
" #: erpnext/public/js/bank_reconciliation_tool/dialog_manager.js:262 msgid "
{0}
" @@ -1577,7 +1577,7 @@ msgstr "“资产负债表”帐户{1}需要会计维度{0 }。" #: erpnext/accounts/doctype/gl_entry/gl_entry.py:189 #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:140 msgid "Accounting Dimension {0} is required for 'Profit and Loss' account {1}." -msgstr "“损益”帐户{1}需要会计维度{0 }。" +msgstr "“损益表”科目 {1} 需要会计维度 {0}。" #. Name of a DocType #: erpnext/accounts/doctype/accounting_dimension_detail/accounting_dimension_detail.json From 4fd4a37dc931b48526a5e00b0a905a735b435778 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Thu, 17 Oct 2024 15:07:34 +0530 Subject: [PATCH 09/13] fix: added validation for UOM must be whole number (#43710) --- erpnext/controllers/accounts_controller.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 56f462a8d6b..197554d9566 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -3551,6 +3551,9 @@ def update_child_qty_rate(parent_doctype, trans_items, parent_doctype_name, chil parent.update_billing_percentage() parent.set_status() + parent.validate_uom_is_integer("uom", "qty") + parent.validate_uom_is_integer("stock_uom", "stock_qty") + # Cancel and Recreate Stock Reservation Entries. if parent_doctype == "Sales Order": from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import ( From e828cd383efdac356225e4fcabda0c427f666ea0 Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Fri, 18 Oct 2024 07:46:29 +0530 Subject: [PATCH 10/13] fix: Persian translations --- erpnext/locale/fa.po | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/erpnext/locale/fa.po b/erpnext/locale/fa.po index 835ee27393c..1c47f3bc432 100644 --- a/erpnext/locale/fa.po +++ b/erpnext/locale/fa.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: frappe\n" "Report-Msgid-Bugs-To: info@erpnext.com\n" "POT-Creation-Date: 2024-10-13 09:35+0000\n" -"PO-Revision-Date: 2024-10-14 01:46\n" +"PO-Revision-Date: 2024-10-18 02:16\n" "Last-Translator: info@erpnext.com\n" "Language-Team: Persian\n" "MIME-Version: 1.0\n" @@ -79,11 +79,11 @@ msgstr " خلاصه" #: erpnext/stock/doctype/item/item.py:233 msgid "\"Customer Provided Item\" cannot be Purchase Item also" -msgstr "\"آیتم تأمین شده توسط مشتری\" نمی تواند آیتم خرید هم باشد" +msgstr "\"آیتم تامین شده توسط مشتری\" نمی تواند آیتم خرید هم باشد" #: erpnext/stock/doctype/item/item.py:235 msgid "\"Customer Provided Item\" cannot have Valuation Rate" -msgstr "\"آیتم تأمین شده توسط مشتری\" نمی تواند دارای نرخ ارزیابی باشد" +msgstr "\"آیتم تامین شده توسط مشتری\" نمی تواند دارای نرخ ارزیابی باشد" #: erpnext/stock/doctype/item/item.py:311 msgid "\"Is Fixed Asset\" cannot be unchecked, as Asset record exists against the item" @@ -8616,7 +8616,7 @@ msgstr "اگر Applicable For به عنوان {0} انتخاب شده باشد، #: erpnext/buying/doctype/buying_settings/buying_settings.js:13 msgid "By default, the Supplier Name is set as per the Supplier Name entered. If you want Suppliers to be named by a Naming Series choose the 'Naming Series' option." -msgstr "به‌طور پیش‌فرض، نام تأمین‌کننده مطابق با نام تأمین‌کننده وارد شده تنظیم می‌شود. اگر می‌خواهید تأمین‌کنندگان با سری نام‌گذاری نام‌گذاری شوند. گزینه \"Naming Series\" را انتخاب کنید." +msgstr "به‌طور پیش‌فرض، نام تامین‌کننده مطابق با نام تامین‌کننده وارد شده تنظیم می‌شود. اگر می‌خواهید تامین‌کنندگان با سری نام‌گذاری نام‌گذاری شوند. گزینه \"Naming Series\" را انتخاب کنید." #. Label of the bypass_credit_limit_check (Check) field in DocType 'Customer #. Credit Limit' @@ -14274,7 +14274,7 @@ msgstr "مخاطب اصلی مشتری" #: erpnext/stock/doctype/item/item.json #: erpnext/stock/doctype/material_request/material_request.json msgid "Customer Provided" -msgstr "تأمین شده توسط مشتری" +msgstr "تامین شده توسط مشتری" #: erpnext/setup/doctype/company/company.py:377 msgid "Customer Service" @@ -23107,11 +23107,11 @@ msgstr "اگر این آیتم دارای گونه باشد، نمی توان آ #: erpnext/buying/doctype/buying_settings/buying_settings.js:27 msgid "If this option is configured 'Yes', ERPNext will prevent you from creating a Purchase Invoice or Receipt without creating a Purchase Order first. This configuration can be overridden for a particular supplier by enabling the 'Allow Purchase Invoice Creation Without Purchase Order' checkbox in the Supplier master." -msgstr "اگر این گزینه 'بله' پیکربندی شده باشد، ERPNext شما را از ایجاد فاکتور خرید یا رسید بدون ایجاد یک سفارش خرید جلوگیری می کند. این پیکربندی را می‌توان با فعال کردن کادر انتخاب «اجازه ایجاد فاکتور خرید بدون سفارش خرید» در بخش اصلی تأمین‌کننده، برای یک تأمین‌کننده خاص لغو کرد." +msgstr "اگر این گزینه 'بله' پیکربندی شده باشد، ERPNext شما را از ایجاد فاکتور خرید یا رسید بدون ایجاد یک سفارش خرید جلوگیری می کند. این پیکربندی را می‌توان با فعال کردن کادر انتخاب «اجازه ایجاد فاکتور خرید بدون سفارش خرید» در بخش اصلی تامین‌کننده، برای یک تامین‌کننده خاص لغو کرد." #: erpnext/buying/doctype/buying_settings/buying_settings.js:34 msgid "If this option is configured 'Yes', ERPNext will prevent you from creating a Purchase Invoice without creating a Purchase Receipt first. This configuration can be overridden for a particular supplier by enabling the 'Allow Purchase Invoice Creation Without Purchase Receipt' checkbox in the Supplier master." -msgstr "اگر این گزینه 'بله' پیکربندی شده باشد، ERPNext از ایجاد فاکتور خرید بدون ایجاد یک رسید خرید جلوگیری می کند. این پیکربندی را می‌توان برای یک تامین‌کننده خاص با فعال کردن کادر انتخاب «اجازه ایجاد فاکتور خرید بدون رسید خرید» در قسمت اصلی تأمین‌کننده لغو کرد." +msgstr "اگر این گزینه 'بله' پیکربندی شده باشد، ERPNext از ایجاد فاکتور خرید بدون ایجاد یک رسید خرید جلوگیری می کند. این پیکربندی را می‌توان برای یک تامین‌کننده خاص با فعال کردن کادر انتخاب «اجازه ایجاد فاکتور خرید بدون رسید خرید» در قسمت اصلی تامین‌کننده لغو کرد." #: erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.js:10 msgid "If ticked, multiple materials can be used for a single Work Order. This is useful if one or more time consuming products are being manufactured." @@ -39623,7 +39623,7 @@ msgstr "کالای رسید خرید" #. Name of a DocType #: erpnext/buying/doctype/purchase_receipt_item_supplied/purchase_receipt_item_supplied.json msgid "Purchase Receipt Item Supplied" -msgstr "اقلام رسید خرید تأمین شد" +msgstr "اقلام رسید خرید تامین شد" #. Label of the purchase_receipt_items (Section Break) field in DocType 'Landed #. Cost Voucher' @@ -59450,7 +59450,7 @@ msgstr "ارز {0} باید با واحد پول پیش‌فرض شرکت یکس #: erpnext/buying/doctype/purchase_order/purchase_order.py:311 msgid "{0} currently has a {1} Supplier Scorecard standing, and Purchase Orders to this supplier should be issued with caution." -msgstr "{0} در حال حاضر دارای {1} کارت امتیازی تأمین‌کننده است و سفارش‌های خرید به این تأمین‌کننده باید با احتیاط صادر شوند." +msgstr "{0} در حال حاضر دارای {1} کارت امتیازی تامین‌کننده است و سفارش‌های خرید به این تامین‌کننده باید با احتیاط صادر شوند." #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.py:95 msgid "{0} currently has a {1} Supplier Scorecard standing, and RFQs to this supplier should be issued with caution." From 804558e5bf6ecb6cad54c22233728b50bc5f2fb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fancan?= <37839267+doancan@users.noreply.github.com> Date: Thu, 19 Sep 2024 08:04:39 +0300 Subject: [PATCH 11/13] refactor: update default_success_action.py The _(doctype) inside get_message is removed from the .format() method. The reason is that _(doctype) would attempt to translate the doctype itself, which is generally not required since the doctypes in doctype_list are system-level terms. The main string "{0} has been submitted successfully" should be translated, and then it should receive the doctype name as an argument. --- erpnext/setup/default_success_action.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/erpnext/setup/default_success_action.py b/erpnext/setup/default_success_action.py index 2b9e75c3265..dba20548184 100644 --- a/erpnext/setup/default_success_action.py +++ b/erpnext/setup/default_success_action.py @@ -11,14 +11,17 @@ doctype_list = [ def get_message(doctype): - return _("{0} has been submitted successfully").format(_(doctype)) + # Properly format the string with translated doctype + return _("{0} has been submitted successfully").format(doctype) def get_first_success_message(doctype): + # Reuse the get_message function for consistency return get_message(doctype) def get_default_success_action(): + # Loop through each doctype in the list and return formatted actions return [ { "doctype": "Success Action", From 25de412371d6fe9787bcec34546e142b27970b2c Mon Sep 17 00:00:00 2001 From: Khushi Rawat <142375893+khushi8112@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:47:57 +0530 Subject: [PATCH 12/13] fix: do not make new depreciation for fully depreciated asset --- .../doctype/sales_invoice/sales_invoice.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 69735c37b42..263f44fcead 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -1354,14 +1354,15 @@ class SalesInvoice(SellingController): else: if asset.calculate_depreciation: - notes = _( - "This schedule was created when Asset {0} was sold through Sales Invoice {1}." - ).format( - get_link_to_form(asset.doctype, asset.name), - get_link_to_form(self.doctype, self.get("name")), - ) - depreciate_asset(asset, self.posting_date, notes) - asset.reload() + if not asset.status == "Fully Depreciated": + notes = _( + "This schedule was created when Asset {0} was sold through Sales Invoice {1}." + ).format( + get_link_to_form(asset.doctype, asset.name), + get_link_to_form(self.doctype, self.get("name")), + ) + depreciate_asset(asset, self.posting_date, notes) + asset.reload() fixed_asset_gl_entries = get_gl_entries_on_asset_disposal( asset, From 89abe25c56e81ec11b6b0516d252e4cd3885735d Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Sun, 20 Oct 2024 18:03:32 +0530 Subject: [PATCH 13/13] chore: update POT file (#43736) --- erpnext/locale/main.pot | 411 ++++++++++++++++++++-------------------- 1 file changed, 210 insertions(+), 201 deletions(-) diff --git a/erpnext/locale/main.pot b/erpnext/locale/main.pot index 6292d4fe8be..d972fb0f939 100644 --- a/erpnext/locale/main.pot +++ b/erpnext/locale/main.pot @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ERPNext VERSION\n" "Report-Msgid-Bugs-To: info@erpnext.com\n" -"POT-Creation-Date: 2024-10-13 09:35+0000\n" -"PO-Revision-Date: 2024-10-13 09:35+0000\n" +"POT-Creation-Date: 2024-10-20 09:35+0000\n" +"PO-Revision-Date: 2024-10-20 09:35+0000\n" "Last-Translator: info@erpnext.com\n" "Language-Team: info@erpnext.com\n" "MIME-Version: 1.0\n" @@ -1040,7 +1040,7 @@ msgstr "" msgid "Abbreviation is mandatory" msgstr "" -#: erpnext/stock/doctype/item_attribute/item_attribute.py:102 +#: erpnext/stock/doctype/item_attribute/item_attribute.py:99 msgid "Abbreviation: {0} must appear only once" msgstr "" @@ -1812,8 +1812,8 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1183 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1381 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1399 -#: erpnext/controllers/stock_controller.py:514 -#: erpnext/controllers/stock_controller.py:531 +#: erpnext/controllers/stock_controller.py:529 +#: erpnext/controllers/stock_controller.py:546 #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:821 #: erpnext/stock/doctype/stock_entry/stock_entry.py:1579 #: erpnext/stock/doctype/stock_entry/stock_entry.py:1593 @@ -3350,7 +3350,7 @@ msgstr "" msgid "Advance Paid" msgstr "" -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:65 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:58 #: erpnext/selling/doctype/sales_order/sales_order_list.js:105 msgid "Advance Payment" msgstr "" @@ -4091,7 +4091,7 @@ msgstr "" msgid "Allow Item To Be Added Multiple Times in a Transaction" msgstr "" -#: erpnext/controllers/selling_controller.py:697 +#: erpnext/controllers/selling_controller.py:707 msgid "Allow Item to Be Added Multiple Times in a Transaction" msgstr "" @@ -4943,7 +4943,7 @@ msgstr "" msgid "Another Cost Center Allocation record {0} applicable from {1}, hence this allocation will be applicable upto {2}" msgstr "" -#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:132 +#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:124 msgid "Another Period Closing Entry {0} has been made after {1}" msgstr "" @@ -4980,7 +4980,7 @@ msgstr "" #. 'Inventory Dimension' #: erpnext/accounts/doctype/pricing_rule/pricing_rule.json #: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.json -#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:232 +#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:262 #: erpnext/stock/doctype/inventory_dimension/inventory_dimension.json msgid "Applicable For" msgstr "" @@ -5856,7 +5856,7 @@ msgstr "" msgid "Asset scrapped via Journal Entry {0}" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1375 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1376 msgid "Asset sold" msgstr "" @@ -6050,7 +6050,7 @@ msgstr "" msgid "At row {0}: Serial No is mandatory for Item {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:468 +#: erpnext/controllers/stock_controller.py:483 msgid "At row {0}: Serial and Batch Bundle {1} has already created. Please remove the values from the serial no or batch no fields." msgstr "" @@ -6124,7 +6124,7 @@ msgstr "" msgid "Attribute table is mandatory" msgstr "" -#: erpnext/stock/doctype/item_attribute/item_attribute.py:97 +#: erpnext/stock/doctype/item_attribute/item_attribute.py:94 msgid "Attribute value: {0} must appear only once" msgstr "" @@ -7754,7 +7754,7 @@ msgstr "" msgid "Batch and Serial No" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:513 +#: erpnext/manufacturing/doctype/work_order/work_order.py:522 msgid "Batch not created for item {} since it does not have a batch series." msgstr "" @@ -8964,7 +8964,7 @@ msgstr "" msgid "Can be approved by {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1537 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1546 msgid "Can not close Work Order. Since {0} Job Cards are in Work In Progress state." msgstr "" @@ -9199,7 +9199,7 @@ msgstr "" msgid "Cannot cancel as processing of cancelled documents is pending." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:686 +#: erpnext/manufacturing/doctype/work_order/work_order.py:695 msgid "Cannot cancel because submitted Stock Entry {0} exists" msgstr "" @@ -9263,7 +9263,7 @@ msgstr "" msgid "Cannot create Stock Reservation Entries for future dated Purchase Receipts." msgstr "" -#: erpnext/selling/doctype/sales_order/sales_order.py:1637 +#: erpnext/selling/doctype/sales_order/sales_order.py:1640 #: erpnext/stock/doctype/pick_list/pick_list.py:172 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 "" @@ -9318,15 +9318,15 @@ msgstr "" msgid "Cannot overbill for Item {0} in row {1} more than {2}. To allow over-billing, please set allowance in Accounts Settings" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:310 +#: erpnext/manufacturing/doctype/work_order/work_order.py:319 msgid "Cannot produce more Item {0} than Sales Order quantity {1}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1024 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1033 msgid "Cannot produce more item for {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1028 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1037 msgid "Cannot produce more than {0} items for {1}" msgstr "" @@ -9400,7 +9400,7 @@ msgstr "" msgid "Capacity Planning" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:672 +#: erpnext/manufacturing/doctype/work_order/work_order.py:681 msgid "Capacity Planning Error, planned start time can not be same as end time" msgstr "" @@ -9959,6 +9959,7 @@ msgstr "" msgid "Cheques and Deposits Incorrectly cleared" msgstr "" +#: erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js:50 #: erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py:50 msgid "Cheques and Deposits incorrectly cleared" msgstr "" @@ -10122,7 +10123,7 @@ msgid "Client Secret" msgstr "" #: erpnext/buying/doctype/purchase_order/purchase_order.js:362 -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:49 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:42 #: erpnext/crm/doctype/opportunity/opportunity.js:118 #: erpnext/manufacturing/doctype/production_plan/production_plan.js:111 #: erpnext/manufacturing/doctype/work_order/work_order.js:631 @@ -10177,7 +10178,7 @@ msgstr "" #: erpnext/accounts/doctype/closed_document/closed_document.json #: erpnext/accounts/doctype/pos_opening_entry/pos_opening_entry.json #: erpnext/buying/doctype/purchase_order/purchase_order.json -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:15 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:16 #: erpnext/crm/doctype/appointment/appointment.json #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/manufacturing/doctype/production_plan/production_plan.json @@ -10210,7 +10211,7 @@ msgstr "" msgid "Closed Documents" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1464 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1473 msgid "Closed Work Order can not be stopped or Re-opened" msgstr "" @@ -10243,7 +10244,7 @@ msgstr "" msgid "Closing Account Head" msgstr "" -#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:100 +#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:92 msgid "Closing Account {0} must be of type Liability / Equity" msgstr "" @@ -11048,7 +11049,7 @@ msgstr "" msgid "Company and Posting Date is mandatory" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2203 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2204 msgid "Company currencies of both the companies should match for Inter Company Transactions." msgstr "" @@ -11215,7 +11216,7 @@ msgstr "" #: erpnext/assets/doctype/asset_repair/asset_repair.json #: erpnext/assets/doctype/asset_repair/asset_repair_list.js:7 #: erpnext/buying/doctype/purchase_order/purchase_order.json -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:43 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:36 #: erpnext/crm/doctype/email_campaign/email_campaign.json #: erpnext/manufacturing/doctype/bom_creator/bom_creator.json #: erpnext/manufacturing/doctype/bom_creator/bom_creator_list.js:9 @@ -11284,7 +11285,7 @@ msgstr "" msgid "Completed Qty" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:938 +#: erpnext/manufacturing/doctype/work_order/work_order.py:947 msgid "Completed Qty cannot be greater than 'Qty to Manufacture'" msgstr "" @@ -12066,6 +12067,10 @@ msgstr "" msgid "Conversion factor for default Unit of Measure must be 1 in row {0}" msgstr "" +#: erpnext/controllers/stock_controller.py:76 +msgid "Conversion factor for item {0} has been reset to 1.0 as the uom {1} is same as stock uom {2}." +msgstr "" + #: erpnext/controllers/accounts_controller.py:2529 msgid "Conversion rate cannot be 0 or 1" msgstr "" @@ -12521,7 +12526,7 @@ msgstr "" msgid "Could Not Delete Demo Data" msgstr "" -#: erpnext/selling/doctype/quotation/quotation.py:574 +#: erpnext/selling/doctype/quotation/quotation.py:575 msgid "Could not auto create Customer due to the following missing mandatory field(s):" msgstr "" @@ -12648,8 +12653,8 @@ msgstr "" #: erpnext/accounts/doctype/dunning/dunning.js:57 #: erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js:34 #: erpnext/accounts/doctype/journal_entry/journal_entry.js:115 -#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:67 #: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:68 +#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:69 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js:94 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js:102 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js:108 @@ -12672,11 +12677,11 @@ msgstr "" #: erpnext/buying/doctype/purchase_order/purchase_order.js:125 #: erpnext/buying/doctype/purchase_order/purchase_order.js:391 #: erpnext/buying/doctype/purchase_order/purchase_order.js:410 -#: erpnext/buying/doctype/purchase_order/purchase_order.js:421 -#: erpnext/buying/doctype/purchase_order/purchase_order.js:428 -#: erpnext/buying/doctype/purchase_order/purchase_order.js:438 -#: erpnext/buying/doctype/purchase_order/purchase_order.js:456 -#: erpnext/buying/doctype/purchase_order/purchase_order.js:462 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:422 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:429 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:439 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:457 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:463 #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:49 #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:156 #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:187 @@ -13016,7 +13021,7 @@ msgstr "" msgid "Create a variant with the template image." msgstr "" -#: erpnext/stock/stock_ledger.py:1808 +#: erpnext/stock/stock_ledger.py:1817 msgid "Create an incoming stock transaction for the Item." msgstr "" @@ -13081,7 +13086,7 @@ msgid "Creating Purchase Order ..." msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js:703 -#: erpnext/buying/doctype/purchase_order/purchase_order.js:523 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:524 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:73 msgid "Creating Purchase Receipt ..." msgstr "" @@ -13095,7 +13100,7 @@ msgstr "" msgid "Creating Stock Entry" msgstr "" -#: erpnext/buying/doctype/purchase_order/purchase_order.js:538 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:539 msgid "Creating Subcontracting Order ..." msgstr "" @@ -13610,7 +13615,7 @@ msgstr "" msgid "Currency for {0} must be {1}" msgstr "" -#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:106 +#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:98 msgid "Currency of the Closing Account must be {0}" msgstr "" @@ -15094,7 +15099,7 @@ msgstr "" msgid "Default BOM ({0}) must be active for this item or its template" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1297 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1306 msgid "Default BOM for {0} not found" msgstr "" @@ -15102,7 +15107,7 @@ msgstr "" msgid "Default BOM not found for FG Item {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1294 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1303 msgid "Default BOM not found for Item {0} and Project {1}" msgstr "" @@ -15735,7 +15740,7 @@ msgstr "" #. Option for the 'Status' (Select) field in DocType 'Stock Reservation Entry' #: erpnext/buying/doctype/purchase_order/purchase_order.js:370 #: erpnext/buying/doctype/purchase_order/purchase_order.json -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:19 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:20 #: erpnext/controllers/website_list_for_contact.py:209 #: erpnext/stock/doctype/serial_no/serial_no.json #: erpnext/stock/doctype/shipment/shipment.json @@ -18082,7 +18087,7 @@ msgstr "" msgid "Educational Qualification" msgstr "" -#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:145 +#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:147 msgid "Either 'Selling' or 'Buying' must be selected" msgstr "" @@ -19081,7 +19086,7 @@ msgstr "" msgid "Example: ABCD.#####. If series is set and Batch No is not mentioned in transactions, then automatic batch number will be created based on this series. If you always want to explicitly mention Batch No for this item, leave this blank. Note: this setting will take priority over the Naming Series Prefix in Stock Settings." msgstr "" -#: erpnext/stock/stock_ledger.py:2095 +#: erpnext/stock/stock_ledger.py:2104 msgid "Example: Serial No {0} reserved in {1}." msgstr "" @@ -19404,7 +19409,7 @@ msgstr "" msgid "Expense" msgstr "" -#: erpnext/controllers/stock_controller.py:707 +#: erpnext/controllers/stock_controller.py:722 msgid "Expense / Difference account ({0}) must be a 'Profit or Loss' account" msgstr "" @@ -19446,7 +19451,7 @@ msgstr "" msgid "Expense Account" msgstr "" -#: erpnext/controllers/stock_controller.py:687 +#: erpnext/controllers/stock_controller.py:702 msgid "Expense Account Missing" msgstr "" @@ -20553,7 +20558,7 @@ msgstr "" msgid "For Item" msgstr "" -#: erpnext/controllers/stock_controller.py:1112 +#: erpnext/controllers/stock_controller.py:1127 msgid "For Item {0} cannot be received more than {1} qty against the {2} {3}" msgstr "" @@ -20648,7 +20653,7 @@ msgstr "" msgid "For item {0}, rate must be a positive number. To Allow negative rates, enable {1} in {2}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1607 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1616 msgid "For operation {0}: Quantity ({1}) can not be greater than pending quantity({2})" msgstr "" @@ -20683,7 +20688,7 @@ msgstr "" msgid "For the item {0}, the quantity should be {1} according to the BOM {2}." msgstr "" -#: erpnext/controllers/stock_controller.py:276 +#: erpnext/controllers/stock_controller.py:291 msgid "For the {0}, no stock is available for the return in the warehouse {1}." msgstr "" @@ -21137,7 +21142,7 @@ msgstr "" msgid "From Range" msgstr "" -#: erpnext/stock/doctype/item_attribute/item_attribute.py:85 +#: erpnext/stock/doctype/item_attribute/item_attribute.py:82 msgid "From Range has to be less than To Range" msgstr "" @@ -21686,8 +21691,8 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:259 #: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:288 #: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:319 -#: erpnext/buying/doctype/purchase_order/purchase_order.js:566 -#: erpnext/buying/doctype/purchase_order/purchase_order.js:586 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:567 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:587 #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:335 #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:357 #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:402 @@ -22580,7 +22585,7 @@ msgstr "" msgid "Here are the error logs for the aforementioned failed depreciation entries: {0}" msgstr "" -#: erpnext/stock/stock_ledger.py:1793 +#: erpnext/stock/stock_ledger.py:1802 msgid "Here are the options to proceed:" msgstr "" @@ -23069,7 +23074,7 @@ msgstr "" msgid "If more than one package of the same type (for print)" msgstr "" -#: erpnext/stock/stock_ledger.py:1803 +#: erpnext/stock/stock_ledger.py:1812 msgid "If not, you can Cancel / Submit this entry" msgstr "" @@ -23094,7 +23099,7 @@ msgstr "" msgid "If the account is frozen, entries are allowed to restricted users." msgstr "" -#: erpnext/stock/stock_ledger.py:1796 +#: erpnext/stock/stock_ledger.py:1805 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 "" @@ -24192,7 +24197,7 @@ msgstr "" msgid "Increment" msgstr "" -#: erpnext/stock/doctype/item_attribute/item_attribute.py:88 +#: erpnext/stock/doctype/item_attribute/item_attribute.py:85 msgid "Increment cannot be 0" msgstr "" @@ -24304,13 +24309,13 @@ msgstr "" msgid "Inspected By" msgstr "" -#: erpnext/controllers/stock_controller.py:1010 +#: erpnext/controllers/stock_controller.py:1025 msgid "Inspection Rejected" msgstr "" #. Label of the inspection_required (Check) field in DocType 'Stock Entry' -#: erpnext/controllers/stock_controller.py:984 -#: erpnext/controllers/stock_controller.py:986 +#: erpnext/controllers/stock_controller.py:999 +#: erpnext/controllers/stock_controller.py:1001 #: erpnext/stock/doctype/stock_entry/stock_entry.json msgid "Inspection Required" msgstr "" @@ -24327,7 +24332,7 @@ msgstr "" msgid "Inspection Required before Purchase" msgstr "" -#: erpnext/controllers/stock_controller.py:997 +#: erpnext/controllers/stock_controller.py:1012 msgid "Inspection Submission" msgstr "" @@ -24415,12 +24420,12 @@ msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.py:117 #: erpnext/stock/doctype/pick_list/pick_list.py:896 #: erpnext/stock/doctype/stock_entry/stock_entry.py:765 -#: erpnext/stock/serial_batch_bundle.py:988 erpnext/stock/stock_ledger.py:1490 -#: erpnext/stock/stock_ledger.py:1963 +#: erpnext/stock/serial_batch_bundle.py:988 erpnext/stock/stock_ledger.py:1499 +#: erpnext/stock/stock_ledger.py:1972 msgid "Insufficient Stock" msgstr "" -#: erpnext/stock/stock_ledger.py:1978 +#: erpnext/stock/stock_ledger.py:1987 msgid "Insufficient Stock for Batch" msgstr "" @@ -24607,7 +24612,7 @@ msgstr "" msgid "Internal Work History" msgstr "" -#: erpnext/controllers/stock_controller.py:1077 +#: erpnext/controllers/stock_controller.py:1092 msgid "Internal transfers can only be done in company's default currency" msgstr "" @@ -24665,7 +24670,7 @@ msgstr "" msgid "Invalid Child Procedure" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1982 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1983 msgid "Invalid Company for Inter Company Transaction." msgstr "" @@ -24821,7 +24826,7 @@ msgstr "" msgid "Invalid {0}" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1980 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1981 msgid "Invalid {0} for Inter Company Transaction." msgstr "" @@ -25001,7 +25006,7 @@ msgstr "" #: erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.json #: erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json #: erpnext/accounts/doctype/pos_profile/pos_profile.json -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2031 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2032 #: erpnext/buying/doctype/supplier/supplier.json #: erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:62 msgid "Invoices" @@ -26830,11 +26835,11 @@ msgstr "" msgid "Item {0} does not exist in the system or has expired" msgstr "" -#: erpnext/controllers/stock_controller.py:361 +#: erpnext/controllers/stock_controller.py:376 msgid "Item {0} does not exist." msgstr "" -#: erpnext/controllers/selling_controller.py:694 +#: erpnext/controllers/selling_controller.py:704 msgid "Item {0} entered multiple times." msgstr "" @@ -27091,7 +27096,7 @@ msgstr "" msgid "Items under this warehouse will be suggested" msgstr "" -#: erpnext/controllers/stock_controller.py:77 +#: erpnext/controllers/stock_controller.py:92 msgid "Items {0} do not exist in the Item master." msgstr "" @@ -27264,7 +27269,7 @@ msgstr "" msgid "Job Worker Warehouse" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1655 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1664 msgid "Job card {0} created" msgstr "" @@ -28123,7 +28128,7 @@ msgstr "" msgid "Link existing Quality Procedure." msgstr "" -#: erpnext/buying/doctype/purchase_order/purchase_order.js:605 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:606 msgid "Link to Material Request" msgstr "" @@ -28881,7 +28886,7 @@ msgstr "" #. Label of the reqd (Check) field in DocType 'Inventory Dimension' #: erpnext/accounts/doctype/payment_entry/payment_entry.js:243 #: erpnext/accounts/doctype/pos_field/pos_field.json -#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:145 +#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:147 #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.js:69 #: erpnext/manufacturing/doctype/bom/bom.js:86 #: erpnext/manufacturing/doctype/bom/bom.js:570 @@ -28908,7 +28913,7 @@ msgstr "" msgid "Mandatory Depends On" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1536 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1537 msgid "Mandatory Field" msgstr "" @@ -28924,7 +28929,7 @@ msgstr "" msgid "Mandatory For Profit and Loss Account" msgstr "" -#: erpnext/selling/doctype/quotation/quotation.py:578 +#: erpnext/selling/doctype/quotation/quotation.py:579 msgid "Mandatory Missing" msgstr "" @@ -29426,7 +29431,7 @@ msgstr "" #. Label of the material_request (Link) field in DocType 'Subcontracting Order #. Service Item' #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json -#: erpnext/buying/doctype/purchase_order/purchase_order.js:545 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:546 #: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:316 #: erpnext/buying/doctype/request_for_quotation_item/request_for_quotation_item.json @@ -29537,7 +29542,7 @@ msgstr "" msgid "Material Request Type" msgstr "" -#: erpnext/selling/doctype/sales_order/sales_order.py:1583 +#: erpnext/selling/doctype/sales_order/sales_order.py:1586 msgid "Material Request not created, as quantity for Raw Materials already available." msgstr "" @@ -29828,7 +29833,7 @@ msgstr "" msgid "Megawatt" msgstr "" -#: erpnext/stock/stock_ledger.py:1809 +#: erpnext/stock/stock_ledger.py:1818 msgid "Mention Valuation Rate in the Item master." msgstr "" @@ -30238,13 +30243,13 @@ msgstr "" #: erpnext/accounts/doctype/pos_opening_entry/pos_opening_entry.py:69 #: erpnext/accounts/doctype/pos_profile/pos_profile.py:168 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:586 -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2047 -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2605 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2048 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2606 #: erpnext/assets/doctype/asset_category/asset_category.py:117 msgid "Missing Account" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1422 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1423 msgid "Missing Asset" msgstr "" @@ -30286,7 +30291,7 @@ msgid "Missing email template for dispatch. Please set one in Delivery Settings. msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1003 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1041 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1050 msgid "Missing value" msgstr "" @@ -30754,7 +30759,7 @@ msgid "Music" msgstr "" #. Label of the must_be_whole_number (Check) field in DocType 'UOM' -#: erpnext/manufacturing/doctype/work_order/work_order.py:997 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1006 #: erpnext/setup/doctype/uom/uom.json #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:137 #: erpnext/utilities/transaction_base.py:284 @@ -31375,7 +31380,7 @@ msgstr "" msgid "New task" msgstr "" -#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:224 +#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:254 msgid "New {0} pricing rules are created" msgstr "" @@ -31476,7 +31481,7 @@ msgstr "" msgid "No Answer" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2149 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2150 msgid "No Customer found for Inter Company Transactions which represents company {0}" msgstr "" @@ -31558,7 +31563,7 @@ msgstr "" msgid "No Summary" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2133 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2134 msgid "No Supplier found for Inter Company Transactions which represents company {0}" msgstr "" @@ -31778,7 +31783,7 @@ msgstr "" msgid "No {0} Accounts found for this company." msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2197 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2198 msgid "No {0} found for Inter Company Transactions." msgstr "" @@ -31934,11 +31939,11 @@ msgid "Not in stock" msgstr "" #: erpnext/buying/doctype/purchase_order/purchase_order.py:684 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1319 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1459 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1526 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1328 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1468 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1535 #: erpnext/selling/doctype/sales_order/sales_order.py:791 -#: erpnext/selling/doctype/sales_order/sales_order.py:1569 +#: erpnext/selling/doctype/sales_order/sales_order.py:1572 msgid "Not permitted" msgstr "" @@ -32276,7 +32281,7 @@ msgstr "" #. Option for the 'Status' (Select) field in DocType 'Issue' #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js:27 #: erpnext/buying/doctype/purchase_order/purchase_order.json -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:17 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:18 #: erpnext/buying/doctype/supplier/supplier_list.js:5 #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/selling/doctype/sales_order/sales_order.json @@ -32728,7 +32733,7 @@ msgid "Opening Invoice Item" msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1526 -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1637 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1638 msgid "Opening Invoice has rounding adjustment of {0}.

'{1}' account is required to post these values. Please set it in Company: {2}.

Or, '{3}' can be enabled to not post any rounding adjustment." msgstr "" @@ -32928,7 +32933,7 @@ msgstr "" msgid "Operation Time must be greater than 0" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1047 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1056 msgid "Operation Time must be greater than 0 for Operation {0}" msgstr "" @@ -33543,7 +33548,7 @@ msgstr "" msgid "Over Picking Allowance" msgstr "" -#: erpnext/controllers/stock_controller.py:1243 +#: erpnext/controllers/stock_controller.py:1258 msgid "Over Receipt" msgstr "" @@ -33929,7 +33934,7 @@ msgstr "" msgid "Packed Items" msgstr "" -#: erpnext/controllers/stock_controller.py:1081 +#: erpnext/controllers/stock_controller.py:1096 msgid "Packed Items cannot be transferred internally" msgstr "" @@ -34803,7 +34808,7 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:84 #: erpnext/accounts/doctype/sales_invoice/sales_invoice_dashboard.py:25 #: erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js:39 -#: erpnext/buying/doctype/purchase_order/purchase_order.js:426 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:427 #: erpnext/buying/doctype/purchase_order/purchase_order_dashboard.py:20 #: erpnext/selling/doctype/sales_order/sales_order.js:784 #: erpnext/selling/doctype/sales_order/sales_order_dashboard.py:28 @@ -35145,7 +35150,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js:124 #: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:122 #: erpnext/accounts/workspace/receivables/receivables.json -#: erpnext/buying/doctype/purchase_order/purchase_order.js:434 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:435 #: erpnext/selling/doctype/sales_order/sales_order.js:777 msgid "Payment Request" msgstr "" @@ -35176,7 +35181,7 @@ msgstr "" msgid "Payment Request is already created" msgstr "" -#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:302 +#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:303 msgid "Payment Request took too long to respond. Please try requesting for payment again." msgstr "" @@ -35337,7 +35342,7 @@ msgstr "" msgid "Payment methods are mandatory. Please add at least one payment method." msgstr "" -#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:314 +#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:315 #: erpnext/selling/page/point_of_sale/pos_payment.js:259 msgid "Payment of {0} received successfully." msgstr "" @@ -35350,7 +35355,7 @@ msgstr "" msgid "Payment related to {0} is not completed" msgstr "" -#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:291 +#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:292 msgid "Payment request failed" msgstr "" @@ -36178,7 +36183,7 @@ msgstr "" msgid "Please add {1} role to user {0}." msgstr "" -#: erpnext/controllers/stock_controller.py:1254 +#: erpnext/controllers/stock_controller.py:1269 msgid "Please adjust the qty or edit {0} to proceed." msgstr "" @@ -36186,7 +36191,7 @@ msgstr "" msgid "Please attach CSV file" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2740 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2741 msgid "Please cancel and amend the Payment Entry" msgstr "" @@ -36252,7 +36257,7 @@ msgstr "" msgid "Please convert the parent account in corresponding child company to a group account." msgstr "" -#: erpnext/selling/doctype/quotation/quotation.py:576 +#: erpnext/selling/doctype/quotation/quotation.py:577 msgid "Please create Customer from Lead {0}." msgstr "" @@ -36310,7 +36315,7 @@ msgstr "" msgid "Please enable {0} in the {1}." msgstr "" -#: erpnext/controllers/selling_controller.py:696 +#: erpnext/controllers/selling_controller.py:706 msgid "Please enable {} in {} to allow same item in multiple rows" msgstr "" @@ -36445,7 +36450,7 @@ msgstr "" msgid "Please enter message before sending" msgstr "" -#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:279 +#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:280 msgid "Please enter mobile number first." msgstr "" @@ -36576,7 +36581,7 @@ msgstr "" msgid "Please select Apply Discount On" msgstr "" -#: erpnext/selling/doctype/sales_order/sales_order.py:1534 +#: erpnext/selling/doctype/sales_order/sales_order.py:1537 msgid "Please select BOM against item {0}" msgstr "" @@ -36662,7 +36667,7 @@ msgstr "" msgid "Please select Price List" msgstr "" -#: erpnext/selling/doctype/sales_order/sales_order.py:1536 +#: erpnext/selling/doctype/sales_order/sales_order.py:1539 msgid "Please select Qty against item {0}" msgstr "" @@ -36873,7 +36878,7 @@ msgstr "" msgid "Please set Account" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1536 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1537 msgid "Please set Account for Change Amount" msgstr "" @@ -36959,7 +36964,7 @@ msgstr "" msgid "Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {}" msgstr "" -#: erpnext/selling/doctype/sales_order/sales_order.py:1326 +#: erpnext/selling/doctype/sales_order/sales_order.py:1329 msgid "Please set a Supplier against the Items to be considered in the Purchase Order." msgstr "" @@ -36980,7 +36985,7 @@ msgstr "" msgid "Please set an Address on the Company '%s'" msgstr "" -#: erpnext/controllers/stock_controller.py:682 +#: erpnext/controllers/stock_controller.py:697 msgid "Please set an Expense Account in the Items table" msgstr "" @@ -36992,19 +36997,19 @@ msgstr "" msgid "Please set at least one row in the Taxes and Charges Table" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2044 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2045 msgid "Please set default Cash or Bank account in Mode of Payment {0}" msgstr "" #: erpnext/accounts/doctype/pos_opening_entry/pos_opening_entry.py:66 #: erpnext/accounts/doctype/pos_profile/pos_profile.py:165 -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2602 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2603 msgid "Please set default Cash or Bank account in Mode of Payment {}" msgstr "" #: erpnext/accounts/doctype/pos_opening_entry/pos_opening_entry.py:68 #: erpnext/accounts/doctype/pos_profile/pos_profile.py:167 -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2604 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2605 msgid "Please set default Cash or Bank account in Mode of Payments {}" msgstr "" @@ -37020,7 +37025,7 @@ msgstr "" msgid "Please set default UOM in Stock Settings" msgstr "" -#: erpnext/controllers/stock_controller.py:554 +#: erpnext/controllers/stock_controller.py:569 msgid "Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer" msgstr "" @@ -37108,7 +37113,7 @@ msgstr "" msgid "Please specify Company" msgstr "" -#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:101 +#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:102 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js:399 #: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:480 msgid "Please specify Company to proceed" @@ -37132,7 +37137,7 @@ msgstr "" msgid "Please specify either Quantity or Valuation Rate or both" msgstr "" -#: erpnext/stock/doctype/item_attribute/item_attribute.py:82 +#: erpnext/stock/doctype/item_attribute/item_attribute.py:79 msgid "Please specify from/to range" msgstr "" @@ -37300,7 +37305,7 @@ msgstr "" #: erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js:290 #: erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json #: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.json -#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:110 +#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:102 #: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.json #: erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.json #: erpnext/accounts/doctype/pos_opening_entry/pos_opening_entry.json @@ -37572,7 +37577,7 @@ msgstr "" msgid "Previous Work Experience" msgstr "" -#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:162 +#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:154 msgid "Previous Year is not closed, please close it first" msgstr "" @@ -37809,7 +37814,7 @@ msgstr "" msgid "Price or Product Discount" msgstr "" -#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:147 +#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:149 msgid "Price or product discount slabs are required" msgstr "" @@ -37886,7 +37891,7 @@ msgstr "" msgid "Pricing Rule Item Group" msgstr "" -#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:221 +#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:251 msgid "Pricing Rule {0} is updated" msgstr "" @@ -39338,8 +39343,8 @@ msgstr "" #: erpnext/accounts/workspace/payables/payables.json #: erpnext/assets/doctype/asset/asset.json #: erpnext/assets/doctype/asset_repair_purchase_invoice/asset_repair_purchase_invoice.json -#: erpnext/buying/doctype/purchase_order/purchase_order.js:417 -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:57 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:418 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:50 #: erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js:18 #: erpnext/buying/workspace/buying/buying.json #: erpnext/crm/doctype/contract/contract.json @@ -39629,7 +39634,7 @@ msgstr "" #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:20 #: erpnext/assets/doctype/asset/asset.json #: erpnext/buying/doctype/purchase_order/purchase_order.js:387 -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:61 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:54 #: erpnext/setup/doctype/authorization_rule/authorization_rule.json #: erpnext/stock/doctype/landed_cost_item/landed_cost_item.json #: erpnext/stock/doctype/landed_cost_purchase_receipt/landed_cost_purchase_receipt.json @@ -40011,7 +40016,7 @@ msgstr "" msgid "Qty To Manufacture" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:993 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1002 msgid "Qty To Manufacture ({0}) cannot be a fraction for the UOM {2}. To allow this, disable '{1}' in the UOM {2}." msgstr "" @@ -40585,11 +40590,11 @@ msgstr "" msgid "Quantity to Manufacture" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1600 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1609 msgid "Quantity to Manufacture can not be zero for the operation {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:985 +#: erpnext/manufacturing/doctype/work_order/work_order.py:994 msgid "Quantity to Manufacture must be greater than 0." msgstr "" @@ -41430,7 +41435,7 @@ msgstr "" msgid "Reason for Failure" msgstr "" -#: erpnext/buying/doctype/purchase_order/purchase_order.js:702 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:703 #: erpnext/selling/doctype/sales_order/sales_order.js:1352 msgid "Reason for Hold" msgstr "" @@ -41786,7 +41791,7 @@ msgid "Recurse Over Qty cannot be less than 0" msgstr "" #: erpnext/accounts/doctype/pricing_rule/pricing_rule.py:315 -#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:201 +#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:231 msgid "Recursive Discounts with Mixed condition is not supported by the system" msgstr "" @@ -42515,7 +42520,7 @@ msgstr "" msgid "Rented" msgstr "" -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:53 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:46 #: erpnext/crm/doctype/opportunity/opportunity.js:123 #: erpnext/stock/doctype/delivery_note/delivery_note.js:305 #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:295 @@ -42825,7 +42830,7 @@ msgstr "" msgid "Request Parameters" msgstr "" -#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:305 +#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:306 msgid "Request Timeout" msgstr "" @@ -43143,7 +43148,7 @@ msgstr "" msgid "Reserved Quantity for Production" msgstr "" -#: erpnext/stock/stock_ledger.py:2101 +#: erpnext/stock/stock_ledger.py:2110 msgid "Reserved Serial No." msgstr "" @@ -43157,11 +43162,11 @@ msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.js:146 #: erpnext/stock/report/reserved_stock/reserved_stock.json #: erpnext/stock/report/stock_balance/stock_balance.py:482 -#: erpnext/stock/stock_ledger.py:2085 +#: erpnext/stock/stock_ledger.py:2094 msgid "Reserved Stock" msgstr "" -#: erpnext/stock/stock_ledger.py:2131 +#: erpnext/stock/stock_ledger.py:2140 msgid "Reserved Stock for Batch" msgstr "" @@ -43467,7 +43472,7 @@ msgstr "" #. Option for the 'Status' (Select) field in DocType 'Purchase Invoice' #. Option for the 'Status' (Select) field in DocType 'Sales Invoice' #. Option for the 'Status' (Select) field in DocType 'Subcontracting Receipt' -#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:67 +#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:68 #: erpnext/accounts/doctype/pos_invoice/pos_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -43931,8 +43936,8 @@ msgstr "" msgid "Rounding Loss Allowance should be between 0 and 1" msgstr "" -#: erpnext/controllers/stock_controller.py:566 #: erpnext/controllers/stock_controller.py:581 +#: erpnext/controllers/stock_controller.py:596 msgid "Rounding gain/loss Entry for Stock Transfer" msgstr "" @@ -43981,12 +43986,12 @@ msgid "Row # {0}: Returned Item {1} does not exist in {2} {3}" msgstr "" #: erpnext/accounts/doctype/pos_invoice/pos_invoice.py:453 -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1720 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1721 msgid "Row #{0} (Payment Table): Amount must be negative" msgstr "" #: erpnext/accounts/doctype/pos_invoice/pos_invoice.py:451 -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1715 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1716 msgid "Row #{0} (Payment Table): Amount must be positive" msgstr "" @@ -44132,7 +44137,7 @@ msgstr "" msgid "Row #{0}: Expected Delivery Date cannot be before Purchase Order Date" msgstr "" -#: erpnext/controllers/stock_controller.py:684 +#: erpnext/controllers/stock_controller.py:699 msgid "Row #{0}: Expense Account not set for the Item {1}. {2}" msgstr "" @@ -44303,7 +44308,7 @@ msgid "" "\t\t\t\t\tthis validation." msgstr "" -#: erpnext/controllers/stock_controller.py:158 +#: erpnext/controllers/stock_controller.py:173 msgid "Row #{0}: Serial No {1} does not belong to Batch {2}" msgstr "" @@ -44375,7 +44380,7 @@ msgstr "" msgid "Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}." msgstr "" -#: erpnext/controllers/stock_controller.py:171 +#: erpnext/controllers/stock_controller.py:186 msgid "Row #{0}: The batch {1} has already expired." msgstr "" @@ -44395,7 +44400,7 @@ msgstr "" 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 "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1421 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1422 msgid "Row #{0}: You must select an Asset for Item {1}." msgstr "" @@ -44581,7 +44586,7 @@ msgstr "" msgid "Row {0}: Debit entry can not be linked with a {1}" msgstr "" -#: erpnext/controllers/selling_controller.py:718 +#: erpnext/controllers/selling_controller.py:728 msgid "Row {0}: Delivery Warehouse ({1}) and Customer Warehouse ({2}) can not be same" msgstr "" @@ -44635,7 +44640,7 @@ msgstr "" msgid "Row {0}: From Time and To Time of {1} is overlapping with {2}" msgstr "" -#: erpnext/controllers/stock_controller.py:1072 +#: erpnext/controllers/stock_controller.py:1087 msgid "Row {0}: From Warehouse is mandatory for internal transfers" msgstr "" @@ -44656,7 +44661,7 @@ msgid "Row {0}: Item Tax template updated as per validity and rate applied" msgstr "" #: erpnext/controllers/buying_controller.py:377 -#: erpnext/controllers/selling_controller.py:494 +#: erpnext/controllers/selling_controller.py:504 msgid "Row {0}: Item rate has been updated as per valuation rate since its an internal stock transfer" msgstr "" @@ -44756,7 +44761,7 @@ msgstr "" msgid "Row {0}: Subcontracted Item is mandatory for the raw material {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:1063 +#: erpnext/controllers/stock_controller.py:1078 msgid "Row {0}: Target Warehouse is mandatory for internal transfers" msgstr "" @@ -45386,12 +45391,12 @@ msgstr "" msgid "Sales Order {0} is not submitted" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:236 +#: erpnext/manufacturing/doctype/work_order/work_order.py:245 msgid "Sales Order {0} is not valid" msgstr "" #: erpnext/controllers/selling_controller.py:406 -#: erpnext/manufacturing/doctype/work_order/work_order.py:241 +#: erpnext/manufacturing/doctype/work_order/work_order.py:250 msgid "Sales Order {0} is {1}" msgstr "" @@ -46577,7 +46582,7 @@ msgstr "" msgid "Selected POS Opening Entry should be open." msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2192 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2193 msgid "Selected Price List should have buying and selling fields checked." msgstr "" @@ -47036,7 +47041,7 @@ msgstr "" msgid "Serial Nos are created successfully" msgstr "" -#: erpnext/stock/stock_ledger.py:2091 +#: erpnext/stock/stock_ledger.py:2100 msgid "Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding." msgstr "" @@ -47113,7 +47118,7 @@ msgstr "" msgid "Serial and Batch Bundle updated" msgstr "" -#: erpnext/controllers/stock_controller.py:107 +#: erpnext/controllers/stock_controller.py:122 msgid "Serial and Batch Bundle {0} is already used in {1} {2}." msgstr "" @@ -47763,7 +47768,7 @@ msgid "Setting up company" msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1002 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1040 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1049 msgid "Setting {} is required" msgstr "" @@ -48568,15 +48573,15 @@ msgstr "" msgid "Something went wrong please try again" msgstr "" -#: erpnext/accounts/doctype/pricing_rule/utils.py:735 +#: erpnext/accounts/doctype/pricing_rule/utils.py:738 msgid "Sorry, this coupon code is no longer valid" msgstr "" -#: erpnext/accounts/doctype/pricing_rule/utils.py:733 +#: erpnext/accounts/doctype/pricing_rule/utils.py:736 msgid "Sorry, this coupon code's validity has expired" msgstr "" -#: erpnext/accounts/doctype/pricing_rule/utils.py:730 +#: erpnext/accounts/doctype/pricing_rule/utils.py:733 msgid "Sorry, this coupon code's validity has not started" msgstr "" @@ -50064,7 +50069,7 @@ msgstr "" msgid "Stopped" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:676 +#: erpnext/manufacturing/doctype/work_order/work_order.py:685 msgid "Stopped Work Order cannot be cancelled, Unstop it first to cancel" msgstr "" @@ -51035,7 +51040,7 @@ msgstr "" #. Name of a DocType #. Label of a Link in the Buying Workspace #. Label of the supplier_quotation (Link) field in DocType 'Quotation' -#: erpnext/buying/doctype/purchase_order/purchase_order.js:570 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:571 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:45 @@ -51065,7 +51070,7 @@ msgstr "" msgid "Supplier Quotation Item" msgstr "" -#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.py:430 +#: erpnext/buying/doctype/request_for_quotation/request_for_quotation.py:431 msgid "Supplier Quotation {0} Created" msgstr "" @@ -51716,11 +51721,11 @@ msgstr "" msgid "Target Warehouse is mandatory for Decapitalization" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:450 +#: erpnext/manufacturing/doctype/work_order/work_order.py:459 msgid "Target Warehouse is required before Submit" msgstr "" -#: erpnext/controllers/selling_controller.py:724 +#: erpnext/controllers/selling_controller.py:734 msgid "Target Warehouse is set for some items but the customer is not an internal customer." msgstr "" @@ -52025,7 +52030,7 @@ msgstr "" msgid "Tax Rule" msgstr "" -#: erpnext/accounts/doctype/tax_rule/tax_rule.py:137 +#: erpnext/accounts/doctype/tax_rule/tax_rule.py:134 msgid "Tax Rule Conflicts with {0}" msgstr "" @@ -52035,7 +52040,7 @@ msgstr "" msgid "Tax Settings" msgstr "" -#: erpnext/accounts/doctype/tax_rule/tax_rule.py:86 +#: erpnext/accounts/doctype/tax_rule/tax_rule.py:83 msgid "Tax Template is mandatory." msgstr "" @@ -52697,7 +52702,7 @@ msgstr "" msgid "The GL Entries will be cancelled in the background, it can take a few minutes." msgstr "" -#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:186 +#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:171 msgid "The GL Entries will be processed in the background, it can take a few minutes." msgstr "" @@ -52814,6 +52819,10 @@ msgstr "" msgid "The following employees are currently still reporting to {0}:" msgstr "" +#: erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py:185 +msgid "The following invalid Pricing Rules are deleted:" +msgstr "" + #: erpnext/stock/doctype/material_request/material_request.py:781 msgid "The following {0} were created: {1}" msgstr "" @@ -53286,7 +53295,7 @@ msgstr "" msgid "This schedule was created when Asset {0} was scrapped." msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1357 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1358 msgid "This schedule was created when Asset {0} was sold through Sales Invoice {1}." msgstr "" @@ -53337,7 +53346,7 @@ msgstr "" msgid "This will restrict user access to other employee records" msgstr "" -#: erpnext/controllers/selling_controller.py:725 +#: erpnext/controllers/selling_controller.py:735 msgid "This {} will be treated as material transfer." msgstr "" @@ -53649,7 +53658,7 @@ msgstr "" #. Option for the 'Status' (Select) field in DocType 'Delivery Note' #. Option for the 'Status' (Select) field in DocType 'Purchase Receipt' #: erpnext/buying/doctype/purchase_order/purchase_order.json -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:37 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:34 #: erpnext/manufacturing/doctype/production_plan/production_plan.json #: erpnext/selling/doctype/sales_order/sales_order.json #: erpnext/selling/doctype/sales_order/sales_order_list.js:50 @@ -53894,7 +53903,7 @@ msgid "To Package No." msgstr "" #. Option for the 'Status' (Select) field in DocType 'Sales Order' -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:21 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:22 #: erpnext/selling/doctype/sales_order/sales_order.json #: erpnext/selling/doctype/sales_order/sales_order_list.js:25 msgid "To Pay" @@ -53923,13 +53932,13 @@ msgstr "" #. Option for the 'Status' (Select) field in DocType 'Purchase Order' #: erpnext/buying/doctype/purchase_order/purchase_order.json -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:30 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:31 msgid "To Receive" msgstr "" #. Option for the 'Status' (Select) field in DocType 'Purchase Order' #: erpnext/buying/doctype/purchase_order/purchase_order.json -#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:25 +#: erpnext/buying/doctype/purchase_order/purchase_order_list.js:26 msgid "To Receive and Bill" msgstr "" @@ -54130,8 +54139,8 @@ msgstr "" #. Label of a Card Break in the Manufacturing Workspace #. Label of the tools (Column Break) field in DocType 'Email Digest' #. Label of a Card Break in the Stock Workspace -#: erpnext/buying/doctype/purchase_order/purchase_order.js:601 -#: erpnext/buying/doctype/purchase_order/purchase_order.js:677 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:602 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:678 #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:66 #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:153 #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:411 @@ -54985,8 +54994,8 @@ msgstr "" msgid "Total percentage against cost centers should be 100" msgstr "" -#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:749 -#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:750 +#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:745 +#: erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py:746 #: erpnext/accounts/report/financial_statements.py:336 #: erpnext/accounts/report/financial_statements.py:337 msgid "Total {0} ({1})" @@ -55749,7 +55758,7 @@ msgstr "" msgid "UnReconcile" msgstr "" -#: erpnext/setup/utils.py:115 +#: erpnext/setup/utils.py:113 msgid "Unable to find exchange rate for {0} to {1} for key date {2}. Please create a Currency Exchange record manually" msgstr "" @@ -55757,7 +55766,7 @@ msgstr "" msgid "Unable to find score starting at {0}. You need to have standing scores covering 0 to 100" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:646 +#: erpnext/manufacturing/doctype/work_order/work_order.py:655 msgid "Unable to find the time slot in the next {0} days for the operation {1}. Please increase the 'Capacity Planning For (Days)' in the {2}." msgstr "" @@ -56213,7 +56222,7 @@ msgstr "" msgid "Update Rate and Availability" msgstr "" -#: erpnext/buying/doctype/purchase_order/purchase_order.js:590 +#: erpnext/buying/doctype/purchase_order/purchase_order.js:591 msgid "Update Rate as per Last Purchase" msgstr "" @@ -56790,11 +56799,11 @@ msgstr "" msgid "Valuation Rate (In / Out)" msgstr "" -#: erpnext/stock/stock_ledger.py:1812 +#: erpnext/stock/stock_ledger.py:1821 msgid "Valuation Rate Missing" msgstr "" -#: erpnext/stock/stock_ledger.py:1790 +#: erpnext/stock/stock_ledger.py:1799 msgid "Valuation Rate for the Item {0}, is required to do accounting entries for {1} {2}." msgstr "" @@ -57439,7 +57448,7 @@ msgstr "" msgid "Wages per hour" msgstr "" -#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:283 +#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:284 msgid "Waiting for payment..." msgstr "" @@ -57730,7 +57739,7 @@ msgstr "" msgid "Warehouse {0} does not belong to company {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:594 +#: erpnext/controllers/stock_controller.py:609 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 "" @@ -58171,7 +58180,7 @@ msgstr "" msgid "Welcome email sent" msgstr "" -#: erpnext/setup/utils.py:166 +#: erpnext/setup/utils.py:164 msgid "Welcome to {0}" msgstr "" @@ -58380,12 +58389,12 @@ msgstr "" msgid "Work Order cannot be created for following reason:
{0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:978 +#: erpnext/manufacturing/doctype/work_order/work_order.py:987 msgid "Work Order cannot be raised against a Item Template" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1468 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1544 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1477 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1553 msgid "Work Order has been {0}" msgstr "" @@ -58423,7 +58432,7 @@ msgstr "" msgid "Work-in-Progress Warehouse" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:448 +#: erpnext/manufacturing/doctype/work_order/work_order.py:457 msgid "Work-in-Progress Warehouse is required before Submit" msgstr "" @@ -58844,7 +58853,7 @@ msgstr "" msgid "You can change the parent account to a Balance Sheet account or select a different account." msgstr "" -#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:84 +#: erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py:82 msgid "You can not cancel this Period Closing Voucher, please cancel the future Period Closing Vouchers first" msgstr "" @@ -58856,7 +58865,7 @@ msgstr "" msgid "You can only have Plans with the same billing cycle in a Subscription" msgstr "" -#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:271 +#: erpnext/accounts/doctype/pos_invoice/pos_invoice.js:272 #: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:894 msgid "You can only redeem max {0} points in this order." msgstr "" @@ -59061,7 +59070,7 @@ msgstr "" msgid "`Allow Negative rates for Items`" msgstr "" -#: erpnext/stock/stock_ledger.py:1804 +#: erpnext/stock/stock_ledger.py:1813 msgid "after" msgstr "" @@ -59266,7 +59275,7 @@ msgstr "" msgid "per hour" msgstr "" -#: erpnext/stock/stock_ledger.py:1805 +#: erpnext/stock/stock_ledger.py:1814 msgid "performing either one below:" msgstr "" @@ -59350,7 +59359,7 @@ msgstr "" msgid "to" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2742 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:2743 msgid "to unallocate the amount of this Return Invoice before cancelling it." msgstr "" @@ -59388,7 +59397,7 @@ msgstr "" msgid "{0} '{1}' not in Fiscal Year {2}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:380 +#: erpnext/manufacturing/doctype/work_order/work_order.py:389 msgid "{0} ({1}) cannot be greater than planned quantity ({2}) in Work Order {3}" msgstr "" @@ -59408,7 +59417,7 @@ msgstr "" msgid "{0} Budget for Account {1} against {2} {3} is {4}. It {5} exceed by {6}" msgstr "" -#: erpnext/accounts/doctype/pricing_rule/utils.py:750 +#: erpnext/accounts/doctype/pricing_rule/utils.py:753 msgid "{0} Coupon used are {1}. Allowed quantity is exhausted" msgstr "" @@ -59528,7 +59537,7 @@ msgstr "" msgid "{0} has Payment Term based allocation enabled. Select a Payment Term for Row #{1} in Payment References section" msgstr "" -#: erpnext/setup/default_success_action.py:14 +#: erpnext/setup/default_success_action.py:15 msgid "{0} has been submitted successfully" msgstr "" @@ -59637,7 +59646,7 @@ msgstr "" msgid "{0} must be negative in return document" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1993 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1994 msgid "{0} not allowed to transact with {1}. Please change the Company or add the Company in the 'Allowed To Transact With'-Section in the Customer record." msgstr "" @@ -59653,7 +59662,7 @@ msgstr "" msgid "{0} payment entries can not be filtered by {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:1246 +#: erpnext/controllers/stock_controller.py:1261 msgid "{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}." msgstr "" @@ -59673,16 +59682,16 @@ msgstr "" msgid "{0} units of {1} are required in {2}{3}, on {4} {5} for {6} to complete the transaction." msgstr "" -#: erpnext/stock/stock_ledger.py:1463 erpnext/stock/stock_ledger.py:1954 -#: erpnext/stock/stock_ledger.py:1968 +#: erpnext/stock/stock_ledger.py:1472 erpnext/stock/stock_ledger.py:1963 +#: erpnext/stock/stock_ledger.py:1977 msgid "{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction." msgstr "" -#: erpnext/stock/stock_ledger.py:2078 erpnext/stock/stock_ledger.py:2124 +#: erpnext/stock/stock_ledger.py:2087 erpnext/stock/stock_ledger.py:2133 msgid "{0} units of {1} needed in {2} on {3} {4} to complete this transaction." msgstr "" -#: erpnext/stock/stock_ledger.py:1457 +#: erpnext/stock/stock_ledger.py:1466 msgid "{0} units of {1} needed in {2} to complete this transaction." msgstr "" @@ -59852,7 +59861,7 @@ msgstr "" msgid "{0} {1}: Accounting Entry for {2} can only be made in currency: {3}" msgstr "" -#: erpnext/controllers/stock_controller.py:713 +#: erpnext/controllers/stock_controller.py:728 msgid "{0} {1}: Cost Center is mandatory for Item {2}" msgstr "" @@ -59918,7 +59927,7 @@ msgstr "" msgid "{0}{1} Did you rename the item? Please contact Administrator / Tech support" msgstr "" -#: erpnext/controllers/stock_controller.py:1507 +#: erpnext/controllers/stock_controller.py:1522 msgid "{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity})" msgstr "" @@ -59984,7 +59993,7 @@ msgstr "" msgid "{} To Bill" msgstr "" -#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1779 +#: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1780 msgid "{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {}" msgstr ""