mirror of
https://github.com/frappe/erpnext.git
synced 2026-02-17 08:35:00 +00:00
chore: Merge branch develop to head branch
This commit is contained in:
@@ -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():
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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"
|
||||
):
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -57,6 +57,7 @@ erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnex
|
||||
}
|
||||
|
||||
onload_post_render(frm) {
|
||||
super.onload_post_render();
|
||||
this.pos_profile(frm);
|
||||
}
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -23,6 +23,7 @@ class UnitTestAssetShiftAllocation(UnitTestCase):
|
||||
class TestAssetShiftAllocation(IntegrationTestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
create_asset_shift_factors()
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 (
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -36,8 +36,6 @@ def before_tests():
|
||||
}
|
||||
)
|
||||
|
||||
frappe.db.sql("delete from `tabItem Price`")
|
||||
|
||||
_enable_all_roles_for_admin()
|
||||
|
||||
set_defaults_for_tests()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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(
|
||||
{
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user