chore: Merge branch develop to head branch

This commit is contained in:
Khushi Rawat
2024-10-21 01:27:18 +05:30
40 changed files with 311 additions and 375 deletions

View File

@@ -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():

View File

@@ -168,7 +168,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`

View File

@@ -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"},
@@ -26,9 +27,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 +121,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(

View File

@@ -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"
):

View File

@@ -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",

View File

@@ -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"

View File

@@ -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()

View File

@@ -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()

View File

@@ -57,6 +57,7 @@ erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnex
}
onload_post_render(frm) {
super.onload_post_render();
this.pos_profile(frm);
}

View File

@@ -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):

View File

@@ -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,

View File

@@ -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")

View File

@@ -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

View File

@@ -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()

View File

@@ -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)

View File

@@ -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")

View File

@@ -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")

View File

@@ -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")

View File

@@ -23,6 +23,7 @@ class UnitTestAssetShiftAllocation(UnitTestCase):
class TestAssetShiftAllocation(IntegrationTestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
create_asset_shift_factors()
@classmethod

View File

@@ -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

View File

@@ -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 (

View File

@@ -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)

View File

@@ -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):

View File

@@ -15,8 +15,8 @@ from erpnext.crm.report.sales_pipeline_analytics.test_sales_pipeline_analytics i
class TestOpportunitySummaryBySalesStage(IntegrationTestCase):
@classmethod
def setUpClass(self):
frappe.db.delete("Opportunity")
def setUpClass(cls):
super().setUpClass()
create_company()
create_customer()
create_opportunity()

View File

@@ -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()

View File

@@ -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 <a href='https://docs.erpnext.com/docs/user/manual/en/setting-up/settings/naming-series' target='_blank'>Naming Series</a> choose the 'Naming Series' option."
msgstr "به‌طور پیش‌فرض، نام تأمین‌کننده مطابق با نام تأمین‌کننده وارد شده تنظیم می‌شود. اگر می‌خواهید تأمین‌کنندگان با <a href='https://docs.erpnext.com/docs/user/manual/en/setting-up/settings/name-series' target='_blank'>سری نام‌گذاری نام‌گذاری شوند. </a> گزینه \"Naming Series\" را انتخاب کنید."
msgstr "به‌طور پیش‌فرض، نام تامین‌کننده مطابق با نام تامین‌کننده وارد شده تنظیم می‌شود. اگر می‌خواهید تامین‌کنندگان با <a href='https://docs.erpnext.com/docs/user/manual/en/setting-up/settings/name-series' target='_blank'>سری نام‌گذاری نام‌گذاری شوند. </a> گزینه \"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."

File diff suppressed because it is too large Load Diff

View File

@@ -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 "<b>From Time</b> cannot be later than <b>To Time</b> for {0}"
@@ -554,13 +554,13 @@ msgstr ""
#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
#: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json
msgid "<div class=\"columnHeading\">Other Details</div>"
msgstr ""
msgstr "<div class=\"columnHeading\">其他详细信息</div>"
#. Content of the 'no_bank_transactions' (HTML) field in DocType 'Bank
#. Reconciliation Tool'
#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.json
msgid "<div class=\"text-muted text-center\">No Matching Bank Transactions Found</div>"
msgstr ""
msgstr "<div class=\"text-muted text-center\">未找到匹配的银行交易</div>"
#: erpnext/public/js/bank_reconciliation_tool/dialog_manager.js:262
msgid "<div class=\"text-muted text-center\">{0}</div>"
@@ -1577,7 +1577,7 @@ msgstr "“资产负债表”帐户{1}需要会计维度<b>{0</b> }。"
#: erpnext/accounts/doctype/gl_entry/gl_entry.py:189
#: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:140
msgid "Accounting Dimension <b>{0}</b> is required for 'Profit and Loss' account {1}."
msgstr "“损益”帐户{1}需要会计维度<b>{0</b> }。"
msgstr "“损益表”科目 {1} 需要会计维度 <b>{0}</b>。"
#. Name of a DocType
#: erpnext/accounts/doctype/accounting_dimension_detail/accounting_dimension_detail.json

View File

@@ -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)

View File

@@ -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):
"""
@@ -21,6 +22,7 @@ class UnitTestRouting(UnitTestCase):
class TestRouting(IntegrationTestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.item_code = "Test Routing Item - A"
@classmethod
@@ -33,8 +35,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)

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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",

View File

@@ -36,8 +36,6 @@ def before_tests():
}
)
frappe.db.sql("delete from `tabItem Price`")
_enable_all_roles_for_admin()
set_defaults_for_tests()

View File

@@ -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()

View File

@@ -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)

View File

@@ -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(
{

View File

@@ -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()

View File

@@ -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.