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 import frappe
from frappe.tests import IntegrationTestCase from frappe.tests import IntegrationTestCase
from frappe.tests.utils import make_test_records
from frappe.utils import nowdate from frappe.utils import nowdate
from erpnext.accounts.doctype.account.account import ( 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. 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) frappe.local.flags.pop("ignore_root_company_validation", None)
def create_bank_account(): 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, "Payment Entry" as payment_document, name as payment_entry,
reference_no as cheque_number, reference_date as cheque_date, 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, 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, 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 if(paid_to=%(account)s, paid_to_account_currency, paid_from_account_currency) as account_currency
from `tabPayment Entry` 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): class TestBankClearance(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
super().setUpClass()
create_warehouse( create_warehouse(
warehouse_name="_Test Warehouse", warehouse_name="_Test Warehouse",
properties={"parent_warehouse": "All Warehouses - _TC"}, properties={"parent_warehouse": "All Warehouses - _TC"},
@@ -26,9 +27,6 @@ class TestBankClearance(IntegrationTestCase):
create_item("_Test Item") create_item("_Test Item")
create_cost_center(cost_center_name="_Test Cost Center", company="_Test Company") 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() make_bank_account()
add_transactions() add_transactions()
@@ -123,23 +121,6 @@ class TestBankClearance(IntegrationTestCase):
self.assertEqual(si_clearance_date, date) 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(): def make_bank_account():
if not frappe.db.get_value("Account", "_Test Bank Clearance - _TC"): if not frappe.db.get_value("Account", "_Test Bank Clearance - _TC"):
frappe.get_doc( frappe.get_doc(

View File

@@ -32,14 +32,6 @@ class UnitTestBankTransaction(UnitTestCase):
class TestBankTransaction(IntegrationTestCase): class TestBankTransaction(IntegrationTestCase):
def setUp(self): 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() make_pos_profile()
# generate and use a uniq hash identifier for 'Bank Account' and it's linked GL 'Account' to avoid validation error # 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) 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( def create_bank_account(
bank_name="Citi Bank", gl_account="_Test Bank - _TC", bank_account_name="Checking 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 start = 2012
this_year = now_datetime().year
end = now_datetime().year + 25 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( test_records.append(
{ {
"doctype": "Fiscal Year", "doctype": "Fiscal Year",

View File

@@ -13,6 +13,7 @@ from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sal
class TestLoyaltyPointEntry(IntegrationTestCase): class TestLoyaltyPointEntry(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
super().setUpClass()
# Create test records # Create test records
create_records() create_records()
cls.loyalty_program_name = "Test Single Loyalty" cls.loyalty_program_name = "Test Single Loyalty"

View File

@@ -15,7 +15,8 @@ from erpnext.accounts.party import get_dashboard_info
class TestLoyaltyProgram(IntegrationTestCase): class TestLoyaltyProgram(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(self): def setUpClass(cls):
super().setUpClass()
# create relevant item, customer, loyalty program, etc # create relevant item, customer, loyalty program, etc
create_records() create_records()

View File

@@ -26,7 +26,7 @@ class UnitTestOpeningInvoiceCreationTool(UnitTestCase):
class TestOpeningInvoiceCreationTool(IntegrationTestCase): class TestOpeningInvoiceCreationTool(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(self): def setUpClass(cls):
if not frappe.db.exists("Company", "_Test Opening Invoice Company"): if not frappe.db.exists("Company", "_Test Opening Invoice Company"):
make_company() make_company()
create_dimension() create_dimension()

View File

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

View File

@@ -44,13 +44,13 @@ IGNORE_TEST_RECORD_DEPENDENCIES = ["Serial No"]
class TestPurchaseInvoice(IntegrationTestCase, StockTestMixin): class TestPurchaseInvoice(IntegrationTestCase, StockTestMixin):
@classmethod @classmethod
def setUpClass(self): def setUpClass(cls):
super().setUpClass() super().setUpClass()
unlink_payment_on_cancel_of_invoice() unlink_payment_on_cancel_of_invoice()
frappe.db.set_single_value("Buying Settings", "allow_multiple_items", 1) frappe.db.set_single_value("Buying Settings", "allow_multiple_items", 1)
@classmethod @classmethod
def tearDownClass(self): def tearDownClass(cls):
unlink_payment_on_cancel_of_invoice(0) unlink_payment_on_cancel_of_invoice(0)
def tearDown(self): def tearDown(self):

View File

@@ -1354,14 +1354,15 @@ class SalesInvoice(SellingController):
else: else:
if asset.calculate_depreciation: if asset.calculate_depreciation:
notes = _( if not asset.status == "Fully Depreciated":
"This schedule was created when Asset {0} was sold through Sales Invoice {1}." notes = _(
).format( "This schedule was created when Asset {0} was sold through Sales Invoice {1}."
get_link_to_form(asset.doctype, asset.name), ).format(
get_link_to_form(self.doctype, self.get("name")), 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() depreciate_asset(asset, self.posting_date, notes)
asset.reload()
fixed_asset_gl_entries = get_gl_entries_on_asset_disposal( fixed_asset_gl_entries = get_gl_entries_on_asset_disposal(
asset, asset,

View File

@@ -62,9 +62,6 @@ class TaxRule(Document):
use_for_shopping_cart: DF.Check use_for_shopping_cart: DF.Check
# end: auto-generated types # end: auto-generated types
def __setup__(self):
self.flags.ignore_these_exceptions_in_test = [ConflictingTaxRule]
def validate(self): def validate(self):
self.validate_tax_template() self.validate_tax_template()
self.validate_from_to_dates("from_date", "to_date") 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): class TestTaxRule(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
super().setUpClass()
frappe.db.set_single_value("Shopping Cart Settings", "enabled", 0) frappe.db.set_single_value("Shopping Cart Settings", "enabled", 0)
@classmethod @classmethod

View File

@@ -27,7 +27,8 @@ class UnitTestTaxWithholdingCategory(UnitTestCase):
class TestTaxWithholdingCategory(IntegrationTestCase): class TestTaxWithholdingCategory(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(self): def setUpClass(cls):
super().setUpClass()
# create relevant supplier, etc # create relevant supplier, etc
create_records() create_records()
create_tax_withholding_category_records() create_tax_withholding_category_records()

View File

@@ -11,15 +11,6 @@ from erpnext.tests.utils import if_lending_app_installed
class TestBankReconciliationStatement(IntegrationTestCase): 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 @if_lending_app_installed
def test_loan_entries_in_bank_reco_statement(self): def test_loan_entries_in_bank_reco_statement(self):
from lending.loan_management.doctype.loan.test_loan import create_loan_accounts from lending.loan_management.doctype.loan.test_loan import create_loan_accounts
@@ -42,12 +33,3 @@ class TestBankReconciliationStatement(IntegrationTestCase):
result = execute(filters) result = execute(filters)
self.assertEqual(result[1][0].payment_entry, repayment_entry.name) 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): class TestDeferredRevenueAndExpense(IntegrationTestCase, AccountsTestMixin):
@classmethod maxDiff = None
def setUpClass(self):
self.maxDiff = None
def clear_old_entries(self): def clear_old_entries(self):
sinv = qb.DocType("Sales Invoice") sinv = qb.DocType("Sales Invoice")

View File

@@ -17,7 +17,8 @@ EXTRA_TEST_RECORD_DEPENDENCIES = ["Sales Invoice"]
class TestSalesPaymentSummary(IntegrationTestCase): class TestSalesPaymentSummary(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(self): def setUpClass(cls):
super().setUpClass()
create_records() create_records()
pes = frappe.get_all("Payment Entry") pes = frappe.get_all("Payment Entry")
jes = frappe.get_all("Journal 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): class AssetSetup(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
super().setUpClass()
set_depreciation_settings_in_company() set_depreciation_settings_in_company()
create_asset_data() create_asset_data()
enable_cwip_accounting("Computers") enable_cwip_accounting("Computers")

View File

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

View File

@@ -3,7 +3,6 @@
import frappe import frappe
from frappe.tests.utils import make_test_records
from erpnext.accounts.party import get_due_date from erpnext.accounts.party import get_due_date
from erpnext.controllers.website_list_for_contact import get_customers_suppliers 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") self.assertEqual(due_date, "2017-01-22")
def test_supplier_disabled(self): def test_supplier_disabled(self):
make_test_records("Item")
frappe.db.set_value("Supplier", "_Test Supplier", "disabled", 1) frappe.db.set_value("Supplier", "_Test Supplier", "disabled", 1)
from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order 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.update_billing_percentage()
parent.set_status() 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. # Cancel and Recreate Stock Reservation Entries.
if parent_doctype == "Sales Order": if parent_doctype == "Sales Order":
from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import ( from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import (

View File

@@ -5,15 +5,15 @@ import frappe
import frappe.utils import frappe.utils
from frappe.model import mapper from frappe.model import mapper
from frappe.tests import IntegrationTestCase from frappe.tests import IntegrationTestCase
from frappe.tests.utils import make_test_records
from frappe.utils import add_months, nowdate from frappe.utils import add_months, nowdate
EXTRA_TEST_RECORD_DEPENDENCIES = ["Item"]
class TestMapper(IntegrationTestCase): class TestMapper(IntegrationTestCase):
def test_map_docs(self): def test_map_docs(self):
"""Test mapping of multiple source docs on a single target doc""" """Test mapping of multiple source docs on a single target doc"""
make_test_records("Item")
items = ["_Test Item", "_Test Item 2", "_Test FG Item"] items = ["_Test Item", "_Test Item 2", "_Test FG Item"]
# Make source docs (quotations) and a target doc (sales order) # Make source docs (quotations) and a target doc (sales order)

View File

@@ -27,7 +27,9 @@ def create_test_appointment():
class TestAppointment(IntegrationTestCase): class TestAppointment(IntegrationTestCase):
def setUpClass(): @classmethod
def setUpClass(cls):
super().setUpClass()
frappe.db.delete("Lead", {"email_id": LEAD_EMAIL}) frappe.db.delete("Lead", {"email_id": LEAD_EMAIL})
def setUp(self): def setUp(self):

View File

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

View File

@@ -8,7 +8,6 @@ from erpnext.crm.report.sales_pipeline_analytics.sales_pipeline_analytics import
class TestSalesPipelineAnalytics(IntegrationTestCase): class TestSalesPipelineAnalytics(IntegrationTestCase):
def setUp(self): def setUp(self):
frappe.db.delete("Opportunity")
create_company() create_company()
create_customer() create_customer()
create_opportunity() create_opportunity()

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n" "Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: info@erpnext.com\n" "Report-Msgid-Bugs-To: info@erpnext.com\n"
"POT-Creation-Date: 2024-10-13 09:35+0000\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" "Last-Translator: info@erpnext.com\n"
"Language-Team: Persian\n" "Language-Team: Persian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -79,11 +79,11 @@ msgstr " خلاصه"
#: erpnext/stock/doctype/item/item.py:233 #: erpnext/stock/doctype/item/item.py:233
msgid "\"Customer Provided Item\" cannot be Purchase Item also" msgid "\"Customer Provided Item\" cannot be Purchase Item also"
msgstr "\"آیتم تأمین شده توسط مشتری\" نمی تواند آیتم خرید هم باشد" msgstr "\"آیتم تامین شده توسط مشتری\" نمی تواند آیتم خرید هم باشد"
#: erpnext/stock/doctype/item/item.py:235 #: erpnext/stock/doctype/item/item.py:235
msgid "\"Customer Provided Item\" cannot have Valuation Rate" msgid "\"Customer Provided Item\" cannot have Valuation Rate"
msgstr "\"آیتم تأمین شده توسط مشتری\" نمی تواند دارای نرخ ارزیابی باشد" msgstr "\"آیتم تامین شده توسط مشتری\" نمی تواند دارای نرخ ارزیابی باشد"
#: erpnext/stock/doctype/item/item.py:311 #: erpnext/stock/doctype/item/item.py:311
msgid "\"Is Fixed Asset\" cannot be unchecked, as Asset record exists against the item" 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 #: 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." 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 #. Label of the bypass_credit_limit_check (Check) field in DocType 'Customer
#. Credit Limit' #. Credit Limit'
@@ -14274,7 +14274,7 @@ msgstr "مخاطب اصلی مشتری"
#: erpnext/stock/doctype/item/item.json #: erpnext/stock/doctype/item/item.json
#: erpnext/stock/doctype/material_request/material_request.json #: erpnext/stock/doctype/material_request/material_request.json
msgid "Customer Provided" msgid "Customer Provided"
msgstr "تأمین شده توسط مشتری" msgstr "تامین شده توسط مشتری"
#: erpnext/setup/doctype/company/company.py:377 #: erpnext/setup/doctype/company/company.py:377
msgid "Customer Service" msgid "Customer Service"
@@ -23107,11 +23107,11 @@ msgstr "اگر این آیتم دارای گونه باشد، نمی توان آ
#: erpnext/buying/doctype/buying_settings/buying_settings.js:27 #: 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." 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 #: 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." 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 #: 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." 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 #. Name of a DocType
#: erpnext/buying/doctype/purchase_receipt_item_supplied/purchase_receipt_item_supplied.json #: erpnext/buying/doctype/purchase_receipt_item_supplied/purchase_receipt_item_supplied.json
msgid "Purchase Receipt Item Supplied" msgid "Purchase Receipt Item Supplied"
msgstr "اقلام رسید خرید تأمین شد" msgstr "اقلام رسید خرید تامین شد"
#. Label of the purchase_receipt_items (Section Break) field in DocType 'Landed #. Label of the purchase_receipt_items (Section Break) field in DocType 'Landed
#. Cost Voucher' #. Cost Voucher'
@@ -59450,7 +59450,7 @@ msgstr "ارز {0} باید با واحد پول پیش‌فرض شرکت یکس
#: erpnext/buying/doctype/purchase_order/purchase_order.py:311 #: 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." 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 #: 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." 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" "Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: info@erpnext.com\n" "Report-Msgid-Bugs-To: info@erpnext.com\n"
"POT-Creation-Date: 2024-10-13 09:35+0000\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" "Last-Translator: info@erpnext.com\n"
"Language-Team: Chinese Simplified\n" "Language-Team: Chinese Simplified\n"
"MIME-Version: 1.0\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:133
#: erpnext/public/js/bom_configurator/bom_configurator.bundle.js:163 #: erpnext/public/js/bom_configurator/bom_configurator.bundle.js:163
msgid " Sub Assembly" msgid " Sub Assembly"
msgstr " 次级装配" msgstr " 半成品"
#: erpnext/projects/doctype/project_update/project_update.py:104 #: erpnext/projects/doctype/project_update/project_update.py:104
msgid " Summary" msgid " Summary"
@@ -83,7 +83,7 @@ msgstr "“客户提供的物料”也不能是采购物料"
#: erpnext/stock/doctype/item/item.py:235 #: erpnext/stock/doctype/item/item.py:235
msgid "\"Customer Provided Item\" cannot have Valuation Rate" msgid "\"Customer Provided Item\" cannot have Valuation Rate"
msgstr "“客户提供的物料”不能具有估值价格" msgstr "“客户提供的物料”不能具有估价率"
#: erpnext/stock/doctype/item/item.py:311 #: erpnext/stock/doctype/item/item.py:311
msgid "\"Is Fixed Asset\" cannot be unchecked, as Asset record exists against the item" 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_invariant_check/stock_ledger_invariant_check.py:223
#: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:124 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:124
msgid "(C) Total Qty in Queue" 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 #: 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" 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/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 #: 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.html:95
#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:347 #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:347
msgid "0 - 30 Days" 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 #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:114
msgid "0-30" msgid "0-30"
msgstr "" msgstr "0-30"
#: erpnext/manufacturing/report/work_order_summary/work_order_summary.py:110 #: erpnext/manufacturing/report/work_order_summary/work_order_summary.py:110
msgid "0-30 Days" msgid "0-30 Days"
msgstr "" msgstr "0-30 天"
#. Description of the 'Conversion Factor' (Float) field in DocType 'Loyalty #. Description of the 'Conversion Factor' (Float) field in DocType 'Loyalty
#. Program' #. Program'
@@ -403,7 +403,7 @@ msgstr ""
#. Option for the 'Frequency' (Select) field in DocType 'Video Settings' #. Option for the 'Frequency' (Select) field in DocType 'Video Settings'
#: erpnext/utilities/doctype/video_settings/video_settings.json #: erpnext/utilities/doctype/video_settings/video_settings.json
msgid "1 hr" 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 'Lead'
#. Option for the 'No of Employees' (Select) field in DocType 'Opportunity' #. 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/opportunity/opportunity.json
#: erpnext/crm/doctype/prospect/prospect.json #: erpnext/crm/doctype/prospect/prospect.json
msgid "1-10" 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 'Lead'
#. Option for the 'No of Employees' (Select) field in DocType 'Opportunity' #. 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/opportunity/opportunity.json
#: erpnext/crm/doctype/prospect/prospect.json #: erpnext/crm/doctype/prospect/prospect.json
msgid "1000+" 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 'Lead'
#. Option for the 'No of Employees' (Select) field in DocType 'Opportunity' #. 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/opportunity/opportunity.json
#: erpnext/crm/doctype/prospect/prospect.json #: erpnext/crm/doctype/prospect/prospect.json
msgid "201-500" msgid "201-500"
msgstr "" msgstr "201-500"
#. Option for the 'Periodicity' (Select) field in DocType 'Asset Maintenance #. Option for the 'Periodicity' (Select) field in DocType 'Asset Maintenance
#. Task' #. 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.html:96
#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:348 #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:348
msgid "30 - 60 Days" msgid "30 - 60 Days"
msgstr "" msgstr "30 - 60 天"
#. Option for the 'Frequency' (Select) field in DocType 'Video Settings' #. Option for the 'Frequency' (Select) field in DocType 'Video Settings'
#: erpnext/utilities/doctype/video_settings/video_settings.json #: erpnext/utilities/doctype/video_settings/video_settings.json
msgid "30 mins" msgid "30 mins"
msgstr "" msgstr "30 分钟"
#: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:115 #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:115
msgid "30-60" msgid "30-60"
msgstr "" msgstr "30-60"
#: erpnext/manufacturing/report/work_order_summary/work_order_summary.py:110 #: erpnext/manufacturing/report/work_order_summary/work_order_summary.py:110
msgid "30-60 Days" 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 'Lead'
#. Option for the 'No of Employees' (Select) field in DocType 'Opportunity' #. 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/opportunity/opportunity.json
#: erpnext/crm/doctype/prospect/prospect.json #: erpnext/crm/doctype/prospect/prospect.json
msgid "501-1000" 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 'Lead'
#. Option for the 'No of Employees' (Select) field in DocType 'Opportunity' #. 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/opportunity/opportunity.json
#: erpnext/crm/doctype/prospect/prospect.json #: erpnext/crm/doctype/prospect/prospect.json
msgid "51-200" msgid "51-200"
msgstr "" msgstr "51-200"
#. Option for the 'Frequency' (Select) field in DocType 'Video Settings' #. Option for the 'Frequency' (Select) field in DocType 'Video Settings'
#: erpnext/utilities/doctype/video_settings/video_settings.json #: erpnext/utilities/doctype/video_settings/video_settings.json
msgid "6 hrs" 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.html:97
#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:349 #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:349
msgid "60 - 90 Days" 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 #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:116
msgid "60-90" msgid "60-90"
msgstr "" msgstr "60-90"
#: erpnext/manufacturing/report/work_order_summary/work_order_summary.py:110 #: erpnext/manufacturing/report/work_order_summary/work_order_summary.py:110
msgid "60-90 Days" 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.html:98
#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:350 #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:350
msgid "90 - 120 Days" 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/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 #: erpnext/manufacturing/report/work_order_summary/work_order_summary.py:110
msgid "90 Above" msgid "90 Above"
msgstr "" msgstr "90 以上"
#: erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.py:61 #: 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}" 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/stock/doctype/purchase_receipt/purchase_receipt.json
#: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json
msgid "<div class=\"columnHeading\">Other Details</div>" msgid "<div class=\"columnHeading\">Other Details</div>"
msgstr "" msgstr "<div class=\"columnHeading\">其他详细信息</div>"
#. Content of the 'no_bank_transactions' (HTML) field in DocType 'Bank #. Content of the 'no_bank_transactions' (HTML) field in DocType 'Bank
#. Reconciliation Tool' #. Reconciliation Tool'
#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.json #: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.json
msgid "<div class=\"text-muted text-center\">No Matching Bank Transactions Found</div>" 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 #: erpnext/public/js/bank_reconciliation_tool/dialog_manager.js:262
msgid "<div class=\"text-muted text-center\">{0}</div>" 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/gl_entry/gl_entry.py:189
#: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:140 #: 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}." 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 #. Name of a DocType
#: erpnext/accounts/doctype/accounting_dimension_detail/accounting_dimension_detail.json #: erpnext/accounts/doctype/accounting_dimension_detail/accounting_dimension_detail.json

View File

@@ -6,7 +6,6 @@ from typing import Literal
import frappe import frappe
from frappe.tests import IntegrationTestCase, UnitTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.tests.utils import make_test_records
from frappe.utils import random_string from frappe.utils import random_string
from frappe.utils.data import add_to_date, now, today 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.manufacturing.doctype.workstation.test_workstation import make_workstation
from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
EXTRA_TEST_RECORD_DEPENDENCIES = ["UOM"]
class UnitTestJobCard(UnitTestCase): class UnitTestJobCard(UnitTestCase):
""" """
@@ -501,8 +502,6 @@ class TestJobCard(IntegrationTestCase):
{"operation": "Test Operation B1", "workstation": "Test Workstation A", "time_in_mins": 20}, {"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") warehouse = create_warehouse("Test Warehouse 123 for Job Card")
setup_operations(operations) setup_operations(operations)

View File

@@ -2,12 +2,13 @@
# See license.txt # See license.txt
import frappe import frappe
from frappe.tests import IntegrationTestCase, UnitTestCase 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.job_card.job_card import OperationSequenceError
from erpnext.manufacturing.doctype.work_order.test_work_order import make_wo_order_test_record 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 from erpnext.stock.doctype.item.test_item import make_item
EXTRA_TEST_RECORD_DEPENDENCIES = ["UOM"]
class UnitTestRouting(UnitTestCase): class UnitTestRouting(UnitTestCase):
""" """
@@ -21,6 +22,7 @@ class UnitTestRouting(UnitTestCase):
class TestRouting(IntegrationTestCase): class TestRouting(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
super().setUpClass()
cls.item_code = "Test Routing Item - A" cls.item_code = "Test Routing Item - A"
@classmethod @classmethod
@@ -33,8 +35,6 @@ class TestRouting(IntegrationTestCase):
{"operation": "Test Operation B", "workstation": "Test Workstation A", "time_in_mins": 20}, {"operation": "Test Operation B", "workstation": "Test Workstation A", "time_in_mins": 20},
] ]
make_test_records("UOM")
setup_operations(operations) setup_operations(operations)
routing_doc = create_routing(routing_name="Testing Route", 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) bom_doc = setup_bom(item_code=self.item_code, routing=routing_doc.name)

View File

@@ -2,7 +2,6 @@
# See license.txt # See license.txt
import frappe import frappe
from frappe.tests import IntegrationTestCase, UnitTestCase 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.operation.test_operation import make_operation
from erpnext.manufacturing.doctype.routing.test_routing import create_routing, setup_bom from erpnext.manufacturing.doctype.routing.test_routing import create_routing, setup_bom

View File

@@ -6,7 +6,6 @@ import json
import frappe import frappe
from frappe.tests import IntegrationTestCase, UnitTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.tests.utils import make_test_records
from frappe.utils import flt from frappe.utils import flt
from erpnext.accounts.party import get_due_date from erpnext.accounts.party import get_due_date
@@ -32,10 +31,6 @@ class UnitTestCustomer(UnitTestCase):
class TestCustomer(IntegrationTestCase): class TestCustomer(IntegrationTestCase):
def setUp(self):
if not frappe.get_value("Item", "_Test Item"):
make_test_records("Item")
def tearDown(self): def tearDown(self):
set_credit_limit("_Test Customer", "_Test Company", 0) set_credit_limit("_Test Customer", "_Test Company", 0)
@@ -205,8 +200,6 @@ class TestCustomer(IntegrationTestCase):
frappe.db.rollback() frappe.db.rollback()
def test_freezed_customer(self): def test_freezed_customer(self):
make_test_records("Item")
frappe.db.set_value("Customer", "_Test Customer", "is_frozen", 1) frappe.db.set_value("Customer", "_Test Customer", "is_frozen", 1)
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order 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) frappe.delete_doc("Customer", customer.name)
def test_disabled_customer(self): def test_disabled_customer(self):
make_test_records("Item")
frappe.db.set_value("Customer", "_Test Customer", "disabled", 1) frappe.db.set_value("Customer", "_Test Customer", "disabled", 1)
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order 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): class TestPaymentTermsStatusForSalesOrder(IntegrationTestCase):
def setUp(self):
self.cleanup_old_entries()
def tearDown(self): def tearDown(self):
frappe.db.rollback() 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): def create_payment_terms_template(self):
# create template for 50-50 payments # create template for 50-50 payments
template = None template = None

View File

@@ -11,14 +11,17 @@ doctype_list = [
def get_message(doctype): 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): def get_first_success_message(doctype):
# Reuse the get_message function for consistency
return get_message(doctype) return get_message(doctype)
def get_default_success_action(): def get_default_success_action():
# Loop through each doctype in the list and return formatted actions
return [ return [
{ {
"doctype": "Success Action", "doctype": "Success Action",

View File

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

View File

@@ -37,9 +37,6 @@ class ItemAttribute(Document):
to_range: DF.Float to_range: DF.Float
# end: auto-generated types # end: auto-generated types
def __setup__(self):
self.flags.ignore_these_exceptions_in_test = [InvalidItemAttributeValueError]
def validate(self): def validate(self):
frappe.flags.attribute_values = None frappe.flags.attribute_values = None
self.validate_numeric() self.validate_numeric()

View File

@@ -3,7 +3,6 @@
import frappe import frappe
from frappe.tests import IntegrationTestCase, UnitTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.tests.utils import make_test_records
import erpnext import erpnext
from erpnext.accounts.doctype.account.test_account import create_account from erpnext.accounts.doctype.account.test_account import create_account
@@ -22,11 +21,6 @@ class UnitTestWarehouse(UnitTestCase):
class TestWarehouse(IntegrationTestCase): 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): def test_parent_warehouse(self):
parent_warehouse = frappe.get_doc("Warehouse", "_Test Warehouse Group - _TC") parent_warehouse = frappe.get_doc("Warehouse", "_Test Warehouse Group - _TC")
self.assertEqual(parent_warehouse.is_group, 1) self.assertEqual(parent_warehouse.is_group, 1)

View File

@@ -1,6 +1,5 @@
import frappe import frappe
from frappe.tests import IntegrationTestCase from frappe.tests import IntegrationTestCase
from frappe.tests.utils import make_test_records
from erpnext.stock.get_item_details import get_item_details 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): class TestGetItemDetail(IntegrationTestCase):
def setUp(self):
make_test_records("Price List")
super().setUp()
def test_get_item_detail_purchase_order(self): def test_get_item_detail_purchase_order(self):
args = frappe._dict( args = frappe._dict(
{ {

View File

@@ -16,17 +16,18 @@ months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct",
class TestIssueAnalytics(IntegrationTestCase): class TestIssueAnalytics(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(self): def setUpClass(cls):
super().setUpClass()
frappe.db.sql("delete from `tabIssue` where company='_Test Company'") frappe.db.sql("delete from `tabIssue` where company='_Test Company'")
frappe.db.set_single_value("Support Settings", "track_service_level_agreement", 1) frappe.db.set_single_value("Support Settings", "track_service_level_agreement", 1)
current_month_date = getdate() current_month_date = getdate()
last_month_date = add_months(current_month_date, -1) last_month_date = add_months(current_month_date, -1)
self.current_month = str(months[current_month_date.month - 1]).lower() cls.current_month = str(months[current_month_date.month - 1]).lower()
self.last_month = str(months[last_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: if current_month_date.year != last_month_date.year:
self.current_month += "_" + str(current_month_date.year) cls.current_month += "_" + str(current_month_date.year)
self.last_month += "_" + str(last_month_date.year) cls.last_month += "_" + str(last_month_date.year)
def test_issue_analytics(self): def test_issue_analytics(self):
create_service_level_agreements_for_issues() 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): 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): def test_item_search(self):
""" """
Test Stock and Service Item Search. Test Stock and Service Item Search.