Merge branch 'develop' into add-email-field-to-asset-maintenance-log

This commit is contained in:
Khushi Rawat
2024-10-11 01:23:06 +05:30
committed by GitHub
418 changed files with 199060 additions and 191299 deletions

View File

@@ -120,7 +120,7 @@ jobs:
FRAPPE_BRANCH: ${{ github.event.inputs.branch }} FRAPPE_BRANCH: ${{ github.event.inputs.branch }}
- name: Run Tests - name: Run Tests
run: 'cd ~/frappe-bench/ && bench --site test_site run-parallel-tests --app erpnext --total-builds 4 --build-number ${{ matrix.container }}' run: 'cd ~/frappe-bench/ && bench --site test_site run-parallel-tests --app erpnext --total-builds ${{ strategy.job-total }} --build-number ${{ matrix.container }}'
env: env:
TYPE: server TYPE: server
CAPTURE_COVERAGE: ${{ github.event_name != 'pull_request' }} CAPTURE_COVERAGE: ${{ github.event_name != 'pull_request' }}

View File

@@ -1,11 +1,10 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
import unittest import unittest
import frappe import frappe
from frappe.test_runner import make_test_records 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 (
@@ -15,10 +14,10 @@ from erpnext.accounts.doctype.account.account import (
) )
from erpnext.stock import get_company_default_inventory_account, get_warehouse_account from erpnext.stock import get_company_default_inventory_account, get_warehouse_account
test_dependencies = ["Company"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Company"]
class TestAccount(unittest.TestCase): class TestAccount(IntegrationTestCase):
def test_rename_account(self): def test_rename_account(self):
if not frappe.db.exists("Account", "1210 - Debtors - _TC"): if not frappe.db.exists("Account", "1210 - Debtors - _TC"):
acc = frappe.new_doc("Account") acc = frappe.new_doc("Account")

View File

@@ -2,8 +2,17 @@
# See license.txt # See license.txt
# import frappe # import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
class TestAccountClosingBalance(FrappeTestCase): class UnitTestAccountClosingBalance(UnitTestCase):
"""
Unit tests for AccountClosingBalance.
Use this class for testing individual functions and methods.
"""
pass
class TestAccountClosingBalance(IntegrationTestCase):
pass pass

View File

@@ -1,17 +1,17 @@
# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
test_dependencies = ["Cost Center", "Location", "Warehouse", "Department"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Cost Center", "Location", "Warehouse", "Department"]
class TestAccountingDimension(unittest.TestCase): class TestAccountingDimension(IntegrationTestCase):
def setUp(self): def setUp(self):
create_dimension() create_dimension()

View File

@@ -12,7 +12,7 @@ from erpnext.accounts.doctype.accounting_dimension.test_accounting_dimension imp
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.exceptions import InvalidAccountDimensionError, MandatoryAccountDimensionError from erpnext.exceptions import InvalidAccountDimensionError, MandatoryAccountDimensionError
test_dependencies = ["Location", "Cost Center", "Department"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Location", "Cost Center", "Department"]
class TestAccountingDimensionFilter(unittest.TestCase): class TestAccountingDimensionFilter(unittest.TestCase):

View File

@@ -1,9 +1,9 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import add_months, nowdate from frappe.utils import add_months, nowdate
from erpnext.accounts.doctype.accounting_period.accounting_period import ( from erpnext.accounts.doctype.accounting_period.accounting_period import (
@@ -12,10 +12,10 @@ from erpnext.accounts.doctype.accounting_period.accounting_period import (
) )
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
test_dependencies = ["Item"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Item"]
class TestAccountingPeriod(unittest.TestCase): class TestAccountingPeriod(IntegrationTestCase):
def test_overlap(self): def test_overlap(self):
ap1 = create_accounting_period( ap1 = create_accounting_period(
start_date="2018-04-01", end_date="2018-06-30", company="Wind Power LLC" start_date="2018-04-01", end_date="2018-06-30", company="Wind Power LLC"

View File

@@ -1,9 +1,10 @@
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
class TestAccountsSettings(unittest.TestCase): class TestAccountsSettings(IntegrationTestCase):
def tearDown(self): def tearDown(self):
# Just in case `save` method succeeds, we need to take things back to default so that other tests # Just in case `save` method succeeds, we need to take things back to default so that other tests
# don't break # don't break

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestBank(unittest.TestCase):
class TestBank(IntegrationTestCase):
pass pass

View File

@@ -208,8 +208,54 @@
"label": "Disabled" "label": "Disabled"
} }
], ],
"links": [], "links": [
"modified": "2024-03-27 13:06:37.049542", {
"group": "Transactions",
"link_doctype": "Payment Request",
"link_fieldname": "bank_account"
},
{
"group": "Transactions",
"link_doctype": "Payment Order",
"link_fieldname": "bank_account"
},
{
"group": "Transactions",
"link_doctype": "Bank Guarantee",
"link_fieldname": "bank_account"
},
{
"group": "Transactions",
"link_doctype": "Payroll Entry",
"link_fieldname": "bank_account"
},
{
"group": "Transactions",
"link_doctype": "Bank Transaction",
"link_fieldname": "bank_account"
},
{
"group": "Accounting",
"link_doctype": "Payment Entry",
"link_fieldname": "bank_account"
},
{
"group": "Accounting",
"link_doctype": "Journal Entry",
"link_fieldname": "bank_account"
},
{
"group": "Party",
"link_doctype": "Customer",
"link_fieldname": "default_bank_account"
},
{
"group": "Party",
"link_doctype": "Supplier",
"link_fieldname": "default_bank_account"
}
],
"modified": "2024-09-24 06:57:41.292970",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Accounts", "module": "Accounts",
"name": "Bank Account", "name": "Bank Account",

View File

@@ -1,20 +0,0 @@
from frappe import _
def get_data():
return {
"fieldname": "bank_account",
"non_standard_fieldnames": {
"Customer": "default_bank_account",
"Supplier": "default_bank_account",
},
"transactions": [
{
"label": _("Payments"),
"items": ["Payment Entry", "Payment Request", "Payment Order", "Payroll Entry"],
},
{"label": _("Party"), "items": ["Customer", "Supplier"]},
{"items": ["Bank Guarantee"]},
{"items": ["Journal Entry"]},
],
}

View File

@@ -1,15 +1,15 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe import ValidationError from frappe import ValidationError
from frappe.tests import IntegrationTestCase
# test_records = frappe.get_test_records('Bank Account') # test_records = frappe.get_test_records('Bank Account')
class TestBankAccount(unittest.TestCase): class TestBankAccount(IntegrationTestCase):
def test_validate_iban(self): def test_validate_iban(self):
valid_ibans = [ valid_ibans = [
"GB82 WEST 1234 5698 7654 32", "GB82 WEST 1234 5698 7654 32",

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestBankAccountSubtype(unittest.TestCase):
class TestBankAccountSubtype(IntegrationTestCase):
pass pass

View File

@@ -1,9 +1,10 @@
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
# import frappe # import frappe
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestBankAccountType(unittest.TestCase):
class TestBankAccountType(IntegrationTestCase):
pass pass

View File

@@ -1,9 +1,9 @@
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import add_months, getdate from frappe.utils import add_months, getdate
from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center
@@ -15,7 +15,7 @@ from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
from erpnext.tests.utils import if_lending_app_installed, if_lending_app_not_installed from erpnext.tests.utils import if_lending_app_installed, if_lending_app_not_installed
class TestBankClearance(unittest.TestCase): class TestBankClearance(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
create_warehouse( create_warehouse(

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestBankGuarantee(unittest.TestCase):
class TestBankGuarantee(IntegrationTestCase):
pass pass

View File

@@ -4,7 +4,7 @@
import frappe import frappe
from frappe import qb from frappe import qb
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase
from frappe.utils import add_days, today from frappe.utils import add_days, today
from erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool import ( from erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool import (
@@ -15,7 +15,7 @@ from erpnext.accounts.doctype.payment_entry.test_payment_entry import create_pay
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
class TestBankReconciliationTool(AccountsTestMixin, FrappeTestCase): class TestBankReconciliationTool(AccountsTestMixin, IntegrationTestCase):
def setUp(self): def setUp(self):
self.create_company() self.create_company()
self.create_customer() self.create_customer()

View File

@@ -1,9 +1,10 @@
# Copyright (c) 2020, Frappe Technologies and Contributors # Copyright (c) 2020, Frappe Technologies and Contributors
# See license.txt # See license.txt
# import frappe # import frappe
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestBankStatementImport(unittest.TestCase):
class TestBankStatementImport(IntegrationTestCase):
pass pass

View File

@@ -2,13 +2,22 @@
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
import frappe import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.utils import nowdate from frappe.utils import nowdate
from erpnext.accounts.doctype.bank_transaction.test_bank_transaction import create_bank_account from erpnext.accounts.doctype.bank_transaction.test_bank_transaction import create_bank_account
class TestAutoMatchParty(FrappeTestCase): class UnitTestBankTransaction(UnitTestCase):
"""
Unit tests for BankTransaction.
Use this class for testing individual functions and methods.
"""
pass
class TestAutoMatchParty(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
create_bank_account() create_bank_account()

View File

@@ -6,7 +6,7 @@ import json
import frappe import frappe
from frappe import utils from frappe import utils
from frappe.model.docstatus import DocStatus from frappe.model.docstatus import DocStatus
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
from erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool import ( from erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool import (
get_linked_payments, get_linked_payments,
@@ -18,10 +18,19 @@ from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.tests.utils import if_lending_app_installed from erpnext.tests.utils import if_lending_app_installed
test_dependencies = ["Item", "Cost Center"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Item", "Cost Center"]
class TestBankTransaction(FrappeTestCase): class UnitTestBankTransaction(UnitTestCase):
"""
Unit tests for BankTransaction.
Use this class for testing individual functions and methods.
"""
pass
class TestBankTransaction(IntegrationTestCase):
def setUp(self): def setUp(self):
for dt in [ for dt in [
"Bank Transaction", "Bank Transaction",

View File

@@ -2,8 +2,17 @@
# See license.txt # See license.txt
# import frappe # import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
class TestBisectAccountingStatements(FrappeTestCase): class UnitTestBisectAccountingStatements(UnitTestCase):
"""
Unit tests for BisectAccountingStatements.
Use this class for testing individual functions and methods.
"""
pass
class TestBisectAccountingStatements(IntegrationTestCase):
pass pass

View File

@@ -2,8 +2,17 @@
# See license.txt # See license.txt
# import frappe # import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
class TestBisectNodes(FrappeTestCase): class UnitTestBisectNodes(UnitTestCase):
"""
Unit tests for BisectNodes.
Use this class for testing individual functions and methods.
"""
pass
class TestBisectNodes(IntegrationTestCase):
pass pass

View File

@@ -1,9 +1,9 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import now_datetime, nowdate from frappe.utils import now_datetime, nowdate
from erpnext.accounts.doctype.budget.budget import BudgetError, get_actual_expense from erpnext.accounts.doctype.budget.budget import BudgetError, get_actual_expense
@@ -11,10 +11,10 @@ from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journ
from erpnext.accounts.utils import get_fiscal_year from erpnext.accounts.utils import get_fiscal_year
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
test_dependencies = ["Monthly Distribution"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Monthly Distribution"]
class TestBudget(unittest.TestCase): class TestBudget(IntegrationTestCase):
def test_monthly_budget_crossed_ignore(self): def test_monthly_budget_crossed_ignore(self):
set_total_expense_zero(nowdate(), "cost_center") set_total_expense_zero(nowdate(), "cost_center")

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestCashierClosing(unittest.TestCase):
class TestCashierClosing(IntegrationTestCase):
pass pass

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestChartofAccountsImporter(unittest.TestCase):
class TestChartofAccountsImporter(IntegrationTestCase):
pass pass

View File

@@ -1,10 +1,11 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
# test_records = frappe.get_test_records('Cheque Print Template') # test_records = frappe.get_test_records('Cheque Print Template')
class TestChequePrintTemplate(unittest.TestCase): class TestChequePrintTemplate(IntegrationTestCase):
pass pass

View File

@@ -1,14 +1,14 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
test_records = frappe.get_test_records("Cost Center") test_records = frappe.get_test_records("Cost Center")
class TestCostCenter(unittest.TestCase): class TestCostCenter(IntegrationTestCase):
def test_cost_center_creation_against_child_node(self): def test_cost_center_creation_against_child_node(self):
if not frappe.db.get_value("Cost Center", {"name": "_Test Cost Center 2 - _TC"}): if not frappe.db.get_value("Cost Center", {"name": "_Test Cost Center 2 - _TC"}):
frappe.get_doc(test_records[1]).insert() frappe.get_doc(test_records[1]).insert()

View File

@@ -1,9 +1,9 @@
# Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import add_days, today from frappe.utils import add_days, today
from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center
@@ -17,7 +17,7 @@ from erpnext.accounts.doctype.cost_center_allocation.cost_center_allocation impo
from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry
class TestCostCenterAllocation(unittest.TestCase): class TestCostCenterAllocation(IntegrationTestCase):
def setUp(self): def setUp(self):
cost_centers = [ cost_centers = [
"Main Cost Center 1", "Main Cost Center 1",

View File

@@ -1,13 +1,13 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
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
test_dependencies = ["Item"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Item"]
def test_create_test_data(): def test_create_test_data():
@@ -110,7 +110,7 @@ def test_create_test_data():
coupon_code.insert() coupon_code.insert()
class TestCouponCode(unittest.TestCase): class TestCouponCode(IntegrationTestCase):
def setUp(self): def setUp(self):
test_create_test_data() test_create_test_data()

View File

@@ -109,7 +109,7 @@ def get_api_endpoint(service_provider: str | None = None, use_http: bool = False
if service_provider == "exchangerate.host": if service_provider == "exchangerate.host":
api = "api.exchangerate.host/convert" api = "api.exchangerate.host/convert"
elif service_provider == "frankfurter.app": elif service_provider == "frankfurter.app":
api = "frankfurter.app/{transaction_date}" api = "api.frankfurter.app/{transaction_date}"
protocol = "https://" protocol = "https://"
if use_http: if use_http:

View File

@@ -1,9 +1,10 @@
# Copyright (c) 2021, Wahni Green Technologies Pvt. Ltd. and contributors # Copyright (c) 2021, Wahni Green Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt # For license information, please see license.txt
# import frappe # import frappe
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestCurrencyExchangeSettings(unittest.TestCase):
class TestCurrencyExchangeSettings(IntegrationTestCase):
pass pass

View File

@@ -220,19 +220,31 @@ def get_linked_dunnings_as_per_state(sales_invoice, state):
@frappe.whitelist() @frappe.whitelist()
def get_dunning_letter_text(dunning_type, doc, language=None): def get_dunning_letter_text(dunning_type: str, doc: str | dict, language: str | None = None) -> dict:
DOCTYPE = "Dunning Letter Text"
FIELDS = ["body_text", "closing_text", "language"]
if isinstance(doc, str): if isinstance(doc, str):
doc = json.loads(doc) doc = json.loads(doc)
if not language:
language = doc.get("language")
if language: if language:
filters = {"parent": dunning_type, "language": language} letter_text = frappe.db.get_value(
else: DOCTYPE, {"parent": dunning_type, "language": language}, FIELDS, as_dict=1
filters = {"parent": dunning_type, "is_default_language": 1} )
letter_text = frappe.db.get_value(
"Dunning Letter Text", filters, ["body_text", "closing_text", "language"], as_dict=1 if not letter_text:
) letter_text = frappe.db.get_value(
if letter_text: DOCTYPE, {"parent": dunning_type, "is_default_language": 1}, FIELDS, as_dict=1
return { )
"body_text": frappe.render_template(letter_text.body_text, doc),
"closing_text": frappe.render_template(letter_text.closing_text, doc), if not letter_text:
"language": letter_text.language, return {}
}
return {
"body_text": frappe.render_template(letter_text.body_text, doc),
"closing_text": frappe.render_template(letter_text.closing_text, doc),
"language": letter_text.language,
}

View File

@@ -1,7 +1,7 @@
# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import frappe import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.utils import add_days, nowdate, today from frappe.utils import add_days, nowdate, today
from erpnext import get_default_cost_center from erpnext import get_default_cost_center
@@ -16,10 +16,19 @@ from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import (
create_sales_invoice_against_cost_center, create_sales_invoice_against_cost_center,
) )
test_dependencies = ["Company", "Cost Center"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Company", "Cost Center"]
class TestDunning(FrappeTestCase): class UnitTestDunning(UnitTestCase):
"""
Unit tests for Dunning.
Use this class for testing individual functions and methods.
"""
pass
class TestDunning(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
super().setUpClass() super().setUpClass()

View File

@@ -1,9 +1,10 @@
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
# import frappe # import frappe
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestDunningType(unittest.TestCase):
class TestDunningType(IntegrationTestCase):
pass pass

View File

@@ -3,7 +3,7 @@
import frappe import frappe
from frappe.tests.utils import FrappeTestCase, change_settings from frappe.tests import IntegrationTestCase
from frappe.utils import add_days, flt, today from frappe.utils import add_days, flt, today
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
@@ -11,7 +11,7 @@ from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sal
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
class TestExchangeRateRevaluation(AccountsTestMixin, FrappeTestCase): class TestExchangeRateRevaluation(AccountsTestMixin, IntegrationTestCase):
def setUp(self): def setUp(self):
self.create_company() self.create_company()
self.create_usd_receivable_account() self.create_usd_receivable_account()
@@ -35,7 +35,7 @@ class TestExchangeRateRevaluation(AccountsTestMixin, FrappeTestCase):
company_doc.unrealized_exchange_gain_loss_account = company_doc.exchange_gain_loss_account company_doc.unrealized_exchange_gain_loss_account = company_doc.exchange_gain_loss_account
company_doc.save() company_doc.save()
@change_settings( @IntegrationTestCase.change_settings(
"Accounts Settings", "Accounts Settings",
{"allow_multi_currency_invoices_against_single_party_account": 1, "allow_stale": 0}, {"allow_multi_currency_invoices_against_single_party_account": 1, "allow_stale": 0},
) )
@@ -88,7 +88,7 @@ class TestExchangeRateRevaluation(AccountsTestMixin, FrappeTestCase):
)[0] )[0]
self.assertEqual(acc_balance.balance, 8500.0) self.assertEqual(acc_balance.balance, 8500.0)
@change_settings( @IntegrationTestCase.change_settings(
"Accounts Settings", "Accounts Settings",
{"allow_multi_currency_invoices_against_single_party_account": 1, "allow_stale": 0}, {"allow_multi_currency_invoices_against_single_party_account": 1, "allow_stale": 0},
) )
@@ -158,7 +158,7 @@ class TestExchangeRateRevaluation(AccountsTestMixin, FrappeTestCase):
self.assertEqual(acc_balance.balance, 0.0) self.assertEqual(acc_balance.balance, 0.0)
self.assertEqual(acc_balance.balance_in_account_currency, 0.0) self.assertEqual(acc_balance.balance_in_account_currency, 0.0)
@change_settings( @IntegrationTestCase.change_settings(
"Accounts Settings", "Accounts Settings",
{"allow_multi_currency_invoices_against_single_party_account": 1, "allow_stale": 0}, {"allow_multi_currency_invoices_against_single_party_account": 1, "allow_stale": 0},
) )
@@ -247,7 +247,7 @@ class TestExchangeRateRevaluation(AccountsTestMixin, FrappeTestCase):
self.assertEqual(flt(acc_balance.balance, precision), 0.0) self.assertEqual(flt(acc_balance.balance, precision), 0.0)
self.assertEqual(flt(acc_balance.balance_in_account_currency, precision), 0.0) self.assertEqual(flt(acc_balance.balance_in_account_currency, precision), 0.0)
@change_settings( @IntegrationTestCase.change_settings(
"Accounts Settings", "Accounts Settings",
{"allow_multi_currency_invoices_against_single_party_account": 1, "allow_stale": 0}, {"allow_multi_currency_invoices_against_single_party_account": 1, "allow_stale": 0},
) )

View File

@@ -1,14 +1,14 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry
class TestFinanceBook(unittest.TestCase): class TestFinanceBook(IntegrationTestCase):
def test_finance_book(self): def test_finance_book(self):
finance_book = create_finance_book() finance_book = create_finance_book()

View File

@@ -1,16 +1,15 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import now_datetime from frappe.utils import now_datetime
test_ignore = ["Company"] IGNORE_TEST_RECORD_DEPENDENCIES = ["Company"]
class TestFiscalYear(unittest.TestCase): class TestFiscalYear(IntegrationTestCase):
def test_extra_year(self): def test_extra_year(self):
if frappe.db.exists("Fiscal Year", "_Test Fiscal Year 2000"): if frappe.db.exists("Fiscal Year", "_Test Fiscal Year 2000"):
frappe.delete_doc("Fiscal Year", "_Test Fiscal Year 2000") frappe.delete_doc("Fiscal Year", "_Test Fiscal Year 2000")

View File

@@ -1,17 +1,16 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
import unittest import unittest
import frappe import frappe
from frappe.model.naming import parse_naming_series from frappe.model.naming import parse_naming_series
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.gl_entry.gl_entry import rename_gle_sle_docs from erpnext.accounts.doctype.gl_entry.gl_entry import rename_gle_sle_docs
from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry
class TestGLEntry(unittest.TestCase): class TestGLEntry(IntegrationTestCase):
def test_round_off_entry(self): def test_round_off_entry(self):
frappe.db.set_value("Company", "_Test Company", "round_off_account", "_Test Write Off - _TC") frappe.db.set_value("Company", "_Test Company", "round_off_account", "_Test Write Off - _TC")
frappe.db.set_value("Company", "_Test Company", "round_off_cost_center", "_Test Cost Center - _TC") frappe.db.set_value("Company", "_Test Company", "round_off_cost_center", "_Test Cost Center - _TC")

View File

@@ -1,9 +1,9 @@
# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import add_days, flt, nowdate from frappe.utils import add_days, flt, nowdate
from erpnext.accounts.doctype.account.test_account import create_account from erpnext.accounts.doctype.account.test_account import create_account
@@ -12,7 +12,7 @@ from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sal
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import get_gl_entries from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import get_gl_entries
class TestInvoiceDiscounting(unittest.TestCase): class TestInvoiceDiscounting(IntegrationTestCase):
def setUp(self): def setUp(self):
self.ar_credit = create_account( self.ar_credit = create_account(
account_name="_Test Accounts Receivable Credit", account_name="_Test Accounts Receivable Credit",

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestItemTaxTemplate(unittest.TestCase):
class TestItemTaxTemplate(IntegrationTestCase):
pass pass

View File

@@ -1,10 +1,8 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.tests.utils import change_settings from frappe.tests.utils import change_settings
from frappe.utils import flt, nowdate from frappe.utils import flt, nowdate
@@ -13,8 +11,19 @@ from erpnext.accounts.doctype.journal_entry.journal_entry import StockAccountInv
from erpnext.exceptions import InvalidAccountCurrency from erpnext.exceptions import InvalidAccountCurrency
class TestJournalEntry(unittest.TestCase): class UnitTestJournalEntry(UnitTestCase):
@change_settings("Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}) """
Unit tests for JournalEntry.
Use this class for testing individual functions and methods.
"""
pass
class TestJournalEntry(IntegrationTestCase):
@IntegrationTestCase.change_settings(
"Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}
)
def test_journal_entry_with_against_jv(self): def test_journal_entry_with_against_jv(self):
jv_invoice = frappe.copy_doc(test_records[2]) jv_invoice = frappe.copy_doc(test_records[2])
base_jv = frappe.copy_doc(test_records[0]) base_jv = frappe.copy_doc(test_records[0])

View File

@@ -1,9 +1,10 @@
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
# import frappe # import frappe
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestJournalEntryTemplate(unittest.TestCase):
class TestJournalEntryTemplate(IntegrationTestCase):
pass pass

View File

@@ -3,14 +3,14 @@
import frappe import frappe
from frappe import qb from frappe import qb
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase
from frappe.utils import nowdate from frappe.utils import nowdate
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
from erpnext.accounts.utils import run_ledger_health_checks from erpnext.accounts.utils import run_ledger_health_checks
class TestLedgerHealth(AccountsTestMixin, FrappeTestCase): class TestLedgerHealth(AccountsTestMixin, IntegrationTestCase):
def setUp(self): def setUp(self):
self.create_company() self.create_company()
self.create_customer() self.create_customer()

View File

@@ -2,8 +2,17 @@
# See license.txt # See license.txt
# import frappe # import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
class TestLedgerHealthMonitor(FrappeTestCase): class UnitTestLedgerHealthMonitor(UnitTestCase):
"""
Unit tests for LedgerHealthMonitor.
Use this class for testing individual functions and methods.
"""
pass
class TestLedgerHealthMonitor(IntegrationTestCase):
pass pass

View File

@@ -1,14 +1,14 @@
# Copyright (c) 2021, Wahni Green Technologies Pvt. Ltd. and Contributors # Copyright (c) 2021, Wahni Green Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.ledger_merge.ledger_merge import start_merge from erpnext.accounts.doctype.ledger_merge.ledger_merge import start_merge
class TestLedgerMerge(unittest.TestCase): class TestLedgerMerge(IntegrationTestCase):
def test_merge_success(self): def test_merge_success(self):
if not frappe.db.exists("Account", "Indirect Expenses - _TC"): if not frappe.db.exists("Account", "Indirect Expenses - _TC"):
acc = frappe.new_doc("Account") acc = frappe.new_doc("Account")

View File

@@ -1,16 +1,16 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import today from frappe.utils import today
from erpnext.accounts.doctype.loyalty_program.test_loyalty_program import create_records from erpnext.accounts.doctype.loyalty_program.test_loyalty_program import create_records
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
class TestLoyaltyPointEntry(unittest.TestCase): class TestLoyaltyPointEntry(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
# Create test records # Create test records

View File

@@ -1,9 +1,9 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import cint, flt, getdate, today from frappe.utils import cint, flt, getdate, today
from erpnext.accounts.doctype.loyalty_program.loyalty_program import ( from erpnext.accounts.doctype.loyalty_program.loyalty_program import (
@@ -13,7 +13,7 @@ from erpnext.accounts.doctype.loyalty_program.loyalty_program import (
from erpnext.accounts.party import get_dashboard_info from erpnext.accounts.party import get_dashboard_info
class TestLoyaltyProgram(unittest.TestCase): class TestLoyaltyProgram(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(self): def setUpClass(self):
# create relevant item, customer, loyalty program, etc # create relevant item, customer, loyalty program, etc

View File

@@ -1,10 +1,11 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
# test_records = frappe.get_test_records('Mode of Payment') # test_records = frappe.get_test_records('Mode of Payment')
class TestModeofPayment(unittest.TestCase): class TestModeofPayment(IntegrationTestCase):
pass pass

View File

@@ -1,13 +1,12 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
test_records = frappe.get_test_records("Monthly Distribution") test_records = frappe.get_test_records("Monthly Distribution")
class TestMonthlyDistribution(unittest.TestCase): class TestMonthlyDistribution(IntegrationTestCase):
pass pass

View File

@@ -2,7 +2,7 @@
# See license.txt # See license.txt
import frappe import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
from erpnext.accounts.doctype.accounting_dimension.test_accounting_dimension import ( from erpnext.accounts.doctype.accounting_dimension.test_accounting_dimension import (
create_dimension, create_dimension,
@@ -12,10 +12,19 @@ from erpnext.accounts.doctype.opening_invoice_creation_tool.opening_invoice_crea
get_temporary_opening_account, get_temporary_opening_account,
) )
test_dependencies = ["Customer", "Supplier", "Accounting Dimension"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Customer", "Supplier", "Accounting Dimension"]
class TestOpeningInvoiceCreationTool(FrappeTestCase): class UnitTestOpeningInvoiceCreationTool(UnitTestCase):
"""
Unit tests for OpeningInvoiceCreationTool.
Use this class for testing individual functions and methods.
"""
pass
class TestOpeningInvoiceCreationTool(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(self): def setUpClass(self):
if not frappe.db.exists("Company", "_Test Opening Invoice Company"): if not frappe.db.exists("Company", "_Test Opening Invoice Company"):

View File

@@ -1,9 +1,10 @@
# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
# import frappe # import frappe
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestPartyLink(unittest.TestCase):
class TestPartyLink(IntegrationTestCase):
pass pass

View File

@@ -4,7 +4,7 @@
import frappe import frappe
from frappe import qb from frappe import qb
from frappe.tests.utils import FrappeTestCase, change_settings from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.utils import add_days, flt, nowdate from frappe.utils import add_days, flt, nowdate
from erpnext.accounts.doctype.account.test_account import create_account from erpnext.accounts.doctype.account.test_account import create_account
@@ -25,10 +25,19 @@ from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import (
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
from erpnext.setup.doctype.employee.test_employee import make_employee from erpnext.setup.doctype.employee.test_employee import make_employee
test_dependencies = ["Item"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Item"]
class TestPaymentEntry(FrappeTestCase): class UnitTestPaymentEntry(UnitTestCase):
"""
Unit tests for PaymentEntry.
Use this class for testing individual functions and methods.
"""
pass
class TestPaymentEntry(IntegrationTestCase):
def tearDown(self): def tearDown(self):
frappe.db.rollback() frappe.db.rollback()
@@ -383,7 +392,7 @@ class TestPaymentEntry(FrappeTestCase):
self.assertEqual(si.payment_schedule[0].outstanding, 0) self.assertEqual(si.payment_schedule[0].outstanding, 0)
self.assertEqual(si.payment_schedule[0].discounted_amount, 50) self.assertEqual(si.payment_schedule[0].discounted_amount, 50)
@change_settings( @IntegrationTestCase.change_settings(
"Accounts Settings", "Accounts Settings",
{ {
"allow_multi_currency_invoices_against_single_party_account": 1, "allow_multi_currency_invoices_against_single_party_account": 1,
@@ -1090,7 +1099,7 @@ class TestPaymentEntry(FrappeTestCase):
} }
self.assertDictEqual(ref_details, expected_response) self.assertDictEqual(ref_details, expected_response)
@change_settings( @IntegrationTestCase.change_settings(
"Accounts Settings", "Accounts Settings",
{ {
"unlink_payment_on_cancellation_of_invoice": 1, "unlink_payment_on_cancellation_of_invoice": 1,
@@ -1185,7 +1194,7 @@ class TestPaymentEntry(FrappeTestCase):
si3.cancel() si3.cancel()
si3.delete() si3.delete()
@change_settings( @IntegrationTestCase.change_settings(
"Accounts Settings", "Accounts Settings",
{ {
"unlink_payment_on_cancellation_of_invoice": 1, "unlink_payment_on_cancellation_of_invoice": 1,
@@ -1791,7 +1800,7 @@ class TestPaymentEntry(FrappeTestCase):
# 'Is Opening' should always be 'No' for normal advance payments # 'Is Opening' should always be 'No' for normal advance payments
self.assertEqual(gl_with_opening_set, []) self.assertEqual(gl_with_opening_set, [])
@change_settings("Accounts Settings", {"delete_linked_ledger_entries": 1}) @IntegrationTestCase.change_settings("Accounts Settings", {"delete_linked_ledger_entries": 1})
def test_delete_linked_exchange_gain_loss_journal(self): def test_delete_linked_exchange_gain_loss_journal(self):
from erpnext.accounts.doctype.account.test_account import create_account from erpnext.accounts.doctype.account.test_account import create_account
from erpnext.accounts.doctype.opening_invoice_creation_tool.test_opening_invoice_creation_tool import ( from erpnext.accounts.doctype.opening_invoice_creation_tool.test_opening_invoice_creation_tool import (

View File

@@ -1,12 +1,13 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
# test_records = frappe.get_test_records('Payment Gateway Account') # test_records = frappe.get_test_records('Payment Gateway Account')
test_ignore = ["Payment Gateway"] IGNORE_TEST_RECORD_DEPENDENCIES = ["Payment Gateway"]
class TestPaymentGatewayAccount(unittest.TestCase): class TestPaymentGatewayAccount(IntegrationTestCase):
pass pass

View File

@@ -3,7 +3,7 @@
import frappe import frappe
from frappe import qb from frappe import qb
from frappe.tests.utils import FrappeTestCase, change_settings from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.utils import nowdate from frappe.utils import nowdate
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
@@ -13,7 +13,16 @@ from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_orde
from erpnext.stock.doctype.item.test_item import create_item from erpnext.stock.doctype.item.test_item import create_item
class TestPaymentLedgerEntry(FrappeTestCase): class UnitTestPaymentLedgerEntry(UnitTestCase):
"""
Unit tests for PaymentLedgerEntry.
Use this class for testing individual functions and methods.
"""
pass
class TestPaymentLedgerEntry(IntegrationTestCase):
def setUp(self): def setUp(self):
self.ple = qb.DocType("Payment Ledger Entry") self.ple = qb.DocType("Payment Ledger Entry")
self.create_company() self.create_company()
@@ -445,7 +454,7 @@ class TestPaymentLedgerEntry(FrappeTestCase):
self.assertEqual(pl_entries_for_crnote[0], expected_values[0]) self.assertEqual(pl_entries_for_crnote[0], expected_values[0])
self.assertEqual(pl_entries_for_crnote[1], expected_values[1]) self.assertEqual(pl_entries_for_crnote[1], expected_values[1])
@change_settings( @IntegrationTestCase.change_settings(
"Accounts Settings", "Accounts Settings",
{"unlink_payment_on_cancellation_of_invoice": 1, "delete_linked_ledger_entries": 1}, {"unlink_payment_on_cancellation_of_invoice": 1, "delete_linked_ledger_entries": 1},
) )
@@ -474,7 +483,7 @@ class TestPaymentLedgerEntry(FrappeTestCase):
si.delete() si.delete()
self.assertRaises(frappe.DoesNotExistError, frappe.get_doc, si.doctype, si.name) self.assertRaises(frappe.DoesNotExistError, frappe.get_doc, si.doctype, si.name)
@change_settings( @IntegrationTestCase.change_settings(
"Accounts Settings", "Accounts Settings",
{"unlink_payment_on_cancellation_of_invoice": 1, "delete_linked_ledger_entries": 1}, {"unlink_payment_on_cancellation_of_invoice": 1, "delete_linked_ledger_entries": 1},
) )
@@ -507,7 +516,7 @@ class TestPaymentLedgerEntry(FrappeTestCase):
si.delete() si.delete()
self.assertRaises(frappe.DoesNotExistError, frappe.get_doc, si.doctype, si.name) self.assertRaises(frappe.DoesNotExistError, frappe.get_doc, si.doctype, si.name)
@change_settings( @IntegrationTestCase.change_settings(
"Accounts Settings", "Accounts Settings",
{ {
"unlink_payment_on_cancellation_of_invoice": 1, "unlink_payment_on_cancellation_of_invoice": 1,

View File

@@ -3,7 +3,7 @@
import frappe import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.utils import getdate from frappe.utils import getdate
from erpnext.accounts.doctype.bank_transaction.test_bank_transaction import ( from erpnext.accounts.doctype.bank_transaction.test_bank_transaction import (
@@ -17,7 +17,16 @@ from erpnext.accounts.doctype.payment_entry.payment_entry import (
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
class TestPaymentOrder(FrappeTestCase): class UnitTestPaymentOrder(UnitTestCase):
"""
Unit tests for PaymentOrder.
Use this class for testing individual functions and methods.
"""
pass
class TestPaymentOrder(IntegrationTestCase):
def setUp(self): def setUp(self):
# 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
uniq_identifier = frappe.generate_hash(length=10) uniq_identifier = frappe.generate_hash(length=10)

View File

@@ -4,7 +4,7 @@
import frappe import frappe
from frappe import qb from frappe import qb
from frappe.tests.utils import FrappeTestCase, change_settings from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.utils import add_days, add_years, flt, getdate, nowdate, today from frappe.utils import add_days, add_years, flt, getdate, nowdate, today
from erpnext import get_default_cost_center from erpnext import get_default_cost_center
@@ -17,10 +17,19 @@ from erpnext.accounts.utils import get_fiscal_year
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
from erpnext.stock.doctype.item.test_item import create_item from erpnext.stock.doctype.item.test_item import create_item
test_dependencies = ["Item"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Item"]
class TestPaymentReconciliation(FrappeTestCase): class UnitTestPaymentReconciliation(UnitTestCase):
"""
Unit tests for PaymentReconciliation.
Use this class for testing individual functions and methods.
"""
pass
class TestPaymentReconciliation(IntegrationTestCase):
def setUp(self): def setUp(self):
self.create_company() self.create_company()
self.create_item() self.create_item()
@@ -1104,7 +1113,7 @@ class TestPaymentReconciliation(FrappeTestCase):
payment_vouchers = [x.get("reference_name") for x in pr.get("payments")] payment_vouchers = [x.get("reference_name") for x in pr.get("payments")]
self.assertCountEqual(payment_vouchers, [je2.name, pe2.name]) self.assertCountEqual(payment_vouchers, [je2.name, pe2.name])
@change_settings( @IntegrationTestCase.change_settings(
"Accounts Settings", "Accounts Settings",
{ {
"allow_multi_currency_invoices_against_single_party_account": 1, "allow_multi_currency_invoices_against_single_party_account": 1,

View File

@@ -482,4 +482,4 @@
"sort_field": "creation", "sort_field": "creation",
"sort_order": "DESC", "sort_order": "DESC",
"states": [] "states": []
} }

View File

@@ -883,33 +883,6 @@ def validate_payment(doc, method=None):
) )
def get_paid_amount_against_order(dt, dn):
pe_ref = frappe.qb.DocType("Payment Entry Reference")
if dt == "Sales Order":
inv_dt, inv_field = "Sales Invoice Item", "sales_order"
else:
inv_dt, inv_field = "Purchase Invoice Item", "purchase_order"
inv_item = frappe.qb.DocType(inv_dt)
return (
frappe.qb.from_(pe_ref)
.select(
Sum(pe_ref.allocated_amount),
)
.where(
(pe_ref.docstatus == 1)
& (
(pe_ref.reference_name == dn)
| pe_ref.reference_name.isin(
frappe.qb.from_(inv_item)
.select(inv_item.parent)
.where(inv_item[inv_field] == dn)
.distinct()
)
)
)
).run()[0][0] or 0
@frappe.whitelist() @frappe.whitelist()
def get_open_payment_requests_query(doctype, txt, searchfield, start, page_len, filters): def get_open_payment_requests_query(doctype, txt, searchfield, start, page_len, filters):
# permission checks in `get_list()` # permission checks in `get_list()`

View File

@@ -6,7 +6,7 @@ import unittest
from unittest.mock import patch from unittest.mock import patch
import frappe import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
from erpnext.accounts.doctype.payment_entry.test_payment_entry import create_payment_terms_template from erpnext.accounts.doctype.payment_entry.test_payment_entry import create_payment_terms_template
from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request
@@ -16,7 +16,7 @@ from erpnext.buying.doctype.purchase_order.test_purchase_order import create_pur
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
from erpnext.setup.utils import get_exchange_rate from erpnext.setup.utils import get_exchange_rate
test_dependencies = ["Currency Exchange", "Journal Entry", "Contact", "Address"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Currency Exchange", "Journal Entry", "Contact", "Address"]
PAYMENT_URL = "https://example.com/payment" PAYMENT_URL = "https://example.com/payment"
@@ -57,7 +57,16 @@ payment_method = [
] ]
class TestPaymentRequest(FrappeTestCase): class UnitTestPaymentRequest(UnitTestCase):
"""
Unit tests for PaymentRequest.
Use this class for testing individual functions and methods.
"""
pass
class TestPaymentRequest(IntegrationTestCase):
def setUp(self): def setUp(self):
for payment_gateway in payment_gateways: for payment_gateway in payment_gateways:
if not frappe.db.get_value("Payment Gateway", payment_gateway["gateway"], "name"): if not frappe.db.get_value("Payment Gateway", payment_gateway["gateway"], "name"):
@@ -218,7 +227,7 @@ class TestPaymentRequest(FrappeTestCase):
def test_payment_entry_against_purchase_invoice(self): def test_payment_entry_against_purchase_invoice(self):
si_usd = make_purchase_invoice( si_usd = make_purchase_invoice(
customer="_Test Supplier USD", supplier="_Test Supplier USD",
debit_to="_Test Payable USD - _TC", debit_to="_Test Payable USD - _TC",
currency="USD", currency="USD",
conversion_rate=50, conversion_rate=50,
@@ -243,7 +252,7 @@ class TestPaymentRequest(FrappeTestCase):
def test_multiple_payment_entry_against_purchase_invoice(self): def test_multiple_payment_entry_against_purchase_invoice(self):
purchase_invoice = make_purchase_invoice( purchase_invoice = make_purchase_invoice(
customer="_Test Supplier USD", supplier="_Test Supplier USD",
debit_to="_Test Payable USD - _TC", debit_to="_Test Payable USD - _TC",
currency="USD", currency="USD",
conversion_rate=50, conversion_rate=50,
@@ -483,8 +492,13 @@ class TestPaymentRequest(FrappeTestCase):
return_doc=1, return_doc=1,
) )
@IntegrationTestCase.change_settings(
"Accounts Settings", {"allow_multi_currency_invoices_against_single_party_account": 1}
)
def test_multiple_payment_if_partially_paid_for_multi_currency(self): def test_multiple_payment_if_partially_paid_for_multi_currency(self):
pi = make_purchase_invoice(currency="USD", conversion_rate=50, qty=1, rate=100) pi = make_purchase_invoice(currency="USD", conversion_rate=50, qty=1, rate=100, do_not_save=1)
pi.credit_to = "Creditors - _TC"
pi.submit()
pr = make_payment_request( pr = make_payment_request(
dt="Purchase Invoice", dt="Purchase Invoice",
@@ -585,10 +599,15 @@ class TestPaymentRequest(FrappeTestCase):
self.assertEqual(pr.outstanding_amount, 0) self.assertEqual(pr.outstanding_amount, 0)
self.assertEqual(pr.grand_total, 20000) self.assertEqual(pr.grand_total, 20000)
@IntegrationTestCase.change_settings(
"Accounts Settings", {"allow_multi_currency_invoices_against_single_party_account": 1}
)
def test_single_payment_with_payment_term_for_multi_currency(self): def test_single_payment_with_payment_term_for_multi_currency(self):
create_payment_terms_template() create_payment_terms_template()
si = create_sales_invoice(do_not_save=1, currency="USD", qty=1, rate=200, conversion_rate=50) si = create_sales_invoice(
do_not_save=1, currency="USD", debit_to="Debtors - _TC", qty=1, rate=200, conversion_rate=50
)
si.payment_terms_template = "Test Receivable Template" # 84.746 and 15.254 si.payment_terms_template = "Test Receivable Template" # 84.746 and 15.254
si.save() si.save()
si.submit() si.submit()

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestPaymentTerm(unittest.TestCase):
class TestPaymentTerm(IntegrationTestCase):
pass pass

View File

@@ -1,12 +1,12 @@
# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
class TestPaymentTermsTemplate(unittest.TestCase): class TestPaymentTermsTemplate(IntegrationTestCase):
def tearDown(self): def tearDown(self):
frappe.delete_doc("Payment Terms Template", "_Test Payment Terms Template For Test", force=1) frappe.delete_doc("Payment Terms Template", "_Test Payment Terms Template For Test", force=1)

View File

@@ -392,8 +392,7 @@ def process_closing_entries(gl_entries, closing_entries, voucher_name, company,
) )
try: try:
if gl_entries + closing_entries: make_closing_entries(gl_entries + closing_entries, voucher_name, company, closing_date)
make_closing_entries(gl_entries + closing_entries, voucher_name, company, closing_date)
except Exception as e: except Exception as e:
frappe.db.rollback() frappe.db.rollback()
frappe.log_error(e) frappe.log_error(e)

View File

@@ -1,10 +1,9 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import today from frappe.utils import today
from erpnext.accounts.doctype.finance_book.test_finance_book import create_finance_book from erpnext.accounts.doctype.finance_book.test_finance_book import create_finance_book
@@ -13,7 +12,7 @@ from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sal
from erpnext.accounts.utils import get_fiscal_year from erpnext.accounts.utils import get_fiscal_year
class TestPeriodClosingVoucher(unittest.TestCase): class TestPeriodClosingVoucher(IntegrationTestCase):
def test_closing_entry(self): def test_closing_entry(self):
frappe.db.sql("delete from `tabGL Entry` where company='Test PCV Company'") frappe.db.sql("delete from `tabGL Entry` where company='Test PCV Company'")
frappe.db.sql("delete from `tabPeriod Closing Voucher` where company='Test PCV Company'") frappe.db.sql("delete from `tabPeriod Closing Voucher` where company='Test PCV Company'")
@@ -381,5 +380,5 @@ def create_cost_center(cc_name):
return costcenter.name return costcenter.name
test_dependencies = ["Customer", "Cost Center"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Customer", "Cost Center"]
test_records = frappe.get_test_records("Period Closing Voucher") test_records = frappe.get_test_records("Period Closing Voucher")

View File

@@ -194,7 +194,9 @@ function refresh_payments(d, frm) {
} }
if (payment) { if (payment) {
payment.expected_amount += flt(p.amount); payment.expected_amount += flt(p.amount);
payment.closing_amount = payment.expected_amount; if (payment.closing_amount === 0) {
payment.closing_amount = payment.expected_amount;
}
payment.difference = payment.closing_amount - payment.expected_amount; payment.difference = payment.closing_amount - payment.expected_amount;
} else { } else {
frm.add_child("payment_reconciliation", { frm.add_child("payment_reconciliation", {

View File

@@ -1,9 +1,9 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.accounting_dimension.test_accounting_dimension import ( from erpnext.accounts.doctype.accounting_dimension.test_accounting_dimension import (
create_dimension, create_dimension,
@@ -24,7 +24,7 @@ from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
class TestPOSClosingEntry(unittest.TestCase): class TestPOSClosingEntry(IntegrationTestCase):
def setUp(self): def setUp(self):
# Make stock available for POS Sales # Make stock available for POS Sales
make_stock_entry(target="_Test Warehouse - _TC", qty=2, basic_rate=100) make_stock_entry(target="_Test Warehouse - _TC", qty=2, basic_rate=100)

View File

@@ -865,6 +865,7 @@ def get_item_group(pos_profile):
if pos_profile.get("item_groups"): if pos_profile.get("item_groups"):
# Get items based on the item groups defined in the POS profile # Get items based on the item groups defined in the POS profile
for row in pos_profile.get("item_groups"): for row in pos_profile.get("item_groups"):
item_groups.append(row.item_group)
item_groups.extend(get_descendants_of("Item Group", row.item_group)) item_groups.extend(get_descendants_of("Item Group", row.item_group))
return list(set(item_groups)) return list(set(item_groups))

View File

@@ -1,11 +1,11 @@
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import copy import copy
import unittest import unittest
import frappe import frappe
from frappe import _ from frappe import _
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.pos_invoice.pos_invoice import make_sales_return from erpnext.accounts.doctype.pos_invoice.pos_invoice import make_sales_return
from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile
@@ -20,7 +20,7 @@ from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle
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
class TestPOSInvoice(unittest.TestCase): class TestPOSInvoice(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
make_stock_entry(target="_Test Warehouse - _TC", item_code="_Test Item", qty=800, basic_rate=100) make_stock_entry(target="_Test Warehouse - _TC", item_code="_Test Item", qty=800, basic_rate=100)

View File

@@ -1,10 +1,9 @@
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import json import json
import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.tests.utils import change_settings from frappe.tests.utils import change_settings
from erpnext.accounts.doctype.pos_closing_entry.test_pos_closing_entry import init_user_and_profile from erpnext.accounts.doctype.pos_closing_entry.test_pos_closing_entry import init_user_and_profile
@@ -19,7 +18,16 @@ from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle
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
class TestPOSInvoiceMergeLog(unittest.TestCase): class UnitTestPosInvoiceMergeLog(UnitTestCase):
"""
Unit tests for PosInvoiceMergeLog.
Use this class for testing individual functions and methods.
"""
pass
class TestPOSInvoiceMergeLog(IntegrationTestCase):
def test_consolidated_invoice_creation(self): def test_consolidated_invoice_creation(self):
frappe.db.sql("delete from `tabPOS Invoice`") frappe.db.sql("delete from `tabPOS Invoice`")
@@ -288,7 +296,7 @@ class TestPOSInvoiceMergeLog(unittest.TestCase):
frappe.db.sql("delete from `tabPOS Profile`") frappe.db.sql("delete from `tabPOS Profile`")
frappe.db.sql("delete from `tabPOS Invoice`") frappe.db.sql("delete from `tabPOS Invoice`")
@change_settings( @IntegrationTestCase.change_settings(
"System Settings", {"number_format": "#,###.###", "currency_precision": 3, "float_precision": 3} "System Settings", {"number_format": "#,###.###", "currency_precision": 3, "float_precision": 3}
) )
def test_consolidation_round_off_error_3(self): def test_consolidation_round_off_error_3(self):

View File

@@ -1,12 +1,12 @@
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
class TestPOSOpeningEntry(unittest.TestCase): class TestPOSOpeningEntry(IntegrationTestCase):
pass pass

View File

@@ -1,19 +1,19 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.pos_profile.pos_profile import ( from erpnext.accounts.doctype.pos_profile.pos_profile import (
get_child_nodes, get_child_nodes,
) )
from erpnext.stock.get_item_details import get_pos_profile from erpnext.stock.get_item_details import get_pos_profile
test_dependencies = ["Item"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Item"]
class TestPOSProfile(unittest.TestCase): class TestPOSProfile(IntegrationTestCase):
def test_pos_profile(self): def test_pos_profile(self):
make_pos_profile() make_pos_profile()
@@ -50,7 +50,7 @@ def get_customers_list(pos_profile=None):
customer_groups.extend( customer_groups.extend(
[d.get("name") for d in get_child_nodes("Customer Group", d.get("customer_group"))] [d.get("name") for d in get_child_nodes("Customer Group", d.get("customer_group"))]
) )
cond = "customer_group in (%s)" % (", ".join(["%s"] * len(customer_groups))) cond = "customer_group in ({})".format(", ".join(["%s"] * len(customer_groups)))
return ( return (
frappe.db.sql( frappe.db.sql(
@@ -72,7 +72,7 @@ def get_items_list(pos_profile, company):
for d in pos_profile.get("item_groups"): for d in pos_profile.get("item_groups"):
args_list.extend([d.name for d in get_child_nodes("Item Group", d.item_group)]) args_list.extend([d.name for d in get_child_nodes("Item Group", d.item_group)])
if args_list: if args_list:
cond = "and i.item_group in (%s)" % (", ".join(["%s"] * len(args_list))) cond = "and i.item_group in ({})".format(", ".join(["%s"] * len(args_list)))
return frappe.db.sql( return frappe.db.sql(
f""" f"""

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestPOSProfileUser(unittest.TestCase):
class TestPOSProfileUser(IntegrationTestCase):
pass pass

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestPOSSettings(unittest.TestCase):
class TestPOSSettings(IntegrationTestCase):
pass pass

View File

@@ -5,7 +5,7 @@
import unittest import unittest
import frappe import frappe
from frappe.tests.utils import FrappeTestCase, change_settings from frappe.tests import IntegrationTestCase, UnitTestCase
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
@@ -15,7 +15,16 @@ from erpnext.stock.doctype.item.test_item import make_item
from erpnext.stock.get_item_details import get_item_details from erpnext.stock.get_item_details import get_item_details
class TestPricingRule(FrappeTestCase): class UnitTestPricingRule(UnitTestCase):
"""
Unit tests for PricingRule.
Use this class for testing individual functions and methods.
"""
pass
class TestPricingRule(IntegrationTestCase):
def setUp(self): def setUp(self):
delete_existing_pricing_rules() delete_existing_pricing_rules()
setup_pricing_rule_data() setup_pricing_rule_data()
@@ -1378,7 +1387,7 @@ class TestPricingRule(FrappeTestCase):
pi.cancel() pi.cancel()
test_dependencies = ["UTM Campaign"] EXTRA_TEST_RECORD_DEPENDENCIES = ["UTM Campaign"]
def make_pricing_rule(**args): def make_pricing_rule(**args):

View File

@@ -1,9 +1,9 @@
# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.account.test_account import create_account from erpnext.accounts.doctype.account.test_account import create_account
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import ( from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import (
@@ -13,7 +13,7 @@ from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import (
from erpnext.stock.doctype.item.test_item import create_item from erpnext.stock.doctype.item.test_item import create_item
class TestProcessDeferredAccounting(unittest.TestCase): class TestProcessDeferredAccounting(IntegrationTestCase):
def test_creation_of_ledger_entry_on_submit(self): def test_creation_of_ledger_entry_on_submit(self):
"""test creation of gl entries on submission of document""" """test creation of gl entries on submission of document"""
change_acc_settings(acc_frozen_upto="2023-05-31", book_deferred_entries_based_on="Months") change_acc_settings(acc_frozen_upto="2023-05-31", book_deferred_entries_based_on="Months")

View File

@@ -2,8 +2,17 @@
# See license.txt # See license.txt
# import frappe # import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
class TestProcessPaymentReconciliation(FrappeTestCase): class UnitTestProcessPaymentReconciliation(UnitTestCase):
"""
Unit tests for ProcessPaymentReconciliation.
Use this class for testing individual functions and methods.
"""
pass
class TestProcessPaymentReconciliation(IntegrationTestCase):
pass pass

View File

@@ -2,8 +2,17 @@
# See license.txt # See license.txt
# import frappe # import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
class TestProcessPaymentReconciliationLog(FrappeTestCase): class UnitTestProcessPaymentReconciliationLog(UnitTestCase):
"""
Unit tests for ProcessPaymentReconciliationLog.
Use this class for testing individual functions and methods.
"""
pass
class TestProcessPaymentReconciliationLog(IntegrationTestCase):
pass pass

View File

@@ -3,7 +3,7 @@
import frappe import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase
from frappe.utils import add_days, getdate, today from frappe.utils import add_days, getdate, today
from erpnext.accounts.doctype.process_statement_of_accounts.process_statement_of_accounts import ( from erpnext.accounts.doctype.process_statement_of_accounts.process_statement_of_accounts import (
@@ -14,7 +14,7 @@ from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sal
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
class TestProcessStatementOfAccounts(AccountsTestMixin, FrappeTestCase): class TestProcessStatementOfAccounts(AccountsTestMixin, IntegrationTestCase):
def setUp(self): def setUp(self):
self.create_company() self.create_company()
self.create_customer() self.create_customer()

View File

@@ -2,8 +2,17 @@
# See license.txt # See license.txt
# import frappe # import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
class TestProcessSubscription(FrappeTestCase): class UnitTestProcessSubscription(UnitTestCase):
"""
Unit tests for ProcessSubscription.
Use this class for testing individual functions and methods.
"""
pass
class TestProcessSubscription(IntegrationTestCase):
pass pass

View File

@@ -1,15 +1,15 @@
# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.promotional_scheme.promotional_scheme import TransactionExists from erpnext.accounts.doctype.promotional_scheme.promotional_scheme import TransactionExists
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
class TestPromotionalScheme(unittest.TestCase): class TestPromotionalScheme(IntegrationTestCase):
def setUp(self): def setUp(self):
if frappe.db.exists("Promotional Scheme", "_Test Scheme"): if frappe.db.exists("Promotional Scheme", "_Test Scheme"):
frappe.delete_doc("Promotional Scheme", "_Test Scheme") frappe.delete_doc("Promotional Scheme", "_Test Scheme")

View File

@@ -565,11 +565,12 @@ frappe.ui.form.on("Purchase Invoice", {
frm.custom_make_buttons = { frm.custom_make_buttons = {
"Purchase Invoice": "Return / Debit Note", "Purchase Invoice": "Return / Debit Note",
"Payment Entry": "Payment", "Payment Entry": "Payment",
"Landed Cost Voucher": function () {
frm.trigger("create_landed_cost_voucher");
},
}; };
if (frm.doc.update_stock) {
frm.custom_make_buttons["Landed Cost Voucher"] = "Landed Cost Voucher";
}
frm.set_query("additional_discount_account", function () { frm.set_query("additional_discount_account", function () {
return { return {
filters: { filters: {
@@ -611,20 +612,6 @@ frappe.ui.form.on("Purchase Invoice", {
}); });
}, },
create_landed_cost_voucher: function (frm) {
let lcv = frappe.model.get_new_doc("Landed Cost Voucher");
lcv.company = frm.doc.company;
let lcv_receipt = frappe.model.get_new_doc("Landed Cost Purchase Invoice");
lcv_receipt.receipt_document_type = "Purchase Invoice";
lcv_receipt.receipt_document = frm.doc.name;
lcv_receipt.supplier = frm.doc.supplier;
lcv_receipt.grand_total = frm.doc.grand_total;
lcv.purchase_receipts = [lcv_receipt];
frappe.set_route("Form", lcv.doctype, lcv.name);
},
add_custom_buttons: function (frm) { add_custom_buttons: function (frm) {
if (frm.doc.docstatus == 1 && frm.doc.per_received < 100) { if (frm.doc.docstatus == 1 && frm.doc.per_received < 100) {
frm.add_custom_button( frm.add_custom_button(
@@ -649,6 +636,32 @@ frappe.ui.form.on("Purchase Invoice", {
__("View") __("View")
); );
} }
if (frm.doc.docstatus === 1 && frm.doc.update_stock) {
frm.add_custom_button(
__("Landed Cost Voucher"),
() => {
frm.events.make_lcv(frm);
},
__("Create")
);
}
},
make_lcv(frm) {
frappe.call({
method: "erpnext.stock.doctype.purchase_receipt.purchase_receipt.make_lcv",
args: {
doctype: frm.doc.doctype,
docname: frm.doc.name,
},
callback: (r) => {
if (r.message) {
var doc = frappe.model.sync(r.message);
frappe.set_route("Form", doc[0].doctype, doc[0].name);
}
},
});
}, },
onload: function (frm) { onload: function (frm) {

View File

@@ -5,6 +5,7 @@
"creation": "2013-05-21 16:16:39", "creation": "2013-05-21 16:16:39",
"doctype": "DocType", "doctype": "DocType",
"document_type": "Document", "document_type": "Document",
"email_append_to": 1,
"engine": "InnoDB", "engine": "InnoDB",
"field_order": [ "field_order": [
"title", "title",
@@ -192,6 +193,7 @@
"is_internal_supplier", "is_internal_supplier",
"represents_company", "represents_company",
"supplier_group", "supplier_group",
"sender",
"column_break_147", "column_break_147",
"inter_company_invoice_reference", "inter_company_invoice_reference",
"is_old_subcontracting_flow", "is_old_subcontracting_flow",
@@ -1625,13 +1627,19 @@
"fieldname": "update_outstanding_for_self", "fieldname": "update_outstanding_for_self",
"fieldtype": "Check", "fieldtype": "Check",
"label": "Update Outstanding for Self" "label": "Update Outstanding for Self"
},
{
"fieldname": "sender",
"fieldtype": "Data",
"label": "Sender",
"options": "Email"
} }
], ],
"icon": "fa fa-file-text", "icon": "fa fa-file-text",
"idx": 204, "idx": 204,
"is_submittable": 1, "is_submittable": 1,
"links": [], "links": [],
"modified": "2024-07-25 19:42:36.931278", "modified": "2024-09-18 12:24:44.826539",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Accounts", "module": "Accounts",
"name": "Purchase Invoice", "name": "Purchase Invoice",
@@ -1687,6 +1695,7 @@
} }
], ],
"search_fields": "posting_date, supplier, bill_no, base_grand_total, outstanding_amount", "search_fields": "posting_date, supplier, bill_no, base_grand_total, outstanding_amount",
"sender_field": "sender",
"show_name_in_global_search": 1, "show_name_in_global_search": 1,
"sort_field": "creation", "sort_field": "creation",
"sort_order": "DESC", "sort_order": "DESC",

View File

@@ -165,6 +165,7 @@ class PurchaseInvoice(BuyingController):
rounding_adjustment: DF.Currency rounding_adjustment: DF.Currency
scan_barcode: DF.Data | None scan_barcode: DF.Data | None
select_print_heading: DF.Link | None select_print_heading: DF.Link | None
sender: DF.Data | None
set_from_warehouse: DF.Link | None set_from_warehouse: DF.Link | None
set_posting_time: DF.Check set_posting_time: DF.Check
set_warehouse: DF.Link | None set_warehouse: DF.Link | None
@@ -590,7 +591,7 @@ class PurchaseInvoice(BuyingController):
def validate_expense_account(self): def validate_expense_account(self):
for item in self.get("items"): for item in self.get("items"):
validate_account_head(item.idx, item.expense_account, self.company, "Expense") validate_account_head(item.idx, item.expense_account, self.company, _("Expense"))
def set_against_expense_account(self, force=False): def set_against_expense_account(self, force=False):
against_accounts = [] against_accounts = []

View File

@@ -3,7 +3,7 @@
import frappe import frappe
from frappe.tests.utils import FrappeTestCase, change_settings from frappe.tests import IntegrationTestCase
from frappe.utils import add_days, cint, flt, getdate, nowdate, today from frappe.utils import add_days, cint, flt, getdate, nowdate, today
import erpnext import erpnext
@@ -38,11 +38,11 @@ from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle
from erpnext.stock.doctype.stock_entry.test_stock_entry import get_qty_after_transaction from erpnext.stock.doctype.stock_entry.test_stock_entry import get_qty_after_transaction
from erpnext.stock.tests.test_utils import StockTestMixin from erpnext.stock.tests.test_utils import StockTestMixin
test_dependencies = ["Item", "Cost Center", "Payment Term", "Payment Terms Template"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Item", "Cost Center", "Payment Term", "Payment Terms Template"]
test_ignore = ["Serial No"] IGNORE_TEST_RECORD_DEPENDENCIES = ["Serial No"]
class TestPurchaseInvoice(FrappeTestCase, StockTestMixin): class TestPurchaseInvoice(IntegrationTestCase, StockTestMixin):
@classmethod @classmethod
def setUpClass(self): def setUpClass(self):
unlink_payment_on_cancel_of_invoice() unlink_payment_on_cancel_of_invoice()
@@ -461,7 +461,9 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
self.assertEqual(tax.tax_amount, expected_values[i][1]) self.assertEqual(tax.tax_amount, expected_values[i][1])
self.assertEqual(tax.total, expected_values[i][2]) self.assertEqual(tax.total, expected_values[i][2])
@change_settings("Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}) @IntegrationTestCase.change_settings(
"Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}
)
def test_purchase_invoice_with_advance(self): def test_purchase_invoice_with_advance(self):
from erpnext.accounts.doctype.journal_entry.test_journal_entry import ( from erpnext.accounts.doctype.journal_entry.test_journal_entry import (
test_records as jv_test_records, test_records as jv_test_records,
@@ -516,7 +518,9 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
) )
) )
@change_settings("Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}) @IntegrationTestCase.change_settings(
"Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}
)
def test_invoice_with_advance_and_multi_payment_terms(self): def test_invoice_with_advance_and_multi_payment_terms(self):
from erpnext.accounts.doctype.journal_entry.test_journal_entry import ( from erpnext.accounts.doctype.journal_entry.test_journal_entry import (
test_records as jv_test_records, test_records as jv_test_records,
@@ -1251,7 +1255,9 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
acc_settings.submit_journal_entriessubmit_journal_entries = 0 acc_settings.submit_journal_entriessubmit_journal_entries = 0
acc_settings.save() acc_settings.save()
@change_settings("Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}) @IntegrationTestCase.change_settings(
"Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}
)
def test_gain_loss_with_advance_entry(self): def test_gain_loss_with_advance_entry(self):
unlink_enabled = frappe.db.get_single_value( unlink_enabled = frappe.db.get_single_value(
"Accounts Settings", "unlink_payment_on_cancellation_of_invoice" "Accounts Settings", "unlink_payment_on_cancellation_of_invoice"
@@ -1452,7 +1458,9 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
) )
frappe.db.set_value("Company", "_Test Company", "exchange_gain_loss_account", original_account) frappe.db.set_value("Company", "_Test Company", "exchange_gain_loss_account", original_account)
@change_settings("Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}) @IntegrationTestCase.change_settings(
"Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}
)
def test_purchase_invoice_advance_taxes(self): def test_purchase_invoice_advance_taxes(self):
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
@@ -2025,7 +2033,17 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
] ]
check_gl_entries(self, pi.name, expected_gle, nowdate()) check_gl_entries(self, pi.name, expected_gle, nowdate())
@change_settings("Buying Settings", {"supplier_group": None}) def test_create_purchase_invoice_without_mandatory(self):
pi = frappe.new_doc("Purchase Invoice")
pi.flags.ignore_mandatory = True
pi.insert(ignore_permissions=True)
self.assertTrue(pi.name)
self.assertEqual(pi.docstatus, 0)
pi.delete()
@IntegrationTestCase.change_settings("Buying Settings", {"supplier_group": None})
def test_purchase_invoice_without_supplier_group(self): def test_purchase_invoice_without_supplier_group(self):
# Create a Supplier # Create a Supplier
test_supplier_name = "_Test Supplier Without Supplier Group" test_supplier_name = "_Test Supplier Without Supplier Group"
@@ -2361,6 +2379,24 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
self.assertEqual(len(actual), 3) self.assertEqual(len(actual), 3)
self.assertEqual(expected, actual) self.assertEqual(expected, actual)
def test_last_purchase_rate(self):
item = create_item("_Test Item For Last Purchase Rate from PI", is_stock_item=1)
pi1 = make_purchase_invoice(item_code=item.item_code, qty=10, rate=100)
item.reload()
self.assertEqual(item.last_purchase_rate, 100)
pi2 = make_purchase_invoice(item_code=item.item_code, qty=10, rate=200)
item.reload()
self.assertEqual(item.last_purchase_rate, 200)
pi2.cancel()
item.reload()
self.assertEqual(item.last_purchase_rate, 100)
pi1.cancel()
item.reload()
self.assertEqual(item.last_purchase_rate, 0)
def set_advance_flag(company, flag, default_account): def set_advance_flag(company, flag, default_account):
frappe.db.set_value( frappe.db.set_value(

View File

@@ -1,10 +1,11 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
# test_records = frappe.get_test_records('Purchase Taxes and Charges Template') # test_records = frappe.get_test_records('Purchase Taxes and Charges Template')
class TestPurchaseTaxesandChargesTemplate(unittest.TestCase): class TestPurchaseTaxesandChargesTemplate(IntegrationTestCase):
pass pass

View File

@@ -4,7 +4,7 @@
import frappe import frappe
from frappe import qb from frappe import qb
from frappe.query_builder.functions import Sum from frappe.query_builder.functions import Sum
from frappe.tests.utils import FrappeTestCase, change_settings from frappe.tests import IntegrationTestCase
from frappe.utils import add_days, nowdate, today from frappe.utils import add_days, nowdate, today
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
@@ -14,7 +14,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
from erpnext.accounts.utils import get_fiscal_year from erpnext.accounts.utils import get_fiscal_year
class TestRepostAccountingLedger(AccountsTestMixin, FrappeTestCase): class TestRepostAccountingLedger(AccountsTestMixin, IntegrationTestCase):
def setUp(self): def setUp(self):
self.create_company() self.create_company()
self.create_customer() self.create_customer()
@@ -114,7 +114,7 @@ class TestRepostAccountingLedger(AccountsTestMixin, FrappeTestCase):
ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name}) ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name})
self.assertRaises(frappe.ValidationError, ral.save) self.assertRaises(frappe.ValidationError, ral.save)
@change_settings("Accounts Settings", {"delete_linked_ledger_entries": 1}) @IntegrationTestCase.change_settings("Accounts Settings", {"delete_linked_ledger_entries": 1})
def test_04_pcv_validation(self): def test_04_pcv_validation(self):
# Clear old GL entries so PCV can be submitted. # Clear old GL entries so PCV can be submitted.
gl = frappe.qb.DocType("GL Entry") gl = frappe.qb.DocType("GL Entry")

View File

@@ -2,8 +2,17 @@
# See license.txt # See license.txt
# import frappe # import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
class TestRepostAccountingLedgerSettings(FrappeTestCase): class UnitTestRepostAccountingLedgerSettings(UnitTestCase):
"""
Unit tests for RepostAccountingLedgerSettings.
Use this class for testing individual functions and methods.
"""
pass
class TestRepostAccountingLedgerSettings(IntegrationTestCase):
pass pass

View File

@@ -2,8 +2,17 @@
# See license.txt # See license.txt
# import frappe # import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
class TestRepostPaymentLedger(FrappeTestCase): class UnitTestRepostPaymentLedger(UnitTestCase):
"""
Unit tests for RepostPaymentLedger.
Use this class for testing individual functions and methods.
"""
pass
class TestRepostPaymentLedger(IntegrationTestCase):
pass pass

View File

@@ -376,7 +376,7 @@ class SalesInvoice(SellingController):
def validate_income_account(self): def validate_income_account(self):
for item in self.get("items"): for item in self.get("items"):
validate_account_head(item.idx, item.income_account, self.company, "Income") validate_account_head(item.idx, item.income_account, self.company, _("Income"))
def set_tax_withholding(self): def set_tax_withholding(self):
if self.get("is_opening") == "Yes": if self.get("is_opening") == "Yes":

View File

@@ -7,7 +7,7 @@ import json
import frappe import frappe
from frappe import qb from frappe import qb
from frappe.model.dynamic_links import get_dynamic_link_map from frappe.model.dynamic_links import get_dynamic_link_map
from frappe.tests.utils import FrappeTestCase, change_settings from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.utils import add_days, flt, format_date, getdate, nowdate, today from frappe.utils import add_days, flt, format_date, getdate, nowdate, today
import erpnext import erpnext
@@ -46,7 +46,16 @@ from erpnext.stock.doctype.stock_reconciliation.test_stock_reconciliation import
from erpnext.stock.utils import get_incoming_rate, get_stock_balance from erpnext.stock.utils import get_incoming_rate, get_stock_balance
class TestSalesInvoice(FrappeTestCase): class UnitTestSalesInvoice(UnitTestCase):
"""
Unit tests for SalesInvoice.
Use this class for testing individual functions and methods.
"""
pass
class TestSalesInvoice(IntegrationTestCase):
def setUp(self): def setUp(self):
from erpnext.stock.doctype.stock_ledger_entry.test_stock_ledger_entry import create_items from erpnext.stock.doctype.stock_ledger_entry.test_stock_ledger_entry import create_items
@@ -194,7 +203,9 @@ class TestSalesInvoice(FrappeTestCase):
self.assertRaises(frappe.LinkExistsError, si.cancel) self.assertRaises(frappe.LinkExistsError, si.cancel)
unlink_payment_on_cancel_of_invoice() unlink_payment_on_cancel_of_invoice()
@change_settings("Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}) @IntegrationTestCase.change_settings(
"Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}
)
def test_payment_entry_unlink_against_standalone_credit_note(self): def test_payment_entry_unlink_against_standalone_credit_note(self):
from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry
@@ -1383,7 +1394,9 @@ class TestSalesInvoice(FrappeTestCase):
dn.submit() dn.submit()
return dn return dn
@change_settings("Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}) @IntegrationTestCase.change_settings(
"Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}
)
def test_sales_invoice_with_advance(self): def test_sales_invoice_with_advance(self):
from erpnext.accounts.doctype.journal_entry.test_journal_entry import ( from erpnext.accounts.doctype.journal_entry.test_journal_entry import (
test_records as jv_test_records, test_records as jv_test_records,
@@ -2885,7 +2898,7 @@ class TestSalesInvoice(FrappeTestCase):
sales_invoice.save() sales_invoice.save()
self.assertEqual(sales_invoice.items[0].item_tax_template, "_Test Account Excise Duty @ 10 - _TC") self.assertEqual(sales_invoice.items[0].item_tax_template, "_Test Account Excise Duty @ 10 - _TC")
@change_settings("Selling Settings", {"enable_discount_accounting": 1}) @IntegrationTestCase.change_settings("Selling Settings", {"enable_discount_accounting": 1})
def test_sales_invoice_with_discount_accounting_enabled(self): def test_sales_invoice_with_discount_accounting_enabled(self):
discount_account = create_account( discount_account = create_account(
account_name="Discount Account", account_name="Discount Account",
@@ -2902,7 +2915,7 @@ class TestSalesInvoice(FrappeTestCase):
check_gl_entries(self, si.name, expected_gle, add_days(nowdate(), -1)) check_gl_entries(self, si.name, expected_gle, add_days(nowdate(), -1))
@change_settings("Selling Settings", {"enable_discount_accounting": 1}) @IntegrationTestCase.change_settings("Selling Settings", {"enable_discount_accounting": 1})
def test_additional_discount_for_sales_invoice_with_discount_accounting_enabled(self): def test_additional_discount_for_sales_invoice_with_discount_accounting_enabled(self):
from erpnext.accounts.doctype.repost_accounting_ledger.test_repost_accounting_ledger import ( from erpnext.accounts.doctype.repost_accounting_ledger.test_repost_accounting_ledger import (
update_repost_settings, update_repost_settings,
@@ -3336,7 +3349,7 @@ class TestSalesInvoice(FrappeTestCase):
si.commission_rate = commission_rate si.commission_rate = commission_rate
self.assertRaises(frappe.ValidationError, si.save) self.assertRaises(frappe.ValidationError, si.save)
@change_settings("Accounts Settings", {"acc_frozen_upto": add_days(getdate(), 1)}) @IntegrationTestCase.change_settings("Accounts Settings", {"acc_frozen_upto": add_days(getdate(), 1)})
def test_sales_invoice_submission_post_account_freezing_date(self): def test_sales_invoice_submission_post_account_freezing_date(self):
si = create_sales_invoice(do_not_save=True) si = create_sales_invoice(do_not_save=True)
si.posting_date = add_days(getdate(), 1) si.posting_date = add_days(getdate(), 1)
@@ -3372,7 +3385,7 @@ class TestSalesInvoice(FrappeTestCase):
frappe.db.set_single_value("Accounts Settings", "over_billing_allowance", over_billing_allowance) frappe.db.set_single_value("Accounts Settings", "over_billing_allowance", over_billing_allowance)
@change_settings( @IntegrationTestCase.change_settings(
"Accounts Settings", "Accounts Settings",
{ {
"book_deferred_entries_via_journal_entry": 1, "book_deferred_entries_via_journal_entry": 1,
@@ -3492,7 +3505,9 @@ class TestSalesInvoice(FrappeTestCase):
account.disabled = 0 account.disabled = 0
account.save() account.save()
@change_settings("Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}) @IntegrationTestCase.change_settings(
"Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1}
)
def test_gain_loss_with_advance_entry(self): def test_gain_loss_with_advance_entry(self):
from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry
@@ -3655,7 +3670,7 @@ class TestSalesInvoice(FrappeTestCase):
set_advance_flag(company="_Test Company", flag=0, default_account="") set_advance_flag(company="_Test Company", flag=0, default_account="")
@change_settings("Selling Settings", {"customer_group": None, "territory": None}) @IntegrationTestCase.change_settings("Selling Settings", {"customer_group": None, "territory": None})
def test_sales_invoice_without_customer_group_and_territory(self): def test_sales_invoice_without_customer_group_and_territory(self):
# create a customer # create a customer
if not frappe.db.exists("Customer", "_Test Simple Customer"): if not frappe.db.exists("Customer", "_Test Simple Customer"):
@@ -3673,7 +3688,7 @@ class TestSalesInvoice(FrappeTestCase):
self.assertEqual(si.customer_group, None) self.assertEqual(si.customer_group, None)
self.assertEqual(si.territory, None) self.assertEqual(si.territory, None)
@change_settings("Selling Settings", {"allow_negative_rates_for_items": 0}) @IntegrationTestCase.change_settings("Selling Settings", {"allow_negative_rates_for_items": 0})
def test_sales_return_negative_rate(self): def test_sales_return_negative_rate(self):
si = create_sales_invoice(is_return=1, qty=-2, rate=-10, do_not_save=True) si = create_sales_invoice(is_return=1, qty=-2, rate=-10, do_not_save=True)
self.assertRaises(frappe.ValidationError, si.save) self.assertRaises(frappe.ValidationError, si.save)
@@ -4089,7 +4104,7 @@ class TestSalesInvoice(FrappeTestCase):
self.assertEqual(len(actual), 4) self.assertEqual(len(actual), 4)
self.assertEqual(expected, actual) self.assertEqual(expected, actual)
@change_settings("Accounts Settings", {"enable_common_party_accounting": True}) @IntegrationTestCase.change_settings("Accounts Settings", {"enable_common_party_accounting": True})
def test_common_party_with_foreign_currency_jv(self): def test_common_party_with_foreign_currency_jv(self):
from erpnext.accounts.doctype.account.test_account import create_account from erpnext.accounts.doctype.account.test_account import create_account
from erpnext.accounts.doctype.opening_invoice_creation_tool.test_opening_invoice_creation_tool import ( from erpnext.accounts.doctype.opening_invoice_creation_tool.test_opening_invoice_creation_tool import (
@@ -4341,7 +4356,7 @@ def create_sales_invoice_against_cost_center(**args):
return si return si
test_dependencies = ["Journal Entry", "Contact", "Address"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Journal Entry", "Contact", "Address"]
test_records = frappe.get_test_records("Sales Invoice") test_records = frappe.get_test_records("Sales Invoice")

View File

@@ -69,7 +69,7 @@ def valdiate_taxes_and_charges_template(doc):
for tax in doc.get("taxes"): for tax in doc.get("taxes"):
validate_taxes_and_charges(tax) validate_taxes_and_charges(tax)
validate_account_head(tax.idx, tax.account_head, doc.company) validate_account_head(tax.idx, tax.account_head, doc.company, _("Taxes and Charges"))
validate_cost_center(tax, doc) validate_cost_center(tax, doc)
validate_inclusive_tax(tax, doc) validate_inclusive_tax(tax, doc)

View File

@@ -1,12 +1,12 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
test_records = frappe.get_test_records("Sales Taxes and Charges Template") test_records = frappe.get_test_records("Sales Taxes and Charges Template")
class TestSalesTaxesandChargesTemplate(unittest.TestCase): class TestSalesTaxesandChargesTemplate(IntegrationTestCase):
pass pass

View File

@@ -1,16 +1,16 @@
# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.share_transfer.share_transfer import ShareDontExists from erpnext.accounts.doctype.share_transfer.share_transfer import ShareDontExists
test_dependencies = ["Share Type", "Shareholder"] EXTRA_TEST_RECORD_DEPENDENCIES = ["Share Type", "Shareholder"]
class TestShareTransfer(unittest.TestCase): class TestShareTransfer(IntegrationTestCase):
def setUp(self): def setUp(self):
frappe.db.sql("delete from `tabShare Transfer`") frappe.db.sql("delete from `tabShare Transfer`")
frappe.db.sql("delete from `tabShare Balance`") frappe.db.sql("delete from `tabShare Balance`")

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestShareType(unittest.TestCase):
class TestShareType(IntegrationTestCase):
pass pass

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestShareholder(unittest.TestCase):
class TestShareholder(IntegrationTestCase):
pass pass

View File

@@ -1,9 +1,9 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.shipping_rule.shipping_rule import ( from erpnext.accounts.doctype.shipping_rule.shipping_rule import (
FromGreaterThanToError, FromGreaterThanToError,
@@ -14,7 +14,7 @@ from erpnext.accounts.doctype.shipping_rule.shipping_rule import (
test_records = frappe.get_test_records("Shipping Rule") test_records = frappe.get_test_records("Shipping Rule")
class TestShippingRule(unittest.TestCase): class TestShippingRule(IntegrationTestCase):
def test_from_greater_than_to(self): def test_from_greater_than_to(self):
shipping_rule = frappe.copy_doc(test_records[0]) shipping_rule = frappe.copy_doc(test_records[0])
shipping_rule.name = test_records[0].get("name") shipping_rule.name = test_records[0].get("name")

View File

@@ -3,7 +3,7 @@
import frappe import frappe
from frappe.tests.utils import FrappeTestCase from frappe.tests import IntegrationTestCase, UnitTestCase
from frappe.utils.data import ( from frappe.utils.data import (
add_days, add_days,
add_months, add_months,
@@ -18,10 +18,19 @@ from frappe.utils.data import (
from erpnext.accounts.doctype.subscription.subscription import get_prorata_factor from erpnext.accounts.doctype.subscription.subscription import get_prorata_factor
test_dependencies = ("UOM", "Item Group", "Item") EXTRA_TEST_RECORD_DEPENDENCIES = ("UOM", "Item Group", "Item")
class TestSubscription(FrappeTestCase): class UnitTestSubscription(UnitTestCase):
"""
Unit tests for Subscription.
Use this class for testing individual functions and methods.
"""
pass
class TestSubscription(IntegrationTestCase):
def setUp(self): def setUp(self):
make_plans() make_plans()
create_parties() create_parties()

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestSubscriptionInvoice(unittest.TestCase):
class TestSubscriptionInvoice(IntegrationTestCase):
pass pass

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestSubscriptionPlan(unittest.TestCase):
class TestSubscriptionPlan(IntegrationTestCase):
pass pass

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestSubscriptionSettings(unittest.TestCase):
class TestSubscriptionSettings(IntegrationTestCase):
pass pass

View File

@@ -1,8 +1,9 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
from frappe.tests import IntegrationTestCase
class TestTaxCategory(unittest.TestCase):
class TestTaxCategory(IntegrationTestCase):
pass pass

View File

@@ -1,9 +1,9 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt # See license.txt
import unittest import unittest
import frappe import frappe
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.tax_rule.tax_rule import ConflictingTaxRule, get_tax_template from erpnext.accounts.doctype.tax_rule.tax_rule import ConflictingTaxRule, get_tax_template
from erpnext.crm.doctype.opportunity.opportunity import make_quotation from erpnext.crm.doctype.opportunity.opportunity import make_quotation
@@ -12,7 +12,7 @@ from erpnext.crm.doctype.opportunity.test_opportunity import make_opportunity
test_records = frappe.get_test_records("Tax Rule") test_records = frappe.get_test_records("Tax Rule")
class TestTaxRule(unittest.TestCase): class TestTaxRule(IntegrationTestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
frappe.db.set_single_value("Shopping Cart Settings", "enabled", 0) frappe.db.set_single_value("Shopping Cart Settings", "enabled", 0)

Some files were not shown because too many files have changed in this diff Show More