refactor(treewide): formatting and ruff fixes, + manually enabled F401
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
diff --git a/erpnext/accounts/custom/address.py b/erpnext/accounts/custom/address.py
index 775a81f..ef57a63 100644
--- a/erpnext/accounts/custom/address.py
+++ b/erpnext/accounts/custom/address.py
@@ -11,14 +11,14 @@
def validate(self):
self.validate_reference()
self.update_compnay_address()
- super(ERPNextAddress, self).validate()
+ super().validate()
def link_address(self):
"""Link address based on owner"""
if self.is_your_company_address:
return
- return super(ERPNextAddress, self).link_address()
+ return super().link_address()
def update_compnay_address(self):
for link in self.get("links"):
@@ -26,11 +26,11 @@
self.is_your_company_address = 1
def validate_reference(self):
- if self.is_your_company_address and not [
- row for row in self.links if row.link_doctype == "Company"
- ]:
+ if self.is_your_company_address and not [row for row in self.links if row.link_doctype == "Company"]:
frappe.throw(
- _("Address needs to be linked to a Company. Please add a row for Company in the Links table."),
+ _(
+ "Address needs to be linked to a Company. Please add a row for Company in the Links table."
+ ),
title=_("Company Not Linked"),
)
diff --git a/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py b/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py
index f091a4f..01e6c48 100644
--- a/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py
+++ b/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py
@@ -37,7 +37,7 @@
filters = frappe.parse_json(filters) or frappe.parse_json(chart.filters_json)
account = filters.get("account")
- company = filters.get("company")
+ filters.get("company")
if not account and chart_name:
frappe.throw(
@@ -83,7 +83,6 @@
# get balances in debit
for entry in gl_entries:
-
# entry date is after the current pointer, so move the pointer forward
while getdate(entry.posting_date) > result[date_index][0]:
date_index += 1
@@ -133,8 +132,6 @@
dates = [get_period_ending(from_date, timegrain)]
while getdate(dates[-1]) < getdate(to_date):
- date = get_period_ending(
- add_to_date(dates[-1], years=years, months=months, days=days), timegrain
- )
+ date = get_period_ending(add_to_date(dates[-1], years=years, months=months, days=days), timegrain)
dates.append(date)
return dates
diff --git a/erpnext/accounts/deferred_revenue.py b/erpnext/accounts/deferred_revenue.py
index 367b017..3dc3e7a 100644
--- a/erpnext/accounts/deferred_revenue.py
+++ b/erpnext/accounts/deferred_revenue.py
@@ -24,14 +24,10 @@
def validate_service_stop_date(doc):
"""Validates service_stop_date for Purchase Invoice and Sales Invoice"""
- enable_check = (
- "enable_deferred_revenue" if doc.doctype == "Sales Invoice" else "enable_deferred_expense"
- )
+ enable_check = "enable_deferred_revenue" if doc.doctype == "Sales Invoice" else "enable_deferred_expense"
old_stop_dates = {}
- old_doc = frappe.db.get_all(
- "{0} Item".format(doc.doctype), {"parent": doc.name}, ["name", "service_stop_date"]
- )
+ old_doc = frappe.db.get_all(f"{doc.doctype} Item", {"parent": doc.name}, ["name", "service_stop_date"])
for d in old_doc:
old_stop_dates[d.name] = d.service_stop_date or ""
@@ -62,16 +58,14 @@
)
if account:
- conditions += "AND %s='%s'" % (deferred_account, account)
+ conditions += f"AND {deferred_account}='{account}'"
elif company:
conditions += f"AND p.company = {frappe.db.escape(company)}"
return conditions
-def convert_deferred_expense_to_expense(
- deferred_process, start_date=None, end_date=None, conditions=""
-):
+def convert_deferred_expense_to_expense(deferred_process, start_date=None, end_date=None, conditions=""):
# book the expense/income on the last day, but it will be trigger on the 1st of month at 12:00 AM
if not start_date:
@@ -81,16 +75,14 @@
# check for the purchase invoice for which GL entries has to be done
invoices = frappe.db.sql_list(
- """
+ f"""
select distinct item.parent
from `tabPurchase Invoice Item` item, `tabPurchase Invoice` p
where item.service_start_date<=%s and item.service_end_date>=%s
and item.enable_deferred_expense = 1 and item.parent=p.name
and item.docstatus = 1 and ifnull(item.amount, 0) > 0
- {0}
- """.format(
- conditions
- ),
+ {conditions}
+ """,
(end_date, start_date),
) # nosec
@@ -103,9 +95,7 @@
send_mail(deferred_process)
-def convert_deferred_revenue_to_income(
- deferred_process, start_date=None, end_date=None, conditions=""
-):
+def convert_deferred_revenue_to_income(deferred_process, start_date=None, end_date=None, conditions=""):
# book the expense/income on the last day, but it will be trigger on the 1st of month at 12:00 AM
if not start_date:
@@ -115,16 +105,14 @@
# check for the sales invoice for which GL entries has to be done
invoices = frappe.db.sql_list(
- """
+ f"""
select distinct item.parent
from `tabSales Invoice Item` item, `tabSales Invoice` p
where item.service_start_date<=%s and item.service_end_date>=%s
and item.enable_deferred_revenue = 1 and item.parent=p.name
and item.docstatus = 1 and ifnull(item.amount, 0) > 0
- {0}
- """.format(
- conditions
- ),
+ {conditions}
+ """,
(end_date, start_date),
) # nosec
@@ -243,9 +231,7 @@
already_booked_amount, already_booked_amount_in_account_currency = get_already_booked_amount(
doc, item
)
- base_amount = flt(
- item.base_net_amount - already_booked_amount, item.precision("base_net_amount")
- )
+ base_amount = flt(item.base_net_amount - already_booked_amount, item.precision("base_net_amount"))
if account_currency == doc.company_currency:
amount = base_amount
else:
@@ -265,17 +251,13 @@
if account_currency == doc.company_currency:
amount = base_amount
else:
- amount = flt(
- item.net_amount * total_booking_days / flt(total_days), item.precision("net_amount")
- )
+ amount = flt(item.net_amount * total_booking_days / flt(total_days), item.precision("net_amount"))
else:
already_booked_amount, already_booked_amount_in_account_currency = get_already_booked_amount(
doc, item
)
- base_amount = flt(
- item.base_net_amount - already_booked_amount, item.precision("base_net_amount")
- )
+ base_amount = flt(item.base_net_amount - already_booked_amount, item.precision("base_net_amount"))
if account_currency == doc.company_currency:
amount = base_amount
else:
@@ -296,26 +278,22 @@
gl_entries_details = frappe.db.sql(
"""
- select sum({0}) as total_credit, sum({1}) as total_credit_in_account_currency, voucher_detail_no
+ select sum({}) as total_credit, sum({}) as total_credit_in_account_currency, voucher_detail_no
from `tabGL Entry` where company=%s and account=%s and voucher_type=%s and voucher_no=%s and voucher_detail_no=%s
and is_cancelled = 0
group by voucher_detail_no
- """.format(
- total_credit_debit, total_credit_debit_currency
- ),
+ """.format(total_credit_debit, total_credit_debit_currency),
(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
as_dict=True,
)
journal_entry_details = frappe.db.sql(
"""
- SELECT sum(c.{0}) as total_credit, sum(c.{1}) as total_credit_in_account_currency, reference_detail_no
+ SELECT sum(c.{}) as total_credit, sum(c.{}) as total_credit_in_account_currency, reference_detail_no
FROM `tabJournal Entry` p , `tabJournal Entry Account` c WHERE p.name = c.parent and
p.company = %s and c.account=%s and c.reference_type=%s and c.reference_name=%s and c.reference_detail_no=%s
and p.docstatus < 2 group by reference_detail_no
- """.format(
- total_credit_debit, total_credit_debit_currency
- ),
+ """.format(total_credit_debit, total_credit_debit_currency),
(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
as_dict=True,
)
@@ -337,9 +315,7 @@
def book_deferred_income_or_expense(doc, deferred_process, posting_date=None):
- enable_check = (
- "enable_deferred_revenue" if doc.doctype == "Sales Invoice" else "enable_deferred_expense"
- )
+ enable_check = "enable_deferred_revenue" if doc.doctype == "Sales Invoice" else "enable_deferred_expense"
accounts_frozen_upto = frappe.db.get_single_value("Accounts Settings", "acc_frozen_upto")
@@ -440,9 +416,7 @@
via_journal_entry = cint(
frappe.db.get_singles_value("Accounts Settings", "book_deferred_entries_via_journal_entry")
)
- submit_journal_entry = cint(
- frappe.db.get_singles_value("Accounts Settings", "submit_journal_entries")
- )
+ submit_journal_entry = cint(frappe.db.get_singles_value("Accounts Settings", "submit_journal_entries"))
book_deferred_entries_based_on = frappe.db.get_singles_value(
"Accounts Settings", "book_deferred_entries_based_on"
)
@@ -462,9 +436,7 @@
posting_date = today()
if not cint(
- frappe.db.get_singles_value(
- "Accounts Settings", "automatically_process_deferred_accounting_entry"
- )
+ frappe.db.get_singles_value("Accounts Settings", "automatically_process_deferred_accounting_entry")
):
return
@@ -587,16 +559,13 @@
deferred_process=None,
submit="No",
):
-
if amount == 0:
return
journal_entry = frappe.new_doc("Journal Entry")
journal_entry.posting_date = posting_date
journal_entry.company = doc.company
- journal_entry.voucher_type = (
- "Deferred Revenue" if doc.doctype == "Sales Invoice" else "Deferred Expense"
- )
+ journal_entry.voucher_type = "Deferred Revenue" if doc.doctype == "Sales Invoice" else "Deferred Expense"
journal_entry.process_deferred_accounting = deferred_process
debit_entry = {
@@ -645,7 +614,6 @@
def get_deferred_booking_accounts(doctype, voucher_detail_no, dr_or_cr):
-
if doctype == "Sales Invoice":
credit_account, debit_account = frappe.db.get_value(
"Sales Invoice Item",
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index 3f11798..db95d6c 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -88,12 +88,10 @@
if frappe.local.flags.ignore_update_nsm:
return
else:
- super(Account, self).on_update()
+ super().on_update()
def onload(self):
- frozen_accounts_modifier = frappe.db.get_single_value(
- "Accounts Settings", "frozen_accounts_modifier"
- )
+ frozen_accounts_modifier = frappe.db.get_single_value("Accounts Settings", "frozen_accounts_modifier")
if not frozen_accounts_modifier or frozen_accounts_modifier in frappe.get_roles():
self.set_onload("can_freeze_account", True)
@@ -218,9 +216,7 @@
def validate_root_company_and_sync_account_to_children(self):
# ignore validation while creating new compnay or while syncing to child companies
- if (
- frappe.local.flags.ignore_root_company_validation or self.flags.ignore_root_company_validation
- ):
+ if frappe.local.flags.ignore_root_company_validation or self.flags.ignore_root_company_validation:
return
ancestors = get_root_company(self.company)
if ancestors:
@@ -418,7 +414,7 @@
if self.check_gle_exists():
throw(_("Account with existing transaction can not be deleted"))
- super(Account, self).on_trash(True)
+ super().on_trash(True)
@frappe.whitelist()
@@ -426,9 +422,8 @@
def get_parent_account(doctype, txt, searchfield, start, page_len, filters):
return frappe.db.sql(
"""select name from tabAccount
- where is_group = 1 and docstatus != 2 and company = %s
- and %s like %s order by name limit %s offset %s"""
- % ("%s", searchfield, "%s", "%s", "%s"),
+ where is_group = 1 and docstatus != 2 and company = {}
+ and {} like {} order by name limit {} offset {}""".format("%s", searchfield, "%s", "%s", "%s"),
(filters["company"], "%%%s%%" % txt, page_len, start),
as_list=1,
)
@@ -594,7 +589,5 @@
if old_acc_number:
filters["account_number"] = old_acc_number
- for d in frappe.db.get_values(
- "Account", filters=filters, fieldname=["company", "name"], as_dict=True
- ):
+ for d in frappe.db.get_values("Account", filters=filters, fieldname=["company", "name"], as_dict=True):
update_account_number(d["name"], account_name, account_number, from_descendant=True)
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py
index 05ff2a1..0ddae1b 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py
@@ -31,7 +31,6 @@
"tax_rate",
"account_currency",
]:
-
account_number = cstr(child.get("account_number")).strip()
account_name, account_name_in_db = add_suffix_if_duplicate(
account_name, account_number, accounts
@@ -39,7 +38,9 @@
is_group = identify_is_group(child)
report_type = (
- "Balance Sheet" if root_type in ["Asset", "Liability", "Equity"] else "Profit and Loss"
+ "Balance Sheet"
+ if root_type in ["Asset", "Liability", "Equity"]
+ else "Profit and Loss"
)
account = frappe.get_doc(
@@ -141,7 +142,7 @@
for fname in os.listdir(path):
fname = frappe.as_unicode(fname)
if fname.endswith(".json"):
- with open(os.path.join(path, fname), "r") as f:
+ with open(os.path.join(path, fname)) as f:
chart = f.read()
if chart and json.loads(chart).get("name") == chart_template:
return json.loads(chart).get("tree")
@@ -173,7 +174,7 @@
for fname in os.listdir(path):
fname = frappe.as_unicode(fname)
if (fname.startswith(country_code) or fname.startswith(country)) and fname.endswith(".json"):
- with open(os.path.join(path, fname), "r") as f:
+ with open(os.path.join(path, fname)) as f:
_get_chart_name(f.read())
# if more than one charts, returned then add the standard
@@ -249,7 +250,13 @@
def _get_account_names(account_master):
for account_name, child in account_master.items():
- if account_name not in ["account_number", "account_type", "root_type", "is_group", "tax_rate"]:
+ if account_name not in [
+ "account_number",
+ "account_type",
+ "root_type",
+ "is_group",
+ "tax_rate",
+ ]:
accounts.append(account_name)
_get_account_names(child)
diff --git a/erpnext/accounts/doctype/account/test_account.py b/erpnext/accounts/doctype/account/test_account.py
index 7d0869b..be856bc 100644
--- a/erpnext/accounts/doctype/account/test_account.py
+++ b/erpnext/accounts/doctype/account/test_account.py
@@ -261,28 +261,20 @@
acc.insert()
self.assertTrue(
- frappe.db.exists(
- "Account", {"account_name": "Test Group Account", "company": "_Test Company 4"}
- )
+ frappe.db.exists("Account", {"account_name": "Test Group Account", "company": "_Test Company 4"})
)
self.assertTrue(
- frappe.db.exists(
- "Account", {"account_name": "Test Group Account", "company": "_Test Company 5"}
- )
+ frappe.db.exists("Account", {"account_name": "Test Group Account", "company": "_Test Company 5"})
)
# Try renaming child company account
acc_tc_5 = frappe.db.get_value(
"Account", {"account_name": "Test Group Account", "company": "_Test Company 5"}
)
- self.assertRaises(
- frappe.ValidationError, update_account_number, acc_tc_5, "Test Modified Account"
- )
+ self.assertRaises(frappe.ValidationError, update_account_number, acc_tc_5, "Test Modified Account")
# Rename child company account with allow_account_creation_against_child_company enabled
- frappe.db.set_value(
- "Company", "_Test Company 5", "allow_account_creation_against_child_company", 1
- )
+ frappe.db.set_value("Company", "_Test Company 5", "allow_account_creation_against_child_company", 1)
update_account_number(acc_tc_5, "Test Modified Account")
self.assertTrue(
@@ -291,9 +283,7 @@
)
)
- frappe.db.set_value(
- "Company", "_Test Company 5", "allow_account_creation_against_child_company", 0
- )
+ frappe.db.set_value("Company", "_Test Company 5", "allow_account_creation_against_child_company", 0)
to_delete = [
"Test Group Account - _TC3",
@@ -318,9 +308,7 @@
self.assertEqual(acc.account_currency, "INR")
# Make a JV against this account
- make_journal_entry(
- "Test Currency Account - _TC", "Miscellaneous Expenses - _TC", 100, submit=True
- )
+ make_journal_entry("Test Currency Account - _TC", "Miscellaneous Expenses - _TC", 100, submit=True)
acc.account_currency = "USD"
self.assertRaises(frappe.ValidationError, acc.save)
diff --git a/erpnext/accounts/doctype/account_closing_balance/account_closing_balance.py b/erpnext/accounts/doctype/account_closing_balance/account_closing_balance.py
index 65933ab..82821e1 100644
--- a/erpnext/accounts/doctype/account_closing_balance/account_closing_balance.py
+++ b/erpnext/accounts/doctype/account_closing_balance/account_closing_balance.py
@@ -40,16 +40,12 @@
def make_closing_entries(closing_entries, voucher_name, company, closing_date):
accounting_dimensions = get_accounting_dimensions()
- previous_closing_entries = get_previous_closing_entries(
- company, closing_date, accounting_dimensions
- )
+ previous_closing_entries = get_previous_closing_entries(company, closing_date, accounting_dimensions)
combined_entries = closing_entries + previous_closing_entries
- merged_entries = aggregate_with_last_account_closing_balance(
- combined_entries, accounting_dimensions
- )
+ merged_entries = aggregate_with_last_account_closing_balance(combined_entries, accounting_dimensions)
- for key, value in merged_entries.items():
+ for _key, value in merged_entries.items():
cle = frappe.new_doc("Account Closing Balance")
cle.update(value)
cle.update(value["dimensions"])
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
index 41af06f..db99bcd 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
@@ -40,7 +40,8 @@
self.set_fieldname_and_label()
def validate(self):
- if self.document_type in core_doctypes_list + (
+ if self.document_type in (
+ *core_doctypes_list,
"Accounting Dimension",
"Project",
"Cost Center",
@@ -48,13 +49,10 @@
"Company",
"Account",
):
-
msg = _("Not allowed to create accounting dimension for {0}").format(self.document_type)
frappe.throw(msg)
- exists = frappe.db.get_value(
- "Accounting Dimension", {"document_type": self.document_type}, ["name"]
- )
+ exists = frappe.db.get_value("Accounting Dimension", {"document_type": self.document_type}, ["name"])
if exists and self.is_new():
frappe.throw(_("Document Type already used as a dimension"))
@@ -113,7 +111,6 @@
repostable_doctypes = get_allowed_types_from_settings()
for doctype in doclist:
-
if (doc_count + 1) % 2 == 0:
insert_after_field = "dimension_col_break"
else:
@@ -148,7 +145,7 @@
df.update(
{
"insert_after": "cost_center",
- "depends_on": "eval:doc.budget_against == '{0}'".format(doc.document_type),
+ "depends_on": f"eval:doc.budget_against == '{doc.document_type}'",
}
)
@@ -182,19 +179,17 @@
frappe.db.sql(
"""
DELETE FROM `tabCustom Field`
- WHERE fieldname = %s
- AND dt IN (%s)"""
- % ("%s", ", ".join(["%s"] * len(doclist))), # nosec
- tuple([doc.fieldname] + doclist),
+ WHERE fieldname = {}
+ AND dt IN ({})""".format("%s", ", ".join(["%s"] * len(doclist))), # nosec
+ tuple([doc.fieldname, *doclist]),
)
frappe.db.sql(
"""
DELETE FROM `tabProperty Setter`
- WHERE field_name = %s
- AND doc_type IN (%s)"""
- % ("%s", ", ".join(["%s"] * len(doclist))), # nosec
- tuple([doc.fieldname] + doclist),
+ WHERE field_name = {}
+ AND doc_type IN ({})""".format("%s", ", ".join(["%s"] * len(doclist))), # nosec
+ tuple([doc.fieldname, *doclist]),
)
budget_against_property = frappe.get_doc("Property Setter", "Budget-budget_against-options")
@@ -243,7 +238,6 @@
def get_accounting_dimensions(as_list=True, filters=None):
-
if not filters:
filters = {"disabled": 0}
@@ -274,7 +268,6 @@
def get_dimension_with_children(doctype, dimensions):
-
if isinstance(dimensions, str):
dimensions = [dimensions]
@@ -282,9 +275,7 @@
for dimension in dimensions:
lft, rgt = frappe.db.get_value(doctype, dimension, ["lft", "rgt"])
- children = frappe.get_all(
- doctype, filters={"lft": [">=", lft], "rgt": ["<=", rgt]}, order_by="lft"
- )
+ children = frappe.get_all(doctype, filters={"lft": [">=", lft], "rgt": ["<=", rgt]}, order_by="lft")
all_dimensions += [c.name for c in children]
return all_dimensions
@@ -292,14 +283,10 @@
@frappe.whitelist()
def get_dimensions(with_cost_center_and_project=False):
-
c = frappe.qb.DocType("Accounting Dimension Detail")
p = frappe.qb.DocType("Accounting Dimension")
dimension_filters = (
- frappe.qb.from_(p)
- .select(p.label, p.fieldname, p.document_type)
- .where(p.disabled == 0)
- .run(as_dict=1)
+ frappe.qb.from_(p).select(p.label, p.fieldname, p.document_type).where(p.disabled == 0).run(as_dict=1)
)
default_dimensions = (
frappe.qb.from_(c)
diff --git a/erpnext/accounts/doctype/accounting_dimension_filter/test_accounting_dimension_filter.py b/erpnext/accounts/doctype/accounting_dimension_filter/test_accounting_dimension_filter.py
index 3a7bf80..77057c1 100644
--- a/erpnext/accounts/doctype/accounting_dimension_filter/test_accounting_dimension_filter.py
+++ b/erpnext/accounts/doctype/accounting_dimension_filter/test_accounting_dimension_filter.py
@@ -57,9 +57,7 @@
def create_accounting_dimension_filter():
- if not frappe.db.get_value(
- "Accounting Dimension Filter", {"accounting_dimension": "Cost Center"}
- ):
+ if not frappe.db.get_value("Accounting Dimension Filter", {"accounting_dimension": "Cost Center"}):
frappe.get_doc(
{
"doctype": "Accounting Dimension Filter",
diff --git a/erpnext/accounts/doctype/accounting_period/accounting_period.py b/erpnext/accounts/doctype/accounting_period/accounting_period.py
index b32a231..172ef93 100644
--- a/erpnext/accounts/doctype/accounting_period/accounting_period.py
+++ b/erpnext/accounts/doctype/accounting_period/accounting_period.py
@@ -84,7 +84,10 @@
for doctype_for_closing in self.get_doctypes_for_closing():
self.append(
"closed_documents",
- {"document_type": doctype_for_closing.document_type, "closed": doctype_for_closing.closed},
+ {
+ "document_type": doctype_for_closing.document_type,
+ "closed": doctype_for_closing.closed,
+ },
)
diff --git a/erpnext/accounts/doctype/accounting_period/test_accounting_period.py b/erpnext/accounts/doctype/accounting_period/test_accounting_period.py
index 41d9479..16cae96 100644
--- a/erpnext/accounts/doctype/accounting_period/test_accounting_period.py
+++ b/erpnext/accounts/doctype/accounting_period/test_accounting_period.py
@@ -34,9 +34,7 @@
ap1 = create_accounting_period(period_name="Test Accounting Period 2")
ap1.save()
- doc = create_sales_invoice(
- do_not_save=1, cost_center="_Test Company - _TC", warehouse="Stores - _TC"
- )
+ doc = create_sales_invoice(do_not_save=1, cost_center="_Test Company - _TC", warehouse="Stores - _TC")
self.assertRaises(ClosedAccountingPeriod, doc.save)
def tearDown(self):
diff --git a/erpnext/accounts/doctype/bank_account/test_bank_account.py b/erpnext/accounts/doctype/bank_account/test_bank_account.py
index 8949524..0ec388d 100644
--- a/erpnext/accounts/doctype/bank_account/test_bank_account.py
+++ b/erpnext/accounts/doctype/bank_account/test_bank_account.py
@@ -37,11 +37,11 @@
try:
bank_account.validate_iban()
except ValidationError:
- msg = "BankAccount.validate_iban() failed for valid IBAN {}".format(iban)
+ msg = f"BankAccount.validate_iban() failed for valid IBAN {iban}"
self.fail(msg=msg)
for not_iban in invalid_ibans:
bank_account.iban = not_iban
- msg = "BankAccount.validate_iban() accepted invalid IBAN {}".format(not_iban)
+ msg = f"BankAccount.validate_iban() accepted invalid IBAN {not_iban}"
with self.assertRaises(ValidationError, msg=msg):
bank_account.validate_iban()
diff --git a/erpnext/accounts/doctype/bank_clearance/bank_clearance.py b/erpnext/accounts/doctype/bank_clearance/bank_clearance.py
index 8a505a8..63758a5 100644
--- a/erpnext/accounts/doctype/bank_clearance/bank_clearance.py
+++ b/erpnext/accounts/doctype/bank_clearance/bank_clearance.py
@@ -127,7 +127,7 @@
condition = "and (clearance_date IS NULL or clearance_date='0000-00-00')"
journal_entries = frappe.db.sql(
- """
+ f"""
select
"Journal Entry" as payment_document, t1.name as payment_entry,
t1.cheque_no as cheque_number, t1.cheque_date,
@@ -141,9 +141,7 @@
and ifnull(t1.is_opening, 'No') = 'No' {condition}
group by t2.account, t1.name
order by t1.posting_date ASC, t1.name DESC
- """.format(
- condition=condition
- ),
+ """,
{"account": account, "from": from_date, "to": to_date},
as_dict=1,
)
@@ -152,7 +150,7 @@
condition += "and bank_account = %(bank_account)s"
payment_entries = frappe.db.sql(
- """
+ f"""
select
"Payment Entry" as payment_document, name as payment_entry,
reference_no as cheque_number, reference_date as cheque_date,
@@ -167,9 +165,7 @@
{condition}
order by
posting_date ASC, name DESC
- """.format(
- condition=condition
- ),
+ """,
{
"account": account,
"from": from_date,
@@ -239,10 +235,7 @@
).run(as_dict=True)
entries = (
- list(payment_entries)
- + list(journal_entries)
- + list(pos_sales_invoices)
- + list(pos_purchase_invoices)
+ list(payment_entries) + list(journal_entries) + list(pos_sales_invoices) + list(pos_purchase_invoices)
)
return entries
diff --git a/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py b/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py
index ace751b..d785bfb 100644
--- a/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py
+++ b/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py
@@ -68,9 +68,7 @@
)
loan.submit()
make_loan_disbursement_entry(loan.name, loan.loan_amount, disbursement_date=getdate())
- repayment_entry = create_repayment_entry(
- loan.name, "_Test Customer", getdate(), loan.loan_amount
- )
+ repayment_entry = create_repayment_entry(loan.name, "_Test Customer", getdate(), loan.loan_amount)
repayment_entry.save()
repayment_entry.submit()
diff --git a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py
index 65158fc..77cb320 100644
--- a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py
+++ b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py
@@ -81,9 +81,7 @@
def get_account_balance(bank_account, till_date):
# returns account balance till the specified date
account = frappe.db.get_value("Bank Account", bank_account, "account")
- filters = frappe._dict(
- {"account": account, "report_date": till_date, "include_pos_transactions": 1}
- )
+ filters = frappe._dict({"account": account, "report_date": till_date, "include_pos_transactions": 1})
data = get_entries(filters)
balance_as_per_system = get_balance_on(filters["account"], filters["report_date"])
@@ -96,10 +94,7 @@
amounts_not_reflected_in_system = get_amounts_not_reflected_in_system(filters)
bank_bal = (
- flt(balance_as_per_system)
- - flt(total_debit)
- + flt(total_credit)
- + amounts_not_reflected_in_system
+ flt(balance_as_per_system) - flt(total_debit) + flt(total_credit) + amounts_not_reflected_in_system
)
return bank_bal
@@ -538,9 +533,7 @@
for query in queries:
matching_vouchers.extend(query.run(as_dict=True))
- return (
- sorted(matching_vouchers, key=lambda x: x["rank"], reverse=True) if matching_vouchers else []
- )
+ return sorted(matching_vouchers, key=lambda x: x["rank"], reverse=True) if matching_vouchers else []
def get_queries(
@@ -654,17 +647,13 @@
amount_rank = frappe.qb.terms.Case().when(amount_equality, 1).else_(0)
amount_condition = amount_equality if exact_match else getattr(bt, field) > 0.0
- ref_rank = (
- frappe.qb.terms.Case().when(bt.reference_number == transaction.reference_number, 1).else_(0)
- )
+ ref_rank = frappe.qb.terms.Case().when(bt.reference_number == transaction.reference_number, 1).else_(0)
unallocated_rank = (
frappe.qb.terms.Case().when(bt.unallocated_amount == transaction.unallocated_amount, 1).else_(0)
)
party_condition = (
- (bt.party_type == transaction.party_type)
- & (bt.party == transaction.party)
- & bt.party.isnotnull()
+ (bt.party_type == transaction.party_type) & (bt.party == transaction.party) & bt.party.isnotnull()
)
party_rank = frappe.qb.terms.Case().when(party_condition, 1).else_(0)
@@ -716,9 +705,7 @@
amount_condition = amount_equality if exact_match else pe.paid_amount > 0.0
party_condition = (
- (pe.party_type == transaction.party_type)
- & (pe.party == transaction.party)
- & pe.party.isnotnull()
+ (pe.party_type == transaction.party_type) & (pe.party == transaction.party) & pe.party.isnotnull()
)
party_rank = frappe.qb.terms.Case().when(party_condition, 1).else_(0)
@@ -749,7 +736,7 @@
.orderby(pe.reference_date if cint(filter_by_reference_date) else pe.posting_date)
)
- if frappe.flags.auto_reconcile_vouchers == True:
+ if frappe.flags.auto_reconcile_vouchers is True:
query = query.where(ref_condition)
return query
@@ -810,7 +797,7 @@
.orderby(je.cheque_date if cint(filter_by_reference_date) else je.posting_date)
)
- if frappe.flags.auto_reconcile_vouchers == True:
+ if frappe.flags.auto_reconcile_vouchers is True:
query = query.where(ref_condition)
return query
diff --git a/erpnext/accounts/doctype/bank_reconciliation_tool/test_bank_reconciliation_tool.py b/erpnext/accounts/doctype/bank_reconciliation_tool/test_bank_reconciliation_tool.py
index adf5925..3813052 100644
--- a/erpnext/accounts/doctype/bank_reconciliation_tool/test_bank_reconciliation_tool.py
+++ b/erpnext/accounts/doctype/bank_reconciliation_tool/test_bank_reconciliation_tool.py
@@ -1,12 +1,11 @@
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
-import unittest
import frappe
from frappe import qb
-from frappe.tests.utils import FrappeTestCase, change_settings
-from frappe.utils import add_days, flt, getdate, today
+from frappe.tests.utils import FrappeTestCase
+from frappe.utils import add_days, today
from erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool import (
auto_reconcile_vouchers,
@@ -22,7 +21,7 @@
self.create_customer()
self.clear_old_entries()
bank_dt = qb.DocType("Bank")
- q = qb.from_(bank_dt).delete().where(bank_dt.name == "HDFC").run()
+ qb.from_(bank_dt).delete().where(bank_dt.name == "HDFC").run()
self.create_bank_account()
def tearDown(self):
diff --git a/erpnext/accounts/doctype/bank_statement_import/bank_statement_import.py b/erpnext/accounts/doctype/bank_statement_import/bank_statement_import.py
index 6728fea..49684df 100644
--- a/erpnext/accounts/doctype/bank_statement_import/bank_statement_import.py
+++ b/erpnext/accounts/doctype/bank_statement_import/bank_statement_import.py
@@ -45,7 +45,7 @@
# end: auto-generated types
def __init__(self, *args, **kwargs):
- super(BankStatementImport, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
def validate(self):
doc_before_save = self.get_doc_before_save()
@@ -54,7 +54,6 @@
or (doc_before_save and doc_before_save.import_file != self.import_file)
or (doc_before_save and doc_before_save.google_sheets_url != self.google_sheets_url)
):
-
template_options_dict = {}
column_to_field_map = {}
bank = frappe.get_doc("Bank", self.bank)
@@ -69,7 +68,6 @@
self.validate_google_sheets_url()
def start_import(self):
-
preview = frappe.get_doc("Bank Statement Import", self.name).get_preview_from_template(
self.import_file, self.google_sheets_url
)
@@ -126,7 +124,7 @@
def parse_data_from_template(raw_data):
data = []
- for i, row in enumerate(raw_data):
+ for _i, row in enumerate(raw_data):
if all(v in INVALID_VALUES for v in row):
# empty row
continue
@@ -136,9 +134,7 @@
return data
-def start_import(
- data_import, bank_account, import_file_path, google_sheets_url, bank, template_options
-):
+def start_import(data_import, bank_account, import_file_path, google_sheets_url, bank, template_options):
"""This method runs in background job"""
update_mapping_db(bank, template_options)
diff --git a/erpnext/accounts/doctype/bank_transaction/auto_match_party.py b/erpnext/accounts/doctype/bank_transaction/auto_match_party.py
index 04dab4c..230407b 100644
--- a/erpnext/accounts/doctype/bank_transaction/auto_match_party.py
+++ b/erpnext/accounts/doctype/bank_transaction/auto_match_party.py
@@ -1,5 +1,3 @@
-from typing import Tuple, Union
-
import frappe
from frappe.utils import flt
from rapidfuzz import fuzz, process
@@ -19,7 +17,7 @@
def get(self, key):
return self.__dict__.get(key, None)
- def match(self) -> Union[Tuple, None]:
+ def match(self) -> tuple | None:
result = None
result = AutoMatchbyAccountIBAN(
bank_party_account_number=self.bank_party_account_number,
@@ -50,7 +48,7 @@
result = self.match_account_in_party()
return result
- def match_account_in_party(self) -> Union[Tuple, None]:
+ def match_account_in_party(self) -> tuple | None:
"""Check if there is a IBAN/Account No. match in Customer/Supplier/Employee"""
result = None
parties = get_parties_in_order(self.deposit)
@@ -97,7 +95,7 @@
def get(self, key):
return self.__dict__.get(key, None)
- def match(self) -> Union[Tuple, None]:
+ def match(self) -> tuple | None:
# fuzzy search by customer/supplier & employee
if not (self.bank_party_name or self.description):
return None
@@ -105,7 +103,7 @@
result = self.match_party_name_desc_in_party()
return result
- def match_party_name_desc_in_party(self) -> Union[Tuple, None]:
+ def match_party_name_desc_in_party(self) -> tuple | None:
"""Fuzzy search party name and/or description against parties in the system"""
result = None
parties = get_parties_in_order(self.deposit)
@@ -130,7 +128,7 @@
return result
- def fuzzy_search_and_return_result(self, party, names, field) -> Union[Tuple, None]:
+ def fuzzy_search_and_return_result(self, party, names, field) -> tuple | None:
skip = False
result = process.extract(
query=self.get(field),
@@ -147,7 +145,7 @@
party_name,
), skip
- def process_fuzzy_result(self, result: Union[list, None]):
+ def process_fuzzy_result(self, result: list | None):
"""
If there are multiple valid close matches return None as result may be faulty.
Return the result only if one accurate match stands out.
diff --git a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py
index 4246ba5..94a66d7 100644
--- a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py
+++ b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py
@@ -64,7 +64,9 @@
_(
"Transaction currency: {0} cannot be different from Bank Account({1}) currency: {2}"
).format(
- frappe.bold(self.currency), frappe.bold(self.bank_account), frappe.bold(account_currency)
+ frappe.bold(self.currency),
+ frappe.bold(self.bank_account),
+ frappe.bold(account_currency),
)
)
@@ -235,9 +237,7 @@
"""
gl_bank_account = frappe.db.get_value("Bank Account", transaction.bank_account, "account")
gles = get_related_bank_gl_entries(payment_entry.payment_document, payment_entry.payment_entry)
- bt_allocations = get_total_allocated_amount(
- payment_entry.payment_document, payment_entry.payment_entry
- )
+ bt_allocations = get_total_allocated_amount(payment_entry.payment_document, payment_entry.payment_entry)
unallocated_amount = min(
transaction.unallocated_amount,
@@ -332,7 +332,6 @@
def get_paid_amount(payment_entry, currency, gl_bank_account):
if payment_entry.payment_document in ["Payment Entry", "Sales Invoice", "Purchase Invoice"]:
-
paid_amount_field = "paid_amount"
if payment_entry.payment_document == "Payment Entry":
doc = frappe.get_doc("Payment Entry", payment_entry.payment_entry)
@@ -371,9 +370,7 @@
)
elif payment_entry.payment_document == "Loan Repayment":
- return frappe.db.get_value(
- payment_entry.payment_document, payment_entry.payment_entry, "amount_paid"
- )
+ return frappe.db.get_value(payment_entry.payment_document, payment_entry.payment_entry, "amount_paid")
elif payment_entry.payment_document == "Bank Transaction":
dep, wth = frappe.db.get_value(
@@ -383,9 +380,7 @@
else:
frappe.throw(
- "Please reconcile {0}: {1} manually".format(
- payment_entry.payment_document, payment_entry.payment_entry
- )
+ f"Please reconcile {payment_entry.payment_document}: {payment_entry.payment_entry} manually"
)
diff --git a/erpnext/accounts/doctype/bank_transaction/bank_transaction_upload.py b/erpnext/accounts/doctype/bank_transaction/bank_transaction_upload.py
index efb9d8c..a03f406 100644
--- a/erpnext/accounts/doctype/bank_transaction/bank_transaction_upload.py
+++ b/erpnext/accounts/doctype/bank_transaction/bank_transaction_upload.py
@@ -18,12 +18,12 @@
fcontent = frappe.local.uploaded_file
fname = frappe.local.uploaded_filename
- if frappe.safe_encode(fname).lower().endswith("csv".encode("utf-8")):
+ if frappe.safe_encode(fname).lower().endswith(b"csv"):
from frappe.utils.csvutils import read_csv_content
rows = read_csv_content(fcontent, False)
- elif frappe.safe_encode(fname).lower().endswith("xlsx".encode("utf-8")):
+ elif frappe.safe_encode(fname).lower().endswith(b"xlsx"):
from frappe.utils.xlsxutils import read_xlsx_file_from_attached_file
rows = read_xlsx_file_from_attached_file(fcontent=fcontent)
diff --git a/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py b/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py
index 1fe3608..3181a09 100644
--- a/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py
+++ b/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py
@@ -436,9 +436,7 @@
mode_of_payment = frappe.get_doc({"doctype": "Mode of Payment", "name": "Cash"})
- if not frappe.db.get_value(
- "Mode of Payment Account", {"company": "_Test Company", "parent": "Cash"}
- ):
+ if not frappe.db.get_value("Mode of Payment Account", {"company": "_Test Company", "parent": "Cash"}):
mode_of_payment.append("accounts", {"company": "_Test Company", "default_account": gl_account})
mode_of_payment.save()
diff --git a/erpnext/accounts/doctype/budget/budget.py b/erpnext/accounts/doctype/budget/budget.py
index aa77af6..15d51d4 100644
--- a/erpnext/accounts/doctype/budget/budget.py
+++ b/erpnext/accounts/doctype/budget/budget.py
@@ -70,10 +70,11 @@
select
b.name, ba.account from `tabBudget` b, `tabBudget Account` ba
where
- ba.parent = b.name and b.docstatus < 2 and b.company = %s and %s=%s and
- b.fiscal_year=%s and b.name != %s and ba.account in (%s) """
- % ("%s", budget_against_field, "%s", "%s", "%s", ",".join(["%s"] * len(accounts))),
- (self.company, budget_against, self.fiscal_year, self.name) + tuple(accounts),
+ ba.parent = b.name and b.docstatus < 2 and b.company = {} and {}={} and
+ b.fiscal_year={} and b.name != {} and ba.account in ({}) """.format(
+ "%s", budget_against_field, "%s", "%s", "%s", ",".join(["%s"] * len(accounts))
+ ),
+ (self.company, budget_against, self.fiscal_year, self.name, *tuple(accounts)),
as_dict=1,
)
@@ -96,12 +97,14 @@
if account_details.is_group:
frappe.throw(_("Budget cannot be assigned against Group Account {0}").format(d.account))
elif account_details.company != self.company:
- frappe.throw(_("Account {0} does not belongs to company {1}").format(d.account, self.company))
+ frappe.throw(
+ _("Account {0} does not belongs to company {1}").format(d.account, self.company)
+ )
elif account_details.report_type != "Profit and Loss":
frappe.throw(
- _("Budget cannot be assigned against {0}, as it's not an Income or Expense account").format(
- d.account
- )
+ _(
+ "Budget cannot be assigned against {0}, as it's not an Income or Expense account"
+ ).format(d.account)
)
if d.account in account_list:
@@ -148,9 +151,7 @@
"Company", args.get("company"), "exception_budget_approver_role"
)
- if not frappe.get_cached_value(
- "Budget", {"fiscal_year": args.fiscal_year, "company": args.company}
- ): # nosec
+ if not frappe.get_cached_value("Budget", {"fiscal_year": args.fiscal_year, "company": args.company}): # nosec
return
if not args.account:
@@ -181,30 +182,24 @@
and args.account
and (frappe.get_cached_value("Account", args.account, "root_type") == "Expense")
):
-
doctype = dimension.get("document_type")
if frappe.get_cached_value("DocType", doctype, "is_tree"):
lft, rgt = frappe.get_cached_value(doctype, args.get(budget_against), ["lft", "rgt"])
- condition = """and exists(select name from `tab%s`
- where lft<=%s and rgt>=%s and name=b.%s)""" % (
- doctype,
- lft,
- rgt,
- budget_against,
- ) # nosec
+ condition = f"""and exists(select name from `tab{doctype}`
+ where lft<={lft} and rgt>={rgt} and name=b.{budget_against})""" # nosec
args.is_tree = True
else:
- condition = "and b.%s=%s" % (budget_against, frappe.db.escape(args.get(budget_against)))
+ condition = f"and b.{budget_against}={frappe.db.escape(args.get(budget_against))}"
args.is_tree = False
args.budget_against_field = budget_against
args.budget_against_doctype = doctype
budget_records = frappe.db.sql(
- """
+ f"""
select
- b.{budget_against_field} as budget_against, ba.budget_amount, b.monthly_distribution,
+ b.{budget_against} as budget_against, ba.budget_amount, b.monthly_distribution,
ifnull(b.applicable_on_material_request, 0) as for_material_request,
ifnull(applicable_on_purchase_order, 0) as for_purchase_order,
ifnull(applicable_on_booking_actual_expenses,0) as for_actual_expenses,
@@ -217,9 +212,7 @@
b.name=ba.parent and b.fiscal_year=%s
and ba.account=%s and b.docstatus=1
{condition}
- """.format(
- condition=condition, budget_against_field=budget_against
- ),
+ """,
(args.fiscal_year, args.account),
as_dict=True,
) # nosec
@@ -247,7 +240,12 @@
args["month_end_date"] = get_last_day(args.posting_date)
compare_expense_with_budget(
- args, budget_amount, _("Accumulated Monthly"), monthly_action, budget.budget_against, amount
+ args,
+ budget_amount,
+ _("Accumulated Monthly"),
+ monthly_action,
+ budget.budget_against,
+ amount,
)
@@ -275,9 +273,8 @@
frappe.bold(fmt_money(diff, currency=currency)),
)
- if (
- frappe.flags.exception_approver_role
- and frappe.flags.exception_approver_role in frappe.get_roles(frappe.session.user)
+ if frappe.flags.exception_approver_role and frappe.flags.exception_approver_role in frappe.get_roles(
+ frappe.session.user
):
action = "Warn"
@@ -323,10 +320,8 @@
data = frappe.db.sql(
""" select ifnull((sum(child.stock_qty - child.ordered_qty) * rate), 0) as amount
from `tabMaterial Request Item` child, `tabMaterial Request` parent where parent.name = child.parent and
- child.item_code = %s and parent.docstatus = 1 and child.stock_qty > child.ordered_qty and {0} and
- parent.material_request_type = 'Purchase' and parent.status != 'Stopped'""".format(
- condition
- ),
+ child.item_code = %s and parent.docstatus = 1 and child.stock_qty > child.ordered_qty and {} and
+ parent.material_request_type = 'Purchase' and parent.status != 'Stopped'""".format(condition),
item_code,
as_list=1,
)
@@ -339,12 +334,10 @@
condition = get_other_condition(args, budget, "Purchase Order")
data = frappe.db.sql(
- """ select ifnull(sum(child.amount - child.billed_amt), 0) as amount
+ f""" select ifnull(sum(child.amount - child.billed_amt), 0) as amount
from `tabPurchase Order Item` child, `tabPurchase Order` parent where
parent.name = child.parent and child.item_code = %s and parent.docstatus = 1 and child.amount > child.billed_amt
- and parent.status != 'Closed' and {0}""".format(
- condition
- ),
+ and parent.status != 'Closed' and {condition}""",
item_code,
as_list=1,
)
@@ -357,7 +350,7 @@
budget_against_field = args.get("budget_against_field")
if budget_against_field and args.get(budget_against_field):
- condition += " and child.%s = '%s'" % (budget_against_field, args.get(budget_against_field))
+ condition += f" and child.{budget_against_field} = '{args.get(budget_against_field)}'"
if args.get("fiscal_year"):
date_field = "schedule_date" if for_doc == "Material Request" else "transaction_date"
@@ -365,12 +358,8 @@
"Fiscal Year", args.get("fiscal_year"), ["year_start_date", "year_end_date"]
)
- condition += """ and parent.%s
- between '%s' and '%s' """ % (
- date_field,
- start_date,
- end_date,
- )
+ condition += f""" and parent.{date_field}
+ between '{start_date}' and '{end_date}' """
return condition
@@ -392,18 +381,17 @@
condition2 = """and exists(select name from `tab{doctype}`
where lft>=%(lft)s and rgt<=%(rgt)s
and name=gle.{budget_against_field})""".format(
- doctype=args.budget_against_doctype, budget_against_field=budget_against_field # nosec
+ doctype=args.budget_against_doctype,
+ budget_against_field=budget_against_field, # nosec
)
else:
- condition2 = """and exists(select name from `tab{doctype}`
- where name=gle.{budget_against} and
- gle.{budget_against} = %({budget_against})s)""".format(
- doctype=args.budget_against_doctype, budget_against=budget_against_field
- )
+ condition2 = f"""and exists(select name from `tab{args.budget_against_doctype}`
+ where name=gle.{budget_against_field} and
+ gle.{budget_against_field} = %({budget_against_field})s)"""
amount = flt(
frappe.db.sql(
- """
+ f"""
select sum(gle.debit) - sum(gle.credit)
from `tabGL Entry` gle
where
@@ -414,9 +402,7 @@
and gle.company=%(company)s
and gle.docstatus=1
{condition2}
- """.format(
- condition1=condition1, condition2=condition2
- ),
+ """,
(args),
)[0][0]
) # nosec
diff --git a/erpnext/accounts/doctype/budget/test_budget.py b/erpnext/accounts/doctype/budget/test_budget.py
index 11af9a2..6d9a6f5 100644
--- a/erpnext/accounts/doctype/budget/test_budget.py
+++ b/erpnext/accounts/doctype/budget/test_budget.py
@@ -41,9 +41,7 @@
budget = make_budget(budget_against="Cost Center")
- frappe.db.set_value(
- "Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop"
- )
+ frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
@@ -63,9 +61,7 @@
budget = make_budget(budget_against="Cost Center")
- frappe.db.set_value(
- "Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop"
- )
+ frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
@@ -97,9 +93,7 @@
)
fiscal_year = get_fiscal_year(nowdate())[0]
- frappe.db.set_value(
- "Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop"
- )
+ frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
frappe.db.set_value("Budget", budget.name, "fiscal_year", fiscal_year)
mr = frappe.get_doc(
@@ -138,9 +132,7 @@
)
fiscal_year = get_fiscal_year(nowdate())[0]
- frappe.db.set_value(
- "Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop"
- )
+ frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
frappe.db.set_value("Budget", budget.name, "fiscal_year", fiscal_year)
po = create_purchase_order(transaction_date=nowdate(), do_not_submit=True)
@@ -158,9 +150,7 @@
budget = make_budget(budget_against="Project")
- frappe.db.set_value(
- "Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop"
- )
+ frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
project = frappe.get_value("Project", {"project_name": "_Test Project"})
@@ -223,7 +213,7 @@
if month > 9:
month = 9
- for i in range(month + 1):
+ for _i in range(month + 1):
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
"_Test Bank - _TC",
@@ -237,9 +227,7 @@
frappe.db.get_value("GL Entry", {"voucher_type": "Journal Entry", "voucher_no": jv.name})
)
- frappe.db.set_value(
- "Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop"
- )
+ frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
self.assertRaises(BudgetError, jv.cancel)
@@ -255,7 +243,7 @@
month = 9
project = frappe.get_value("Project", {"project_name": "_Test Project"})
- for i in range(month + 1):
+ for _i in range(month + 1):
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
"_Test Bank - _TC",
@@ -270,9 +258,7 @@
frappe.db.get_value("GL Entry", {"voucher_type": "Journal Entry", "voucher_no": jv.name})
)
- frappe.db.set_value(
- "Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop"
- )
+ frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
self.assertRaises(BudgetError, jv.cancel)
@@ -284,9 +270,7 @@
set_total_expense_zero(nowdate(), "cost_center", "_Test Cost Center 2 - _TC")
budget = make_budget(budget_against="Cost Center", cost_center="_Test Company - _TC")
- frappe.db.set_value(
- "Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop"
- )
+ frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
@@ -316,9 +300,7 @@
).insert(ignore_permissions=True)
budget = make_budget(budget_against="Cost Center", cost_center=cost_center)
- frappe.db.set_value(
- "Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop"
- )
+ frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
@@ -423,13 +405,11 @@
fiscal_year = get_fiscal_year(nowdate())[0]
if budget_against == "Project":
- project_name = "{0}%".format("_Test Project/" + fiscal_year)
+ project_name = "{}%".format("_Test Project/" + fiscal_year)
budget_list = frappe.get_all("Budget", fields=["name"], filters={"name": ("like", project_name)})
else:
- cost_center_name = "{0}%".format(cost_center or "_Test Cost Center - _TC/" + fiscal_year)
- budget_list = frappe.get_all(
- "Budget", fields=["name"], filters={"name": ("like", cost_center_name)}
- )
+ cost_center_name = "{}%".format(cost_center or "_Test Cost Center - _TC/" + fiscal_year)
+ budget_list = frappe.get_all("Budget", fields=["name"], filters={"name": ("like", cost_center_name)})
for d in budget_list:
frappe.db.sql("delete from `tabBudget` where name = %(name)s", d)
frappe.db.sql("delete from `tabBudget Account` where parent = %(name)s", d)
@@ -451,24 +431,18 @@
budget.action_if_annual_budget_exceeded = "Stop"
budget.action_if_accumulated_monthly_budget_exceeded = "Ignore"
budget.budget_against = budget_against
- budget.append(
- "accounts", {"account": "_Test Account Cost for Goods Sold - _TC", "budget_amount": 200000}
- )
+ budget.append("accounts", {"account": "_Test Account Cost for Goods Sold - _TC", "budget_amount": 200000})
if args.applicable_on_material_request:
budget.applicable_on_material_request = 1
- budget.action_if_annual_budget_exceeded_on_mr = (
- args.action_if_annual_budget_exceeded_on_mr or "Warn"
- )
+ budget.action_if_annual_budget_exceeded_on_mr = args.action_if_annual_budget_exceeded_on_mr or "Warn"
budget.action_if_accumulated_monthly_budget_exceeded_on_mr = (
args.action_if_accumulated_monthly_budget_exceeded_on_mr or "Warn"
)
if args.applicable_on_purchase_order:
budget.applicable_on_purchase_order = 1
- budget.action_if_annual_budget_exceeded_on_po = (
- args.action_if_annual_budget_exceeded_on_po or "Warn"
- )
+ budget.action_if_annual_budget_exceeded_on_po = args.action_if_annual_budget_exceeded_on_po or "Warn"
budget.action_if_accumulated_monthly_budget_exceeded_on_po = (
args.action_if_accumulated_monthly_budget_exceeded_on_po or "Warn"
)
diff --git a/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py b/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py
index 1c805cc..e24c7c9 100644
--- a/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py
+++ b/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py
@@ -38,9 +38,7 @@
def validate(self):
if self.import_file:
- get_coa(
- "Chart of Accounts Importer", "All Accounts", file_name=self.import_file, for_validate=1
- )
+ get_coa("Chart of Accounts Importer", "All Accounts", file_name=self.import_file, for_validate=1)
def validate_columns(data):
@@ -116,7 +114,7 @@
file_path = file_doc.get_full_path()
data = []
- with open(file_path, "r") as in_file:
+ with open(file_path) as in_file:
csv_reader = list(csv.reader(in_file))
headers = csv_reader[0]
del csv_reader[0] # delete top row and headers row
@@ -215,10 +213,10 @@
for row in data:
account_name, parent_account, account_number, parent_account_number = row[0:4]
if account_number:
- account_name = "{} - {}".format(account_number, account_name)
+ account_name = f"{account_number} - {account_name}"
if parent_account_number:
parent_account_number = cstr(parent_account_number).strip()
- parent_account = "{} - {}".format(parent_account_number, parent_account)
+ parent_account = f"{parent_account_number} - {parent_account}"
if parent_account == account_name == child:
return [parent_account]
@@ -230,7 +228,7 @@
frappe.bold(parent_account)
)
)
- return [child] + parent_account_list
+ return [child, *parent_account_list]
charts_map, paths = {}, []
@@ -250,12 +248,12 @@
) = i
if not account_name:
- error_messages.append("Row {0}: Please enter Account Name".format(line_no))
+ error_messages.append(f"Row {line_no}: Please enter Account Name")
name = account_name
if account_number:
account_number = cstr(account_number).strip()
- account_name = "{} - {}".format(account_number, account_name)
+ account_name = f"{account_number} - {account_name}"
charts_map[account_name] = {}
charts_map[account_name]["account_name"] = name
@@ -352,9 +350,9 @@
def get_sample_template(writer, company):
currency = frappe.db.get_value("Company", company, "default_currency")
- with open(os.path.join(os.path.dirname(__file__), "coa_sample_template.csv"), "r") as f:
+ with open(os.path.join(os.path.dirname(__file__), "coa_sample_template.csv")) as f:
for row in f:
- row = row.strip().split(",") + [currency]
+ row = [*row.strip().split(","), currency]
writer.writerow(row)
return writer
@@ -463,7 +461,7 @@
"Purchase Taxes and Charges Template",
]:
frappe.db.sql(
- '''delete from `tab{0}` where `company`="%s"'''.format(doctype) % (company) # nosec
+ f'''delete from `tab{doctype}` where `company`="%s"''' % (company) # nosec
)
diff --git a/erpnext/accounts/doctype/cheque_print_template/cheque_print_template.py b/erpnext/accounts/doctype/cheque_print_template/cheque_print_template.py
index 205bb29..4b1394e 100644
--- a/erpnext/accounts/doctype/cheque_print_template/cheque_print_template.py
+++ b/erpnext/accounts/doctype/cheque_print_template/cheque_print_template.py
@@ -66,71 +66,71 @@
cheque_print.html = """
<style>
- .print-format {
+ .print-format {{
padding: 0px;
- }
- @media screen {
- .print-format {
+ }}
+ @media screen {{
+ .print-format {{
padding: 0in;
- }
- }
+ }}
+ }}
</style>
-<div style="position: relative; top:%(starting_position_from_top_edge)scm">
- <div style="width:%(cheque_width)scm;height:%(cheque_height)scm;">
- <span style="top:%(acc_pay_dist_from_top_edge)scm; left:%(acc_pay_dist_from_left_edge)scm;
+<div style="position: relative; top:{starting_position_from_top_edge}cm">
+ <div style="width:{cheque_width}cm;height:{cheque_height}cm;">
+ <span style="top:{acc_pay_dist_from_top_edge}cm; left:{acc_pay_dist_from_left_edge}cm;
border-bottom: solid 1px;border-top:solid 1px; width:2cm;text-align: center; position: absolute;">
- %(message_to_show)s
+ {message_to_show}
</span>
- <span style="top:%(date_dist_from_top_edge)scm; left:%(date_dist_from_left_edge)scm;
+ <span style="top:{date_dist_from_top_edge}cm; left:{date_dist_from_left_edge}cm;
position: absolute;">
- {{ frappe.utils.formatdate(doc.reference_date) or '' }}
+ {{{{ frappe.utils.formatdate(doc.reference_date) or '' }}}}
</span>
- <span style="top:%(acc_no_dist_from_top_edge)scm;left:%(acc_no_dist_from_left_edge)scm;
+ <span style="top:{acc_no_dist_from_top_edge}cm;left:{acc_no_dist_from_left_edge}cm;
position: absolute; min-width: 6cm;">
- {{ doc.account_no or '' }}
+ {{{{ doc.account_no or '' }}}}
</span>
- <span style="top:%(payer_name_from_top_edge)scm;left: %(payer_name_from_left_edge)scm;
+ <span style="top:{payer_name_from_top_edge}cm;left: {payer_name_from_left_edge}cm;
position: absolute; min-width: 6cm;">
- {{doc.party_name}}
+ {{{{doc.party_name}}}}
</span>
- <span style="top:%(amt_in_words_from_top_edge)scm; left:%(amt_in_words_from_left_edge)scm;
- position: absolute; display: block; width: %(amt_in_word_width)scm;
- line-height:%(amt_in_words_line_spacing)scm; word-wrap: break-word;">
- {{frappe.utils.money_in_words(doc.base_paid_amount or doc.base_received_amount)}}
+ <span style="top:{amt_in_words_from_top_edge}cm; left:{amt_in_words_from_left_edge}cm;
+ position: absolute; display: block; width: {amt_in_word_width}cm;
+ line-height:{amt_in_words_line_spacing}cm; word-wrap: break-word;">
+ {{{{frappe.utils.money_in_words(doc.base_paid_amount or doc.base_received_amount)}}}}
</span>
- <span style="top:%(amt_in_figures_from_top_edge)scm;left: %(amt_in_figures_from_left_edge)scm;
+ <span style="top:{amt_in_figures_from_top_edge}cm;left: {amt_in_figures_from_left_edge}cm;
position: absolute; min-width: 4cm;">
- {{doc.get_formatted("base_paid_amount") or doc.get_formatted("base_received_amount")}}
+ {{{{doc.get_formatted("base_paid_amount") or doc.get_formatted("base_received_amount")}}}}
</span>
- <span style="top:%(signatory_from_top_edge)scm;left: %(signatory_from_left_edge)scm;
+ <span style="top:{signatory_from_top_edge}cm;left: {signatory_from_left_edge}cm;
position: absolute; min-width: 6cm;">
- {{doc.company}}
+ {{{{doc.company}}}}
</span>
</div>
-</div>""" % {
- "starting_position_from_top_edge": doc.starting_position_from_top_edge
+</div>""".format(
+ starting_position_from_top_edge=doc.starting_position_from_top_edge
if doc.cheque_size == "A4"
else 0.0,
- "cheque_width": doc.cheque_width,
- "cheque_height": doc.cheque_height,
- "acc_pay_dist_from_top_edge": doc.acc_pay_dist_from_top_edge,
- "acc_pay_dist_from_left_edge": doc.acc_pay_dist_from_left_edge,
- "message_to_show": doc.message_to_show if doc.message_to_show else _("Account Pay Only"),
- "date_dist_from_top_edge": doc.date_dist_from_top_edge,
- "date_dist_from_left_edge": doc.date_dist_from_left_edge,
- "acc_no_dist_from_top_edge": doc.acc_no_dist_from_top_edge,
- "acc_no_dist_from_left_edge": doc.acc_no_dist_from_left_edge,
- "payer_name_from_top_edge": doc.payer_name_from_top_edge,
- "payer_name_from_left_edge": doc.payer_name_from_left_edge,
- "amt_in_words_from_top_edge": doc.amt_in_words_from_top_edge,
- "amt_in_words_from_left_edge": doc.amt_in_words_from_left_edge,
- "amt_in_word_width": doc.amt_in_word_width,
- "amt_in_words_line_spacing": doc.amt_in_words_line_spacing,
- "amt_in_figures_from_top_edge": doc.amt_in_figures_from_top_edge,
- "amt_in_figures_from_left_edge": doc.amt_in_figures_from_left_edge,
- "signatory_from_top_edge": doc.signatory_from_top_edge,
- "signatory_from_left_edge": doc.signatory_from_left_edge,
- }
+ cheque_width=doc.cheque_width,
+ cheque_height=doc.cheque_height,
+ acc_pay_dist_from_top_edge=doc.acc_pay_dist_from_top_edge,
+ acc_pay_dist_from_left_edge=doc.acc_pay_dist_from_left_edge,
+ message_to_show=doc.message_to_show if doc.message_to_show else _("Account Pay Only"),
+ date_dist_from_top_edge=doc.date_dist_from_top_edge,
+ date_dist_from_left_edge=doc.date_dist_from_left_edge,
+ acc_no_dist_from_top_edge=doc.acc_no_dist_from_top_edge,
+ acc_no_dist_from_left_edge=doc.acc_no_dist_from_left_edge,
+ payer_name_from_top_edge=doc.payer_name_from_top_edge,
+ payer_name_from_left_edge=doc.payer_name_from_left_edge,
+ amt_in_words_from_top_edge=doc.amt_in_words_from_top_edge,
+ amt_in_words_from_left_edge=doc.amt_in_words_from_left_edge,
+ amt_in_word_width=doc.amt_in_word_width,
+ amt_in_words_line_spacing=doc.amt_in_words_line_spacing,
+ amt_in_figures_from_top_edge=doc.amt_in_figures_from_top_edge,
+ amt_in_figures_from_left_edge=doc.amt_in_figures_from_left_edge,
+ signatory_from_top_edge=doc.signatory_from_top_edge,
+ signatory_from_left_edge=doc.signatory_from_left_edge,
+ )
cheque_print.save(ignore_permissions=True)
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.py b/erpnext/accounts/doctype/cost_center/cost_center.py
index f662eb1..761369c 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.py
+++ b/erpnext/accounts/doctype/cost_center/cost_center.py
@@ -34,9 +34,7 @@
def autoname(self):
from erpnext.accounts.utils import get_autoname_with_number
- self.name = get_autoname_with_number(
- self.cost_center_number, self.cost_center_name, self.company
- )
+ self.name = get_autoname_with_number(self.cost_center_number, self.cost_center_name, self.company)
def validate(self):
self.validate_mandatory()
@@ -109,14 +107,14 @@
new_cost_center = get_name_with_abbr(newdn, self.company)
# Validate properties before merging
- super(CostCenter, self).before_rename(olddn, new_cost_center, merge, "is_group")
+ super().before_rename(olddn, new_cost_center, merge, "is_group")
if not merge:
new_cost_center = get_name_with_number(new_cost_center, self.cost_center_number)
return new_cost_center
def after_rename(self, olddn, newdn, merge=False):
- super(CostCenter, self).after_rename(olddn, newdn, merge)
+ super().after_rename(olddn, newdn, merge)
if not merge:
new_cost_center = frappe.db.get_value(
diff --git a/erpnext/accounts/doctype/cost_center/test_cost_center.py b/erpnext/accounts/doctype/cost_center/test_cost_center.py
index 2ec1609..7d01918 100644
--- a/erpnext/accounts/doctype/cost_center/test_cost_center.py
+++ b/erpnext/accounts/doctype/cost_center/test_cost_center.py
@@ -10,7 +10,6 @@
class TestCostCenter(unittest.TestCase):
def test_cost_center_creation_against_child_node(self):
-
if not frappe.db.get_value("Cost Center", {"name": "_Test Cost Center 2 - _TC"}):
frappe.get_doc(test_records[1]).insert()
diff --git a/erpnext/accounts/doctype/cost_center_allocation/cost_center_allocation.py b/erpnext/accounts/doctype/cost_center_allocation/cost_center_allocation.py
index 9ed5ddf..784ad27 100644
--- a/erpnext/accounts/doctype/cost_center_allocation/cost_center_allocation.py
+++ b/erpnext/accounts/doctype/cost_center_allocation/cost_center_allocation.py
@@ -48,7 +48,7 @@
# end: auto-generated types
def __init__(self, *args, **kwargs):
- super(CostCenterAllocation, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
self._skip_from_date_validation = False
def validate(self):
@@ -63,9 +63,7 @@
total_percentage = sum([d.percentage for d in self.get("allocation_percentages", [])])
if total_percentage != 100:
- frappe.throw(
- _("Total percentage against cost centers should be 100"), WrongPercentageAllocation
- )
+ frappe.throw(_("Total percentage against cost centers should be 100"), WrongPercentageAllocation)
def validate_from_date_based_on_existing_gle(self):
# Check if GLE exists against the main cost center
diff --git a/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.py b/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.py
index b8817c6..8cbb99e 100644
--- a/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.py
+++ b/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.py
@@ -43,7 +43,6 @@
def set_parameters_and_result(self):
if self.service_provider == "exchangerate.host":
-
if not self.access_key:
frappe.throw(
_("Access Key is required for Service Provider: {0}").format(
@@ -78,9 +77,7 @@
transaction_date=nowdate(), to_currency="INR", from_currency="USD"
)
- api_url = self.api_endpoint.format(
- transaction_date=nowdate(), to_currency="INR", from_currency="USD"
- )
+ api_url = self.api_endpoint.format(transaction_date=nowdate(), to_currency="INR", from_currency="USD")
try:
response = requests.get(api_url, params=params)
@@ -100,14 +97,14 @@
]
except Exception:
frappe.throw(_("Invalid result key. Response:") + " " + response.text)
- if not isinstance(value, (int, float)):
+ if not isinstance(value, int | float):
frappe.throw(_("Returned exchange rate is neither integer not float."))
self.url = response.url
@frappe.whitelist()
-def get_api_endpoint(service_provider: str = None, use_http: bool = False):
+def get_api_endpoint(service_provider: str | None = None, use_http: bool = False):
if service_provider and service_provider in ["exchangerate.host", "frankfurter.app"]:
if service_provider == "exchangerate.host":
api = "api.exchangerate.host/convert"
diff --git a/erpnext/accounts/doctype/dunning/test_dunning.py b/erpnext/accounts/doctype/dunning/test_dunning.py
index b29ace2..62a0c90 100644
--- a/erpnext/accounts/doctype/dunning/test_dunning.py
+++ b/erpnext/accounts/doctype/dunning/test_dunning.py
@@ -109,9 +109,7 @@
def create_dunning(overdue_days, dunning_type_name=None):
posting_date = add_days(today(), -1 * overdue_days)
- sales_invoice = create_sales_invoice_against_cost_center(
- posting_date=posting_date, qty=1, rate=100
- )
+ sales_invoice = create_sales_invoice_against_cost_center(posting_date=posting_date, qty=1, rate=100)
dunning = create_dunning_from_sales_invoice(sales_invoice.name)
if dunning_type_name:
diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py
index 29732ef..2b17779 100644
--- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py
+++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py
@@ -268,7 +268,6 @@
# Handle Accounts with '0' balance in Account/Base Currency
for d in [x for x in account_details if x.zero_balance]:
-
if d.balance != 0:
current_exchange_rate = new_exchange_rate = 0
@@ -281,7 +280,8 @@
new_balance_in_account_currency = 0
current_exchange_rate = (
- calculate_exchange_rate_using_last_gle(company, d.account, d.party_type, d.party) or 0.0
+ calculate_exchange_rate_using_last_gle(company, d.account, d.party_type, d.party)
+ or 0.0
)
gain_loss = new_balance_in_account_currency - (
@@ -335,9 +335,7 @@
revaluation_jv = self.make_jv_for_revaluation()
if revaluation_jv:
- frappe.msgprint(
- f"Revaluation Journal: {get_link_to_form('Journal Entry', revaluation_jv.name)}"
- )
+ frappe.msgprint(f"Revaluation Journal: {get_link_to_form('Journal Entry', revaluation_jv.name)}")
return {
"revaluation_jv": revaluation_jv.name if revaluation_jv else None,
@@ -394,7 +392,8 @@
journal_account.update(
{
dr_or_cr: flt(
- abs(d.get("balance_in_account_currency")), d.precision("balance_in_account_currency")
+ abs(d.get("balance_in_account_currency")),
+ d.precision("balance_in_account_currency"),
),
reverse_dr_or_cr: 0,
"debit": 0,
@@ -520,7 +519,9 @@
abs(d.get("balance_in_account_currency")), d.precision("balance_in_account_currency")
),
"cost_center": erpnext.get_default_cost_center(self.company),
- "exchange_rate": flt(d.get("current_exchange_rate"), d.precision("current_exchange_rate")),
+ "exchange_rate": flt(
+ d.get("current_exchange_rate"), d.precision("current_exchange_rate")
+ ),
"reference_type": "Exchange Rate Revaluation",
"reference_name": self.name,
}
@@ -598,7 +599,7 @@
@frappe.whitelist()
def get_account_details(
- company, posting_date, account, party_type=None, party=None, rounding_loss_allowance: float = None
+ company, posting_date, account, party_type=None, party=None, rounding_loss_allowance: float | None = None
):
if not (company and posting_date):
frappe.throw(_("Company and Posting Date is mandatory"))
@@ -611,7 +612,7 @@
frappe.throw(_("Party Type and Party is mandatory for {0} account").format(account_type))
account_details = {}
- company_currency = erpnext.get_company_currency(company)
+ erpnext.get_company_currency(company)
account_details = {
"account_currency": account_currency,
@@ -625,9 +626,7 @@
rounding_loss_allowance=rounding_loss_allowance,
)
- if account_balance and (
- account_balance[0].balance or account_balance[0].balance_in_account_currency
- ):
+ if account_balance and (account_balance[0].balance or account_balance[0].balance_in_account_currency):
if account_with_new_balance := ExchangeRateRevaluation.calculate_new_account_balance(
company, posting_date, account_balance
):
diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py
index e520872..51053f1 100644
--- a/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py
+++ b/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py
@@ -1,21 +1,14 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
-import unittest
import frappe
-from frappe import qb
from frappe.tests.utils import FrappeTestCase, change_settings
from frappe.utils import add_days, flt, today
-from erpnext import get_default_cost_center
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
-from erpnext.accounts.doctype.payment_entry.test_payment_entry import create_payment_entry
-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.party import get_party_account
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
-from erpnext.stock.doctype.item.test_item import create_item
class TestExchangeRateRevaluation(AccountsTestMixin, FrappeTestCase):
@@ -73,9 +66,7 @@
err.extend("accounts", accounts)
row = err.accounts[0]
row.new_exchange_rate = 85
- row.new_balance_in_base_currency = flt(
- row.new_exchange_rate * flt(row.balance_in_account_currency)
- )
+ row.new_balance_in_base_currency = flt(row.new_exchange_rate * flt(row.balance_in_account_currency))
row.gain_loss = row.new_balance_in_base_currency - flt(row.balance_in_base_currency)
err.set_total_gain_loss()
err = err.save().submit()
@@ -127,9 +118,9 @@
pe.save().submit()
# Cancel the auto created gain/loss JE to simulate balance only in base currency
- je = frappe.db.get_all(
- "Journal Entry Account", filters={"reference_name": si.name}, pluck="parent"
- )[0]
+ je = frappe.db.get_all("Journal Entry Account", filters={"reference_name": si.name}, pluck="parent")[
+ 0
+ ]
frappe.get_doc("Journal Entry", je).cancel()
err = frappe.new_doc("Exchange Rate Revaluation")
@@ -235,9 +226,9 @@
self.assertEqual(flt(acc.debit, precision), 0.0)
self.assertEqual(flt(acc.credit, precision), 0.0)
- row = [x for x in je.accounts if x.account == self.debtors_usd][0]
+ row = next(x for x in je.accounts if x.account == self.debtors_usd)
self.assertEqual(flt(row.credit_in_account_currency, precision), 5.0) # in USD
- row = [x for x in je.accounts if x.account != self.debtors_usd][0]
+ row = next(x for x in je.accounts if x.account != self.debtors_usd)
self.assertEqual(flt(row.debit_in_account_currency, precision), 421.06) # in INR
# total_debit and total_credit will be 0.0, as JV is posting only to account currency fields
@@ -294,5 +285,5 @@
"new_balance_in_account_currency": 100.0,
}
- for key, val in expected_data.items():
+ for key, _val in expected_data.items():
self.assertEqual(expected_data.get(key), account_details.get(key))
diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
index 85f3ffd..25aa3f3 100644
--- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
+++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
@@ -108,9 +108,9 @@
if overlap:
frappe.throw(
- _("Year start date or end date is overlapping with {0}. To avoid please set company").format(
- existing.name
- ),
+ _(
+ "Year start date or end date is overlapping with {0}. To avoid please set company"
+ ).format(existing.name),
frappe.NameError,
)
@@ -126,9 +126,9 @@
not frappe.flags.in_test
):
frappe.throw(
- _("Fiscal Year Start Date and Fiscal Year End Date are already set in Fiscal Year {0}").format(
- fiscal_year
- )
+ _(
+ "Fiscal Year Start Date and Fiscal Year End Date are already set in Fiscal Year {0}"
+ ).format(fiscal_year)
)
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index a6f6d4e..c494eec 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -105,13 +105,18 @@
]:
# Update outstanding amt on against voucher
if (
- self.against_voucher_type in ["Journal Entry", "Sales Invoice", "Purchase Invoice", "Fees"]
+ self.against_voucher_type
+ in ["Journal Entry", "Sales Invoice", "Purchase Invoice", "Fees"]
and self.against_voucher
and self.flags.update_outstanding == "Yes"
and not frappe.flags.is_reverse_depr_entry
):
update_outstanding_amt(
- self.account, self.party_type, self.party, self.against_voucher_type, self.against_voucher
+ self.account,
+ self.party_type,
+ self.party,
+ self.against_voucher_type,
+ self.against_voucher,
)
def check_mandatory(self):
@@ -180,9 +185,9 @@
):
if not self.get(dimension.fieldname):
frappe.throw(
- _("Accounting Dimension <b>{0}</b> is required for 'Profit and Loss' account {1}.").format(
- dimension.label, self.account
- )
+ _(
+ "Accounting Dimension <b>{0}</b> is required for 'Profit and Loss' account {1}."
+ ).format(dimension.label, self.account)
)
if (
@@ -193,9 +198,9 @@
):
if not self.get(dimension.fieldname):
frappe.throw(
- _("Accounting Dimension <b>{0}</b> is required for 'Balance Sheet' account {1}.").format(
- dimension.label, self.account
- )
+ _(
+ "Accounting Dimension <b>{0}</b> is required for 'Balance Sheet' account {1}."
+ ).format(dimension.label, self.account)
)
def check_pl_account(self):
@@ -243,9 +248,7 @@
if not self.cost_center:
return
- is_group, company = frappe.get_cached_value(
- "Cost Center", self.cost_center, ["is_group", "company"]
- )
+ is_group, company = frappe.get_cached_value("Cost Center", self.cost_center, ["is_group", "company"])
if company != self.company:
frappe.throw(
@@ -314,7 +317,7 @@
account, party_type, party, against_voucher_type, against_voucher, on_cancel=False
):
if party_type and party:
- party_condition = " and party_type={0} and party={1}".format(
+ party_condition = " and party_type={} and party={}".format(
frappe.db.escape(party_type), frappe.db.escape(party)
)
else:
@@ -322,23 +325,19 @@
if against_voucher_type == "Sales Invoice":
party_account = frappe.get_cached_value(against_voucher_type, against_voucher, "debit_to")
- account_condition = "and account in ({0}, {1})".format(
- frappe.db.escape(account), frappe.db.escape(party_account)
- )
+ account_condition = f"and account in ({frappe.db.escape(account)}, {frappe.db.escape(party_account)})"
else:
- account_condition = " and account = {0}".format(frappe.db.escape(account))
+ account_condition = f" and account = {frappe.db.escape(account)}"
# get final outstanding amt
bal = flt(
frappe.db.sql(
- """
+ f"""
select sum(debit_in_account_currency) - sum(credit_in_account_currency)
from `tabGL Entry`
where against_voucher_type=%s and against_voucher=%s
and voucher_type != 'Invoice Discounting'
- {0} {1}""".format(
- party_condition, account_condition
- ),
+ {party_condition} {account_condition}""",
(against_voucher_type, against_voucher),
)[0][0]
or 0.0
@@ -349,12 +348,10 @@
elif against_voucher_type == "Journal Entry":
against_voucher_amount = flt(
frappe.db.sql(
- """
+ f"""
select sum(debit_in_account_currency) - sum(credit_in_account_currency)
from `tabGL Entry` where voucher_type = 'Journal Entry' and voucher_no = %s
- and account = %s and (against_voucher is null or against_voucher='') {0}""".format(
- party_condition
- ),
+ and account = %s and (against_voucher is null or against_voucher='') {party_condition}""",
(against_voucher, account),
)[0][0]
)
@@ -373,7 +370,9 @@
# Validation : Outstanding can not be negative for JV
if bal < 0 and not on_cancel:
frappe.throw(
- _("Outstanding for {0} cannot be less than zero ({1})").format(against_voucher, fmt_money(bal))
+ _("Outstanding for {0} cannot be less than zero ({1})").format(
+ against_voucher, fmt_money(bal)
+ )
)
if against_voucher_type in ["Sales Invoice", "Purchase Invoice", "Fees"]:
@@ -446,7 +445,7 @@
set_name_from_naming_options(frappe.get_meta(doctype).autoname, doc)
newname = doc.name
frappe.db.sql(
- "UPDATE `tab{}` SET name = %s, to_rename = 0 where name = %s".format(doctype),
+ f"UPDATE `tab{doctype}` SET name = %s, to_rename = 0 where name = %s",
(newname, oldname),
auto_commit=True,
)
diff --git a/erpnext/accounts/doctype/gl_entry/test_gl_entry.py b/erpnext/accounts/doctype/gl_entry/test_gl_entry.py
index b188b09..3edfd67 100644
--- a/erpnext/accounts/doctype/gl_entry/test_gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/test_gl_entry.py
@@ -14,9 +14,7 @@
class TestGLEntry(unittest.TestCase):
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_cost_center", "_Test Cost Center - _TC"
- )
+ frappe.db.set_value("Company", "_Test Company", "round_off_cost_center", "_Test Cost Center - _TC")
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
@@ -73,7 +71,9 @@
)
self.assertTrue(all(entry.to_rename == 0 for entry in new_gl_entries))
- self.assertTrue(all(new.name != old.name for new, old in zip(gl_entries, new_gl_entries)))
+ self.assertTrue(
+ all(new.name != old.name for new, old in zip(gl_entries, new_gl_entries, strict=False))
+ )
new_naming_series_current_value = frappe.db.sql(
"SELECT current from tabSeries where name = %s", naming_series
diff --git a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.py b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.py
index 76f4dad..5d3c2b9 100644
--- a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.py
+++ b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.py
@@ -83,9 +83,7 @@
frappe.throw(
_(
"Row({0}): Outstanding Amount cannot be greater than actual Outstanding Amount {1} in {2}"
- ).format(
- record.idx, frappe.bold(actual_outstanding), frappe.bold(record.sales_invoice)
- )
+ ).format(record.idx, frappe.bold(actual_outstanding), frappe.bold(record.sales_invoice))
)
def calculate_total_amount(self):
@@ -105,7 +103,9 @@
self.status = status
self.db_set("status", status)
for d in self.invoices:
- frappe.get_doc("Sales Invoice", d.sales_invoice).set_status(update=True, update_modified=False)
+ frappe.get_doc("Sales Invoice", d.sales_invoice).set_status(
+ update=True, update_modified=False
+ )
else:
self.status = "Draft"
if self.docstatus == 1:
diff --git a/erpnext/accounts/doctype/invoice_discounting/test_invoice_discounting.py b/erpnext/accounts/doctype/invoice_discounting/test_invoice_discounting.py
index a85fdfc..65e3c3d 100644
--- a/erpnext/accounts/doctype/invoice_discounting/test_invoice_discounting.py
+++ b/erpnext/accounts/doctype/invoice_discounting/test_invoice_discounting.py
@@ -75,7 +75,7 @@
gle = get_gl_entries("Invoice Discounting", inv_disc.name)
expected_gle = {inv.debit_to: [0.0, 200], self.ar_credit: [200, 0.0]}
- for i, gle in enumerate(gle):
+ for _i, gle in enumerate(gle):
self.assertEqual([gle.debit, gle.credit], expected_gle.get(gle.account))
def test_loan_on_submit(self):
@@ -92,9 +92,7 @@
period=60,
)
self.assertEqual(inv_disc.status, "Sanctioned")
- self.assertEqual(
- inv_disc.loan_end_date, add_days(inv_disc.loan_start_date, inv_disc.loan_period)
- )
+ self.assertEqual(inv_disc.loan_end_date, add_days(inv_disc.loan_start_date, inv_disc.loan_period))
def test_on_disbursed(self):
inv = create_sales_invoice(rate=500)
@@ -262,13 +260,9 @@
je_on_payment.submit()
self.assertEqual(je_on_payment.accounts[0].account, self.ar_discounted)
- self.assertEqual(
- je_on_payment.accounts[0].credit_in_account_currency, flt(inv.outstanding_amount)
- )
+ self.assertEqual(je_on_payment.accounts[0].credit_in_account_currency, flt(inv.outstanding_amount))
self.assertEqual(je_on_payment.accounts[1].account, self.bank_account)
- self.assertEqual(
- je_on_payment.accounts[1].debit_in_account_currency, flt(inv.outstanding_amount)
- )
+ self.assertEqual(je_on_payment.accounts[1].debit_in_account_currency, flt(inv.outstanding_amount))
inv.reload()
self.assertEqual(inv.outstanding_amount, 0)
@@ -304,13 +298,9 @@
je_on_payment.submit()
self.assertEqual(je_on_payment.accounts[0].account, self.ar_unpaid)
- self.assertEqual(
- je_on_payment.accounts[0].credit_in_account_currency, flt(inv.outstanding_amount)
- )
+ self.assertEqual(je_on_payment.accounts[0].credit_in_account_currency, flt(inv.outstanding_amount))
self.assertEqual(je_on_payment.accounts[1].account, self.bank_account)
- self.assertEqual(
- je_on_payment.accounts[1].debit_in_account_currency, flt(inv.outstanding_amount)
- )
+ self.assertEqual(je_on_payment.accounts[1].debit_in_account_currency, flt(inv.outstanding_amount))
inv.reload()
self.assertEqual(inv.outstanding_amount, 0)
diff --git a/erpnext/accounts/doctype/item_tax_template/item_tax_template.py b/erpnext/accounts/doctype/item_tax_template/item_tax_template.py
index 8d3cdc8..02b7455 100644
--- a/erpnext/accounts/doctype/item_tax_template/item_tax_template.py
+++ b/erpnext/accounts/doctype/item_tax_template/item_tax_template.py
@@ -32,7 +32,7 @@
def autoname(self):
if self.company and self.title:
abbr = frappe.get_cached_value("Company", self.company, "abbr")
- self.name = "{0} - {1}".format(self.title, abbr)
+ self.name = f"{self.title} - {abbr}"
def validate_tax_accounts(self):
"""Check whether Tax Rate is not entered twice for same Tax Type"""
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 835d202..048b04b 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -112,7 +112,7 @@
# end: auto-generated types
def __init__(self, *args, **kwargs):
- super(JournalEntry, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
def validate(self):
if self.voucher_type == "Opening Entry":
@@ -191,7 +191,7 @@
def on_cancel(self):
# References for this Journal are removed on the `on_cancel` event in accounts_controller
- super(JournalEntry, self).on_cancel()
+ super().on_cancel()
self.ignore_linked_doctypes = (
"GL Entry",
"Stock Ledger Entry",
@@ -216,9 +216,9 @@
def update_advance_paid(self):
advance_paid = frappe._dict()
- advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_receivable_doctypes"
- ) + frappe.get_hooks("advance_payment_payable_doctypes")
+ advance_payment_doctypes = frappe.get_hooks("advance_payment_receivable_doctypes") + frappe.get_hooks(
+ "advance_payment_payable_doctypes"
+ )
for d in self.get("accounts"):
if d.is_advance:
if d.reference_type in advance_payment_doctypes:
@@ -229,10 +229,7 @@
frappe.get_doc(voucher_type, voucher_no).set_total_advance_paid()
def validate_inter_company_accounts(self):
- if (
- self.voucher_type == "Inter Company Journal Entry"
- and self.inter_company_journal_entry_reference
- ):
+ if self.voucher_type == "Inter Company Journal Entry" and self.inter_company_journal_entry_reference:
doc = frappe.get_doc("Journal Entry", self.inter_company_journal_entry_reference)
account_currency = frappe.get_cached_value("Company", self.company, "default_currency")
previous_account_currency = frappe.get_cached_value("Company", doc.company, "default_currency")
@@ -378,10 +375,7 @@
asset.set_status()
def update_inter_company_jv(self):
- if (
- self.voucher_type == "Inter Company Journal Entry"
- and self.inter_company_journal_entry_reference
- ):
+ if self.voucher_type == "Inter Company Journal Entry" and self.inter_company_journal_entry_reference:
frappe.db.set_value(
"Journal Entry",
self.inter_company_journal_entry_reference,
@@ -409,17 +403,25 @@
if d.account == inv_disc_doc.short_term_loan and d.reference_name == inv_disc:
if self.docstatus == 1:
if d.credit > 0:
- _validate_invoice_discounting_status(inv_disc, inv_disc_doc.status, "Sanctioned", d.idx)
+ _validate_invoice_discounting_status(
+ inv_disc, inv_disc_doc.status, "Sanctioned", d.idx
+ )
status = "Disbursed"
elif d.debit > 0:
- _validate_invoice_discounting_status(inv_disc, inv_disc_doc.status, "Disbursed", d.idx)
+ _validate_invoice_discounting_status(
+ inv_disc, inv_disc_doc.status, "Disbursed", d.idx
+ )
status = "Settled"
else:
if d.credit > 0:
- _validate_invoice_discounting_status(inv_disc, inv_disc_doc.status, "Disbursed", d.idx)
+ _validate_invoice_discounting_status(
+ inv_disc, inv_disc_doc.status, "Disbursed", d.idx
+ )
status = "Sanctioned"
elif d.debit > 0:
- _validate_invoice_discounting_status(inv_disc, inv_disc_doc.status, "Settled", d.idx)
+ _validate_invoice_discounting_status(
+ inv_disc, inv_disc_doc.status, "Settled", d.idx
+ )
status = "Disbursed"
break
if status:
@@ -488,10 +490,7 @@
)
def unlink_inter_company_jv(self):
- if (
- self.voucher_type == "Inter Company Journal Entry"
- and self.inter_company_journal_entry_reference
- ):
+ if self.voucher_type == "Inter Company Journal Entry" and self.inter_company_journal_entry_reference:
frappe.db.set_value(
"Journal Entry",
self.inter_company_journal_entry_reference,
@@ -513,9 +512,9 @@
if account_type in ["Receivable", "Payable"]:
if not (d.party_type and d.party):
frappe.throw(
- _("Row {0}: Party Type and Party is required for Receivable / Payable account {1}").format(
- d.idx, d.account
- )
+ _(
+ "Row {0}: Party Type and Party is required for Receivable / Payable account {1}"
+ ).format(d.idx, d.account)
)
elif (
d.party_type
@@ -580,16 +579,18 @@
def system_generated_gain_loss(self):
return (
- self.voucher_type == "Exchange Gain Or Loss"
- and self.multi_currency
- and self.is_system_generated
+ self.voucher_type == "Exchange Gain Or Loss" and self.multi_currency and self.is_system_generated
)
def validate_against_jv(self):
for d in self.get("accounts"):
if d.reference_type == "Journal Entry":
account_root_type = frappe.get_cached_value("Account", d.account, "root_type")
- if account_root_type == "Asset" and flt(d.debit) > 0 and not self.system_generated_gain_loss():
+ if (
+ account_root_type == "Asset"
+ and flt(d.debit) > 0
+ and not self.system_generated_gain_loss()
+ ):
frappe.throw(
_(
"Row #{0}: For {1}, you can select reference document only if account gets credited"
@@ -671,7 +672,9 @@
if d.reference_type == "Purchase Order" and flt(d.credit) > 0:
frappe.throw(
- _("Row {0}: Credit entry can not be linked with a {1}").format(d.idx, d.reference_type)
+ _("Row {0}: Credit entry can not be linked with a {1}").format(
+ d.idx, d.reference_type
+ )
)
# set totals
@@ -693,7 +696,10 @@
# check if party and account match
if d.reference_type in ("Sales Invoice", "Purchase Invoice"):
- if self.voucher_type in ("Deferred Revenue", "Deferred Expense") and d.reference_detail_no:
+ if (
+ self.voucher_type in ("Deferred Revenue", "Deferred Expense")
+ and d.reference_detail_no
+ ):
debit_or_credit = "Debit" if d.debit else "Credit"
party_account = get_deferred_booking_accounts(
d.reference_type, d.reference_detail_no, debit_or_credit
@@ -702,7 +708,8 @@
else:
if d.reference_type == "Sales Invoice":
party_account = (
- get_party_account_based_on_invoice_discounting(d.reference_name) or against_voucher[1]
+ get_party_account_based_on_invoice_discounting(d.reference_name)
+ or against_voucher[1]
)
else:
party_account = against_voucher[1]
@@ -826,7 +833,9 @@
if not (self.voucher_type == "Exchange Gain Or Loss" and self.multi_currency):
if self.difference:
frappe.throw(
- _("Total Debit must be equal to Total Credit. The difference is {0}").format(self.difference)
+ _("Total Debit must be equal to Total Credit. The difference is {0}").format(
+ self.difference
+ )
)
def set_total_debit_credit(self):
@@ -890,7 +899,6 @@
and self.posting_date
)
):
-
ignore_exchange_rate = False
if self.get("flags") and self.flags.get("ignore_exchange_rate"):
ignore_exchange_rate = True
@@ -1136,27 +1144,21 @@
self.validate_total_debit_and_credit()
def get_values(self):
- cond = (
- " and outstanding_amount <= {0}".format(self.write_off_amount)
- if flt(self.write_off_amount) > 0
- else ""
- )
+ cond = f" and outstanding_amount <= {self.write_off_amount}" if flt(self.write_off_amount) > 0 else ""
if self.write_off_based_on == "Accounts Receivable":
return frappe.db.sql(
"""select name, debit_to as account, customer as party, outstanding_amount
- from `tabSales Invoice` where docstatus = 1 and company = %s
- and outstanding_amount > 0 %s"""
- % ("%s", cond),
+ from `tabSales Invoice` where docstatus = 1 and company = {}
+ and outstanding_amount > 0 {}""".format("%s", cond),
self.company,
as_dict=True,
)
elif self.write_off_based_on == "Accounts Payable":
return frappe.db.sql(
"""select name, credit_to as account, supplier as party, outstanding_amount
- from `tabPurchase Invoice` where docstatus = 1 and company = %s
- and outstanding_amount > 0 %s"""
- % ("%s", cond),
+ from `tabPurchase Invoice` where docstatus = 1 and company = {}
+ and outstanding_amount > 0 {}""".format("%s", cond),
self.company,
as_dict=True,
)
@@ -1267,7 +1269,7 @@
"amount_field_bank": amount_field_bank,
"amount": amount,
"debit_in_account_currency": debit_in_account_currency,
- "remarks": "Advance Payment received against {0} {1}".format(dt, dn),
+ "remarks": f"Advance Payment received against {dt} {dn}",
"is_advance": "Yes",
"bank_account": bank_account,
"journal_entry": journal_entry,
@@ -1306,7 +1308,7 @@
"amount_field_bank": amount_field_bank,
"amount": amount if amount else abs(ref_doc.outstanding_amount),
"debit_in_account_currency": debit_in_account_currency,
- "remarks": "Payment received against {0} {1}. {2}".format(dt, dn, ref_doc.remarks),
+ "remarks": f"Payment received against {dt} {dn}. {ref_doc.remarks}",
"is_advance": "No",
"bank_account": bank_account,
"journal_entry": journal_entry,
@@ -1332,9 +1334,7 @@
)
je = frappe.new_doc("Journal Entry")
- je.update(
- {"voucher_type": "Bank Entry", "company": ref_doc.company, "remark": args.get("remarks")}
- )
+ je.update({"voucher_type": "Bank Entry", "company": ref_doc.company, "remark": args.get("remarks")})
party_row = je.append(
"accounts",
@@ -1357,9 +1357,7 @@
bank_row = je.append("accounts")
# Make it bank_details
- bank_account = get_default_bank_cash_account(
- ref_doc.company, "Bank", account=args.get("bank_account")
- )
+ bank_account = get_default_bank_cash_account(ref_doc.company, "Bank", account=args.get("bank_account"))
if bank_account:
bank_row.update(bank_account)
# Modified to include the posting date for which the exchange rate is required.
@@ -1399,7 +1397,7 @@
return []
return frappe.db.sql(
- """
+ f"""
SELECT jv.name, jv.posting_date, jv.user_remark
FROM `tabJournal Entry` jv, `tabJournal Entry Account` jv_detail
WHERE jv_detail.parent = jv.name
@@ -1410,16 +1408,14 @@
OR jv_detail.reference_type = ''
)
AND jv.docstatus = 1
- AND jv.`{0}` LIKE %(txt)s
+ AND jv.`{searchfield}` LIKE %(txt)s
ORDER BY jv.name DESC
LIMIT %(limit)s offset %(offset)s
- """.format(
- searchfield
- ),
+ """,
dict(
account=filters.get("account"),
party=cstr(filters.get("party")),
- txt="%{0}%".format(txt),
+ txt=f"%{txt}%",
offset=start,
limit=page_len,
),
@@ -1441,19 +1437,15 @@
condition = " and party=%(party)s" if args.get("party") else ""
against_jv_amount = frappe.db.sql(
- """
+ f"""
select sum(debit_in_account_currency) - sum(credit_in_account_currency)
- from `tabJournal Entry Account` where parent=%(docname)s and account=%(account)s {0}
- and (reference_type is null or reference_type = '')""".format(
- condition
- ),
+ from `tabJournal Entry Account` where parent=%(docname)s and account=%(account)s {condition}
+ and (reference_type is null or reference_type = '')""",
args,
)
against_jv_amount = flt(against_jv_amount[0][0]) if against_jv_amount else 0
- amount_field = (
- "credit_in_account_currency" if against_jv_amount > 0 else "debit_in_account_currency"
- )
+ amount_field = "credit_in_account_currency" if against_jv_amount > 0 else "debit_in_account_currency"
return {amount_field: abs(against_jv_amount)}
elif args.get("doctype") in ("Sales Invoice", "Purchase Invoice"):
party_type = "Customer" if args.get("doctype") == "Sales Invoice" else "Supplier"
@@ -1466,9 +1458,7 @@
due_date = invoice.get("due_date")
- exchange_rate = (
- invoice.conversion_rate if (args.get("account_currency") != company_currency) else 1
- )
+ exchange_rate = invoice.conversion_rate if (args.get("account_currency") != company_currency) else 1
if args["doctype"] == "Sales Invoice":
amount_field = (
@@ -1506,9 +1496,7 @@
@frappe.whitelist()
-def get_account_details_and_party_type(
- account, date, company, debit=None, credit=None, exchange_rate=None
-):
+def get_account_details_and_party_type(account, date, company, debit=None, credit=None, exchange_rate=None):
"""Returns dict of account details and party type to be set in Journal Entry on selection of account."""
if not frappe.has_permission("Account"):
frappe.msgprint(_("No Permission"), raise_exception=1)
diff --git a/erpnext/accounts/doctype/journal_entry/test_journal_entry.py b/erpnext/accounts/doctype/journal_entry/test_journal_entry.py
index 798d3bb..5bfb65a 100644
--- a/erpnext/accounts/doctype/journal_entry/test_journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/test_journal_entry.py
@@ -69,10 +69,8 @@
self.assertTrue(
frappe.db.sql(
- """select name from `tabJournal Entry Account`
- where reference_type = %s and reference_name = %s and {0}=400""".format(
- dr_or_cr
- ),
+ f"""select name from `tabJournal Entry Account`
+ where reference_type = %s and reference_name = %s and {dr_or_cr}=400""",
(submitted_voucher.doctype, submitted_voucher.name),
)
)
@@ -84,9 +82,8 @@
def advance_paid_testcase(self, base_jv, test_voucher, dr_or_cr):
# Test advance paid field
advance_paid = frappe.db.sql(
- """select advance_paid from `tab%s`
- where name=%s"""
- % (test_voucher.doctype, "%s"),
+ """select advance_paid from `tab{}`
+ where name={}""".format(test_voucher.doctype, "%s"),
(test_voucher.name),
)
payment_against_order = base_jv.get("accounts")[0].get(dr_or_cr)
@@ -159,9 +156,7 @@
jv.cancel()
def test_multi_currency(self):
- jv = make_journal_entry(
- "_Test Bank USD - _TC", "_Test Bank - _TC", 100, exchange_rate=50, save=False
- )
+ jv = make_journal_entry("_Test Bank USD - _TC", "_Test Bank - _TC", 100, exchange_rate=50, save=False)
jv.get("accounts")[1].credit_in_account_currency = 5000
jv.submit()
@@ -477,9 +472,7 @@
query = query.select(gl[field])
query = query.where(
- (gl.voucher_type == "Journal Entry")
- & (gl.voucher_no == self.voucher_no)
- & (gl.is_cancelled == 0)
+ (gl.voucher_type == "Journal Entry") & (gl.voucher_no == self.voucher_no) & (gl.is_cancelled == 0)
).orderby(gl.account)
gl_entries = query.run(as_dict=True)
diff --git a/erpnext/accounts/doctype/ledger_merge/test_ledger_merge.py b/erpnext/accounts/doctype/ledger_merge/test_ledger_merge.py
index 992ce9e..dccd73c 100644
--- a/erpnext/accounts/doctype/ledger_merge/test_ledger_merge.py
+++ b/erpnext/accounts/doctype/ledger_merge/test_ledger_merge.py
@@ -83,7 +83,10 @@
"account": "Indirect Income - _TC",
"merge_accounts": [
{"account": "Indirect Test Income - _TC", "account_name": "Indirect Test Income"},
- {"account": "Administrative Test Income - _TC", "account_name": "Administrative Test Income"},
+ {
+ "account": "Administrative Test Income - _TC",
+ "account_name": "Administrative Test Income",
+ },
],
}
).insert(ignore_permissions=True)
diff --git a/erpnext/accounts/doctype/loyalty_program/loyalty_program.py b/erpnext/accounts/doctype/loyalty_program/loyalty_program.py
index 463b3cd..f3ad84b 100644
--- a/erpnext/accounts/doctype/loyalty_program/loyalty_program.py
+++ b/erpnext/accounts/doctype/loyalty_program/loyalty_program.py
@@ -52,13 +52,11 @@
condition += " and expiry_date>='%s' " % expiry_date
loyalty_point_details = frappe.db.sql(
- """select sum(loyalty_points) as loyalty_points,
+ f"""select sum(loyalty_points) as loyalty_points,
sum(purchase_amount) as total_spent from `tabLoyalty Point Entry`
where customer=%s and loyalty_program=%s and posting_date <= %s
{condition}
- group by customer""".format(
- condition=condition
- ),
+ group by customer""",
(customer, loyalty_program, expiry_date),
as_dict=1,
)
@@ -79,9 +77,7 @@
include_expired_entry=False,
current_transaction_amount=0,
):
- lp_details = get_loyalty_program_details(
- customer, loyalty_program, company=company, silent=silent
- )
+ lp_details = get_loyalty_program_details(customer, loyalty_program, company=company, silent=silent)
loyalty_program = frappe.get_doc("Loyalty Program", loyalty_program)
lp_details.update(
get_loyalty_details(customer, loyalty_program.name, expiry_date, company, include_expired_entry)
diff --git a/erpnext/accounts/doctype/loyalty_program/test_loyalty_program.py b/erpnext/accounts/doctype/loyalty_program/test_loyalty_program.py
index cbfb17b..4d21fb6 100644
--- a/erpnext/accounts/doctype/loyalty_program/test_loyalty_program.py
+++ b/erpnext/accounts/doctype/loyalty_program/test_loyalty_program.py
@@ -19,9 +19,7 @@
create_records()
def test_loyalty_points_earned_single_tier(self):
- frappe.db.set_value(
- "Customer", "Test Loyalty Customer", "loyalty_program", "Test Single Loyalty"
- )
+ frappe.db.set_value("Customer", "Test Loyalty Customer", "loyalty_program", "Test Single Loyalty")
# create a new sales invoice
si_original = create_sales_invoice_record()
si_original.insert()
@@ -69,9 +67,7 @@
d.cancel()
def test_loyalty_points_earned_multiple_tier(self):
- frappe.db.set_value(
- "Customer", "Test Loyalty Customer", "loyalty_program", "Test Multiple Loyalty"
- )
+ frappe.db.set_value("Customer", "Test Loyalty Customer", "loyalty_program", "Test Multiple Loyalty")
# assign multiple tier program to the customer
customer = frappe.get_doc("Customer", {"customer_name": "Test Loyalty Customer"})
customer.loyalty_program = frappe.get_doc(
@@ -128,9 +124,7 @@
def test_cancel_sales_invoice(self):
"""cancelling the sales invoice should cancel the earned points"""
- frappe.db.set_value(
- "Customer", "Test Loyalty Customer", "loyalty_program", "Test Single Loyalty"
- )
+ frappe.db.set_value("Customer", "Test Loyalty Customer", "loyalty_program", "Test Single Loyalty")
# create a new sales invoice
si = create_sales_invoice_record()
si.insert()
@@ -148,9 +142,7 @@
self.assertEqual(True, (lpe is None))
def test_sales_invoice_return(self):
- frappe.db.set_value(
- "Customer", "Test Loyalty Customer", "loyalty_program", "Test Single Loyalty"
- )
+ frappe.db.set_value("Customer", "Test Loyalty Customer", "loyalty_program", "Test Single Loyalty")
# create a new sales invoice
si_original = create_sales_invoice_record(2)
si_original.conversion_rate = flt(1)
@@ -346,9 +338,7 @@
).insert()
# create item price
- if not frappe.db.exists(
- "Item Price", {"price_list": "Standard Selling", "item_code": "Loyal Item"}
- ):
+ if not frappe.db.exists("Item Price", {"price_list": "Standard Selling", "item_code": "Loyal Item"}):
frappe.get_doc(
{
"doctype": "Item Price",
diff --git a/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.py b/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.py
index 7270576..cda5f4b 100644
--- a/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.py
+++ b/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.py
@@ -54,9 +54,7 @@
total = sum(flt(d.percentage_allocation) for d in self.get("percentages"))
if flt(total, 2) != 100.0:
- frappe.throw(
- _("Percentage Allocation should be equal to 100%") + " ({0}%)".format(str(flt(total, 2)))
- )
+ frappe.throw(_("Percentage Allocation should be equal to 100%") + f" ({flt(total, 2)!s}%)")
def get_periodwise_distribution_data(distribution_id, period_list, periodicity):
diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py b/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py
index 02c2c67..378fbde 100644
--- a/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py
+++ b/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py
@@ -83,9 +83,7 @@
company = "_Test Opening Invoice Company"
party_1, party_2 = make_customer("Customer A"), make_customer("Customer B")
- old_default_receivable_account = frappe.db.get_value(
- "Company", company, "default_receivable_account"
- )
+ old_default_receivable_account = frappe.db.get_value("Company", company, "default_receivable_account")
frappe.db.set_value("Company", company, "default_receivable_account", "")
if not frappe.db.exists("Cost Center", "_Test Opening Invoice Company - _TOIC"):
@@ -121,9 +119,7 @@
self.assertTrue(error_log)
# teardown
- frappe.db.set_value(
- "Company", company, "default_receivable_account", old_default_receivable_account
- )
+ frappe.db.set_value("Company", company, "default_receivable_account", old_default_receivable_account)
def test_renaming_of_invoice_using_invoice_number_field(self):
company = "_Test Opening Invoice Company"
@@ -169,7 +165,7 @@
{
"qty": 1.0,
"outstanding_amount": 300,
- "party": args.get("party_1") or "_Test {0}".format(party),
+ "party": args.get("party_1") or f"_Test {party}",
"item_name": "Opening Item",
"due_date": "2016-09-10",
"posting_date": "2016-09-05",
@@ -179,7 +175,7 @@
{
"qty": 2.0,
"outstanding_amount": 250,
- "party": args.get("party_2") or "_Test {0} 1".format(party),
+ "party": args.get("party_2") or f"_Test {party} 1",
"item_name": "Opening Item",
"due_date": "2016-09-10",
"posting_date": "2016-09-05",
diff --git a/erpnext/accounts/doctype/party_link/party_link.py b/erpnext/accounts/doctype/party_link/party_link.py
index d60acce..16484fc 100644
--- a/erpnext/accounts/doctype/party_link/party_link.py
+++ b/erpnext/accounts/doctype/party_link/party_link.py
@@ -38,7 +38,10 @@
if existing_party_link:
frappe.throw(
_("{} {} is already linked with {} {}").format(
- self.primary_role, bold(self.primary_party), self.secondary_role, bold(self.secondary_party)
+ self.primary_role,
+ bold(self.primary_party),
+ self.secondary_role,
+ bold(self.secondary_party),
)
)
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index 4684aab..e2041bf 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -134,7 +134,7 @@
# end: auto-generated types
def __init__(self, *args, **kwargs):
- super(PaymentEntry, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
if not self.is_new():
self.setup_party_account_field()
@@ -247,7 +247,7 @@
"Unreconcile Payment",
"Unreconcile Payment Entries",
)
- super(PaymentEntry, self).on_cancel()
+ super().on_cancel()
self.make_gl_entries(cancel=1)
self.update_outstanding_amounts()
self.update_advance_paid()
@@ -357,9 +357,7 @@
# If term based allocation is enabled, throw
if (
d.payment_term is None or d.payment_term == ""
- ) and self.term_based_allocation_enabled_for_reference(
- d.reference_doctype, d.reference_name
- ):
+ ) and self.term_based_allocation_enabled_for_reference(d.reference_doctype, d.reference_name):
frappe.throw(
_(
"{0} has Payment Term based allocation enabled. Select a Payment Term for Row #{1} in Payment References section"
@@ -371,7 +369,9 @@
# The reference has already been fully paid
if not latest:
frappe.throw(
- _("{0} {1} has already been fully paid.").format(_(d.reference_doctype), d.reference_name)
+ _("{0} {1} has already been fully paid.").format(
+ _(d.reference_doctype), d.reference_name
+ )
)
# The reference has already been partly paid
elif (
@@ -395,14 +395,14 @@
and latest.payment_term_outstanding
and (flt(d.allocated_amount) > flt(latest.payment_term_outstanding))
)
- and self.term_based_allocation_enabled_for_reference(d.reference_doctype, d.reference_name)
+ and self.term_based_allocation_enabled_for_reference(
+ d.reference_doctype, d.reference_name
+ )
):
frappe.throw(
_(
"Row #{0}: Allocated amount:{1} is greater than outstanding amount:{2} for Payment Term {3}"
- ).format(
- d.idx, d.allocated_amount, latest.payment_term_outstanding, d.payment_term
- )
+ ).format(d.idx, d.allocated_amount, latest.payment_term_outstanding, d.payment_term)
)
if (flt(d.allocated_amount)) > 0 and flt(d.allocated_amount) > flt(latest.outstanding_amount):
@@ -445,7 +445,9 @@
if self.party:
if not self.contact_person:
- set_contact_details(self, party=frappe._dict({"name": self.party}), party_type=self.party_type)
+ set_contact_details(
+ self, party=frappe._dict({"name": self.party}), party_type=self.party_type
+ )
else:
complete_contact_details(self)
if not self.party_balance:
@@ -527,7 +529,9 @@
else:
if ref_doc:
if self.paid_from_account_currency == ref_doc.currency:
- self.source_exchange_rate = ref_doc.get("exchange_rate") or ref_doc.get("conversion_rate")
+ self.source_exchange_rate = ref_doc.get("exchange_rate") or ref_doc.get(
+ "conversion_rate"
+ )
if not self.source_exchange_rate:
self.source_exchange_rate = get_exchange_rate(
@@ -564,7 +568,7 @@
if d.reference_doctype not in valid_reference_doctypes:
frappe.throw(
_("Reference Doctype must be one of {0}").format(
- comma_or((_(d) for d in valid_reference_doctypes))
+ comma_or(_(d) for d in valid_reference_doctypes)
)
)
@@ -587,7 +591,8 @@
if d.reference_doctype in frappe.get_hooks("invoice_doctypes"):
if self.party_type == "Customer":
ref_party_account = (
- get_party_account_based_on_invoice_discounting(d.reference_name) or ref_doc.debit_to
+ get_party_account_based_on_invoice_discounting(d.reference_name)
+ or ref_doc.debit_to
)
elif self.party_type == "Supplier":
ref_party_account = ref_doc.credit_to
@@ -600,7 +605,10 @@
):
frappe.throw(
_("{0} {1} is associated with {2}, but Party Account is {3}").format(
- _(d.reference_doctype), d.reference_name, ref_party_account, self.party_account
+ _(d.reference_doctype),
+ d.reference_name,
+ ref_party_account,
+ self.party_account,
)
)
@@ -611,7 +619,9 @@
)
if ref_doc.docstatus != 1:
- frappe.throw(_("{0} {1} must be submitted").format(_(d.reference_doctype), d.reference_name))
+ frappe.throw(
+ _("{0} {1} must be submitted").format(_(d.reference_doctype), d.reference_name)
+ )
def get_valid_reference_doctypes(self):
if self.party_type == "Customer":
@@ -782,9 +792,7 @@
if not (is_single_currency and reference_is_multi_currency):
return allocated_amount
- allocated_amount = flt(
- allocated_amount / ref_exchange_rate, self.precision("total_allocated_amount")
- )
+ allocated_amount = flt(allocated_amount / ref_exchange_rate, self.precision("total_allocated_amount"))
return allocated_amount
@@ -847,7 +855,6 @@
accounts = []
for d in self.taxes:
if d.account_head == tax_withholding_details.get("account_head"):
-
# Preserve user updated included in paid amount
if d.included_in_paid_amount:
tax_withholding_details.update({"included_in_paid_amount": d.included_in_paid_amount})
@@ -953,9 +960,9 @@
def calculate_base_allocated_amount_for_reference(self, d) -> float:
base_allocated_amount = 0
- advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_receivable_doctypes"
- ) + frappe.get_hooks("advance_payment_payable_doctypes")
+ advance_payment_doctypes = frappe.get_hooks("advance_payment_receivable_doctypes") + frappe.get_hooks(
+ "advance_payment_payable_doctypes"
+ )
if d.reference_doctype in advance_payment_doctypes:
# When referencing Sales/Purchase Order, use the source/target exchange rate depending on payment type.
# This is so there are no Exchange Gain/Loss generated for such doctypes
@@ -970,7 +977,6 @@
flt(d.allocated_amount) * flt(exchange_rate), self.precision("base_paid_amount")
)
else:
-
# Use source/target exchange rate, so no difference amount is calculated.
# then update exchange gain/loss amount in reference table
# if there is an exchange gain/loss amount in reference table, submit a JE for that
@@ -1108,7 +1114,6 @@
)
]
else:
-
remarks = [
_("Amount {0} {1} {2} {3}").format(
_(self.party_account_currency),
@@ -1128,14 +1133,19 @@
if d.allocated_amount:
remarks.append(
_("Amount {0} {1} against {2} {3}").format(
- _(self.party_account_currency), d.allocated_amount, d.reference_doctype, d.reference_name
+ _(self.party_account_currency),
+ d.allocated_amount,
+ d.reference_doctype,
+ d.reference_name,
)
)
for d in self.get("deductions"):
if d.amount:
remarks.append(
- _("Amount {0} {1} deducted against {2}").format(_(self.company_currency), d.amount, d.account)
+ _("Amount {0} {1} deducted against {2}").format(
+ _(self.company_currency), d.amount, d.account
+ )
)
self.set("remarks", "\n".join(remarks))
@@ -1209,21 +1219,31 @@
dr_or_cr = "credit" if self.payment_type == "Receive" else "debit"
cost_center = self.cost_center
if d.reference_doctype == "Sales Invoice" and not cost_center:
- cost_center = frappe.db.get_value(d.reference_doctype, d.reference_name, "cost_center")
+ cost_center = frappe.db.get_value(
+ d.reference_doctype, d.reference_name, "cost_center"
+ )
gle = party_gl_dict.copy()
- allocated_amount_in_company_currency = self.calculate_base_allocated_amount_for_reference(d)
+ allocated_amount_in_company_currency = self.calculate_base_allocated_amount_for_reference(
+ d
+ )
reverse_dr_or_cr = 0
if d.reference_doctype in ["Sales Invoice", "Purchase Invoice"]:
is_return = frappe.db.get_value(d.reference_doctype, d.reference_name, "is_return")
payable_party_types = get_party_types_from_account_type("Payable")
receivable_party_types = get_party_types_from_account_type("Receivable")
- if is_return and self.party_type in receivable_party_types and (self.payment_type == "Pay"):
+ if (
+ is_return
+ and self.party_type in receivable_party_types
+ and (self.payment_type == "Pay")
+ ):
reverse_dr_or_cr = 1
elif (
- is_return and self.party_type in payable_party_types and (self.payment_type == "Receive")
+ is_return
+ and self.party_type in payable_party_types
+ and (self.payment_type == "Receive")
):
reverse_dr_or_cr = 1
@@ -1306,9 +1326,7 @@
if getdate(posting_date) < getdate(self.posting_date):
posting_date = self.posting_date
- dr_or_cr = (
- "credit" if invoice.reference_doctype in ["Sales Invoice", "Payment Entry"] else "debit"
- )
+ dr_or_cr = "credit" if invoice.reference_doctype in ["Sales Invoice", "Payment Entry"] else "debit"
args_dict["account"] = invoice.account
args_dict[dr_or_cr] = invoice.allocated_amount
args_dict[dr_or_cr + "_in_account_currency"] = invoice.allocated_amount
@@ -1694,7 +1712,8 @@
return []
elif supplier_status["hold_type"] == "Payments":
if (
- not supplier_status["release_date"] or getdate(nowdate()) <= supplier_status["release_date"]
+ not supplier_status["release_date"]
+ or getdate(nowdate()) <= supplier_status["release_date"]
):
return []
@@ -1704,7 +1723,7 @@
# Get positive outstanding sales /purchase invoices
condition = ""
if args.get("voucher_type") and args.get("voucher_no"):
- condition = " and voucher_type={0} and voucher_no={1}".format(
+ condition = " and voucher_type={} and voucher_no={}".format(
frappe.db.escape(args["voucher_type"]), frappe.db.escape(args["voucher_no"])
)
common_filter.append(ple.voucher_type == args["voucher_type"])
@@ -1719,7 +1738,7 @@
active_dimensions = get_dimensions()[0]
for dim in active_dimensions:
if args.get(dim.fieldname):
- condition += " and {0}='{1}'".format(dim.fieldname, args.get(dim.fieldname))
+ condition += f" and {dim.fieldname}='{args.get(dim.fieldname)}'"
accounting_dimensions_filter.append(ple[dim.fieldname] == args.get(dim.fieldname))
date_fields_dict = {
@@ -1729,21 +1748,21 @@
for fieldname, date_fields in date_fields_dict.items():
if args.get(date_fields[0]) and args.get(date_fields[1]):
- condition += " and {0} between '{1}' and '{2}'".format(
+ condition += " and {} between '{}' and '{}'".format(
fieldname, args.get(date_fields[0]), args.get(date_fields[1])
)
posting_and_due_date.append(ple[fieldname][args.get(date_fields[0]) : args.get(date_fields[1])])
elif args.get(date_fields[0]):
# if only from date is supplied
- condition += " and {0} >= '{1}'".format(fieldname, args.get(date_fields[0]))
+ condition += f" and {fieldname} >= '{args.get(date_fields[0])}'"
posting_and_due_date.append(ple[fieldname].gte(args.get(date_fields[0])))
elif args.get(date_fields[1]):
# if only to date is supplied
- condition += " and {0} <= '{1}'".format(fieldname, args.get(date_fields[1]))
+ condition += f" and {fieldname} <= '{args.get(date_fields[1])}'"
posting_and_due_date.append(ple[fieldname].lte(args.get(date_fields[1])))
if args.get("company"):
- condition += " and company = {0}".format(frappe.db.escape(args.get("company")))
+ condition += " and company = {}".format(frappe.db.escape(args.get("company")))
common_filter.append(ple.company == args.get("company"))
outstanding_invoices = []
@@ -1859,12 +1878,10 @@
return outstanding_invoices_after_split
-def get_currency_data(outstanding_invoices: list, company: str = None) -> dict:
+def get_currency_data(outstanding_invoices: list, company: str | None = None) -> dict:
"""Get currency and conversion data for a list of invoices."""
exc_rates = frappe._dict()
- company_currency = (
- frappe.db.get_value("Company", company, "default_currency") if company else None
- )
+ company_currency = frappe.db.get_value("Company", company, "default_currency") if company else None
for doctype in ["Sales Invoice", "Purchase Invoice"]:
invoices = [x.voucher_no for x in outstanding_invoices if x.voucher_type == doctype]
@@ -1959,7 +1976,7 @@
active_dimensions = get_dimensions()[0]
for dim in active_dimensions:
if filters.get(dim.fieldname):
- condition += " and {0}='{1}'".format(dim.fieldname, filters.get(dim.fieldname))
+ condition += f" and {dim.fieldname}='{filters.get(dim.fieldname)}'"
if party_account_currency == company_currency:
grand_total_field = "base_grand_total"
@@ -2109,18 +2126,14 @@
frappe.has_permission("Payment Entry", throw=True)
# to check if the passed account is accessible under reference doctype Payment Entry
- account_list = frappe.get_list(
- "Account", {"name": account}, reference_doctype="Payment Entry", limit=1
- )
+ account_list = frappe.get_list("Account", {"name": account}, reference_doctype="Payment Entry", limit=1)
# There might be some user permissions which will allow account under certain doctypes
# except for Payment Entry, only in such case we should throw permission error
if not account_list:
frappe.throw(_("Account: {0} is not permitted under Payment Entry").format(account))
- account_balance = get_balance_on(
- account, date, cost_center=cost_center, ignore_account_permission=True
- )
+ account_balance = get_balance_on(account, date, cost_center=cost_center, ignore_account_permission=True)
return frappe._dict(
{
@@ -2167,9 +2180,7 @@
total_amount = outstanding_amount = exchange_rate = account = None
ref_doc = frappe.get_doc(reference_doctype, reference_name)
- company_currency = ref_doc.get("company_currency") or erpnext.get_company_currency(
- ref_doc.company
- )
+ company_currency = ref_doc.get("company_currency") or erpnext.get_company_currency(ref_doc.company)
if reference_doctype == "Dunning":
total_amount = outstanding_amount = ref_doc.get("dunning_amount")
@@ -2178,9 +2189,7 @@
elif reference_doctype == "Journal Entry" and ref_doc.docstatus == 1:
total_amount = ref_doc.get("total_amount")
if ref_doc.multi_currency:
- exchange_rate = get_exchange_rate(
- party_account_currency, company_currency, ref_doc.posting_date
- )
+ exchange_rate = get_exchange_rate(party_account_currency, company_currency, ref_doc.posting_date)
else:
exchange_rate = 1
outstanding_amount = get_outstanding_on_journal_entry(reference_name)
@@ -2250,9 +2259,7 @@
):
doc = frappe.get_doc(dt, dn)
over_billing_allowance = frappe.db.get_single_value("Accounts Settings", "over_billing_allowance")
- if dt in ("Sales Order", "Purchase Order") and flt(doc.per_billed, 2) >= (
- 100.0 + over_billing_allowance
- ):
+ if dt in ("Sales Order", "Purchase Order") and flt(doc.per_billed, 2) >= (100.0 + over_billing_allowance):
frappe.throw(_("Can only make payment against unbilled {0}").format(_(dt)))
if not party_type:
@@ -2305,9 +2312,7 @@
pe.paid_from_account_currency = (
party_account_currency if payment_type == "Receive" else bank.account_currency
)
- pe.paid_to_account_currency = (
- party_account_currency if payment_type == "Pay" else bank.account_currency
- )
+ pe.paid_to_account_currency = party_account_currency if payment_type == "Pay" else bank.account_currency
pe.paid_amount = paid_amount
pe.received_amount = received_amount
pe.letter_head = doc.get("letter_head")
@@ -2336,7 +2341,6 @@
doc.payment_terms_template,
"allocate_payment_based_on_payment_terms",
):
-
for reference in get_reference_as_per_payment_terms(
doc.payment_schedule, dt, dn, doc, grand_total, outstanding_amount, party_account_currency
):
@@ -2524,9 +2528,7 @@
return paid_amount, received_amount
-def apply_early_payment_discount(
- paid_amount, received_amount, doc, party_account_currency, reference_date
-):
+def apply_early_payment_discount(paid_amount, received_amount, doc, party_account_currency, reference_date):
total_discount = 0
valid_discounts = []
eligible_for_payments = ["Sales Order", "Sales Invoice", "Purchase Order", "Purchase Invoice"]
@@ -2536,7 +2538,6 @@
if doc.doctype in eligible_for_payments and has_payment_schedule:
for term in doc.payment_schedule:
if not term.discounted_amount and term.discount and reference_date <= term.discount_date:
-
if term.discount_type == "Percentage":
grand_total = doc.get("grand_total") if is_multi_currency else doc.get("base_grand_total")
discount_amount = flt(grand_total) * (term.discount / 100)
@@ -2565,9 +2566,7 @@
return paid_amount, received_amount, total_discount, valid_discounts
-def set_pending_discount_loss(
- pe, doc, discount_amount, base_total_discount_loss, party_account_currency
-):
+def set_pending_discount_loss(pe, doc, discount_amount, base_total_discount_loss, party_account_currency):
# If multi-currency, get base discount amount to adjust with base currency deductions/losses
if party_account_currency != doc.company_currency:
discount_amount = discount_amount * doc.get("conversion_rate", 1)
@@ -2587,7 +2586,8 @@
pe.set_gain_or_loss(
account_details={
"account": frappe.get_cached_value("Company", pe.company, account_type),
- "cost_center": pe.cost_center or frappe.get_cached_value("Company", pe.company, "cost_center"),
+ "cost_center": pe.cost_center
+ or frappe.get_cached_value("Company", pe.company, "cost_center"),
"amount": discount_amount * positive_negative,
}
)
@@ -2610,9 +2610,7 @@
def get_total_discount_percent(doc, valid_discounts) -> float:
"""Get total percentage and amount discount applied as a percentage."""
total_discount_percent = (
- sum(
- discount.get("discount") for discount in valid_discounts if discount.get("type") == "Percentage"
- )
+ sum(discount.get("discount") for discount in valid_discounts if discount.get("type") == "Percentage")
or 0.0
)
@@ -2655,9 +2653,7 @@
# The same account head could be used more than once
for tax in doc.get("taxes", []):
- base_tax_loss = tax.get("base_tax_amount_after_discount_amount") * (
- total_discount_percentage / 100
- )
+ base_tax_loss = tax.get("base_tax_amount_after_discount_amount") * (total_discount_percentage / 100)
account = tax.get("account_head")
if not tax_discount_loss.get(account):
@@ -2674,7 +2670,8 @@
"deductions",
{
"account": account,
- "cost_center": pe.cost_center or frappe.get_cached_value("Company", pe.company, "cost_center"),
+ "cost_center": pe.cost_center
+ or frappe.get_cached_value("Company", pe.company, "cost_center"),
"amount": flt(loss, precision),
},
)
@@ -2697,7 +2694,8 @@
if not is_multi_currency_acc:
# If accounting is done in company currency for multi-currency transaction
payment_term_outstanding = flt(
- payment_term_outstanding * doc.get("conversion_rate"), payment_term.precision("payment_amount")
+ payment_term_outstanding * doc.get("conversion_rate"),
+ payment_term.precision("payment_amount"),
)
if payment_term_outstanding:
@@ -2725,7 +2723,7 @@
dr_or_cr = "debit_in_account_currency - credit_in_account_currency"
paid_amount = frappe.db.sql(
- """
+ f"""
select ifnull(sum({dr_or_cr}), 0) as paid_amount
from `tabGL Entry`
where against_voucher_type = %s
@@ -2735,9 +2733,7 @@
and account = %s
and due_date = %s
and {dr_or_cr} > 0
- """.format(
- dr_or_cr=dr_or_cr
- ),
+ """,
(dt, dn, party_type, party, account, due_date),
)
diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
index 6323e4c..aaa4e49 100644
--- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
@@ -1,7 +1,6 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
-import unittest
import frappe
from frappe import qb
@@ -10,7 +9,6 @@
from erpnext.accounts.doctype.account.test_account import create_account
from erpnext.accounts.doctype.payment_entry.payment_entry import (
- InvalidPaymentEntry,
get_outstanding_reference_documents,
get_payment_entry,
get_reference_details,
@@ -469,9 +467,7 @@
si.save()
si.submit()
- pe = get_payment_entry(
- "Sales Invoice", si.name, bank_account="_Test Bank - _TC", bank_amount=4700
- )
+ pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank - _TC", bank_amount=4700)
pe.reference_no = si.name
pe.reference_date = nowdate()
@@ -638,9 +634,7 @@
pe.set_exchange_rate()
pe.set_amounts()
- self.assertEqual(
- pe.source_exchange_rate, 65.1, "{0} is not equal to {1}".format(pe.source_exchange_rate, 65.1)
- )
+ self.assertEqual(pe.source_exchange_rate, 65.1, f"{pe.source_exchange_rate} is not equal to {65.1}")
def test_internal_transfer_usd_to_inr(self):
pe = frappe.new_doc("Payment Entry")
@@ -896,9 +890,7 @@
cost_center = "_Test Cost Center for BS Account - _TC"
create_cost_center(cost_center_name="_Test Cost Center for BS Account", company="_Test Company")
- pi = make_purchase_invoice_against_cost_center(
- cost_center=cost_center, credit_to="Creditors - _TC"
- )
+ pi = make_purchase_invoice_against_cost_center(cost_center=cost_center, credit_to="Creditors - _TC")
pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC")
self.assertEqual(pe.cost_center, pi.cost_center)
@@ -939,9 +931,7 @@
si = create_sales_invoice_against_cost_center(cost_center=cost_center, debit_to="Debtors - _TC")
account_balance = get_balance_on(account="_Test Bank - _TC", cost_center=si.cost_center)
- party_balance = get_balance_on(
- party_type="Customer", party=si.customer, cost_center=si.cost_center
- )
+ party_balance = get_balance_on(party_type="Customer", party=si.customer, cost_center=si.cost_center)
party_account_balance = get_balance_on(si.debit_to, cost_center=si.cost_center)
pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank - _TC")
@@ -1203,7 +1193,7 @@
Overallocation validation shouldn't fire for Template without "Allocate Payment based on Payment Terms" enabled
"""
- customer = create_customer()
+ create_customer()
create_payment_terms_template()
template = frappe.get_doc("Payment Terms Template", "Test Receivable Template")
@@ -1262,9 +1252,7 @@
create_payment_terms_template()
# SI has an earlier due date and SI2 has a later due date
- si = create_sales_invoice(
- qty=1, rate=100, customer=customer, posting_date=add_days(nowdate(), -4)
- )
+ si = create_sales_invoice(qty=1, rate=100, customer=customer, posting_date=add_days(nowdate(), -4))
si2 = create_sales_invoice(do_not_save=1, qty=1, rate=100, customer=customer)
si2.payment_terms_template = "Test Receivable Template"
si2.submit()
@@ -1363,8 +1351,6 @@
self.check_gl_entries()
def test_ledger_entries_for_advance_as_liability(self):
- from erpnext.accounts.doctype.account.test_account import create_account
-
company = "_Test Company"
advance_account = create_account(
@@ -1466,7 +1452,7 @@
self.check_pl_entries()
# Unreconcile
- unrecon = (
+ (
frappe.get_doc(
{
"doctype": "Unreconcile Payment",
@@ -1554,8 +1540,6 @@
self.assertEqual(len(pr.payments), 0)
def test_advance_reverse_payment_reconciliation(self):
- from erpnext.accounts.doctype.account.test_account import create_account
-
company = "_Test Company"
customer = create_customer(frappe.generate_hash(length=10), "INR")
advance_account = create_account(
@@ -1645,14 +1629,16 @@
self.check_pl_entries()
# Unreconcile
- unrecon = (
+ (
frappe.get_doc(
{
"doctype": "Unreconcile Payment",
"company": company,
"voucher_type": pe.doctype,
"voucher_no": pe.name,
- "allocations": [{"reference_doctype": reverse_pe.doctype, "reference_name": reverse_pe.name}],
+ "allocations": [
+ {"reference_doctype": reverse_pe.doctype, "reference_name": reverse_pe.name}
+ ],
}
)
.save()
@@ -1703,12 +1689,11 @@
def create_payment_terms_template():
-
create_payment_term("Basic Amount Receivable")
create_payment_term("Tax Receivable")
if not frappe.db.exists("Payment Terms Template", "Test Receivable Template"):
- payment_term_template = frappe.get_doc(
+ frappe.get_doc(
{
"doctype": "Payment Terms Template",
"template_name": "Test Receivable Template",
diff --git a/erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py b/erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py
index 3fea325..2bc4489 100644
--- a/erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py
+++ b/erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py
@@ -137,9 +137,9 @@
):
if not self.get(dimension.fieldname):
frappe.throw(
- _("Accounting Dimension <b>{0}</b> is required for 'Profit and Loss' account {1}.").format(
- dimension.label, self.account
- )
+ _(
+ "Accounting Dimension <b>{0}</b> is required for 'Profit and Loss' account {1}."
+ ).format(dimension.label, self.account)
)
if (
@@ -150,9 +150,9 @@
):
if not self.get(dimension.fieldname):
frappe.throw(
- _("Accounting Dimension <b>{0}</b> is required for 'Balance Sheet' account {1}.").format(
- dimension.label, self.account
- )
+ _(
+ "Accounting Dimension <b>{0}</b> is required for 'Balance Sheet' account {1}."
+ ).format(dimension.label, self.account)
)
def validate(self):
diff --git a/erpnext/accounts/doctype/payment_ledger_entry/test_payment_ledger_entry.py b/erpnext/accounts/doctype/payment_ledger_entry/test_payment_ledger_entry.py
index ce9579e..c867e68 100644
--- a/erpnext/accounts/doctype/payment_ledger_entry/test_payment_ledger_entry.py
+++ b/erpnext/accounts/doctype/payment_ledger_entry/test_payment_ledger_entry.py
@@ -159,9 +159,7 @@
for doctype in doctype_list:
qb.from_(qb.DocType(doctype)).delete().where(qb.DocType(doctype).company == self.company).run()
- def create_journal_entry(
- self, acc1=None, acc2=None, amount=0, posting_date=None, cost_center=None
- ):
+ def create_journal_entry(self, acc1=None, acc2=None, amount=0, posting_date=None, cost_center=None):
je = frappe.new_doc("Journal Entry")
je.posting_date = posting_date or nowdate()
je.company = self.company
@@ -319,9 +317,7 @@
ple.amount,
ple.delinked,
)
- .where(
- (ple.against_voucher_type == cr_note1.doctype) & (ple.against_voucher_no == cr_note1.name)
- )
+ .where((ple.against_voucher_type == cr_note1.doctype) & (ple.against_voucher_no == cr_note1.name))
.orderby(ple.creation)
.run(as_dict=True)
)
@@ -362,9 +358,7 @@
)
cr_note2.is_return = 1
cr_note2 = cr_note2.save().submit()
- je1 = self.create_journal_entry(
- self.debit_to, self.debit_to, amount, posting_date=transaction_date
- )
+ je1 = self.create_journal_entry(self.debit_to, self.debit_to, amount, posting_date=transaction_date)
je1.get("accounts")[0].party_type = je1.get("accounts")[1].party_type = "Customer"
je1.get("accounts")[0].party = je1.get("accounts")[1].party = self.customer
je1.get("accounts")[0].reference_type = cr_note2.doctype
@@ -419,9 +413,7 @@
ple.amount,
ple.delinked,
)
- .where(
- (ple.against_voucher_type == cr_note2.doctype) & (ple.against_voucher_no == cr_note2.name)
- )
+ .where((ple.against_voucher_type == cr_note2.doctype) & (ple.against_voucher_no == cr_note2.name))
.orderby(ple.creation)
.run(as_dict=True)
)
@@ -518,7 +510,7 @@
amount = 100
so = self.create_sales_order(qty=1, rate=amount, posting_date=transaction_date).save().submit()
- pe = get_payment_entry(so.doctype, so.name).save().submit()
+ get_payment_entry(so.doctype, so.name).save().submit()
so.reload()
so.cancel()
diff --git a/erpnext/accounts/doctype/payment_order/payment_order.py b/erpnext/accounts/doctype/payment_order/payment_order.py
index 0ed26e4..a4c5962 100644
--- a/erpnext/accounts/doctype/payment_order/payment_order.py
+++ b/erpnext/accounts/doctype/payment_order/payment_order.py
@@ -90,9 +90,7 @@
je = frappe.new_doc("Journal Entry")
je.payment_order = doc.name
je.posting_date = nowdate()
- mode_of_payment_type = frappe._dict(
- frappe.get_all("Mode of Payment", fields=["name", "type"], as_list=1)
- )
+ mode_of_payment_type = frappe._dict(frappe.get_all("Mode of Payment", fields=["name", "type"], as_list=1))
je.voucher_type = "Bank Entry"
if mode_of_payment and mode_of_payment_type.get(mode_of_payment) == "Cash":
diff --git a/erpnext/accounts/doctype/payment_order/test_payment_order.py b/erpnext/accounts/doctype/payment_order/test_payment_order.py
index 60f288e..7af0966 100644
--- a/erpnext/accounts/doctype/payment_order/test_payment_order.py
+++ b/erpnext/accounts/doctype/payment_order/test_payment_order.py
@@ -1,7 +1,6 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
-import unittest
import frappe
from frappe.tests.utils import FrappeTestCase
@@ -41,9 +40,7 @@
payment_entry.insert()
payment_entry.submit()
- doc = create_payment_order_against_payment_entry(
- payment_entry, "Payment Entry", self.bank_account
- )
+ doc = create_payment_order_against_payment_entry(payment_entry, "Payment Entry", self.bank_account)
reference_doc = doc.get("references")[0]
self.assertEqual(reference_doc.reference_name, payment_entry.name)
self.assertEqual(reference_doc.reference_doctype, "Payment Entry")
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
index dcb1a16..a2f355a 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
@@ -67,7 +67,7 @@
# end: auto-generated types
def __init__(self, *args, **kwargs):
- super(PaymentReconciliation, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
self.common_filter_conditions = []
self.accounting_dimension_filter_conditions = []
self.ple_posting_date_filter = []
@@ -286,7 +286,6 @@
self.return_invoices = self.return_invoices_query.run(as_dict=True)
def get_dr_or_cr_notes(self):
-
self.build_qb_filter_conditions(get_return_invoices=True)
ple = qb.DocType("Payment Ledger Entry")
@@ -412,9 +411,7 @@
payment_entry[0].get("reference_name")
)
- new_difference_amount = self.get_difference_amount(
- payment_entry[0], invoice[0], allocated_amount
- )
+ new_difference_amount = self.get_difference_amount(payment_entry[0], invoice[0], allocated_amount)
return new_difference_amount
@frappe.whitelist()
@@ -532,9 +529,9 @@
if running_doc:
frappe.throw(
- _("A Reconciliation Job {0} is running for the same filters. Cannot reconcile now").format(
- get_link_to_form("Auto Reconcile", running_doc)
- )
+ _(
+ "A Reconciliation Job {0} is running for the same filters. Cannot reconcile now"
+ ).format(get_link_to_form("Auto Reconcile", running_doc))
)
return
@@ -627,9 +624,7 @@
invoice_exchange_map.update(purchase_invoice_map)
- journals = [
- d.get("invoice_number") for d in invoices if d.get("invoice_type") == "Journal Entry"
- ]
+ journals = [d.get("invoice_number") for d in invoices if d.get("invoice_type") == "Journal Entry"]
journals.extend(
[d.get("reference_name") for d in payments if d.get("reference_type") == "Journal Entry"]
)
@@ -721,7 +716,7 @@
def get_journal_filter_conditions(self):
conditions = []
je = qb.DocType("Journal Entry")
- jea = qb.DocType("Journal Entry Account")
+ qb.DocType("Journal Entry Account")
conditions.append(je.company == self.company)
if self.from_payment_date:
@@ -841,7 +836,7 @@
@frappe.whitelist()
-def get_queries_for_dimension_filters(company: str = None):
+def get_queries_for_dimension_filters(company: str | None = None):
dimensions_with_filters = []
for d in get_dimensions()[0]:
filters = {}
diff --git a/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py
index 1d20a5b..983cdc4 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py
+++ b/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py
@@ -1,7 +1,6 @@
# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
-import unittest
import frappe
from frappe import qb
@@ -250,9 +249,7 @@
pr.from_invoice_date = pr.to_invoice_date = pr.from_payment_date = pr.to_payment_date = nowdate()
return pr
- def create_journal_entry(
- self, acc1=None, acc2=None, amount=0, posting_date=None, cost_center=None
- ):
+ def create_journal_entry(self, acc1=None, acc2=None, amount=0, posting_date=None, cost_center=None):
je = frappe.new_doc("Journal Entry")
je.posting_date = posting_date or nowdate()
je.company = self.company
@@ -402,7 +399,7 @@
rate = 100
invoices = []
payments = []
- for i in range(5):
+ for _i in range(5):
invoices.append(self.create_sales_invoice(qty=1, rate=rate, posting_date=transaction_date))
pe = self.create_payment_entry(amount=rate, posting_date=transaction_date).save().submit()
payments.append(pe)
@@ -821,9 +818,7 @@
cr_note.cancel()
- pay = self.create_payment_entry(
- amount=amount, posting_date=transaction_date, customer=self.customer3
- )
+ pay = self.create_payment_entry(amount=amount, posting_date=transaction_date, customer=self.customer3)
pay.paid_from = self.debtors_eur
pay.paid_from_account_currency = "EUR"
pay.source_exchange_rate = exchange_rate
@@ -1025,9 +1020,7 @@
rate = 100
# 'Main - PR' Cost Center
- si1 = self.create_sales_invoice(
- qty=1, rate=rate, posting_date=transaction_date, do_not_submit=True
- )
+ si1 = self.create_sales_invoice(qty=1, rate=rate, posting_date=transaction_date, do_not_submit=True)
si1.cost_center = self.main_cc.name
si1.submit()
@@ -1043,9 +1036,7 @@
je1 = je1.save().submit()
# 'Sub - PR' Cost Center
- si2 = self.create_sales_invoice(
- qty=1, rate=rate, posting_date=transaction_date, do_not_submit=True
- )
+ si2 = self.create_sales_invoice(qty=1, rate=rate, posting_date=transaction_date, do_not_submit=True)
si2.cost_center = self.sub_cc.name
si2.submit()
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index 1649183..196838a 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -105,7 +105,7 @@
)
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
- if not hasattr(ref_doc, "order_type") or getattr(ref_doc, "order_type") != "Shopping Cart":
+ if not hasattr(ref_doc, "order_type") or ref_doc.order_type != "Shopping Cart":
ref_amount = get_amount(ref_doc, self.payment_account)
if not ref_amount:
frappe.throw(_("Payment Entry is already created"))
@@ -160,7 +160,7 @@
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
if (
- hasattr(ref_doc, "order_type") and getattr(ref_doc, "order_type") == "Shopping Cart"
+ hasattr(ref_doc, "order_type") and ref_doc.order_type == "Shopping Cart"
) or self.flags.mute_email:
send_mail = False
@@ -172,9 +172,9 @@
elif self.payment_channel == "Phone":
self.request_phone_payment()
- advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_receivable_doctypes"
- ) + frappe.get_hooks("advance_payment_payable_doctypes")
+ advance_payment_doctypes = frappe.get_hooks("advance_payment_receivable_doctypes") + frappe.get_hooks(
+ "advance_payment_payable_doctypes"
+ )
if self.reference_doctype in advance_payment_doctypes:
# set advance payment status
ref_doc.set_total_advance_paid()
@@ -218,16 +218,16 @@
self.set_as_cancelled()
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
- advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_receivable_doctypes"
- ) + frappe.get_hooks("advance_payment_payable_doctypes")
+ advance_payment_doctypes = frappe.get_hooks("advance_payment_receivable_doctypes") + frappe.get_hooks(
+ "advance_payment_payable_doctypes"
+ )
if self.reference_doctype in advance_payment_doctypes:
# set advance payment status
ref_doc.set_total_advance_paid()
def make_invoice(self):
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
- if hasattr(ref_doc, "order_type") and getattr(ref_doc, "order_type") == "Shopping Cart":
+ if hasattr(ref_doc, "order_type") and ref_doc.order_type == "Shopping Cart":
from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice
si = make_sales_invoice(self.reference_name, ignore_permissions=True)
@@ -306,14 +306,10 @@
else:
party_account = get_party_account("Customer", ref_doc.get("customer"), ref_doc.company)
- party_account_currency = ref_doc.get("party_account_currency") or get_account_currency(
- party_account
- )
+ party_account_currency = ref_doc.get("party_account_currency") or get_account_currency(party_account)
bank_amount = self.grand_total
- if (
- party_account_currency == ref_doc.company_currency and party_account_currency != self.currency
- ):
+ if party_account_currency == ref_doc.company_currency and party_account_currency != self.currency:
party_amount = ref_doc.get("base_rounded_total") or ref_doc.get("base_grand_total")
else:
party_amount = self.grand_total
@@ -331,7 +327,7 @@
"mode_of_payment": self.mode_of_payment,
"reference_no": self.name,
"reference_date": nowdate(),
- "remarks": "Payment Entry against {0} {1} via Payment Request {2}".format(
+ "remarks": "Payment Entry against {} {} via Payment Request {}".format(
self.reference_doctype, self.reference_name, self.name
),
}
@@ -465,15 +461,11 @@
frappe.db.set_value(
"Sales Order", args.dn, "loyalty_points", int(args.loyalty_points), update_modified=False
)
- frappe.db.set_value(
- "Sales Order", args.dn, "loyalty_amount", loyalty_amount, update_modified=False
- )
+ frappe.db.set_value("Sales Order", args.dn, "loyalty_amount", loyalty_amount, update_modified=False)
grand_total = grand_total - loyalty_amount
bank_account = (
- get_party_bank_account(args.get("party_type"), args.get("party"))
- if args.get("party_type")
- else ""
+ get_party_bank_account(args.get("party_type"), args.get("party")) if args.get("party_type") else ""
)
draft_payment_request = frappe.db.get_value(
@@ -770,7 +762,10 @@
& (
(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()
+ frappe.qb.from_(inv_item)
+ .select(inv_item.parent)
+ .where(inv_item[inv_field] == dn)
+ .distinct()
)
)
)
diff --git a/erpnext/accounts/doctype/payment_request/test_payment_request.py b/erpnext/accounts/doctype/payment_request/test_payment_request.py
index feb2fdf..70de886 100644
--- a/erpnext/accounts/doctype/payment_request/test_payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/test_payment_request.py
@@ -93,7 +93,7 @@
return_doc=1,
)
- pe = pr.create_payment_entry()
+ pr.create_payment_entry()
pr.load_from_db()
self.assertEqual(pr.status, "Paid")
@@ -158,7 +158,7 @@
self.assertTrue(gl_entries)
- for i, gle in enumerate(gl_entries):
+ for _i, gle in enumerate(gl_entries):
self.assertEqual(expected_gle[gle.account][0], gle.account)
self.assertEqual(expected_gle[gle.account][1], gle.debit)
self.assertEqual(expected_gle[gle.account][2], gle.credit)
diff --git a/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py b/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py
index 8f028f9..aaf8577 100644
--- a/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py
+++ b/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py
@@ -36,9 +36,7 @@
total_portion += flt(term.get("invoice_portion", 0))
if flt(total_portion, 2) != 100.00:
- frappe.msgprint(
- _("Combined invoice portion must equal 100%"), raise_exception=1, indicator="red"
- )
+ frappe.msgprint(_("Combined invoice portion must equal 100%"), raise_exception=1, indicator="red")
def validate_terms(self):
terms = []
diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
index 76c0a09..e75057c 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
@@ -67,7 +67,8 @@
enqueue_after_commit=True,
)
frappe.msgprint(
- _("The GL Entries will be cancelled in the background, it can take a few minutes."), alert=True
+ _("The GL Entries will be cancelled in the background, it can take a few minutes."),
+ alert=True,
)
else:
make_reverse_gl_entries(voucher_type="Period Closing Voucher", voucher_no=self.name)
@@ -109,9 +110,7 @@
self.posting_date, self.fiscal_year, self.company, label=_("Posting Date"), doc=self
)
- self.year_start_date = get_fiscal_year(
- self.posting_date, self.fiscal_year, company=self.company
- )[1]
+ self.year_start_date = get_fiscal_year(self.posting_date, self.fiscal_year, company=self.company)[1]
self.check_if_previous_year_closed()
@@ -225,7 +224,9 @@
"credit_in_account_currency": abs(flt(acc.bal_in_account_currency))
if flt(acc.bal_in_account_currency) > 0
else 0,
- "credit": abs(flt(acc.bal_in_company_currency)) if flt(acc.bal_in_company_currency) > 0 else 0,
+ "credit": abs(flt(acc.bal_in_company_currency))
+ if flt(acc.bal_in_company_currency) > 0
+ else 0,
"is_period_closing_voucher_entry": 1,
},
item=acc,
@@ -249,7 +250,9 @@
"credit_in_account_currency": abs(flt(acc.bal_in_account_currency))
if flt(acc.bal_in_account_currency) < 0
else 0,
- "credit": abs(flt(acc.bal_in_company_currency)) if flt(acc.bal_in_company_currency) < 0 else 0,
+ "credit": abs(flt(acc.bal_in_company_currency))
+ if flt(acc.bal_in_company_currency) < 0
+ else 0,
"is_period_closing_voucher_entry": 1,
},
item=acc,
diff --git a/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py b/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py
index 0f3a5bb..b158eda 100644
--- a/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py
+++ b/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py
@@ -70,7 +70,7 @@
for key, value in pos_occurences.items():
if len(value) > 1:
error_list.append(
- _("{} is added multiple times on rows: {}".format(frappe.bold(key), frappe.bold(value)))
+ _(f"{frappe.bold(key)} is added multiple times on rows: {frappe.bold(value)}")
)
if error_list:
@@ -165,9 +165,7 @@
as_dict=1,
)
- data = list(
- filter(lambda d: get_datetime(start) <= get_datetime(d.timestamp) <= get_datetime(end), data)
- )
+ data = list(filter(lambda d: get_datetime(start) <= get_datetime(d.timestamp) <= get_datetime(end), data))
# need to get taxes and payments so can't avoid get_doc
data = [frappe.get_doc("POS Invoice", d.name).as_dict() for d in data]
@@ -238,7 +236,11 @@
else:
payments.append(
frappe._dict(
- {"mode_of_payment": p.mode_of_payment, "opening_amount": 0, "expected_amount": p.amount}
+ {
+ "mode_of_payment": p.mode_of_payment,
+ "opening_amount": 0,
+ "expected_amount": p.amount,
+ }
)
)
diff --git a/erpnext/accounts/doctype/pos_closing_entry/test_pos_closing_entry.py b/erpnext/accounts/doctype/pos_closing_entry/test_pos_closing_entry.py
index 62b342a..6319d5d 100644
--- a/erpnext/accounts/doctype/pos_closing_entry/test_pos_closing_entry.py
+++ b/erpnext/accounts/doctype/pos_closing_entry/test_pos_closing_entry.py
@@ -62,9 +62,7 @@
test_user, pos_profile = init_user_and_profile()
opening_entry = create_opening_entry(pos_profile, test_user.name)
- pos_inv = create_pos_invoice(
- rate=3500, do_not_submit=1, item_name="Test Item", without_item_code=1
- )
+ pos_inv = create_pos_invoice(rate=3500, do_not_submit=1, item_name="Test Item", without_item_code=1)
pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3500})
pos_inv.submit()
@@ -211,7 +209,7 @@
item_group="All Item Groups",
)
- test_item_qty = [item for item in test_item_pos["items"] if item["item_code"] == "_Test Item"][
- 0
- ].get("actual_qty")
+ test_item_qty = next(item for item in test_item_pos["items"] if item["item_code"] == "_Test Item").get(
+ "actual_qty"
+ )
return test_item_qty
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
index 8052c4c..b497279 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
@@ -183,7 +183,7 @@
# end: auto-generated types
def __init__(self, *args, **kwargs):
- super(POSInvoice, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
def validate(self):
if not cint(self.is_pos):
@@ -308,7 +308,9 @@
)
if paid_amt and pay.amount != paid_amt:
- return frappe.throw(_("Payment related to {0} is not completed").format(pay.mode_of_payment))
+ return frappe.throw(
+ _("Payment related to {0} is not completed").format(pay.mode_of_payment)
+ )
def validate_stock_availablility(self):
if self.is_return:
@@ -328,7 +330,7 @@
available_stock, is_stock_item = get_stock_availability(d.item_code, d.warehouse)
- item_code, warehouse, qty = (
+ item_code, warehouse, _qty = (
frappe.bold(d.item_code),
frappe.bold(d.warehouse),
frappe.bold(d.qty),
@@ -408,8 +410,7 @@
if (
self.change_amount
and self.account_for_change_amount
- and frappe.get_cached_value("Account", self.account_for_change_amount, "company")
- != self.company
+ and frappe.get_cached_value("Account", self.account_for_change_amount, "company") != self.company
):
frappe.throw(
_("The selected change account {} doesn't belongs to Company {}.").format(
diff --git a/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
index 8fab290..773ef01 100644
--- a/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
+++ b/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
@@ -245,7 +245,6 @@
self.assertEqual(pos_return.get("payments")[1].amount, -500)
def test_pos_return_for_serialized_item(self):
- from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
se = make_serialized_item(
@@ -287,7 +286,6 @@
)
def test_partial_pos_returns(self):
- from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
se = make_serialized_item(
@@ -359,9 +357,7 @@
)
pos.set("payments", [])
- pos.append(
- "payments", {"mode_of_payment": "Bank Draft", "account": "_Test Bank - _TC", "amount": 50}
- )
+ pos.append("payments", {"mode_of_payment": "Bank Draft", "account": "_Test Bank - _TC", "amount": 50})
pos.append(
"payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 60, "default": 1}
)
@@ -379,7 +375,6 @@
self.assertRaises(frappe.ValidationError, inv.insert)
def test_serialized_item_transaction(self):
- from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
se = make_serialized_item(
@@ -434,7 +429,6 @@
self.assertRaises(frappe.ValidationError, pos2.submit)
def test_delivered_serialized_item_transaction(self):
- from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
se = make_serialized_item(
@@ -583,9 +577,7 @@
from erpnext.accounts.doctype.loyalty_program.test_loyalty_program import create_records
create_records()
- frappe.db.set_value(
- "Customer", "Test Loyalty Customer", "loyalty_program", "Test Single Loyalty"
- )
+ frappe.db.set_value("Customer", "Test Loyalty Customer", "loyalty_program", "Test Single Loyalty")
before_lp_details = get_loyalty_program_details_with_points(
"Test Loyalty Customer", company="_Test Company", loyalty_program="Test Single Loyalty"
)
@@ -659,9 +651,7 @@
consolidate_pos_invoices()
pos_inv.load_from_db()
- rounded_total = frappe.db.get_value(
- "Sales Invoice", pos_inv.consolidated_invoice, "rounded_total"
- )
+ rounded_total = frappe.db.get_value("Sales Invoice", pos_inv.consolidated_invoice, "rounded_total")
self.assertEqual(rounded_total, 3470)
def test_merging_into_sales_invoice_with_discount_and_inclusive_tax(self):
@@ -708,9 +698,7 @@
consolidate_pos_invoices()
pos_inv.load_from_db()
- rounded_total = frappe.db.get_value(
- "Sales Invoice", pos_inv.consolidated_invoice, "rounded_total"
- )
+ rounded_total = frappe.db.get_value("Sales Invoice", pos_inv.consolidated_invoice, "rounded_total")
self.assertEqual(rounded_total, 840)
def test_merging_with_validate_selling_price(self):
@@ -762,9 +750,7 @@
consolidate_pos_invoices()
pos_inv2.load_from_db()
- rounded_total = frappe.db.get_value(
- "Sales Invoice", pos_inv2.consolidated_invoice, "rounded_total"
- )
+ rounded_total = frappe.db.get_value("Sales Invoice", pos_inv2.consolidated_invoice, "rounded_total")
self.assertEqual(rounded_total, 400)
def test_pos_batch_reservation(self):
@@ -788,9 +774,7 @@
batch_no = get_batch_from_bundle(se.items[0].serial_and_batch_bundle)
# POS Invoice 1, for the batch without bundle
- pos_inv1 = create_pos_invoice(
- item="_BATCH ITEM Test For Reserve", rate=300, qty=15, do_not_save=1
- )
+ pos_inv1 = create_pos_invoice(item="_BATCH ITEM Test For Reserve", rate=300, qty=15, do_not_save=1)
pos_inv1.items[0].batch_no = batch_no
pos_inv1.save()
@@ -800,9 +784,7 @@
self.assertFalse(pos_inv1.items[0].serial_and_batch_bundle)
batches = get_auto_batch_nos(
- frappe._dict(
- {"item_code": "_BATCH ITEM Test For Reserve", "warehouse": "_Test Warehouse - _TC"}
- )
+ frappe._dict({"item_code": "_BATCH ITEM Test For Reserve", "warehouse": "_Test Warehouse - _TC"})
)
for batch in batches:
@@ -817,9 +799,7 @@
self.assertTrue(pos_inv2.items[0].serial_and_batch_bundle)
batches = get_auto_batch_nos(
- frappe._dict(
- {"item_code": "_BATCH ITEM Test For Reserve", "warehouse": "_Test Warehouse - _TC"}
- )
+ frappe._dict({"item_code": "_BATCH ITEM Test For Reserve", "warehouse": "_Test Warehouse - _TC"})
)
for batch in batches:
@@ -896,19 +876,19 @@
pos_inv = create_pos_invoice(qty=1, do_not_submit=1)
pos_inv.items[0].rate = 300
pos_inv.save()
- self.assertEquals(pos_inv.items[0].discount_percentage, 10)
+ self.assertEqual(pos_inv.items[0].discount_percentage, 10)
# rate shouldn't change
- self.assertEquals(pos_inv.items[0].rate, 405)
+ self.assertEqual(pos_inv.items[0].rate, 405)
pos_inv.ignore_pricing_rule = 1
pos_inv.save()
- self.assertEquals(pos_inv.ignore_pricing_rule, 1)
+ self.assertEqual(pos_inv.ignore_pricing_rule, 1)
# rate should reset since pricing rules are ignored
- self.assertEquals(pos_inv.items[0].rate, 450)
+ self.assertEqual(pos_inv.items[0].rate, 450)
pos_inv.items[0].rate = 300
pos_inv.save()
- self.assertEquals(pos_inv.items[0].rate, 300)
+ self.assertEqual(pos_inv.items[0].rate, 300)
finally:
item_price.delete()
@@ -920,7 +900,6 @@
init_user_and_profile,
)
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
- from erpnext.stock.doctype.serial_no.test_serial_no import get_serial_nos
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
frappe.db.savepoint("before_test_delivered_serial_no_case")
diff --git a/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py b/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py
index cd858ca..fb91672 100644
--- a/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py
+++ b/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py
@@ -54,7 +54,7 @@
for key, value in pos_occurences.items():
if len(value) > 1:
error_list.append(
- _("{} is added multiple times on rows: {}".format(frappe.bold(key), frappe.bold(value)))
+ _(f"{frappe.bold(key)} is added multiple times on rows: {frappe.bold(value)}")
)
if error_list:
@@ -81,7 +81,9 @@
bold_pos_invoice = frappe.bold(d.pos_invoice)
bold_status = frappe.bold(status)
if docstatus != 1:
- frappe.throw(_("Row #{}: POS Invoice {} is not submitted yet").format(d.idx, bold_pos_invoice))
+ frappe.throw(
+ _("Row #{}: POS Invoice {} is not submitted yet").format(d.idx, bold_pos_invoice)
+ )
if status == "Consolidated":
frappe.throw(
_("Row #{}: POS Invoice {} has been {}").format(d.idx, bold_pos_invoice, bold_status)
@@ -100,15 +102,17 @@
d.idx, bold_return_against, bold_pos_invoice, bold_unconsolidated
)
msg += " "
- msg += _("Original invoice should be consolidated before or along with the return invoice.")
+ msg += _(
+ "Original invoice should be consolidated before or along with the return invoice."
+ )
msg += "<br><br>"
- msg += _("You can add original invoice {} manually to proceed.").format(bold_return_against)
+ msg += _("You can add original invoice {} manually to proceed.").format(
+ bold_return_against
+ )
frappe.throw(msg)
def on_submit(self):
- pos_invoice_docs = [
- frappe.get_cached_doc("POS Invoice", d.pos_invoice) for d in self.pos_invoices
- ]
+ pos_invoice_docs = [frappe.get_cached_doc("POS Invoice", d.pos_invoice) for d in self.pos_invoices]
returns = [d for d in pos_invoice_docs if d.get("is_return") == 1]
sales = [d for d in pos_invoice_docs if d.get("is_return") == 0]
@@ -124,9 +128,7 @@
self.update_pos_invoices(pos_invoice_docs, sales_invoice, credit_note)
def on_cancel(self):
- pos_invoice_docs = [
- frappe.get_cached_doc("POS Invoice", d.pos_invoice) for d in self.pos_invoices
- ]
+ pos_invoice_docs = [frappe.get_cached_doc("POS Invoice", d.pos_invoice) for d in self.pos_invoices]
self.update_pos_invoices(pos_invoice_docs)
self.cancel_linked_invoices()
@@ -217,7 +219,9 @@
for t in taxes:
if t.account_head == tax.account_head and t.cost_center == tax.cost_center:
t.tax_amount = flt(t.tax_amount) + flt(tax.tax_amount_after_discount_amount)
- t.base_tax_amount = flt(t.base_tax_amount) + flt(tax.base_tax_amount_after_discount_amount)
+ t.base_tax_amount = flt(t.base_tax_amount) + flt(
+ tax.base_tax_amount_after_discount_amount
+ )
update_item_wise_tax_detail(t, tax)
found = True
if not found:
@@ -333,9 +337,7 @@
else:
consolidated_tax_detail.update({item_code: [tax_data[0], tax_data[1]]})
- consolidate_tax_row.item_wise_tax_detail = json.dumps(
- consolidated_tax_detail, separators=(",", ":")
- )
+ consolidate_tax_row.item_wise_tax_detail = json.dumps(consolidated_tax_detail, separators=(",", ":"))
def get_all_unconsolidated_invoices():
@@ -380,9 +382,7 @@
if len(invoices) >= 10 and closing_entry:
closing_entry.set_status(update=True, status="Queued")
- enqueue_job(
- create_merge_logs, invoice_by_customer=invoice_by_customer, closing_entry=closing_entry
- )
+ enqueue_job(create_merge_logs, invoice_by_customer=invoice_by_customer, closing_entry=closing_entry)
else:
create_merge_logs(invoice_by_customer, closing_entry)
@@ -431,9 +431,7 @@
if not item.serial_no and not item.serial_and_batch_bundle:
continue
- return_against_is_added = any(
- d for d in _invoices if d.pos_invoice == pos_invoice.return_against
- )
+ return_against_is_added = any(d for d in _invoices if d.pos_invoice == pos_invoice.return_against)
if return_against_is_added:
break
@@ -533,7 +531,7 @@
timeout=10000,
event="processing_merge_logs",
job_id=job_id,
- now=frappe.conf.developer_mode or frappe.flags.in_test
+ now=frappe.conf.developer_mode or frappe.flags.in_test,
)
if job == create_merge_logs:
diff --git a/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py b/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py
index 0ad9131..904d8e8 100644
--- a/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py
+++ b/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py
@@ -31,15 +31,11 @@
pos_inv.submit()
pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1)
- pos_inv2.append(
- "payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200}
- )
+ pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200})
pos_inv2.submit()
pos_inv3 = create_pos_invoice(customer="_Test Customer 2", rate=2300, do_not_submit=1)
- pos_inv3.append(
- "payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 2300}
- )
+ pos_inv3.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 2300})
pos_inv3.submit()
consolidate_pos_invoices()
@@ -68,15 +64,11 @@
pos_inv.submit()
pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1)
- pos_inv2.append(
- "payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200}
- )
+ pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200})
pos_inv2.submit()
pos_inv3 = create_pos_invoice(customer="_Test Customer 2", rate=2300, do_not_submit=1)
- pos_inv3.append(
- "payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 2300}
- )
+ pos_inv3.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 2300})
pos_inv3.submit()
pos_inv_cn = make_sales_return(pos_inv.name)
@@ -312,7 +304,7 @@
init_user_and_profile()
item_rates = [69, 59, 29]
- for i in [1, 2]:
+ for _i in [1, 2]:
inv = create_pos_invoice(is_return=1, do_not_save=1)
inv.items = []
for rate in item_rates:
@@ -406,7 +398,6 @@
The second and third POS Invoice should be consolidated with a single Merge Log
"""
- from erpnext.stock.doctype.serial_no.test_serial_no import get_serial_nos
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
frappe.db.sql("delete from `tabPOS Invoice`")
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.py b/erpnext/accounts/doctype/pos_profile/pos_profile.py
index c1add57..29403ab 100644
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.py
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.py
@@ -180,10 +180,8 @@
condition = " where pfu.default = 1 "
pos_view_users = frappe.db.sql_list(
- """select pfu.user
- from `tabPOS Profile User` as pfu {0}""".format(
- condition
- )
+ f"""select pfu.user
+ from `tabPOS Profile User` as pfu {condition}"""
)
for user in pos_view_users:
@@ -210,16 +208,13 @@
def get_child_nodes(group_type, root):
lft, rgt = frappe.db.get_value(group_type, root, ["lft", "rgt"])
return frappe.db.sql(
- """ Select name, lft, rgt from `tab{tab}` where
- lft >= {lft} and rgt <= {rgt} order by lft""".format(
- tab=group_type, lft=lft, rgt=rgt
- ),
+ f""" Select name, lft, rgt from `tab{group_type}` where
+ lft >= {lft} and rgt <= {rgt} order by lft""",
as_dict=1,
)
def required_accounting_dimensions():
-
p = frappe.qb.DocType("Accounting Dimension")
c = frappe.qb.DocType("Accounting Dimension Detail")
diff --git a/erpnext/accounts/doctype/pos_profile/test_pos_profile.py b/erpnext/accounts/doctype/pos_profile/test_pos_profile.py
index b468ad3..f2e3c8f 100644
--- a/erpnext/accounts/doctype/pos_profile/test_pos_profile.py
+++ b/erpnext/accounts/doctype/pos_profile/test_pos_profile.py
@@ -7,7 +7,6 @@
from erpnext.accounts.doctype.pos_profile.pos_profile import (
get_child_nodes,
- required_accounting_dimensions,
)
from erpnext.stock.get_item_details import get_pos_profile
@@ -55,11 +54,9 @@
return (
frappe.db.sql(
- """ select name, customer_name, customer_group,
+ f""" select name, customer_name, customer_group,
territory, customer_pos_id from tabCustomer where disabled = 0
- and {cond}""".format(
- cond=cond
- ),
+ and {cond}""",
tuple(customer_groups),
as_dict=1,
)
@@ -78,7 +75,7 @@
cond = "and i.item_group in (%s)" % (", ".join(["%s"] * len(args_list)))
return frappe.db.sql(
- """
+ f"""
select
i.name, i.item_code, i.item_name, i.description, i.item_group, i.has_batch_no,
i.has_serial_no, i.is_stock_item, i.brand, i.stock_uom, i.image,
@@ -91,10 +88,8 @@
where
i.disabled = 0 and i.has_variants = 0 and i.is_sales_item = 1 and i.is_fixed_asset = 0
{cond}
- """.format(
- cond=cond
- ),
- tuple([company] + args_list),
+ """,
+ tuple([company, *args_list]),
as_dict=1,
)
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
index 300692f..11529ef 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
@@ -186,9 +186,9 @@
if self.priority and cint(self.priority) == 1:
throw(
- _("As the field {0} is enabled, the value of the field {1} should be more than 1.").format(
- frappe.bold("Apply Discount on Discounted Rate"), frappe.bold("Priority")
- )
+ _(
+ "As the field {0} is enabled, the value of the field {1} should be more than 1."
+ ).format(frappe.bold("Apply Discount on Discounted Rate"), frappe.bold("Priority"))
)
def validate_applicable_for_selling_or_buying(self):
@@ -458,9 +458,11 @@
)
if pricing_rule.apply_rule_on_other_items:
- item_details["apply_rule_on_other_items"] = json.dumps(pricing_rule.apply_rule_on_other_items)
+ item_details["apply_rule_on_other_items"] = json.dumps(
+ pricing_rule.apply_rule_on_other_items
+ )
- if pricing_rule.coupon_code_based == 1 and args.coupon_code == None:
+ if pricing_rule.coupon_code_based == 1 and args.coupon_code is None:
return item_details
if not pricing_rule.validate_applied_rule:
@@ -504,7 +506,6 @@
if args.transaction_type == "selling":
if args.customer and not (args.customer_group and args.territory):
-
if args.quotation_to and args.quotation_to != "Customer":
customer = frappe._dict()
else:
@@ -535,9 +536,9 @@
def apply_price_discount_rule(pricing_rule, item_details, args):
item_details.pricing_rule_for = pricing_rule.rate_or_discount
- if (
- pricing_rule.margin_type in ["Amount", "Percentage"] and pricing_rule.currency == args.currency
- ) or (pricing_rule.margin_type == "Percentage"):
+ if (pricing_rule.margin_type in ["Amount", "Percentage"] and pricing_rule.currency == args.currency) or (
+ pricing_rule.margin_type == "Percentage"
+ ):
item_details.margin_type = pricing_rule.margin_type
item_details.has_margin = True
@@ -685,7 +686,7 @@
return frappe.get_all(
"UOM Conversion Detail",
- filters={"parent": ("in", items), "uom": ("like", "{0}%".format(txt))},
+ filters={"parent": ("in", items), "uom": ("like", f"{txt}%")},
fields=["distinct uom"],
as_list=1,
)
diff --git a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
index 5bb366a..046a599 100644
--- a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
@@ -103,8 +103,6 @@
self.assertEqual(details.get("discount_percentage"), 15)
def test_pricing_rule_for_margin(self):
- from frappe import MandatoryError
-
from erpnext.stock.get_item_details import get_item_details
test_record = {
@@ -205,8 +203,6 @@
self.assertEqual(details.get("discount_percentage"), 10)
def test_pricing_rule_for_variants(self):
- from frappe import MandatoryError
-
from erpnext.stock.get_item_details import get_item_details
if not frappe.db.exists("Item", "Test Variant PRT"):
@@ -1181,8 +1177,7 @@
"Pricing Rule Item Group",
"Pricing Rule Brand",
]:
-
- frappe.db.sql("delete from `tab{0}`".format(doctype))
+ frappe.db.sql(f"delete from `tab{doctype}`")
def make_item_price(item, price_list_name, item_price):
diff --git a/erpnext/accounts/doctype/pricing_rule/utils.py b/erpnext/accounts/doctype/pricing_rule/utils.py
index 73c5d59..2144233 100644
--- a/erpnext/accounts/doctype/pricing_rule/utils.py
+++ b/erpnext/accounts/doctype/pricing_rule/utils.py
@@ -101,14 +101,12 @@
if not args.get(apply_on_field):
return []
- child_doc = "`tabPricing Rule {0}`".format(apply_on)
+ child_doc = f"`tabPricing Rule {apply_on}`"
conditions = item_variant_condition = item_conditions = ""
values[apply_on_field] = args.get(apply_on_field)
if apply_on_field in ["item_code", "brand"]:
- item_conditions = "{child_doc}.{apply_on_field}= %({apply_on_field})s".format(
- child_doc=child_doc, apply_on_field=apply_on_field
- )
+ item_conditions = f"{child_doc}.{apply_on_field}= %({apply_on_field})s"
if apply_on_field == "item_code":
if args.get("uom", None):
@@ -121,23 +119,19 @@
args.variant_of = frappe.get_cached_value("Item", args.item_code, "variant_of")
if args.variant_of:
- item_variant_condition = " or {child_doc}.item_code=%(variant_of)s ".format(
- child_doc=child_doc
- )
+ item_variant_condition = f" or {child_doc}.item_code=%(variant_of)s "
values["variant_of"] = args.variant_of
elif apply_on_field == "item_group":
item_conditions = _get_tree_conditions(args, "Item Group", child_doc, False)
if args.get("uom", None):
- item_conditions += (
- " and ({child_doc}.uom='{item_uom}' or IFNULL({child_doc}.uom, '')='')".format(
- child_doc=child_doc, item_uom=args.get("uom")
- )
+ item_conditions += " and ({child_doc}.uom='{item_uom}' or IFNULL({child_doc}.uom, '')='')".format(
+ child_doc=child_doc, item_uom=args.get("uom")
)
conditions += get_other_conditions(conditions, values, args)
warehouse_conditions = _get_tree_conditions(args, "Warehouse", "`tabPricing Rule`")
if warehouse_conditions:
- warehouse_conditions = " and {0}".format(warehouse_conditions)
+ warehouse_conditions = f" and {warehouse_conditions}"
if not args.price_list:
args.price_list = None
@@ -163,7 +157,7 @@
item_variant_condition=item_variant_condition,
transaction_type=args.transaction_type,
warehouse_cond=warehouse_conditions,
- apply_on_other_field="other_{0}".format(apply_on_field),
+ apply_on_other_field=f"other_{apply_on_field}",
conditions=conditions,
),
values,
@@ -202,14 +196,13 @@
frappe.throw(_("Invalid {0}").format(args.get(field)))
parent_groups = frappe.db.sql_list(
- """select name from `tab%s`
- where lft<=%s and rgt>=%s"""
- % (parenttype, "%s", "%s"),
+ """select name from `tab{}`
+ where lft<={} and rgt>={}""".format(parenttype, "%s", "%s"),
(lft, rgt),
)
if parenttype in ["Customer Group", "Item Group", "Territory"]:
- parent_field = "parent_{0}".format(frappe.scrub(parenttype))
+ parent_field = f"parent_{frappe.scrub(parenttype)}"
root_name = frappe.db.get_list(
parenttype,
{"is_group": 1, parent_field: ("is", "not set")},
@@ -235,10 +228,10 @@
def get_other_conditions(conditions, values, args):
for field in ["company", "customer", "supplier", "campaign", "sales_partner"]:
if args.get(field):
- conditions += " and ifnull(`tabPricing Rule`.{0}, '') in (%({1})s, '')".format(field, field)
+ conditions += f" and ifnull(`tabPricing Rule`.{field}, '') in (%({field})s, '')"
values[field] = args.get(field)
else:
- conditions += " and ifnull(`tabPricing Rule`.{0}, '') = ''".format(field)
+ conditions += f" and ifnull(`tabPricing Rule`.{field}, '') = ''"
for parenttype in ["Customer Group", "Territory", "Supplier Group"]:
group_condition = _get_tree_conditions(args, parenttype, "`tabPricing Rule`")
@@ -510,7 +503,7 @@
"transaction_date" if frappe.get_meta(doctype).has_field("transaction_date") else "posting_date"
)
- child_doctype = "{0} Item".format(doctype)
+ child_doctype = f"{doctype} Item"
apply_on = frappe.scrub(pr_doc.get("apply_on"))
values = [pr_doc.valid_from, pr_doc.valid_upto]
@@ -520,9 +513,7 @@
warehouses = get_child_warehouses(pr_doc.warehouse)
condition += """ and `tab{child_doc}`.warehouse in ({warehouses})
- """.format(
- child_doc=child_doctype, warehouses=",".join(["%s"] * len(warehouses))
- )
+ """.format(child_doc=child_doctype, warehouses=",".join(["%s"] * len(warehouses)))
values.extend(warehouses)
@@ -534,16 +525,14 @@
values.extend(items)
data_set = frappe.db.sql(
- """ SELECT `tab{child_doc}`.stock_qty,
- `tab{child_doc}`.amount
- FROM `tab{child_doc}`, `tab{parent_doc}`
+ f""" SELECT `tab{child_doctype}`.stock_qty,
+ `tab{child_doctype}`.amount
+ FROM `tab{child_doctype}`, `tab{doctype}`
WHERE
- `tab{child_doc}`.parent = `tab{parent_doc}`.name and `tab{parent_doc}`.{date_field}
- between %s and %s and `tab{parent_doc}`.docstatus = 1
- {condition} group by `tab{child_doc}`.name
- """.format(
- parent_doc=doctype, child_doc=child_doctype, condition=condition, date_field=date_field
- ),
+ `tab{child_doctype}`.parent = `tab{doctype}`.name and `tab{doctype}`.{date_field}
+ between %s and %s and `tab{doctype}`.docstatus = 1
+ {condition} group by `tab{child_doctype}`.name
+ """,
tuple(values),
as_dict=1,
)
@@ -562,11 +551,9 @@
conditions = get_other_conditions(conditions, values, doc)
pricing_rules = frappe.db.sql(
- """ Select `tabPricing Rule`.* from `tabPricing Rule`
+ f""" Select `tabPricing Rule`.* from `tabPricing Rule`
where {conditions} and `tabPricing Rule`.disable = 0
- """.format(
- conditions=conditions
- ),
+ """,
values,
as_dict=1,
)
@@ -591,7 +578,9 @@
continue
if (
- d.validate_applied_rule and doc.get(field) is not None and doc.get(field) < d.get(pr_field)
+ d.validate_applied_rule
+ and doc.get(field) is not None
+ and doc.get(field) < d.get(pr_field)
):
frappe.msgprint(_("User has not applied rule on the invoice {0}").format(doc.name))
else:
@@ -660,9 +649,7 @@
qty = pricing_rule.free_qty or 1
if pricing_rule.is_recursive:
- transaction_qty = (
- args.get("qty") if args else doc.total_qty
- ) - pricing_rule.apply_recursion_over
+ transaction_qty = (args.get("qty") if args else doc.total_qty) - pricing_rule.apply_recursion_over
if transaction_qty:
qty = flt(transaction_qty) * qty / pricing_rule.recurse_for
if pricing_rule.round_free_qty:
diff --git a/erpnext/accounts/doctype/process_deferred_accounting/test_process_deferred_accounting.py b/erpnext/accounts/doctype/process_deferred_accounting/test_process_deferred_accounting.py
index 263621d..fddd9f8 100644
--- a/erpnext/accounts/doctype/process_deferred_accounting/test_process_deferred_accounting.py
+++ b/erpnext/accounts/doctype/process_deferred_accounting/test_process_deferred_accounting.py
@@ -40,7 +40,7 @@
si.save()
si.submit()
- process_deferred_accounting = doc = frappe.get_doc(
+ process_deferred_accounting = frappe.get_doc(
dict(
doctype="Process Deferred Accounting",
posting_date="2023-07-01",
diff --git a/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.py b/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.py
index 761c2bc..5ae6f64 100644
--- a/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.py
+++ b/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.py
@@ -66,9 +66,7 @@
def on_cancel(self):
self.db_set("status", "Cancelled")
- log = frappe.db.get_value(
- "Process Payment Reconciliation Log", filters={"process_pr": self.name}
- )
+ log = frappe.db.get_value("Process Payment Reconciliation Log", filters={"process_pr": self.name})
if log:
frappe.db.set_value("Process Payment Reconciliation Log", log, "status", "Cancelled")
@@ -416,7 +414,6 @@
# If Payment Entry, update details only for newly linked references
# This is for performance
if allocations[0].reference_type == "Payment Entry":
-
references = [(x.invoice_type, x.invoice_number) for x in allocations]
pe = frappe.get_doc(allocations[0].reference_type, allocations[0].reference_name)
pe.flags.ignore_validate_update_after_submit = True
@@ -430,13 +427,14 @@
# Update reconciled count
reconciled_count = frappe.db.count(
- "Process Payment Reconciliation Log Allocations", filters={"parent": log, "reconciled": True}
+ "Process Payment Reconciliation Log Allocations",
+ filters={"parent": log, "reconciled": True},
)
frappe.db.set_value(
"Process Payment Reconciliation Log", log, "reconciled_entries", reconciled_count
)
- except Exception as err:
+ except Exception:
# Update the parent doc about the exception
frappe.db.rollback()
@@ -474,15 +472,12 @@
frappe.db.set_value("Process Payment Reconciliation Log", log, "reconciled", True)
frappe.db.set_value("Process Payment Reconciliation", doc, "status", "Completed")
else:
-
if frappe.db.get_value("Process Payment Reconciliation", doc, "status") != "Paused":
# trigger next batch in job
# generate reconcile job name
allocation = get_next_allocation(log)
if allocation:
- reconcile_job_name = (
- f"process_{doc}_reconcile_allocation_{allocation[0].idx}_{allocation[-1].idx}"
- )
+ reconcile_job_name = f"process_{doc}_reconcile_allocation_{allocation[0].idx}_{allocation[-1].idx}"
else:
reconcile_job_name = f"process_{doc}_reconcile"
diff --git a/erpnext/accounts/doctype/process_payment_reconciliation_log/process_payment_reconciliation_log.py b/erpnext/accounts/doctype/process_payment_reconciliation_log/process_payment_reconciliation_log.py
index 153fffc..80337e1 100644
--- a/erpnext/accounts/doctype/process_payment_reconciliation_log/process_payment_reconciliation_log.py
+++ b/erpnext/accounts/doctype/process_payment_reconciliation_log/process_payment_reconciliation_log.py
@@ -24,9 +24,7 @@
process_pr: DF.Link
reconciled: DF.Check
reconciled_entries: DF.Int
- status: DF.Literal[
- "Running", "Paused", "Reconciled", "Partially Reconciled", "Failed", "Cancelled"
- ]
+ status: DF.Literal["Running", "Paused", "Reconciled", "Partially Reconciled", "Failed", "Cancelled"]
total_allocations: DF.Int
# end: auto-generated types
diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py
index f9d6136..c73c13e 100644
--- a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py
+++ b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py
@@ -46,9 +46,7 @@
company: DF.Link
cost_center: DF.TableMultiSelect[PSOACostCenter]
currency: DF.Link | None
- customer_collection: DF.Literal[
- "", "Customer Group", "Territory", "Sales Partner", "Sales Person"
- ]
+ customer_collection: DF.Literal["", "Customer Group", "Territory", "Sales Partner", "Sales Person"]
customers: DF.Table[ProcessStatementOfAccountsCustomer]
enable_auto_email: DF.Check
filter_duration: DF.Int
@@ -406,9 +404,7 @@
{mcond}
ORDER BY
contact.creation desc
- """.format(
- mcond=get_match_cond("Contact")
- ),
+ """.format(mcond=get_match_cond("Contact")),
customer_name,
)
@@ -481,9 +477,7 @@
else:
new_to_date = add_months(new_to_date, 1 if doc.frequency == "Monthly" else 3)
new_from_date = add_months(new_to_date, -1 * doc.filter_duration)
- doc.add_comment(
- "Comment", "Emails sent on: " + frappe.utils.format_datetime(frappe.utils.now())
- )
+ doc.add_comment("Comment", "Emails sent on: " + frappe.utils.format_datetime(frappe.utils.now()))
if doc.report == "General Ledger":
doc.db_set("to_date", new_to_date, commit=True)
doc.db_set("from_date", new_from_date, commit=True)
diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/test_process_statement_of_accounts.py b/erpnext/accounts/doctype/process_statement_of_accounts/test_process_statement_of_accounts.py
index a3a74df..92dbb5e 100644
--- a/erpnext/accounts/doctype/process_statement_of_accounts/test_process_statement_of_accounts.py
+++ b/erpnext/accounts/doctype/process_statement_of_accounts/test_process_statement_of_accounts.py
@@ -1,7 +1,6 @@
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
-import unittest
import frappe
from frappe.tests.utils import FrappeTestCase
diff --git a/erpnext/accounts/doctype/process_subscription/process_subscription.py b/erpnext/accounts/doctype/process_subscription/process_subscription.py
index b271e7c..f0a2244 100644
--- a/erpnext/accounts/doctype/process_subscription/process_subscription.py
+++ b/erpnext/accounts/doctype/process_subscription/process_subscription.py
@@ -2,7 +2,6 @@
# For license information, please see license.txt
from datetime import datetime
-from typing import Union
import frappe
from frappe.model.document import Document
@@ -30,7 +29,7 @@
def create_subscription_process(
- subscription: str | None = None, posting_date: Union[str, datetime.date] | None = None
+ subscription: str | None = None, posting_date: str | datetime.date | None = None
):
"""Create a new Process Subscription document"""
doc = frappe.new_doc("Process Subscription")
diff --git a/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py b/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py
index a9c1900..ed4e3d2 100644
--- a/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py
+++ b/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py
@@ -169,9 +169,7 @@
docnames = frappe.get_all("Pricing Rule", filters={"promotional_scheme": self.name})
for docname in docnames:
- if frappe.db.exists(
- "Pricing Rule Detail", {"pricing_rule": docname.name, "docstatus": ("<", 2)}
- ):
+ if frappe.db.exists("Pricing Rule Detail", {"pricing_rule": docname.name, "docstatus": ("<", 2)}):
raise_for_transaction_exists(self.name)
if docnames and not transaction_exists:
@@ -246,7 +244,7 @@
args = get_args_for_pricing_rule(doc)
applicable_for = frappe.scrub(doc.get("applicable_for"))
- for idx, d in enumerate(doc.get(child_doc)):
+ for _idx, d in enumerate(doc.get(child_doc)):
if d.name in rules:
if not args.get(applicable_for):
docname = get_pricing_rule_docname(d)
@@ -256,7 +254,14 @@
for applicable_for_value in args.get(applicable_for):
docname = get_pricing_rule_docname(d, applicable_for, applicable_for_value)
pr = prepare_pricing_rule(
- args, doc, child_doc, discount_fields, d, docname, applicable_for, applicable_for_value
+ args,
+ doc,
+ child_doc,
+ discount_fields,
+ d,
+ docname,
+ applicable_for,
+ applicable_for_value,
)
new_doc.append(pr)
@@ -282,7 +287,7 @@
def get_pricing_rule_docname(
- row: dict, applicable_for: str = None, applicable_for_value: str = None
+ row: dict, applicable_for: str | None = None, applicable_for_value: str | None = None
) -> str:
fields = ["promotional_scheme_id", "name"]
filters = {"promotional_scheme_id": row.name}
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 4b5b456..e224b59 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -227,7 +227,7 @@
# end: auto-generated types
def __init__(self, *args, **kwargs):
- super(PurchaseInvoice, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
self.status_updater = [
{
"source_dt": "Purchase Invoice Item",
@@ -244,7 +244,7 @@
]
def onload(self):
- super(PurchaseInvoice, self).onload()
+ super().onload()
supplier_tds = frappe.db.get_value("Supplier", self.supplier, "tax_withholding_category")
self.set_onload("supplier_tds", supplier_tds)
@@ -264,7 +264,7 @@
self.validate_posting_time()
- super(PurchaseInvoice, self).validate()
+ super().validate()
if not self.is_return:
self.po_required()
@@ -324,7 +324,6 @@
if flt(self.paid_amount) + flt(self.write_off_amount) - flt(
self.get("rounded_total") or self.grand_total
) > 1 / (10 ** (self.precision("base_grand_total") + 1)):
-
frappe.throw(_("""Paid amount + Write Off Amount can not be greater than Grand Total"""))
def create_remarks(self):
@@ -353,7 +352,7 @@
self.tax_withholding_category = tds_category
self.set_onload("supplier_tds", tds_category)
- super(PurchaseInvoice, self).set_missing_values(for_validate)
+ super().set_missing_values(for_validate)
def validate_credit_to_acc(self):
if not self.credit_to:
@@ -392,7 +391,7 @@
check_on_hold_or_closed_status("Purchase Order", d.purchase_order)
def validate_with_previous_doc(self):
- super(PurchaseInvoice, self).validate_with_previous_doc(
+ super().validate_with_previous_doc(
{
"Purchase Order": {
"ref_dn_field": "purchase_order",
@@ -440,7 +439,7 @@
exc=WarehouseMissingError,
)
- super(PurchaseInvoice, self).validate_warehouse()
+ super().validate_warehouse()
def validate_item_code(self):
for d in self.get("items"):
@@ -476,7 +475,6 @@
or not frappe.db.get_value("Purchase Order Item", item.po_detail, "delivered_by_supplier")
)
):
-
if self.update_stock and item.warehouse and (not item.from_warehouse):
if (
for_validate
@@ -504,12 +502,16 @@
if negative_expense_booked_in_pr:
if (
- for_validate and item.expense_account and item.expense_account != stock_not_billed_account
+ for_validate
+ and item.expense_account
+ and item.expense_account != stock_not_billed_account
):
msg = _(
"Row {0}: Expense Head changed to {1} because expense is booked against this account in Purchase Receipt {2}"
).format(
- item.idx, frappe.bold(stock_not_billed_account), frappe.bold(item.purchase_receipt)
+ item.idx,
+ frappe.bold(stock_not_billed_account),
+ frappe.bold(item.purchase_receipt),
)
frappe.msgprint(msg, title=_("Expense Head Changed"))
@@ -518,7 +520,9 @@
# If no purchase receipt present then book expense in 'Stock Received But Not Billed'
# This is done in cases when Purchase Invoice is created before Purchase Receipt
if (
- for_validate and item.expense_account and item.expense_account != stock_not_billed_account
+ for_validate
+ and item.expense_account
+ and item.expense_account != stock_not_billed_account
):
msg = _(
"Row {0}: Expense Head changed to {1} as no Purchase Receipt is created against Item {2}."
@@ -569,7 +573,6 @@
def po_required(self):
if frappe.db.get_single_value("Buying Settings", "po_required") == "Yes":
-
if frappe.get_value(
"Supplier", self.supplier, "allow_purchase_invoice_creation_without_purchase_order"
):
@@ -579,7 +582,9 @@
if not d.purchase_order:
msg = _("Purchase Order Required for item {}").format(frappe.bold(d.item_code))
msg += "<br><br>"
- msg += _("To submit the invoice without purchase order please set {0} as {1} in {2}").format(
+ msg += _(
+ "To submit the invoice without purchase order please set {0} as {1} in {2}"
+ ).format(
frappe.bold(_("Purchase Order Required")),
frappe.bold("No"),
get_link_to_form("Buying Settings", "Buying Settings", "Buying Settings"),
@@ -589,7 +594,6 @@
def pr_required(self):
stock_items = self.get_stock_items()
if frappe.db.get_single_value("Buying Settings", "pr_required") == "Yes":
-
if frappe.get_value(
"Supplier", self.supplier, "allow_purchase_invoice_creation_without_purchase_receipt"
):
@@ -622,7 +626,8 @@
frappe.throw(_("Purchase Order {0} is not submitted").format(d.purchase_order))
if d.purchase_receipt:
submitted = frappe.db.sql(
- "select name from `tabPurchase Receipt` where docstatus = 1 and name = %s", d.purchase_receipt
+ "select name from `tabPurchase Receipt` where docstatus = 1 and name = %s",
+ d.purchase_receipt,
)
if not submitted:
frappe.throw(_("Purchase Receipt {0} is not submitted").format(d.purchase_receipt))
@@ -670,7 +675,9 @@
for item in self.get("items"):
if item.purchase_receipt:
frappe.throw(
- _("Stock cannot be updated against Purchase Receipt {0}").format(item.purchase_receipt)
+ _("Stock cannot be updated against Purchase Receipt {0}").format(
+ item.purchase_receipt
+ )
)
def validate_for_repost(self):
@@ -680,7 +687,7 @@
validate_docs_for_deferred_accounting([], [self.name])
def on_submit(self):
- super(PurchaseInvoice, self).on_submit()
+ super().on_submit()
self.check_prev_docstatus()
@@ -717,9 +724,7 @@
if self.update_stock == 1:
self.repost_future_sle_and_gle()
- if (
- frappe.db.get_single_value("Buying Settings", "project_update_frequency") == "Each Transaction"
- ):
+ if frappe.db.get_single_value("Buying Settings", "project_update_frequency") == "Each Transaction":
self.update_project()
update_linked_doc(self.doctype, self.name, self.inter_company_invoice_reference)
@@ -911,7 +916,7 @@
if flt(item.base_net_amount):
account_currency = get_account_currency(item.expense_account)
if item.item_code:
- asset_category = frappe.get_cached_value("Item", item.item_code, "asset_category")
+ frappe.get_cached_value("Item", item.item_code, "asset_category")
if (
self.update_stock
@@ -1016,7 +1021,9 @@
if flt(item.rm_supp_cost):
supplier_warehouse_account = warehouse_account[self.supplier_warehouse]["account"]
if not supplier_warehouse_account:
- frappe.throw(_("Please set account in Warehouse {0}").format(self.supplier_warehouse))
+ frappe.throw(
+ _("Please set account in Warehouse {0}").format(self.supplier_warehouse)
+ )
gl_entries.append(
self.get_gl_dict(
{
@@ -1066,10 +1073,9 @@
and self.conversion_rate != exchange_rate_map[item.purchase_receipt]
and item.net_rate == net_rate_map[item.pr_detail]
):
-
- discrepancy_caused_by_exchange_rate_difference = (item.qty * item.net_rate) * (
- exchange_rate_map[item.purchase_receipt] - self.conversion_rate
- )
+ discrepancy_caused_by_exchange_rate_difference = (
+ item.qty * item.net_rate
+ ) * (exchange_rate_map[item.purchase_receipt] - self.conversion_rate)
gl_entries.append(
self.get_gl_dict(
@@ -1111,7 +1117,7 @@
(item.purchase_receipt, valuation_tax_accounts),
)
- stock_rbnb = (
+ (
self.get_company_default("asset_received_but_not_billed")
if item.is_fixed_asset
else self.stock_received_but_not_billed
@@ -1150,7 +1156,9 @@
default_provisional_account = self.get_company_default("default_provisional_account")
provisional_accounts = set(
[
- d.provisional_expense_account if d.provisional_expense_account else default_provisional_account
+ d.provisional_expense_account
+ if d.provisional_expense_account
+ else default_provisional_account
for d in pr_items
]
)
@@ -1207,9 +1215,7 @@
},
)
- def make_stock_adjustment_entry(
- self, gl_entries, item, voucher_wise_stock_value, account_currency
- ):
+ def make_stock_adjustment_entry(self, gl_entries, item, voucher_wise_stock_value, account_currency):
net_amt_precision = item.precision("base_net_amount")
val_rate_db_precision = 6 if cint(item.precision("valuation_rate")) <= 6 else 9
@@ -1225,7 +1231,6 @@
and warehouse_debit_amount
!= flt(voucher_wise_stock_value.get((item.name, item.warehouse)), net_amt_precision)
):
-
cost_of_goods_sold_account = self.get_company_default("default_expense_account")
stock_amount = flt(voucher_wise_stock_value.get((item.name, item.warehouse)), net_amt_precision)
stock_adjustment_amt = warehouse_debit_amount - stock_amount
@@ -1448,9 +1453,7 @@
# base_rounding_adjustment may become zero due to small precision
# eg: rounding_adjustment = 0.01 and exchange rate = 0.05 and precision of base_rounding_adjustment is 2
# then base_rounding_adjustment becomes zero and error is thrown in GL Entry
- if (
- not self.is_internal_transfer() and self.rounding_adjustment and self.base_rounding_adjustment
- ):
+ if not self.is_internal_transfer() and self.rounding_adjustment and self.base_rounding_adjustment:
round_off_account, round_off_cost_center = get_round_off_account_and_cost_center(
self.company, "Purchase Invoice", self.name, self.use_company_roundoff_cost_center
)
@@ -1473,7 +1476,7 @@
def on_cancel(self):
check_if_return_invoice_linked_with_payment_entry(self)
- super(PurchaseInvoice, self).on_cancel()
+ super().on_cancel()
self.check_on_hold_or_closed_status()
@@ -1504,9 +1507,7 @@
if self.update_stock == 1:
self.repost_future_sle_and_gle()
- if (
- frappe.db.get_single_value("Buying Settings", "project_update_frequency") == "Each Transaction"
- ):
+ if frappe.db.get_single_value("Buying Settings", "project_update_frequency") == "Each Transaction":
self.update_project()
self.db_set("status", "Cancelled")
@@ -1538,9 +1539,7 @@
pj = frappe.qb.DocType("Project")
for proj, value in projects.items():
- res = (
- frappe.qb.from_(pj).select(pj.total_purchase_cost).where(pj.name == proj).for_update().run()
- )
+ res = frappe.qb.from_(pj).select(pj.total_purchase_cost).where(pj.name == proj).for_update().run()
current_purchase_cost = res and res[0][0] or 0
frappe.db.set_value("Project", proj, "total_purchase_cost", current_purchase_cost + value)
@@ -1808,9 +1807,7 @@
)
net_rate_map = frappe._dict(
- frappe.get_all(
- child_doctype, filters={"name": ("in", items)}, fields=["name", "net_rate"], as_list=1
- )
+ frappe.get_all(child_doctype, filters={"name": ("in", items)}, fields=["name", "net_rate"], as_list=1)
)
return exchange_rate_map, net_rate_map
diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index 2ef0275..879aa21 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -2,8 +2,6 @@
# License: GNU General Public License v3. See license.txt
-import unittest
-
import frappe
from frappe.tests.utils import FrappeTestCase, change_settings
from frappe.utils import add_days, cint, flt, getdate, nowdate, today
@@ -267,7 +265,6 @@
self.assertEqual(pi.on_hold, 0)
def test_gl_entries_with_perpetual_inventory_against_pr(self):
-
pr = make_purchase_receipt(
company="_Test Company with perpetual inventory",
supplier_warehouse="Work In Progress - TCP1",
@@ -318,7 +315,7 @@
]
)
- for i, gle in enumerate(gl_entries):
+ for _i, gle in enumerate(gl_entries):
self.assertEqual(expected_values[gle.account][0], gle.account)
self.assertEqual(expected_values[gle.account][1], gle.debit)
self.assertEqual(expected_values[gle.account][2], gle.credit)
@@ -342,9 +339,7 @@
pi.submit()
# Get exchnage gain and loss account
- exchange_gain_loss_account = frappe.db.get_value(
- "Company", pi.company, "exchange_gain_loss_account"
- )
+ exchange_gain_loss_account = frappe.db.get_value("Company", pi.company, "exchange_gain_loss_account")
# fetching the latest GL Entry with exchange gain and loss account account
amount = frappe.db.get_value(
@@ -560,12 +555,10 @@
project = frappe.get_doc("Project", {"project_name": "_Test Project for Purchase"})
existing_purchase_cost = frappe.db.sql(
- """select sum(base_net_amount)
+ f"""select sum(base_net_amount)
from `tabPurchase Invoice Item`
- where project = '{0}'
- and docstatus=1""".format(
- project.name
- )
+ where project = '{project.name}'
+ and docstatus=1"""
)
existing_purchase_cost = existing_purchase_cost and existing_purchase_cost[0][0] or 0
@@ -740,7 +733,7 @@
"credit",
"credit_in_account_currency",
):
- for i, gle in enumerate(gl_entries):
+ for _i, gle in enumerate(gl_entries):
self.assertEqual(expected_values[gle.account][field], gle[field])
# Check for valid currency
@@ -762,7 +755,6 @@
self.assertFalse(gle)
def test_purchase_invoice_update_stock_gl_entry_with_perpetual_inventory(self):
-
pi = make_purchase_invoice(
update_stock=1,
posting_date=frappe.utils.nowdate(),
@@ -791,13 +783,12 @@
(d[0], d) for d in [[pi.credit_to, 0.0, 250.0], [stock_in_hand_account, 250.0, 0.0]]
)
- for i, gle in enumerate(gl_entries):
+ for _i, gle in enumerate(gl_entries):
self.assertEqual(expected_gl_entries[gle.account][0], gle.account)
self.assertEqual(expected_gl_entries[gle.account][1], gle.debit)
self.assertEqual(expected_gl_entries[gle.account][2], gle.credit)
def test_purchase_invoice_for_is_paid_and_update_stock_gl_entry_with_perpetual_inventory(self):
-
pi = make_purchase_invoice(
update_stock=1,
posting_date=frappe.utils.nowdate(),
@@ -832,7 +823,7 @@
]
)
- for i, gle in enumerate(gl_entries):
+ for _i, gle in enumerate(gl_entries):
self.assertEqual(expected_gl_entries[gle.account][0], gle.account)
self.assertEqual(expected_gl_entries[gle.account][1], gle.debit)
self.assertEqual(expected_gl_entries[gle.account][2], gle.credit)
@@ -904,9 +895,9 @@
pi.load_from_db()
serial_no = get_serial_nos_from_bundle(pi.get("items")[0].serial_and_batch_bundle)[0]
- rejected_serial_no = get_serial_nos_from_bundle(
- pi.get("items")[0].rejected_serial_and_batch_bundle
- )[0]
+ rejected_serial_no = get_serial_nos_from_bundle(pi.get("items")[0].rejected_serial_and_batch_bundle)[
+ 0
+ ]
self.assertEqual(
frappe.db.get_value("Serial No", serial_no, "warehouse"),
@@ -1036,12 +1027,8 @@
def test_duplicate_due_date_in_terms(self):
pi = make_purchase_invoice(do_not_save=1)
- pi.append(
- "payment_schedule", dict(due_date="2017-01-01", invoice_portion=50.00, payment_amount=50)
- )
- pi.append(
- "payment_schedule", dict(due_date="2017-01-01", invoice_portion=50.00, payment_amount=50)
- )
+ pi.append("payment_schedule", dict(due_date="2017-01-01", invoice_portion=50.00, payment_amount=50))
+ pi.append("payment_schedule", dict(due_date="2017-01-01", invoice_portion=50.00, payment_amount=50))
self.assertRaises(frappe.ValidationError, pi.insert)
@@ -1079,9 +1066,7 @@
cost_center = "_Test Cost Center for BS Account - _TC"
create_cost_center(cost_center_name="_Test Cost Center for BS Account", company="_Test Company")
- pi = make_purchase_invoice_against_cost_center(
- cost_center=cost_center, credit_to="Creditors - _TC"
- )
+ pi = make_purchase_invoice_against_cost_center(cost_center=cost_center, credit_to="Creditors - _TC")
self.assertEqual(pi.cost_center, cost_center)
expected_values = {
@@ -1541,9 +1526,7 @@
def test_provisional_accounting_entry(self):
setup_provisional_accounting()
- pr = make_purchase_receipt(
- item_code="_Test Non Stock Item", posting_date=add_days(nowdate(), -2)
- )
+ pr = make_purchase_receipt(item_code="_Test Non Stock Item", posting_date=add_days(nowdate(), -2))
pi = create_purchase_invoice_from_receipt(pr.name)
pi.set_posting_time = 1
@@ -1552,7 +1535,7 @@
pi.save()
pi.submit()
- self.assertEquals(pr.items[0].provisional_expense_account, "Provision Account - _TC")
+ self.assertEqual(pr.items[0].provisional_expense_account, "Provision Account - _TC")
# Check GLE for Purchase Invoice
expected_gle = [
@@ -1579,9 +1562,7 @@
["_Test Account Cost for Goods Sold - _TC", 250, 0, pi.posting_date],
]
- check_gl_entries(
- self, pr.name, expected_gle_for_purchase_receipt_post_pi_cancel, pr.posting_date
- )
+ check_gl_entries(self, pr.name, expected_gle_for_purchase_receipt_post_pi_cancel, pr.posting_date)
toggle_provisional_accounting_setting()
@@ -1630,9 +1611,7 @@
["_Test Account Cost for Goods Sold - _TC", 5000, 0, pi.posting_date],
]
- check_gl_entries(
- self, pr.name, expected_gle_for_purchase_receipt_post_pi_cancel, pr.posting_date
- )
+ check_gl_entries(self, pr.name, expected_gle_for_purchase_receipt_post_pi_cancel, pr.posting_date)
toggle_provisional_accounting_setting()
@@ -1678,9 +1657,7 @@
def test_adjust_incoming_rate(self):
frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 0)
- frappe.db.set_single_value(
- "Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 1
- )
+ frappe.db.set_single_value("Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 1)
# Increase the cost of the item
@@ -1732,9 +1709,7 @@
)
self.assertEqual(stock_value_difference, 50)
- frappe.db.set_single_value(
- "Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 0
- )
+ frappe.db.set_single_value("Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 0)
# Don't adjust incoming rate
@@ -1764,7 +1739,6 @@
frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 1)
def test_item_less_defaults(self):
-
pi = frappe.new_doc("Purchase Invoice")
pi.supplier = "_Test Supplier"
pi.company = "_Test Company"
@@ -2301,7 +2275,7 @@
pi.cost_center = args.parent_cost_center
bundle_id = None
- if not args.use_serial_batch_fields and ((args.get("batch_no") or args.get("serial_no"))):
+ if not args.use_serial_batch_fields and (args.get("batch_no") or args.get("serial_no")):
batches = {}
qty = args.qty if args.qty is not None else 5
item_code = args.item or args.item_code or "_Test Item"
@@ -2450,9 +2424,7 @@
parent_account=args.parent_account or "Current Liabilities - _TC",
company=company,
)
- toggle_provisional_accounting_setting(
- enable=1, company=company, provisional_account=provisional_account
- )
+ toggle_provisional_accounting_setting(enable=1, company=company, provisional_account=provisional_account)
def toggle_provisional_accounting_setting(**args):
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.py b/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.py
index 16c30c5..4c8504b 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.py
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.py
@@ -37,4 +37,4 @@
def autoname(self):
if self.company and self.title:
abbr = frappe.get_cached_value("Company", self.company, "abbr")
- self.name = "{0} - {1}".format(self.title, abbr)
+ self.name = f"{self.title} - {abbr}"
diff --git a/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py b/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py
index b050bc8..6bc1922 100644
--- a/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py
+++ b/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py
@@ -27,7 +27,7 @@
# end: auto-generated types
def __init__(self, *args, **kwargs):
- super(RepostAccountingLedger, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
self._allowed_types = get_allowed_types_from_settings()
def validate(self):
@@ -154,7 +154,9 @@
doc = frappe.get_doc(x.voucher_type, x.voucher_no)
if repost_doc.delete_cancelled_entries:
- frappe.db.delete("GL Entry", filters={"voucher_type": doc.doctype, "voucher_no": doc.name})
+ frappe.db.delete(
+ "GL Entry", filters={"voucher_type": doc.doctype, "voucher_no": doc.name}
+ )
frappe.db.delete(
"Payment Ledger Entry", filters={"voucher_type": doc.doctype, "voucher_no": doc.name}
)
@@ -200,7 +202,9 @@
if docs_with_deferred_revenue or docs_with_deferred_expense:
frappe.throw(
_("Documents: {0} have deferred revenue/expense enabled for them. Cannot repost.").format(
- frappe.bold(comma_and([x[0] for x in docs_with_deferred_expense + docs_with_deferred_revenue]))
+ frappe.bold(
+ comma_and([x[0] for x in docs_with_deferred_expense + docs_with_deferred_revenue])
+ )
)
)
diff --git a/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py b/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py
index d6f7096..f631ef4 100644
--- a/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py
+++ b/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py
@@ -9,7 +9,6 @@
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request
-from erpnext.accounts.doctype.repost_accounting_ledger.repost_accounting_ledger import start_repost
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
from erpnext.accounts.utils import get_fiscal_year
diff --git a/erpnext/accounts/doctype/repost_payment_ledger/repost_payment_ledger.py b/erpnext/accounts/doctype/repost_payment_ledger/repost_payment_ledger.py
index 2d10f7c..6b90300 100644
--- a/erpnext/accounts/doctype/repost_payment_ledger/repost_payment_ledger.py
+++ b/erpnext/accounts/doctype/repost_payment_ledger/repost_payment_ledger.py
@@ -40,7 +40,7 @@
frappe.db.set_value(repost_doc.doctype, repost_doc.name, "repost_error_log", "")
frappe.db.set_value(repost_doc.doctype, repost_doc.name, "repost_status", "Completed")
- except Exception as e:
+ except Exception:
frappe.db.rollback()
traceback = frappe.get_traceback(with_context=True)
@@ -75,7 +75,7 @@
# end: auto-generated types
def __init__(self, *args, **kwargs):
- super(RepostPaymentLedger, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
self.vouchers = []
def before_validate(self):
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 6be6a9b..3ccaba9 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -235,7 +235,7 @@
# end: auto-generated types
def __init__(self, *args, **kwargs):
- super(SalesInvoice, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
self.status_updater = [
{
"source_dt": "Sales Invoice Item",
@@ -272,7 +272,7 @@
self.indicator_title = _("Paid")
def validate(self):
- super(SalesInvoice, self).validate()
+ super().validate()
self.validate_auto_set_posting_time()
if not (self.is_pos or self.is_debit_note):
@@ -475,9 +475,7 @@
self.update_time_sheet(self.name)
- if (
- frappe.db.get_single_value("Selling Settings", "sales_update_frequency") == "Each Transaction"
- ):
+ if frappe.db.get_single_value("Selling Settings", "sales_update_frequency") == "Each Transaction":
update_company_current_month_sales(self.company)
self.update_project()
update_linked_doc(self.doctype, self.name, self.inter_company_invoice_reference)
@@ -493,9 +491,7 @@
and not self.dont_create_loyalty_points
):
self.make_loyalty_point_entry()
- elif (
- self.is_return and self.return_against and not self.is_consolidated and self.loyalty_program
- ):
+ elif self.is_return and self.return_against and not self.is_consolidated and self.loyalty_program:
against_si_doc = frappe.get_doc("Sales Invoice", self.return_against)
against_si_doc.delete_loyalty_point_entry()
against_si_doc.make_loyalty_point_entry()
@@ -524,11 +520,11 @@
def check_if_consolidated_invoice(self):
# since POS Invoice extends Sales Invoice, we explicitly check if doctype is Sales Invoice
if self.doctype == "Sales Invoice" and self.is_consolidated:
- invoice_or_credit_note = (
- "consolidated_credit_note" if self.is_return else "consolidated_invoice"
- )
+ invoice_or_credit_note = "consolidated_credit_note" if self.is_return else "consolidated_invoice"
pos_closing_entry = frappe.get_all(
- "POS Invoice Merge Log", filters={invoice_or_credit_note: self.name}, pluck="pos_closing_entry"
+ "POS Invoice Merge Log",
+ filters={invoice_or_credit_note: self.name},
+ pluck="pos_closing_entry",
)
if pos_closing_entry and pos_closing_entry[0]:
msg = _("To cancel a {} you need to cancel the POS Closing Entry {}.").format(
@@ -540,13 +536,13 @@
def before_cancel(self):
self.check_if_consolidated_invoice()
- super(SalesInvoice, self).before_cancel()
+ super().before_cancel()
self.update_time_sheet(None)
def on_cancel(self):
check_if_return_invoice_linked_with_payment_entry(self)
- super(SalesInvoice, self).on_cancel()
+ super().on_cancel()
self.check_sales_order_on_hold_or_close("sales_order")
@@ -578,16 +574,12 @@
if self.coupon_code:
update_coupon_code_count(self.coupon_code, "cancelled")
- if (
- frappe.db.get_single_value("Selling Settings", "sales_update_frequency") == "Each Transaction"
- ):
+ if frappe.db.get_single_value("Selling Settings", "sales_update_frequency") == "Each Transaction":
update_company_current_month_sales(self.company)
self.update_project()
if not self.is_return and not self.is_consolidated and self.loyalty_program:
self.delete_loyalty_point_entry()
- elif (
- self.is_return and self.return_against and not self.is_consolidated and self.loyalty_program
- ):
+ elif self.is_return and self.return_against and not self.is_consolidated and self.loyalty_program:
against_si_doc = frappe.get_doc("Sales Invoice", self.return_against)
against_si_doc.delete_loyalty_point_entry()
against_si_doc.make_loyalty_point_entry()
@@ -694,7 +686,7 @@
if not self.due_date and self.customer:
self.due_date = get_due_date(self.posting_date, "Customer", self.customer, self.company)
- super(SalesInvoice, self).set_missing_values(for_validate)
+ super().set_missing_values(for_validate)
print_format = pos.get("print_format") if pos else None
if not print_format and not cint(frappe.db.get_value("Print Format", "POS Invoice", "disabled")):
@@ -885,7 +877,8 @@
if account.report_type != "Balance Sheet":
msg = (
- _("Please ensure {} account is a Balance Sheet account.").format(frappe.bold("Debit To")) + " "
+ _("Please ensure {} account is a Balance Sheet account.").format(frappe.bold("Debit To"))
+ + " "
)
msg += _(
"You can change the parent account to a Balance Sheet account or select a different account."
@@ -914,11 +907,16 @@
)
def validate_with_previous_doc(self):
- super(SalesInvoice, self).validate_with_previous_doc(
+ super().validate_with_previous_doc(
{
"Sales Order": {
"ref_dn_field": "sales_order",
- "compare_fields": [["customer", "="], ["company", "="], ["project", "="], ["currency", "="]],
+ "compare_fields": [
+ ["customer", "="],
+ ["company", "="],
+ ["project", "="],
+ ["currency", "="],
+ ],
},
"Sales Order Item": {
"ref_dn_field": "so_detail",
@@ -928,7 +926,12 @@
},
"Delivery Note": {
"ref_dn_field": "delivery_note",
- "compare_fields": [["customer", "="], ["company", "="], ["project", "="], ["currency", "="]],
+ "compare_fields": [
+ ["customer", "="],
+ ["company", "="],
+ ["project", "="],
+ ["currency", "="],
+ ],
},
"Delivery Note Item": {
"ref_dn_field": "dn_detail",
@@ -983,13 +986,14 @@
}
for key, value in prev_doc_field_map.items():
if frappe.db.get_single_value("Selling Settings", value[0]) == "Yes":
-
if frappe.get_value("Customer", self.customer, value[0]):
continue
for d in self.get("items"):
if d.item_code and not d.get(key.lower().replace(" ", "_")) and not self.get(value[1]):
- msgprint(_("{0} is mandatory for Item {1}").format(key, d.item_code), raise_exception=1)
+ msgprint(
+ _("{0} is mandatory for Item {1}").format(key, d.item_code), raise_exception=1
+ )
def validate_proj_cust(self):
"""check for does customer belong to same project as entered.."""
@@ -1011,7 +1015,7 @@
frappe.throw(_("Paid amount + Write Off Amount can not be greater than Grand Total"))
def validate_warehouse(self):
- super(SalesInvoice, self).validate_warehouse()
+ super().validate_warehouse()
for d in self.get_item_list():
if (
@@ -1331,7 +1335,9 @@
add_asset_activity(asset.name, _("Asset returned"))
if asset.calculate_depreciation:
- posting_date = frappe.db.get_value("Sales Invoice", self.return_against, "posting_date")
+ posting_date = frappe.db.get_value(
+ "Sales Invoice", self.return_against, "posting_date"
+ )
reverse_depreciation_entry_made_after_disposal(asset, posting_date)
notes = _(
"This schedule was created when Asset {0} was returned through Sales Invoice {1}."
@@ -1379,7 +1385,9 @@
else item.deferred_revenue_account
)
- amount, base_amount = self.get_amount_and_base_amount(item, enable_discount_accounting)
+ amount, base_amount = self.get_amount_and_base_amount(
+ item, enable_discount_accounting
+ )
account_currency = get_account_currency(income_account)
gl_entries.append(
@@ -1403,7 +1411,7 @@
# expense account gl entries
if cint(self.update_stock) and erpnext.is_perpetual_inventory_enabled(self.company):
- gl_entries += super(SalesInvoice, self).get_gl_entries()
+ gl_entries += super().get_gl_entries()
def get_asset(self, item):
if item.get("asset"):
@@ -1466,7 +1474,6 @@
def make_pos_gl_entries(self, gl_entries):
if cint(self.is_pos):
-
skip_change_gl_entries = not cint(
frappe.db.get_single_value("Accounts Settings", "post_change_gl_entries")
)
@@ -1624,7 +1631,9 @@
"credit_in_account_currency": flt(
self.rounding_adjustment, self.precision("rounding_adjustment")
),
- "credit": flt(self.base_rounding_adjustment, self.precision("base_rounding_adjustment")),
+ "credit": flt(
+ self.base_rounding_adjustment, self.precision("base_rounding_adjustment")
+ ),
"cost_center": round_off_cost_center
if self.use_company_roundoff_cost_center
else (self.cost_center or round_off_cost_center),
@@ -1646,7 +1655,11 @@
)
billed_amt = billed_amt and billed_amt[0][0] or 0
frappe.db.set_value(
- "Delivery Note Item", d.dn_detail, "billed_amt", billed_amt, update_modified=update_modified
+ "Delivery Note Item",
+ d.dn_detail,
+ "billed_amt",
+ billed_amt,
+ update_modified=update_modified,
)
updated_delivery_notes.append(d.delivery_note)
elif d.so_detail:
@@ -1701,7 +1714,6 @@
and getdate(lp_details.from_date) <= getdate(self.posting_date)
and (not lp_details.to_date or getdate(lp_details.to_date) >= getdate(self.posting_date))
):
-
collection_factor = lp_details.collection_factor if lp_details.collection_factor else 1.0
points_earned = cint(eligible_amount / collection_factor)
@@ -1961,7 +1973,6 @@
def update_linked_doc(doctype, name, inter_company_reference):
-
if doctype in ["Sales Invoice", "Purchase Invoice"]:
ref_field = "inter_company_invoice_reference"
else:
@@ -1972,7 +1983,6 @@
def unlink_inter_company_doc(doctype, name, inter_company_reference):
-
if doctype in ["Sales Invoice", "Purchase Invoice"]:
ref_doc = "Purchase Invoice" if doctype == "Sales Invoice" else "Sales Invoice"
ref_field = "inter_company_invoice_reference"
@@ -2147,16 +2157,13 @@
def validate_inter_company_transaction(doc, doctype):
-
details = get_inter_company_details(doc, doctype)
price_list = (
doc.selling_price_list
if doctype in ["Sales Invoice", "Sales Order", "Delivery Note"]
else doc.buying_price_list
)
- valid_price_list = frappe.db.get_value(
- "Price List", {"name": price_list, "buying": 1, "selling": 1}
- )
+ valid_price_list = frappe.db.get_value("Price List", {"name": price_list, "buying": 1, "selling": 1})
if not valid_price_list and not doc.is_internal_transfer():
frappe.throw(_("Selected Price List should have buying and selling fields checked."))
@@ -2417,9 +2424,7 @@
for item in doc.get("items"):
item.warehouse = warehouse_map.get(sales_item_map.get(item.delivery_note_item))
if not item.warehouse and item.get("purchase_order") and item.get("purchase_order_item"):
- item.warehouse = frappe.db.get_value(
- "Purchase Order Item", item.purchase_order_item, "warehouse"
- )
+ item.warehouse = frappe.db.get_value("Purchase Order Item", item.purchase_order_item, "warehouse")
def get_delivery_note_details(internal_reference):
@@ -2665,9 +2670,7 @@
# If a Return invoice is linked with payment entry along with other invoices,
# the cancellation of the Return causes allocated amount to be greater than paid
- if not frappe.db.get_single_value(
- "Accounts Settings", "unlink_payment_on_cancellation_of_invoice"
- ):
+ if not frappe.db.get_single_value("Accounts Settings", "unlink_payment_on_cancellation_of_invoice"):
return
payment_entries = []
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index 7e3eec5..2c937cd 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -2,7 +2,6 @@
# License: GNU General Public License v3. See license.txt
import copy
-import unittest
import frappe
from frappe.model.dynamic_links import get_dynamic_link_map
@@ -925,7 +924,7 @@
]
)
- for i, gle in enumerate(gl_entries):
+ for _i, gle in enumerate(gl_entries):
self.assertEqual(expected_values[gle.account][0], gle.account)
self.assertEqual(expected_values[gle.account][1], gle.debit)
self.assertEqual(expected_values[gle.account][2], gle.credit)
@@ -951,7 +950,7 @@
write_off_account="_Test Write Off - TCP1",
)
- pr = make_purchase_receipt(
+ make_purchase_receipt(
company="_Test Company with perpetual inventory",
item_code="_Test FG Item",
warehouse="Stores - TCP1",
@@ -1332,7 +1331,7 @@
expected_values = dict(
(d[0], d) for d in [["Debtors - TCP1", 100.0, 0.0], ["Sales - TCP1", 0.0, 100.0]]
)
- for i, gle in enumerate(gl_entries):
+ for _i, gle in enumerate(gl_entries):
self.assertEqual(expected_values[gle.account][0], gle.account)
self.assertEqual(expected_values[gle.account][1], gle.debit)
self.assertEqual(expected_values[gle.account][2], gle.credit)
@@ -1356,7 +1355,7 @@
[test_records[1]["items"][0]["income_account"], 0.0, 100.0],
]
)
- for i, gle in enumerate(gl_entries):
+ for _i, gle in enumerate(gl_entries):
self.assertEqual(expected_values[gle.account][0], gle.account)
self.assertEqual(expected_values[gle.account][1], gle.debit)
self.assertEqual(expected_values[gle.account][2], gle.credit)
@@ -1431,7 +1430,6 @@
si.cancel()
def test_serialized(self):
- from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
se = make_serialized_item()
@@ -1771,7 +1769,7 @@
"credit",
"credit_in_account_currency",
):
- for i, gle in enumerate(gl_entries):
+ for _i, gle in enumerate(gl_entries):
self.assertEqual(expected_values[gle.account][field], gle[field])
# cancel
@@ -2315,12 +2313,8 @@
def test_duplicate_due_date_in_terms(self):
si = create_sales_invoice(do_not_save=1)
- si.append(
- "payment_schedule", dict(due_date="2017-01-01", invoice_portion=50.00, payment_amount=50)
- )
- si.append(
- "payment_schedule", dict(due_date="2017-01-01", invoice_portion=50.00, payment_amount=50)
- )
+ si.append("payment_schedule", dict(due_date="2017-01-01", invoice_portion=50.00, payment_amount=50))
+ si.append("payment_schedule", dict(due_date="2017-01-01", invoice_portion=50.00, payment_amount=50))
self.assertRaises(frappe.ValidationError, si.insert)
@@ -2514,9 +2508,7 @@
item.no_of_months = 12
item.save()
- si = create_sales_invoice(
- item=item.name, posting_date="2019-01-16", rate=50000, do_not_submit=True
- )
+ si = create_sales_invoice(item=item.name, posting_date="2019-01-16", rate=50000, do_not_submit=True)
si.items[0].enable_deferred_revenue = 1
si.items[0].service_start_date = "2019-01-16"
si.items[0].service_end_date = "2019-03-31"
@@ -2837,21 +2829,16 @@
item.save()
sales_invoice = create_sales_invoice(item="T Shirt", rate=700, do_not_submit=True)
- self.assertEqual(
- sales_invoice.items[0].item_tax_template, "_Test Account Excise Duty @ 12 - _TC"
- )
+ self.assertEqual(sales_invoice.items[0].item_tax_template, "_Test Account Excise Duty @ 12 - _TC")
# Apply discount
sales_invoice.apply_discount_on = "Net Total"
sales_invoice.discount_amount = 300
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})
def test_sales_invoice_with_discount_accounting_enabled(self):
-
discount_account = create_account(
account_name="Discount Account",
parent_account="Indirect Expenses - _TC",
@@ -2869,7 +2856,6 @@
@change_settings("Selling Settings", {"enable_discount_accounting": 1})
def test_additional_discount_for_sales_invoice_with_discount_accounting_enabled(self):
-
from erpnext.accounts.doctype.repost_accounting_ledger.test_repost_accounting_ledger import (
update_repost_settings,
)
@@ -2882,7 +2868,7 @@
company="_Test Company",
)
- tds_payable_account = create_account(
+ create_account(
account_name="TDS Payable",
account_type="Tax",
parent_account="Duties and Taxes - _TC",
@@ -3204,9 +3190,7 @@
"""
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
- over_billing_allowance = frappe.db.get_single_value(
- "Accounts Settings", "over_billing_allowance"
- )
+ over_billing_allowance = frappe.db.get_single_value("Accounts Settings", "over_billing_allowance")
frappe.db.set_single_value("Accounts Settings", "over_billing_allowance", 0)
dn = create_delivery_note()
@@ -3398,7 +3382,7 @@
self.assertEqual(len(journals), 1)
je_type = frappe.get_cached_value("Journal Entry", journals[0], "voucher_type")
self.assertEqual(je_type, "Exchange Gain Or Loss")
- ledger_outstanding = frappe.db.get_all(
+ frappe.db.get_all(
"Payment Ledger Entry",
filters={"against_voucher_no": si.name, "delinked": 0},
fields=["sum(amount), sum(amount_in_account_currency)"],
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.py b/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.py
index ce3eda9..e0b4258 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.py
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.py
@@ -42,7 +42,7 @@
def autoname(self):
if self.company and self.title:
abbr = frappe.get_cached_value("Company", self.company, "abbr")
- self.name = "{0} - {1}".format(self.title, abbr)
+ self.name = f"{self.title} - {abbr}"
def set_missing_values(self):
for data in self.taxes:
@@ -57,10 +57,8 @@
if doc.is_default == 1:
frappe.db.sql(
- """update `tab{0}` set is_default = 0
- where is_default = 1 and name != %s and company = %s""".format(
- doc.doctype
- ),
+ f"""update `tab{doc.doctype}` set is_default = 0
+ where is_default = 1 and name != %s and company = %s""",
(doc.name, doc.company),
)
diff --git a/erpnext/accounts/doctype/share_transfer/share_transfer.py b/erpnext/accounts/doctype/share_transfer/share_transfer.py
index 6a3ff7c..bc86594 100644
--- a/erpnext/accounts/doctype/share_transfer/share_transfer.py
+++ b/erpnext/accounts/doctype/share_transfer/share_transfer.py
@@ -205,7 +205,9 @@
doc = self.get_shareholder_doc(shareholder)
for entry in doc.share_balance:
if (
- entry.share_type != self.share_type or entry.from_no > self.to_no or entry.to_no < self.from_no
+ entry.share_type != self.share_type
+ or entry.from_no > self.to_no
+ or entry.to_no < self.from_no
):
continue # since query lies outside bounds
elif entry.from_no <= self.from_no and entry.to_no >= self.to_no: # both inside
@@ -257,7 +259,9 @@
for entry in current_entries:
# use spaceage logic here
if (
- entry.share_type != self.share_type or entry.from_no > self.to_no or entry.to_no < self.from_no
+ entry.share_type != self.share_type
+ or entry.from_no > self.to_no
+ or entry.to_no < self.from_no
):
new_entries.append(entry)
continue # since query lies outside bounds
@@ -267,7 +271,9 @@
if entry.to_no == self.to_no:
pass # nothing to append
else:
- new_entries.append(self.return_share_balance_entry(self.to_no + 1, entry.to_no, entry.rate))
+ new_entries.append(
+ self.return_share_balance_entry(self.to_no + 1, entry.to_no, entry.rate)
+ )
else:
if entry.to_no == self.to_no:
new_entries.append(
@@ -277,7 +283,9 @@
new_entries.append(
self.return_share_balance_entry(entry.from_no, self.from_no - 1, entry.rate)
)
- new_entries.append(self.return_share_balance_entry(self.to_no + 1, entry.to_no, entry.rate))
+ new_entries.append(
+ self.return_share_balance_entry(self.to_no + 1, entry.to_no, entry.rate)
+ )
elif entry.from_no >= self.from_no and entry.to_no <= self.to_no:
# split and check
pass # nothing to append
@@ -309,7 +317,7 @@
def get_shareholder_doc(self, shareholder):
# Get Shareholder doc based on the Shareholder name
if shareholder:
- query_filters = {"name": shareholder}
+ pass
name = frappe.db.get_value("Shareholder", {"name": shareholder}, "name")
diff --git a/erpnext/accounts/doctype/shipping_rule/shipping_rule.py b/erpnext/accounts/doctype/shipping_rule/shipping_rule.py
index 6877a74..d9b7b0a 100644
--- a/erpnext/accounts/doctype/shipping_rule/shipping_rule.py
+++ b/erpnext/accounts/doctype/shipping_rule/shipping_rule.py
@@ -71,7 +71,8 @@
zero_to_values.append(d)
elif d.from_value >= d.to_value:
throw(
- _("From value must be less than to value in row {0}").format(d.idx), FromGreaterThanToError
+ _("From value must be less than to value in row {0}").format(d.idx),
+ FromGreaterThanToError,
)
# check if more than two or more rows has To Value = 0
@@ -114,9 +115,7 @@
def get_shipping_amount_from_rules(self, value):
for condition in self.get("conditions"):
- if not condition.to_value or (
- flt(condition.from_value) <= flt(value) <= flt(condition.to_value)
- ):
+ if not condition.to_value or (flt(condition.from_value) <= flt(value) <= flt(condition.to_value)):
return condition.shipping_amount
return 0.0
@@ -131,7 +130,9 @@
)
if shipping_country not in [d.country for d in self.countries]:
frappe.throw(
- _("Shipping rule not applicable for country {0} in Shipping Address").format(shipping_country)
+ _("Shipping rule not applicable for country {0} in Shipping Address").format(
+ shipping_country
+ )
)
def add_shipping_rule_to_tax_table(self, doc, shipping_amount):
@@ -199,11 +200,9 @@
messages = []
for d1, d2 in overlaps:
messages.append(
- "%s-%s = %s "
- % (d1.from_value, d1.to_value, fmt_money(d1.shipping_amount, currency=company_currency))
+ f"{d1.from_value}-{d1.to_value} = {fmt_money(d1.shipping_amount, currency=company_currency)} "
+ _("and")
- + " %s-%s = %s"
- % (d2.from_value, d2.to_value, fmt_money(d2.shipping_amount, currency=company_currency))
+ + f" {d2.from_value}-{d2.to_value} = {fmt_money(d2.shipping_amount, currency=company_currency)}"
)
msgprint("\n".join(messages), raise_exception=OverlappingConditionError)
diff --git a/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.py b/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.py
index a24e834..a5a0ada 100644
--- a/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.py
+++ b/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.py
@@ -45,7 +45,6 @@
def create_shipping_rule(shipping_rule_type, shipping_rule_name):
-
if frappe.db.exists("Shipping Rule", shipping_rule_name):
return frappe.get_doc("Shipping Rule", shipping_rule_name)
diff --git a/erpnext/accounts/doctype/subscription/subscription.py b/erpnext/accounts/doctype/subscription/subscription.py
index 1a79103..a241e82 100644
--- a/erpnext/accounts/doctype/subscription/subscription.py
+++ b/erpnext/accounts/doctype/subscription/subscription.py
@@ -3,7 +3,7 @@
from datetime import datetime
-from typing import Dict, List, Optional, Union
+from typing import Optional, Union
import frappe
from frappe import _
@@ -105,9 +105,7 @@
return _current_invoice_start, _current_invoice_end
- def get_current_invoice_start(
- self, date: Optional["DateTimeLikeObject"] = None
- ) -> Union[datetime.date, str]:
+ def get_current_invoice_start(self, date: Optional["DateTimeLikeObject"] = None) -> datetime.date | str:
"""
This returns the date of the beginning of the current billing period.
If the `date` parameter is not given , it will be automatically set as today's
@@ -130,9 +128,7 @@
return _current_invoice_start
- def get_current_invoice_end(
- self, date: Optional["DateTimeLikeObject"] = None
- ) -> Union[datetime.date, str]:
+ def get_current_invoice_end(self, date: Optional["DateTimeLikeObject"] = None) -> datetime.date | str:
"""
This returns the date of the end of the current billing period.
If the subscription is in trial period, it will be set as the end of the
@@ -174,7 +170,7 @@
return _current_invoice_end
@staticmethod
- def validate_plans_billing_cycle(billing_cycle_data: List[Dict[str, str]]) -> None:
+ def validate_plans_billing_cycle(billing_cycle_data: list[dict[str, str]]) -> None:
"""
Makes sure that all `Subscription Plan` in the `Subscription` have the
same billing interval
@@ -182,7 +178,7 @@
if billing_cycle_data and len(billing_cycle_data) != 1:
frappe.throw(_("You can only have Plans with the same billing cycle in a Subscription"))
- def get_billing_cycle_and_interval(self) -> List[Dict[str, str]]:
+ def get_billing_cycle_and_interval(self) -> list[dict[str, str]]:
"""
Returns a dict representing the billing interval and cycle for this `Subscription`.
You shouldn't need to call this directly. Use `get_billing_cycle` instead.
@@ -199,7 +195,7 @@
return billing_info
- def get_billing_cycle_data(self) -> Dict[str, int]:
+ def get_billing_cycle_data(self) -> dict[str, int]:
"""
Returns dict contain the billing cycle data.
You shouldn't need to call this directly. Use `get_billing_cycle` instead.
@@ -232,9 +228,7 @@
"""
if self.is_trialling():
self.status = "Trialing"
- elif (
- self.status == "Active" and self.end_date and getdate(posting_date) > getdate(self.end_date)
- ):
+ elif self.status == "Active" and self.end_date and getdate(posting_date) > getdate(self.end_date):
self.status = "Completed"
elif self.is_past_grace_period():
self.status = self.get_status_for_past_grace_period()
@@ -252,7 +246,7 @@
@staticmethod
def period_has_passed(
- end_date: Union[str, datetime.date], posting_date: Optional["DateTimeLikeObject"] = None
+ end_date: str | datetime.date, posting_date: Optional["DateTimeLikeObject"] = None
) -> bool:
"""
Returns true if the given `end_date` has passed
@@ -282,9 +276,7 @@
grace_period = cint(frappe.get_value("Subscription Settings", None, "grace_period"))
return getdate(posting_date) >= getdate(add_days(self.current_invoice.due_date, grace_period))
- def current_invoice_is_past_due(
- self, posting_date: Optional["DateTimeLikeObject"] = None
- ) -> bool:
+ def current_invoice_is_past_due(self, posting_date: Optional["DateTimeLikeObject"] = None) -> bool:
"""
Returns `True` if the current generated invoice is overdue
"""
@@ -334,14 +326,15 @@
unsupported_plans = []
for x in subscription_plan_currencies:
if x.currency != party_billing_currency:
- unsupported_plans.append("{0}".format(get_link_to_form("Subscription Plan", x.name)))
+ unsupported_plans.append("{}".format(get_link_to_form("Subscription Plan", x.name)))
if unsupported_plans:
unsupported_plans = [
_(
"Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0}"
- ).format(frappe.bold(party_billing_currency))
- ] + unsupported_plans
+ ).format(frappe.bold(party_billing_currency)),
+ *unsupported_plans,
+ ]
frappe.throw(
unsupported_plans, frappe.ValidationError, "Unsupported Subscription Plans", as_list=True
@@ -384,9 +377,9 @@
def generate_invoice(
self,
- from_date: Optional[Union[str, datetime.date]] = None,
- to_date: Optional[Union[str, datetime.date]] = None,
- posting_date: Optional[Union[str, datetime.date]] = None,
+ from_date: str | datetime.date | None = None,
+ to_date: str | datetime.date | None = None,
+ posting_date: str | datetime.date | None = None,
) -> Document:
"""
Creates a `Invoice` for the `Subscription`, updates `self.invoices` and
@@ -397,9 +390,9 @@
def create_invoice(
self,
- from_date: Optional[Union[str, datetime.date]] = None,
- to_date: Optional[Union[str, datetime.date]] = None,
- posting_date: Optional[Union[str, datetime.date]] = None,
+ from_date: str | datetime.date | None = None,
+ to_date: str | datetime.date | None = None,
+ posting_date: str | datetime.date | None = None,
) -> Document:
"""
Creates a `Invoice`, submits it and returns it
@@ -503,9 +496,7 @@
return invoice
- def get_items_from_plans(
- self, plans: List[Dict[str, str]], prorate: Optional[bool] = None
- ) -> List[Dict]:
+ def get_items_from_plans(self, plans: list[dict[str, str]], prorate: bool | None = None) -> list[dict]:
"""
Returns the `Item`s linked to `Subscription Plan`
"""
@@ -628,8 +619,8 @@
def is_current_invoice_generated(
self,
- _current_start_date: Union[datetime.date, str] = None,
- _current_end_date: Union[datetime.date, str] = None,
+ _current_start_date: datetime.date | str | None = None,
+ _current_end_date: datetime.date | str | None = None,
) -> bool:
if not (_current_start_date and _current_end_date):
_current_start_date, _current_end_date = self._get_subscription_period(
@@ -644,13 +635,13 @@
return False
@property
- def current_invoice(self) -> Union[Document, None]:
+ def current_invoice(self) -> Document | None:
"""
Adds property for accessing the current_invoice
"""
return self.get_current_invoice()
- def get_current_invoice(self) -> Union[Document, None]:
+ def get_current_invoice(self) -> Document | None:
"""
Returns the most recent generated invoice.
"""
@@ -675,7 +666,7 @@
self.cancelation_date = nowdate()
@property
- def invoices(self) -> List[Dict]:
+ def invoices(self) -> list[dict]:
return frappe.get_all(
self.invoice_document_type,
filters={"subscription": self.name},
@@ -745,10 +736,10 @@
def get_prorata_factor(
- period_end: Union[datetime.date, str],
- period_start: Union[datetime.date, str],
- is_prepaid: Optional[int] = None,
-) -> Union[int, float]:
+ period_end: datetime.date | str,
+ period_start: datetime.date | str,
+ is_prepaid: int | None = None,
+) -> int | float:
if is_prepaid:
return 1
@@ -757,9 +748,7 @@
return diff / plan_days
-def process_all(
- subscription: str | None = None, posting_date: Optional["DateTimeLikeObject"] = None
-) -> None:
+def process_all(subscription: str | None = None, posting_date: Optional["DateTimeLikeObject"] = None) -> None:
"""
Task to updates the status of all `Subscription` apart from those that are cancelled
"""
diff --git a/erpnext/accounts/doctype/subscription/test_subscription.py b/erpnext/accounts/doctype/subscription/test_subscription.py
index 89be543..13c6a52 100644
--- a/erpnext/accounts/doctype/subscription/test_subscription.py
+++ b/erpnext/accounts/doctype/subscription/test_subscription.py
@@ -1,7 +1,6 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
-import unittest
import frappe
from frappe.tests.utils import FrappeTestCase
@@ -201,9 +200,7 @@
invoice = subscription.get_current_invoice()
diff = flt(date_diff(nowdate(), subscription.current_invoice_start) + 1)
- plan_days = flt(
- date_diff(subscription.current_invoice_end, subscription.current_invoice_start) + 1
- )
+ plan_days = flt(date_diff(subscription.current_invoice_end, subscription.current_invoice_start) + 1)
prorate_factor = flt(diff / plan_days)
self.assertEqual(
@@ -249,9 +246,7 @@
invoice = subscription.get_current_invoice()
diff = flt(date_diff(nowdate(), subscription.current_invoice_start) + 1)
- plan_days = flt(
- date_diff(subscription.current_invoice_end, subscription.current_invoice_start) + 1
- )
+ plan_days = flt(date_diff(subscription.current_invoice_end, subscription.current_invoice_start) + 1)
prorate_factor = flt(diff / plan_days)
self.assertEqual(flt(invoice.grand_total, 2), flt(prorate_factor * 900, 2))
@@ -385,9 +380,7 @@
settings.prorate = 1
settings.save()
- subscription = create_subscription(
- generate_invoice_at="Beginning of the current subscription period"
- )
+ subscription = create_subscription(generate_invoice_at="Beginning of the current subscription period")
subscription.process()
subscription.cancel_subscription()
@@ -546,9 +539,7 @@
billing_interval_count=3,
currency="INR",
)
- create_plan(
- plan_name="_Test Plan Multicurrency", cost=50, billing_interval="Month", currency="USD"
- )
+ create_plan(plan_name="_Test Plan Multicurrency", cost=50, billing_interval="Month", currency="USD")
def create_plan(**kwargs):
@@ -575,9 +566,7 @@
customer = frappe.new_doc("Customer")
customer.customer_name = "_Test Subscription Customer"
customer.billing_currency = "USD"
- customer.append(
- "accounts", {"company": "_Test Company", "account": "_Test Receivable USD - _TC"}
- )
+ customer.append("accounts", {"company": "_Test Company", "account": "_Test Receivable USD - _TC"})
customer.insert()
@@ -600,9 +589,7 @@
subscription.additional_discount_percentage = kwargs.get("additional_discount_percentage")
subscription.additional_discount_amount = kwargs.get("additional_discount_amount")
subscription.follow_calendar_months = kwargs.get("follow_calendar_months")
- subscription.generate_new_invoices_past_due_date = kwargs.get(
- "generate_new_invoices_past_due_date"
- )
+ subscription.generate_new_invoices_past_due_date = kwargs.get("generate_new_invoices_past_due_date")
subscription.submit_invoice = kwargs.get("submit_invoice")
subscription.days_until_due = kwargs.get("days_until_due")
subscription.number_of_days = kwargs.get("number_of_days")
diff --git a/erpnext/accounts/doctype/tax_rule/tax_rule.py b/erpnext/accounts/doctype/tax_rule/tax_rule.py
index 9ff530b..ed623c6 100644
--- a/erpnext/accounts/doctype/tax_rule/tax_rule.py
+++ b/erpnext/accounts/doctype/tax_rule/tax_rule.py
@@ -112,27 +112,23 @@
for d in filters:
if conds:
conds += " and "
- conds += """ifnull({0}, '') = {1}""".format(d, frappe.db.escape(cstr(filters[d])))
+ conds += f"""ifnull({d}, '') = {frappe.db.escape(cstr(filters[d]))}"""
if self.from_date and self.to_date:
- conds += """ and ((from_date > '{from_date}' and from_date < '{to_date}') or
- (to_date > '{from_date}' and to_date < '{to_date}') or
- ('{from_date}' > from_date and '{from_date}' < to_date) or
- ('{from_date}' = from_date and '{to_date}' = to_date))""".format(
- from_date=self.from_date, to_date=self.to_date
- )
+ conds += f""" and ((from_date > '{self.from_date}' and from_date < '{self.to_date}') or
+ (to_date > '{self.from_date}' and to_date < '{self.to_date}') or
+ ('{self.from_date}' > from_date and '{self.from_date}' < to_date) or
+ ('{self.from_date}' = from_date and '{self.to_date}' = to_date))"""
elif self.from_date and not self.to_date:
- conds += """ and to_date > '{from_date}'""".format(from_date=self.from_date)
+ conds += f""" and to_date > '{self.from_date}'"""
elif self.to_date and not self.from_date:
- conds += """ and from_date < '{to_date}'""".format(to_date=self.to_date)
+ conds += f""" and from_date < '{self.to_date}'"""
tax_rule = frappe.db.sql(
- "select name, priority \
- from `tabTax Rule` where {0} and name != '{1}'".format(
- conds, self.name
- ),
+ f"select name, priority \
+ from `tabTax Rule` where {conds} and name != '{self.name}'",
as_dict=1,
)
@@ -189,27 +185,25 @@
conditions.append("(from_date is null) and (to_date is null)")
conditions.append(
- "ifnull(tax_category, '') = {0}".format(frappe.db.escape(cstr(args.get("tax_category"))))
+ "ifnull(tax_category, '') = {}".format(frappe.db.escape(cstr(args.get("tax_category"))))
)
if "tax_category" in args.keys():
del args["tax_category"]
for key, value in args.items():
if key == "use_for_shopping_cart":
- conditions.append("use_for_shopping_cart = {0}".format(1 if value else 0))
+ conditions.append(f"use_for_shopping_cart = {1 if value else 0}")
elif key == "customer_group":
if not value:
value = get_root_of("Customer Group")
customer_group_condition = get_customer_group_condition(value)
- conditions.append("ifnull({0}, '') in ('', {1})".format(key, customer_group_condition))
+ conditions.append(f"ifnull({key}, '') in ('', {customer_group_condition})")
else:
- conditions.append("ifnull({0}, '') in ('', {1})".format(key, frappe.db.escape(cstr(value))))
+ conditions.append(f"ifnull({key}, '') in ('', {frappe.db.escape(cstr(value))})")
tax_rule = frappe.db.sql(
"""select * from `tabTax Rule`
- where {0}""".format(
- " and ".join(conditions)
- ),
+ where {}""".format(" and ".join(conditions)),
as_dict=True,
)
@@ -234,7 +228,7 @@
)[0]
tax_template = rule.sales_tax_template or rule.purchase_tax_template
- doctype = "{0} Taxes and Charges Template".format(rule.tax_type)
+ doctype = f"{rule.tax_type} Taxes and Charges Template"
if frappe.db.get_value(doctype, tax_template, "disabled") == 1:
return None
@@ -244,9 +238,7 @@
def get_customer_group_condition(customer_group):
condition = ""
- customer_groups = [
- "%s" % (frappe.db.escape(d.name)) for d in get_parent_customer_groups(customer_group)
- ]
+ customer_groups = ["%s" % (frappe.db.escape(d.name)) for d in get_parent_customer_groups(customer_group)]
if customer_groups:
condition = ",".join(["%s"] * len(customer_groups)) % (tuple(customer_groups))
return condition
diff --git a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
index 405f587..b043f9a 100644
--- a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
+++ b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
@@ -57,13 +57,11 @@
def validate_thresholds(self):
for d in self.get("rates"):
- if (
- d.cumulative_threshold and d.single_threshold and d.cumulative_threshold < d.single_threshold
- ):
+ if d.cumulative_threshold and d.single_threshold and d.cumulative_threshold < d.single_threshold:
frappe.throw(
- _("Row #{0}: Cumulative threshold cannot be less than Single Transaction threshold").format(
- d.idx
- )
+ _(
+ "Row #{0}: Cumulative threshold cannot be less than Single Transaction threshold"
+ ).format(d.idx)
)
@@ -319,9 +317,7 @@
def get_invoice_vouchers(parties, tax_details, company, party_type="Supplier"):
doctype = "Purchase Invoice" if party_type == "Supplier" else "Sales Invoice"
field = (
- "base_tax_withholding_net_total as base_net_total"
- if party_type == "Supplier"
- else "base_net_total"
+ "base_tax_withholding_net_total as base_net_total" if party_type == "Supplier" else "base_net_total"
)
voucher_wise_amount = {}
vouchers = []
@@ -375,9 +371,7 @@
return vouchers, voucher_wise_amount
-def get_advance_vouchers(
- parties, company=None, from_date=None, to_date=None, party_type="Supplier"
-):
+def get_advance_vouchers(parties, company=None, from_date=None, to_date=None, party_type="Supplier"):
"""
Use Payment Ledger to fetch unallocated Advance Payments
"""
@@ -398,9 +392,7 @@
if from_date and to_date:
conditions.append(ple.posting_date[from_date:to_date])
- advances = (
- qb.from_(ple).select(ple.voucher_no).distinct().where(Criterion.all(conditions)).run(as_list=1)
- )
+ advances = qb.from_(ple).select(ple.voucher_no).distinct().where(Criterion.all(conditions)).run(as_list=1)
if advances:
advances = [x[0] for x in advances]
@@ -566,9 +558,7 @@
conditions.append(ple.voucher_no == ple.against_voucher_no)
conditions.append(ple.company == inv.company)
- advances = (
- qb.from_(ple).select(Abs(Sum(ple.amount))).where(Criterion.all(conditions)).run(as_list=1)
- )
+ qb.from_(ple).select(Abs(Sum(ple.amount))).where(Criterion.all(conditions)).run(as_list=1)
advance_amt = (
qb.from_(ple).select(Abs(Sum(ple.amount))).where(Criterion.all(conditions)).run()[0][0] or 0.0
@@ -627,9 +617,7 @@
return limit_consumed
-def get_lower_deduction_amount(
- current_amount, limit_consumed, certificate_limit, rate, tax_details
-):
+def get_lower_deduction_amount(current_amount, limit_consumed, certificate_limit, rate, tax_details):
if certificate_limit - flt(limit_consumed) - flt(current_amount) >= 0:
return current_amount * rate / 100
else:
@@ -641,9 +629,7 @@
def is_valid_certificate(ldc, posting_date, limit_consumed):
available_amount = flt(ldc.certificate_limit) - flt(limit_consumed)
- if (
- getdate(ldc.valid_from) <= getdate(posting_date) <= getdate(ldc.valid_upto)
- ) and available_amount > 0:
+ if (getdate(ldc.valid_from) <= getdate(posting_date) <= getdate(ldc.valid_upto)) and available_amount > 0:
return True
return False
diff --git a/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py
index 0fbaf23..087e0d0 100644
--- a/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py
+++ b/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py
@@ -95,9 +95,7 @@
def test_tax_withholding_category_checks(self):
invoices = []
- frappe.db.set_value(
- "Supplier", "Test TDS Supplier3", "tax_withholding_category", "New TDS Category"
- )
+ frappe.db.set_value("Supplier", "Test TDS Supplier3", "tax_withholding_category", "New TDS Category")
# First Invoice with no tds check
pi = create_purchase_invoice(supplier="Test TDS Supplier3", rate=20000, do_not_save=True)
@@ -448,7 +446,7 @@
pe3.save()
pe3.submit()
- self.assertEquals(pe3.get("taxes")[0].tax_amount, 1200)
+ self.assertEqual(pe3.get("taxes")[0].tax_amount, 1200)
pe1.cancel()
pe2.cancel()
pe3.cancel()
@@ -845,9 +843,7 @@
).insert()
-def create_lower_deduction_certificate(
- supplier, tax_withholding_category, tax_rate, certificate_no, limit
-):
+def create_lower_deduction_certificate(supplier, tax_withholding_category, tax_rate, certificate_no, limit):
fiscal_year = get_fiscal_year(today(), company="_Test Company")
if not frappe.db.exists("Lower Deduction Certificate", certificate_no):
frappe.get_doc(
diff --git a/erpnext/accounts/doctype/unreconcile_payment/test_unreconcile_payment.py b/erpnext/accounts/doctype/unreconcile_payment/test_unreconcile_payment.py
index 57f66dd..882dd1d 100644
--- a/erpnext/accounts/doctype/unreconcile_payment/test_unreconcile_payment.py
+++ b/erpnext/accounts/doctype/unreconcile_payment/test_unreconcile_payment.py
@@ -93,7 +93,7 @@
unreconcile.add_references()
self.assertEqual(len(unreconcile.allocations), 2)
allocations = [x.reference_name for x in unreconcile.allocations]
- self.assertEquals([si1.name, si2.name], allocations)
+ self.assertEqual([si1.name, si2.name], allocations)
# unreconcile si1
for x in unreconcile.allocations:
if x.reference_name != si1.name:
@@ -158,7 +158,7 @@
unreconcile.add_references()
self.assertEqual(len(unreconcile.allocations), 2)
allocations = [x.reference_name for x in unreconcile.allocations]
- self.assertEquals([si1.name, si2.name], allocations)
+ self.assertEqual([si1.name, si2.name], allocations)
# unreconcile si1 from pe2
for x in unreconcile.allocations:
if x.reference_name != si1.name:
@@ -216,7 +216,7 @@
unreconcile.add_references()
self.assertEqual(len(unreconcile.allocations), 2)
allocations = [x.reference_name for x in unreconcile.allocations]
- self.assertEquals([si1.name, si2.name], allocations)
+ self.assertEqual([si1.name, si2.name], allocations)
# unreconcile si1 from pe
for x in unreconcile.allocations:
if x.reference_name != si1.name:
@@ -301,7 +301,7 @@
unreconcile.add_references()
self.assertEqual(len(unreconcile.allocations), 2)
allocations = [x.reference_name for x in unreconcile.allocations]
- self.assertEquals([si1.name, si2.name], allocations)
+ self.assertEqual([si1.name, si2.name], allocations)
# unreconcile si1 from pe2
for x in unreconcile.allocations:
if x.reference_name != si1.name:
@@ -353,7 +353,7 @@
unreconcile.add_references()
self.assertEqual(len(unreconcile.allocations), 1)
allocations = [x.reference_name for x in unreconcile.allocations]
- self.assertEquals([so.name], allocations)
+ self.assertEqual([so.name], allocations)
# unreconcile so
unreconcile.save().submit()
diff --git a/erpnext/accounts/doctype/unreconcile_payment/unreconcile_payment.py b/erpnext/accounts/doctype/unreconcile_payment/unreconcile_payment.py
index 664622f..29eb270 100644
--- a/erpnext/accounts/doctype/unreconcile_payment/unreconcile_payment.py
+++ b/erpnext/accounts/doctype/unreconcile_payment/unreconcile_payment.py
@@ -91,7 +91,7 @@
@frappe.whitelist()
-def doc_has_references(doctype: str = None, docname: str = None):
+def doc_has_references(doctype: str | None = None, docname: str | None = None):
if doctype in ["Sales Invoice", "Purchase Invoice"]:
return frappe.db.count(
"Payment Ledger Entry",
@@ -106,7 +106,7 @@
@frappe.whitelist()
def get_linked_payments_for_doc(
- company: str = None, doctype: str = None, docname: str = None
+ company: str | None = None, doctype: str | None = None, docname: str | None = None
) -> list:
if company and doctype and docname:
_dt = doctype
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index 825a01e..700d777 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -78,7 +78,7 @@
"credit": credit,
"debit_in_account_currency": debit,
"credit_in_account_currency": credit,
- "remarks": _("Offsetting for Accounting Dimension") + " - {0}".format(dimension.name),
+ "remarks": _("Offsetting for Accounting Dimension") + f" - {dimension.name}",
"against_voucher": None,
}
)
@@ -179,9 +179,7 @@
def distribute_gl_based_on_cost_center_allocation(gl_map, precision=None):
- cost_center_allocation = get_cost_center_allocation_data(
- gl_map[0]["company"], gl_map[0]["posting_date"]
- )
+ cost_center_allocation = get_cost_center_allocation_data(gl_map[0]["company"], gl_map[0]["posting_date"])
if not cost_center_allocation:
return gl_map
@@ -190,9 +188,7 @@
cost_center = d.get("cost_center")
# Validate budget against main cost center
- validate_expense_against_budget(
- d, expense_amount=flt(d.debit, precision) - flt(d.credit, precision)
- )
+ validate_expense_against_budget(d, expense_amount=flt(d.debit, precision) - flt(d.credit, precision))
if cost_center and cost_center_allocation.get(cost_center):
for sub_cost_center, percentage in cost_center_allocation.get(cost_center, {}).items():
@@ -224,9 +220,7 @@
cc_allocation = frappe._dict()
for d in records:
- cc_allocation.setdefault(d.main_cost_center, frappe._dict()).setdefault(
- d.cost_center, d.percentage
- )
+ cc_allocation.setdefault(d.main_cost_center, frappe._dict()).setdefault(d.cost_center, d.percentage)
return cc_allocation
@@ -541,9 +535,7 @@
round_off_gle[dimension] = dimension_values.get(dimension)
-def get_round_off_account_and_cost_center(
- company, voucher_type, voucher_no, use_company_default=False
-):
+def get_round_off_account_and_cost_center(company, voucher_type, voucher_no, use_company_default=False):
round_off_account, round_off_cost_center = frappe.get_cached_value(
"Company", company, ["round_off_account", "round_off_cost_center"]
) or [None, None]
@@ -678,9 +670,7 @@
def validate_against_pcv(is_opening, posting_date, company):
- if is_opening and frappe.db.exists(
- "Period Closing Voucher", {"docstatus": 1, "company": company}
- ):
+ if is_opening and frappe.db.exists("Period Closing Voucher", {"docstatus": 1, "company": company}):
frappe.throw(
_("Opening Entry can not be created after Period Closing Voucher is created."),
title=_("Invalid Opening Entry"),
@@ -691,9 +681,7 @@
)
if last_pcv_date and getdate(posting_date) <= getdate(last_pcv_date):
- message = _("Books have been closed till the period ending on {0}").format(
- formatdate(last_pcv_date)
- )
+ message = _("Books have been closed till the period ending on {0}").format(formatdate(last_pcv_date))
message += "</br >"
message += _("You cannot create/amend any accounting entries till this date.")
frappe.throw(message, title=_("Period Closed"))
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 4b3f0c8..85fe605 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -2,8 +2,6 @@
# License: GNU General Public License v3. See license.txt
-from typing import Optional
-
import frappe
from frappe import _, msgprint, qb, scrub
from frappe.contacts.doctype.address.address import get_company_address, get_default_address
@@ -69,7 +67,6 @@
shipping_address=None,
pos_profile=None,
):
-
if not party:
return {}
if not frappe.db.exists(party_type, party):
@@ -153,9 +150,7 @@
party_details["taxes_and_charges"] = tax_template
if cint(fetch_payment_terms_template):
- party_details["payment_terms_template"] = get_payment_terms_template(
- party.name, party_type, company
- )
+ party_details["payment_terms_template"] = get_payment_terms_template(party.name, party_type, company)
if not party_details.get("currency"):
party_details["currency"] = currency
@@ -173,9 +168,7 @@
# supplier tax withholding category
if party_type == "Supplier" and party:
- party_details["supplier_tds"] = frappe.get_value(
- party_type, party.name, "tax_withholding_category"
- )
+ party_details["supplier_tds"] = frappe.get_value(party_type, party.name, "tax_withholding_category")
if not party_details.get("tax_category") and pos_profile:
party_details["tax_category"] = frappe.get_value("POS Profile", pos_profile, "tax_category")
@@ -195,12 +188,8 @@
*,
ignore_permissions=False,
):
- billing_address_field = (
- "customer_address" if party_type == "Lead" else party_type.lower() + "_address"
- )
- party_details[billing_address_field] = party_address or get_default_address(
- party_type, party.name
- )
+ billing_address_field = "customer_address" if party_type == "Lead" else party_type.lower() + "_address"
+ party_details[billing_address_field] = party_address or get_default_address(party_type, party.name)
if doctype:
party_details.update(
get_fetch_values(doctype, billing_address_field, party_details[billing_address_field])
@@ -306,9 +295,7 @@
"department as contact_department",
]
- contact_details = frappe.db.get_value(
- "Contact", party_details.contact_person, fields, as_dict=True
- )
+ contact_details = frappe.db.get_value("Contact", party_details.contact_person, fields, as_dict=True)
party_details.update(contact_details)
@@ -328,9 +315,7 @@
party_details[f] = party.get(f)
# fields prepended with default in Customer doctype
- for f in ["currency"] + (
- ["sales_partner", "commission_rate"] if party_type == "Customer" else []
- ):
+ for f in ["currency"] + (["sales_partner", "commission_rate"] if party_type == "Customer" else []):
if party.get("default_" + f):
party_details[f] = party.get("default_" + f)
@@ -367,14 +352,10 @@
"Price List", price_list, "currency", cache=True
)
- party_details[
- "selling_price_list" if party.doctype == "Customer" else "buying_price_list"
- ] = price_list
+ party_details["selling_price_list" if party.doctype == "Customer" else "buying_price_list"] = price_list
-def set_account_and_due_date(
- party, account, party_type, company, posting_date, bill_date, doctype
-):
+def set_account_and_due_date(party, account, party_type, company, posting_date, bill_date, doctype):
if doctype not in ["POS Invoice", "Sales Invoice", "Purchase Invoice"]:
# not an invoice
return {party_type.lower(): party}
@@ -462,9 +443,7 @@
if not account:
account_name = (
- "default_advance_received_account"
- if party_type == "Customer"
- else "default_advance_paid_account"
+ "default_advance_received_account" if party_type == "Customer" else "default_advance_paid_account"
)
account = frappe.get_cached_value("Company", company, account_name)
@@ -473,9 +452,7 @@
@frappe.whitelist()
def get_party_bank_account(party_type, party):
- return frappe.db.get_value(
- "Bank Account", {"party_type": party_type, "party": party, "is_default": 1}
- )
+ return frappe.db.get_value("Bank Account", {"party_type": party_type, "party": party, "is_default": 1})
def get_party_account_currency(party_type, party, company):
@@ -567,9 +544,7 @@
"Company", frappe.db.get_default("Company"), "default_currency"
)
else:
- company_default_currency = frappe.get_cached_value(
- "Company", account.company, "default_currency"
- )
+ company_default_currency = frappe.get_cached_value("Company", account.company, "default_currency")
validate_party_gle_currency(doc.doctype, doc.name, account.company, party_account_currency)
@@ -600,9 +575,7 @@
template_name = get_payment_terms_template(party, party_type, company)
if template_name:
- due_date = get_due_date_from_template(template_name, posting_date, bill_date).strftime(
- "%Y-%m-%d"
- )
+ due_date = get_due_date_from_template(template_name, posting_date, bill_date).strftime("%Y-%m-%d")
else:
if party_type == "Supplier":
supplier_group = frappe.get_cached_value(party_type, party, "supplier_group")
@@ -761,7 +734,6 @@
def validate_party_frozen_disabled(party_type, party_name):
-
if frappe.flags.ignore_party_validation:
return
@@ -897,9 +869,7 @@
party_account_currency = get_party_account_currency(party_type, party, d.company)
if party_account_currency == company_default_currency:
- billing_this_year = flt(
- company_wise_billing_this_year.get(d.company, {}).get("base_grand_total")
- )
+ billing_this_year = flt(company_wise_billing_this_year.get(d.company, {}).get("base_grand_total"))
else:
billing_this_year = flt(company_wise_billing_this_year.get(d.company, {}).get("grand_total"))
@@ -925,7 +895,7 @@
return company_wise_info
-def get_party_shipping_address(doctype: str, name: str) -> Optional[str]:
+def get_party_shipping_address(doctype: str, name: str) -> str | None:
"""
Returns an Address name (best guess) for the given doctype and name for which `address_type == 'Shipping'` is true.
and/or `is_shipping_address = 1`.
@@ -991,7 +961,7 @@
return frappe._dict(data)
-def get_default_contact(doctype: str, name: str) -> Optional[str]:
+def get_default_contact(doctype: str, name: str) -> str | None:
"""
Returns contact name only if there is a primary contact for given doctype and name.
diff --git a/erpnext/accounts/report/account_balance/account_balance.py b/erpnext/accounts/report/account_balance/account_balance.py
index b3e80a7..628aca5 100644
--- a/erpnext/accounts/report/account_balance/account_balance.py
+++ b/erpnext/accounts/report/account_balance/account_balance.py
@@ -61,7 +61,6 @@
def get_data(filters):
-
data = []
conditions = get_conditions(filters)
accounts = frappe.db.get_all(
diff --git a/erpnext/accounts/report/accounts_payable/test_accounts_payable.py b/erpnext/accounts/report/accounts_payable/test_accounts_payable.py
index b4cb25f..f5c9d16 100644
--- a/erpnext/accounts/report/accounts_payable/test_accounts_payable.py
+++ b/erpnext/accounts/report/accounts_payable/test_accounts_payable.py
@@ -1,16 +1,10 @@
-import unittest
-
import frappe
-from frappe.tests.utils import FrappeTestCase, change_settings
-from frappe.utils import add_days, flt, getdate, today
+from frappe.tests.utils import FrappeTestCase
+from frappe.utils import today
-from erpnext import get_default_cost_center
-from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
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.report.accounts_payable.accounts_payable import execute
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
-from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase):
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index 38723e9..c7862c1 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -40,24 +40,20 @@
return ReceivablePayableReport(filters).run(args)
-class ReceivablePayableReport(object):
+class ReceivablePayableReport:
def __init__(self, filters=None):
self.filters = frappe._dict(filters or {})
self.qb_selection_filter = []
self.ple = qb.DocType("Payment Ledger Entry")
self.filters.report_date = getdate(self.filters.report_date or nowdate())
self.age_as_on = (
- getdate(nowdate())
- if self.filters.report_date > getdate(nowdate())
- else self.filters.report_date
+ getdate(nowdate()) if self.filters.report_date > getdate(nowdate()) else self.filters.report_date
)
def run(self, args):
self.filters.update(args)
self.set_defaults()
- self.party_naming_by = frappe.db.get_single_value(
- args.get("naming_by")[0], args.get("naming_by")[1]
- )
+ self.party_naming_by = frappe.db.get_single_value(args.get("naming_by")[0], args.get("naming_by")[1])
self.get_columns()
self.get_data()
self.get_chart_data()
@@ -279,7 +275,7 @@
def build_data(self):
# set outstanding for all the accumulated balances
# as we can use this to filter out invoices without outstanding
- for key, row in self.voucher_balance.items():
+ for _key, row in self.voucher_balance.items():
row.outstanding = flt(row.invoiced - row.paid - row.credit_note, self.currency_precision)
row.outstanding_in_account_currency = flt(
row.invoiced_in_account_currency
@@ -293,7 +289,7 @@
must_consider = False
if self.filters.get("for_revaluation_journals"):
if (abs(row.outstanding) > 0.0 / 10**self.currency_precision) or (
- (abs(row.outstanding_in_account_currency) > 0.0 / 10**self.currency_precision)
+ abs(row.outstanding_in_account_currency) > 0.0 / 10**self.currency_precision
):
must_consider = True
else:
@@ -479,19 +475,17 @@
def get_payment_terms(self, row):
# build payment_terms for row
payment_terms_details = frappe.db.sql(
- """
+ f"""
select
si.name, si.party_account_currency, si.currency, si.conversion_rate,
si.total_advance, ps.due_date, ps.payment_term, ps.payment_amount, ps.base_payment_amount,
ps.description, ps.paid_amount, ps.discounted_amount
- from `tab{0}` si, `tabPayment Schedule` ps
+ from `tab{row.voucher_type}` si, `tabPayment Schedule` ps
where
si.name = ps.parent and
si.name = %s
order by ps.paid_amount desc, due_date
- """.format(
- row.voucher_type
- ),
+ """,
row.voucher_no,
as_dict=1,
)
@@ -735,9 +729,7 @@
row.age = (getdate(self.age_as_on) - getdate(entry_date)).days or 0
index = None
- if not (
- self.filters.range1 and self.filters.range2 and self.filters.range3 and self.filters.range4
- ):
+ if not (self.filters.range1 and self.filters.range2 and self.filters.range3 and self.filters.range4):
self.filters.range1, self.filters.range2, self.filters.range3, self.filters.range4 = (
30,
60,
@@ -763,12 +755,10 @@
if self.filters.show_future_payments:
self.qb_selection_filter.append(
- (
- self.ple.posting_date.lte(self.filters.report_date)
- | (
- (self.ple.voucher_no == self.ple.against_voucher_no)
- & (Date(self.ple.creation).lte(self.filters.report_date))
- )
+ self.ple.posting_date.lte(self.filters.report_date)
+ | (
+ (self.ple.voucher_no == self.ple.against_voucher_no)
+ & (Date(self.ple.creation).lte(self.filters.report_date))
)
)
else:
@@ -836,7 +826,7 @@
self.qb_selection_filter = []
self.or_filters = []
- for party_type in self.party_type:
+ for _party_type in self.party_type:
self.add_common_filters()
if self.account_type == "Receivable":
diff --git a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
index de49139..83d95de 100644
--- a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
@@ -1,11 +1,8 @@
-import unittest
-
import frappe
from frappe import qb
from frappe.tests.utils import FrappeTestCase, change_settings
from frappe.utils import add_days, flt, getdate, today
-from erpnext import get_default_cost_center
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.accounts.report.accounts_receivable.accounts_receivable import execute
@@ -126,7 +123,6 @@
# check invoice grand total and invoiced column's value for 3 payment terms
si = self.create_sales_invoice()
- name = si.name
report = execute(filters)
@@ -218,7 +214,7 @@
[0, 0, 100.0, 0.0, -100.0, cr_note.name],
]
self.assertEqual(len(report[1]), 2)
- si_row = [
+ si_row = next(
[
row.invoice_grand_total,
row.invoiced,
@@ -229,9 +225,9 @@
]
for row in report[1]
if row.voucher_no == si.name
- ][0]
+ )
- cr_note_row = [
+ cr_note_row = next(
[
row.invoice_grand_total,
row.invoiced,
@@ -242,7 +238,7 @@
]
for row in report[1]
if row.voucher_no == cr_note.name
- ][0]
+ )
self.assertEqual(expected_data_after_credit_note[0], si_row)
self.assertEqual(expected_data_after_credit_note[1], cr_note_row)
@@ -317,9 +313,7 @@
err.extend("accounts", accounts)
err.accounts[0].new_exchange_rate = 85
row = err.accounts[0]
- row.new_balance_in_base_currency = flt(
- row.new_exchange_rate * flt(row.balance_in_account_currency)
- )
+ row.new_balance_in_base_currency = flt(row.new_exchange_rate * flt(row.balance_in_account_currency))
row.gain_loss = row.new_balance_in_base_currency - flt(row.balance_in_base_currency)
err.set_total_gain_loss()
err = err.save().submit()
@@ -340,7 +334,7 @@
report = execute(filters)
expected_data_for_err = [0, -500, 0, 500]
- row = [x for x in report[1] if x.voucher_type == je.doctype and x.voucher_no == je.name][0]
+ row = next(x for x in report[1] if x.voucher_type == je.doctype and x.voucher_no == je.name)
self.assertEqual(
expected_data_for_err,
[
@@ -551,7 +545,7 @@
self.assertEqual(expected_data, [row.invoiced, row.outstanding, row.sales_person])
def test_cost_center_filter(self):
- si = self.create_sales_invoice()
+ self.create_sales_invoice()
filters = {
"company": self.company,
"report_date": today(),
@@ -568,7 +562,7 @@
self.assertEqual(expected_data, [row.invoiced, row.outstanding, row.cost_center])
def test_customer_group_filter(self):
- si = self.create_sales_invoice()
+ self.create_sales_invoice()
cus_group = frappe.db.get_value("Customer", self.customer, "customer_group")
filters = {
"company": self.company,
@@ -590,7 +584,7 @@
self.assertEqual(len(report), 0)
def test_multi_customer_group_filter(self):
- si = self.create_sales_invoice()
+ self.create_sales_invoice()
cus_group = frappe.db.get_value("Customer", self.customer, "customer_group")
# Create a list of customer groups, e.g., ["Group1", "Group2"]
cus_groups_list = [cus_group, "_Test Customer Group 1"]
@@ -703,7 +697,6 @@
si.conversion_rate = 80
si.debit_to = self.debtors_usd
si.save().submit()
- name = si.name
# check invoice grand total and invoiced column's value for 3 payment terms
report = execute(filters)
@@ -763,9 +756,7 @@
def test_report_output_if_party_is_missing(self):
acc_name = "Additional Debtors"
- if not frappe.db.get_value(
- "Account", filters={"account_name": acc_name, "company": self.company}
- ):
+ if not frappe.db.get_value("Account", filters={"account_name": acc_name, "company": self.company}):
additional_receivable_acc = frappe.get_doc(
{
"doctype": "Account",
diff --git a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py
index 0947cff..1aab7f7 100644
--- a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py
+++ b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py
@@ -24,9 +24,7 @@
def run(self, args):
self.account_type = args.get("account_type")
self.party_type = get_party_types_from_account_type(self.account_type)
- self.party_naming_by = frappe.db.get_single_value(
- args.get("naming_by")[0], args.get("naming_by")[1]
- )
+ self.party_naming_by = frappe.db.get_single_value(args.get("naming_by")[0], args.get("naming_by")[1])
self.get_columns()
self.get_data(args)
return self.columns, self.data
diff --git a/erpnext/accounts/report/accounts_receivable_summary/test_accounts_receivable_summary.py b/erpnext/accounts/report/accounts_receivable_summary/test_accounts_receivable_summary.py
index 3ee35a1..4ef607b 100644
--- a/erpnext/accounts/report/accounts_receivable_summary/test_accounts_receivable_summary.py
+++ b/erpnext/accounts/report/accounts_receivable_summary/test_accounts_receivable_summary.py
@@ -1,5 +1,3 @@
-import unittest
-
import frappe
from frappe.tests.utils import FrappeTestCase, change_settings
from frappe.utils import today
diff --git a/erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.py b/erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.py
index 48da17a..4fa485f 100644
--- a/erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.py
+++ b/erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.py
@@ -70,7 +70,7 @@
if filters.get("asset_category"):
condition += " and asset_category = %(asset_category)s"
return frappe.db.sql(
- """
+ f"""
SELECT asset_category,
ifnull(sum(case when purchase_date < %(from_date)s then
case when ifnull(disposal_date, 0) = 0 or disposal_date >= %(from_date)s then
@@ -109,11 +109,9 @@
0
end), 0) as cost_of_scrapped_asset
from `tabAsset`
- where docstatus=1 and company=%(company)s and purchase_date <= %(to_date)s {}
+ where docstatus=1 and company=%(company)s and purchase_date <= %(to_date)s {condition}
group by asset_category
- """.format(
- condition
- ),
+ """,
{
"to_date": filters.to_date,
"from_date": filters.from_date,
@@ -129,7 +127,7 @@
if filters.get("asset"):
condition += " and name = %(asset)s"
return frappe.db.sql(
- """
+ f"""
SELECT name,
ifnull(sum(case when purchase_date < %(from_date)s then
case when ifnull(disposal_date, 0) = 0 or disposal_date >= %(from_date)s then
@@ -168,11 +166,9 @@
0
end), 0) as cost_of_scrapped_asset
from `tabAsset`
- where docstatus=1 and company=%(company)s and purchase_date <= %(to_date)s {}
+ where docstatus=1 and company=%(company)s and purchase_date <= %(to_date)s {condition}
group by name
- """.format(
- condition
- ),
+ """,
{
"to_date": filters.to_date,
"from_date": filters.from_date,
@@ -276,9 +272,7 @@
where a.docstatus=1 and a.company=%(company)s and a.purchase_date <= %(to_date)s {0}
group by a.asset_category) as results
group by results.asset_category
- """.format(
- condition
- ),
+ """.format(condition),
{"to_date": filters.to_date, "from_date": filters.from_date, "company": filters.company},
as_dict=1,
)
@@ -338,9 +332,7 @@
where a.docstatus=1 and a.company=%(company)s and a.purchase_date <= %(to_date)s {0}
group by a.name) as results
group by results.name
- """.format(
- condition
- ),
+ """.format(condition),
{"to_date": filters.to_date, "from_date": filters.from_date, "company": filters.company},
as_dict=1,
)
diff --git a/erpnext/accounts/report/balance_sheet/balance_sheet.py b/erpnext/accounts/report/balance_sheet/balance_sheet.py
index d45dc07..b2e55b6 100644
--- a/erpnext/accounts/report/balance_sheet/balance_sheet.py
+++ b/erpnext/accounts/report/balance_sheet/balance_sheet.py
@@ -180,7 +180,6 @@
filters,
consolidated=False,
):
-
net_asset, net_liability, net_equity, net_provisional_profit_loss = 0.0, 0.0, 0.0, 0.0
if filters.get("accumulated_values"):
diff --git a/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py b/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py
index 7e0bdea..ae67567 100644
--- a/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py
+++ b/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py
@@ -83,31 +83,27 @@
conditions = get_conditions(filters)
journal_entries = frappe.db.sql(
- """SELECT
+ f"""SELECT
"Journal Entry", jv.name, jv.posting_date, jv.cheque_no,
jv.clearance_date, jvd.against_account, jvd.debit - jvd.credit
FROM
`tabJournal Entry Account` jvd, `tabJournal Entry` jv
WHERE
- jvd.parent = jv.name and jv.docstatus=1 and jvd.account = %(account)s {0}
- order by posting_date DESC, jv.name DESC""".format(
- conditions
- ),
+ jvd.parent = jv.name and jv.docstatus=1 and jvd.account = %(account)s {conditions}
+ order by posting_date DESC, jv.name DESC""",
filters,
as_list=1,
)
payment_entries = frappe.db.sql(
- """SELECT
+ f"""SELECT
"Payment Entry", name, posting_date, reference_no, clearance_date, party,
if(paid_from=%(account)s, ((paid_amount * -1) - total_taxes_and_charges) , received_amount)
FROM
`tabPayment Entry`
WHERE
- docstatus=1 and (paid_from = %(account)s or paid_to = %(account)s) {0}
- order by posting_date DESC, name DESC""".format(
- conditions
- ),
+ docstatus=1 and (paid_from = %(account)s or paid_to = %(account)s) {conditions}
+ order by posting_date DESC, name DESC""",
filters,
as_list=1,
)
diff --git a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py
index 206654c..8a8e3a5 100644
--- a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py
+++ b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py
@@ -32,10 +32,7 @@
amounts_not_reflected_in_system = get_amounts_not_reflected_in_system(filters)
bank_bal = (
- flt(balance_as_per_system)
- - flt(total_debit)
- + flt(total_credit)
- + amounts_not_reflected_in_system
+ flt(balance_as_per_system) - flt(total_debit) + flt(total_credit) + amounts_not_reflected_in_system
)
data += [
diff --git a/erpnext/accounts/report/billed_items_to_be_received/billed_items_to_be_received.py b/erpnext/accounts/report/billed_items_to_be_received/billed_items_to_be_received.py
index 62bee82..f6efc8a 100644
--- a/erpnext/accounts/report/billed_items_to_be_received/billed_items_to_be_received.py
+++ b/erpnext/accounts/report/billed_items_to_be_received/billed_items_to_be_received.py
@@ -30,9 +30,7 @@
]
if report_filters.get("purchase_invoice"):
- filters.append(
- ["Purchase Invoice", "per_received", "in", [report_filters.get("purchase_invoice")]]
- )
+ filters.append(["Purchase Invoice", "per_received", "in", [report_filters.get("purchase_invoice")]])
return filters
@@ -40,10 +38,10 @@
def get_report_fields():
fields = []
for p_field in ["name", "supplier", "company", "posting_date", "currency"]:
- fields.append("`tabPurchase Invoice`.`{}`".format(p_field))
+ fields.append(f"`tabPurchase Invoice`.`{p_field}`")
for c_field in ["item_code", "item_name", "uom", "qty", "received_qty", "rate", "amount"]:
- fields.append("`tabPurchase Invoice Item`.`{}`".format(c_field))
+ fields.append(f"`tabPurchase Invoice Item`.`{c_field}`")
return fields
diff --git a/erpnext/accounts/report/budget_variance_report/budget_variance_report.py b/erpnext/accounts/report/budget_variance_report/budget_variance_report.py
index 96cfab9..e540aa9 100644
--- a/erpnext/accounts/report/budget_variance_report/budget_variance_report.py
+++ b/erpnext/accounts/report/budget_variance_report/budget_variance_report.py
@@ -112,7 +112,9 @@
]:
if group_months:
label = label % (
- formatdate(from_date, format_string="MMM") + "-" + formatdate(to_date, format_string="MMM")
+ formatdate(from_date, format_string="MMM")
+ + "-"
+ + formatdate(to_date, format_string="MMM")
)
else:
label = label % formatdate(from_date, format_string="MMM")
@@ -147,9 +149,7 @@
where
company = %s
{order_by}
- """.format(
- tab=filters.get("budget_against"), order_by=order_by
- ),
+ """.format(tab=filters.get("budget_against"), order_by=order_by),
filters.get("company"),
)
else:
@@ -159,9 +159,7 @@
name
from
`tab{tab}`
- """.format(
- tab=filters.get("budget_against")
- )
+ """.format(tab=filters.get("budget_against"))
) # nosec
@@ -170,12 +168,12 @@
budget_against = frappe.scrub(filters.get("budget_against"))
cond = ""
if filters.get("budget_against_filter"):
- cond += """ and b.{budget_against} in (%s)""".format(budget_against=budget_against) % ", ".join(
+ cond += f""" and b.{budget_against} in (%s)""" % ", ".join(
["%s"] * len(filters.get("budget_against_filter"))
)
return frappe.db.sql(
- """
+ f"""
select
b.{budget_against} as budget_against,
b.monthly_distribution,
@@ -194,10 +192,7 @@
{cond}
order by
b.fiscal_year
- """.format(
- budget_against=budget_against,
- cond=cond,
- ),
+ """,
tuple(
[
filters.from_fiscal_year,
@@ -244,15 +239,13 @@
if filters.get("budget_against") == "Cost Center":
cc_lft, cc_rgt = frappe.db.get_value("Cost Center", name, ["lft", "rgt"])
- cond = """
- and lft >= "{lft}"
- and rgt <= "{rgt}"
- """.format(
- lft=cc_lft, rgt=cc_rgt
- )
+ cond = f"""
+ and lft >= "{cc_lft}"
+ and rgt <= "{cc_rgt}"
+ """
ac_details = frappe.db.sql(
- """
+ f"""
select
gl.account,
gl.debit,
@@ -275,7 +268,7 @@
select
name
from
- `tab{tab}`
+ `tab{filters.budget_against}`
where
name = gl.{budget_against}
{cond}
@@ -283,9 +276,7 @@
group by
gl.name
order by gl.fiscal_year
- """.format(
- tab=filters.budget_against, budget_against=budget_against, cond=cond
- ),
+ """,
(filters.from_fiscal_year, filters.to_fiscal_year, name),
as_dict=1,
)
@@ -314,7 +305,9 @@
tav_dict = cam_map[ccd.budget_against][ccd.account][ccd.fiscal_year][month]
month_percentage = (
- tdd.get(ccd.monthly_distribution, {}).get(month, 0) if ccd.monthly_distribution else 100.0 / 12
+ tdd.get(ccd.monthly_distribution, {}).get(month, 0)
+ if ccd.monthly_distribution
+ else 100.0 / 12
)
tav_dict.target = flt(ccd.budget_amount) * month_percentage / 100
@@ -327,7 +320,6 @@
def get_fiscal_years(filters):
-
fiscal_year = frappe.db.sql(
"""
select
@@ -344,7 +336,6 @@
def get_chart_data(filters, columns, data):
-
if not data:
return None
@@ -360,7 +351,9 @@
else:
if group_months:
label = (
- formatdate(from_date, format_string="MMM") + "-" + formatdate(to_date, format_string="MMM")
+ formatdate(from_date, format_string="MMM")
+ + "-"
+ + formatdate(to_date, format_string="MMM")
)
labels.append(label)
else:
diff --git a/erpnext/accounts/report/cash_flow/cash_flow.py b/erpnext/accounts/report/cash_flow/cash_flow.py
index d3b0692..c034f95 100644
--- a/erpnext/accounts/report/cash_flow/cash_flow.py
+++ b/erpnext/accounts/report/cash_flow/cash_flow.py
@@ -109,9 +109,7 @@
add_total_row_account(
data, data, _("Net Change in Cash"), period_list, company_currency, summary_data, filters
)
- columns = get_columns(
- filters.periodicity, period_list, filters.accumulated_values, filters.company
- )
+ columns = get_columns(filters.periodicity, period_list, filters.accumulated_values, filters.company)
chart = get_chart_data(columns, data)
@@ -178,8 +176,8 @@
if filters.include_default_book_entries:
company_fb = frappe.get_cached_value("Company", company, "default_finance_book")
- cond = """ AND (finance_book in (%s, %s, '') OR finance_book IS NULL)
- """ % (
+ cond = """ AND (finance_book in ({}, {}, '') OR finance_book IS NULL)
+ """.format(
frappe.db.escape(filters.finance_book),
frappe.db.escape(company_fb),
)
@@ -193,15 +191,13 @@
cond += " and cost_center in %(cost_center)s"
gl_sum = frappe.db.sql_list(
- """
+ f"""
select sum(credit) - sum(debit)
from `tabGL Entry`
where company=%(company)s and posting_date >= %(start_date)s and posting_date <= %(end_date)s
and voucher_type != 'Period Closing Voucher'
and account in ( SELECT name FROM tabAccount WHERE account_type = %(account_type)s) {cond}
- """.format(
- cond=cond
- ),
+ """,
filters,
)
@@ -219,9 +215,7 @@
return start_date
-def add_total_row_account(
- out, data, label, period_list, currency, summary_data, filters, consolidated=False
-):
+def add_total_row_account(out, data, label, period_list, currency, summary_data, filters, consolidated=False):
total_row = {
"account_name": "'" + _("{0}").format(label) + "'",
"account": "'" + _("{0}").format(label) + "'",
@@ -253,9 +247,7 @@
report_summary = []
for label, value in summary_data.items():
- report_summary.append(
- {"value": value, "label": label, "datatype": "Currency", "currency": currency}
- )
+ report_summary.append({"value": value, "label": label, "datatype": "Currency", "currency": currency})
return report_summary
@@ -268,7 +260,7 @@
"values": [account.get(d.get("fieldname")) for d in columns[2:]],
}
for account in data
- if account.get("parent_account") == None and account.get("currency")
+ if account.get("parent_account") is None and account.get("currency")
]
datasets = datasets[:-1]
diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
index 0051ba6..b20f3b3 100644
--- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
+++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
@@ -55,9 +55,7 @@
fiscal_year, companies, columns, filters
)
elif filters.get("report") == "Profit and Loss Statement":
- data, message, chart, report_summary = get_profit_loss_data(
- fiscal_year, companies, columns, filters
- )
+ data, message, chart, report_summary = get_profit_loss_data(fiscal_year, companies, columns, filters)
else:
data, report_summary = get_cash_flow_data(fiscal_year, companies, filters)
@@ -81,9 +79,7 @@
asset, liability, equity, companies, filters.get("company"), company_currency, True
)
- message, opening_balance = prepare_companywise_opening_balance(
- asset, liability, equity, companies
- )
+ message, opening_balance = prepare_companywise_opening_balance(asset, liability, equity, companies)
if opening_balance:
unclosed = {
@@ -192,9 +188,7 @@
expense = get_data(companies, "Expense", "Debit", fiscal_year, filters, True)
- net_profit_loss = get_net_profit_loss(
- income, expense, companies, filters.company, company_currency, True
- )
+ net_profit_loss = get_net_profit_loss(income, expense, companies, filters.company, company_currency, True)
return income, expense, net_profit_loss
@@ -323,9 +317,7 @@
return columns
-def get_data(
- companies, root_type, balance_must_be, fiscal_year, filters=None, ignore_closing_entries=False
-):
+def get_data(companies, root_type, balance_must_be, fiscal_year, filters=None, ignore_closing_entries=False):
accounts, accounts_by_name, parent_children_map = get_account_heads(root_type, companies, filters)
if not accounts:
@@ -349,7 +341,6 @@
root_type,
as_dict=1,
):
-
set_gl_entries_by_account(
start_date,
end_date,
@@ -366,9 +357,7 @@
calculate_values(accounts_by_name, gl_entries_by_account, companies, filters, fiscal_year)
accumulate_values_into_parents(accounts, accounts_by_name, companies)
- out = prepare_data(
- accounts, start_date, end_date, balance_must_be, companies, company_currency, filters
- )
+ out = prepare_data(accounts, start_date, end_date, balance_must_be, companies, company_currency, filters)
out = filter_out_zero_value_rows(
out, parent_children_map, show_zero_values=filters.get("show_zero_values")
@@ -388,9 +377,7 @@
def calculate_values(accounts_by_name, gl_entries_by_account, companies, filters, fiscal_year):
start_date = (
- fiscal_year.year_start_date
- if filters.filter_based_on == "Fiscal Year"
- else filters.period_start_date
+ fiscal_year.year_start_date if filters.filter_based_on == "Fiscal Year" else filters.period_start_date
)
for entries in gl_entries_by_account.values():
@@ -422,8 +409,12 @@
and parent_company_currency != child_company_currency
and filters.get("accumulated_in_group_company")
):
- debit = convert(debit, parent_company_currency, child_company_currency, filters.end_date)
- credit = convert(credit, parent_company_currency, child_company_currency, filters.end_date)
+ debit = convert(
+ debit, parent_company_currency, child_company_currency, filters.end_date
+ )
+ credit = convert(
+ credit, parent_company_currency, child_company_currency, filters.end_date
+ )
d[company] = d.get(company, 0.0) + flt(debit) - flt(credit)
@@ -507,10 +498,8 @@
lft, rgt = frappe.get_cached_value("Company", company, ["lft", "rgt"])
return frappe.db.sql_list(
- """select name from `tabCompany`
- where lft >= {0} and rgt <= {1} order by lft, rgt""".format(
- lft, rgt
- )
+ f"""select name from `tabCompany`
+ where lft >= {lft} and rgt <= {rgt} order by lft, rgt"""
)
@@ -547,9 +536,7 @@
return accounts
-def prepare_data(
- accounts, start_date, end_date, balance_must_be, companies, company_currency, filters
-):
+def prepare_data(accounts, start_date, end_date, balance_must_be, companies, company_currency, filters):
data = []
for d in accounts:
@@ -559,9 +546,7 @@
row = frappe._dict(
{
"account_name": (
- "%s - %s" % (_(d.account_number), _(d.account_name))
- if d.account_number
- else _(d.account_name)
+ f"{_(d.account_number)} - {_(d.account_name)}" if d.account_number else _(d.account_name)
),
"account": _(d.name),
"parent_account": _(d.parent_account),
@@ -609,9 +594,7 @@
):
"""Returns a dict like { "account": [gl entries], ... }"""
- company_lft, company_rgt = frappe.get_cached_value(
- "Company", filters.get("company"), ["lft", "rgt"]
- )
+ company_lft, company_rgt = frappe.get_cached_value("Company", filters.get("company"), ["lft", "rgt"])
companies = frappe.db.sql(
""" select name, default_currency from `tabCompany`
@@ -739,7 +722,7 @@
additional_conditions = []
if ignore_closing_entries:
- additional_conditions.append((gle.voucher_type != "Period Closing Voucher"))
+ additional_conditions.append(gle.voucher_type != "Period Closing Voucher")
if from_date:
additional_conditions.append(gle.posting_date >= from_date)
@@ -802,7 +785,7 @@
def add_to_list(parent, level):
if level < depth:
children = parent_children_map.get(parent) or []
- sort_accounts(children, is_root=True if parent == None else False)
+ sort_accounts(children, is_root=True if parent is None else False)
for child in children:
child.indent = level
diff --git a/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py b/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py
index f4a0175..7b99096 100644
--- a/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py
+++ b/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py
@@ -7,7 +7,7 @@
from frappe.utils import getdate, nowdate
-class PartyLedgerSummaryReport(object):
+class PartyLedgerSummaryReport:
def __init__(self, filters=None):
self.filters = frappe._dict(filters or {})
self.filters.from_date = getdate(self.filters.from_date or nowdate())
@@ -21,9 +21,7 @@
frappe.throw(_("From Date must be before To Date"))
self.filters.party_type = args.get("party_type")
- self.party_naming_by = frappe.db.get_single_value(
- args.get("naming_by")[0], args.get("naming_by")[1]
- )
+ self.party_naming_by = frappe.db.get_single_value(args.get("naming_by")[0], args.get("naming_by")[1])
self.get_gl_entries()
self.get_additional_columns()
@@ -49,7 +47,7 @@
.select(
customer.name, customer.territory, customer.customer_group, customer.default_sales_partner
)
- .where((customer.disabled == 0))
+ .where(customer.disabled == 0)
.run(as_dict=True)
)
@@ -62,7 +60,7 @@
result = (
frappe.qb.from_(supplier)
.select(supplier.name, supplier.supplier_group)
- .where((supplier.disabled == 0))
+ .where(supplier.disabled == 0)
.run(as_dict=True)
)
@@ -184,9 +182,7 @@
return columns
def get_data(self):
- company_currency = frappe.get_cached_value(
- "Company", self.filters.get("company"), "default_currency"
- )
+ company_currency = frappe.get_cached_value("Company", self.filters.get("company"), "default_currency")
invoice_dr_or_cr = "debit" if self.filters.party_type == "Customer" else "credit"
reverse_dr_or_cr = "credit" if self.filters.party_type == "Customer" else "debit"
@@ -260,7 +256,7 @@
join = "left join `tabSupplier` p on gle.party = p.name"
self.gl_entries = frappe.db.sql(
- """
+ f"""
select
gle.posting_date, gle.party, gle.voucher_type, gle.voucher_no, gle.against_voucher_type,
gle.against_voucher, gle.debit, gle.credit, gle.is_opening {join_field}
@@ -270,9 +266,7 @@
gle.docstatus < 2 and gle.is_cancelled = 0 and gle.party_type=%(party_type)s and ifnull(gle.party, '') != ''
and gle.posting_date <= %(to_date)s {conditions}
order by gle.posting_date
- """.format(
- join=join, join_field=join_field, conditions=conditions
- ),
+ """,
self.filters,
as_dict=True,
)
@@ -296,22 +290,18 @@
)
conditions.append(
- """party in (select name from tabCustomer
- where exists(select name from `tabCustomer Group` where lft >= {0} and rgt <= {1}
- and name=tabCustomer.customer_group))""".format(
- lft, rgt
- )
+ f"""party in (select name from tabCustomer
+ where exists(select name from `tabCustomer Group` where lft >= {lft} and rgt <= {rgt}
+ and name=tabCustomer.customer_group))"""
)
if self.filters.get("territory"):
lft, rgt = frappe.db.get_value("Territory", self.filters.get("territory"), ["lft", "rgt"])
conditions.append(
- """party in (select name from tabCustomer
- where exists(select name from `tabTerritory` where lft >= {0} and rgt <= {1}
- and name=tabCustomer.territory))""".format(
- lft, rgt
- )
+ f"""party in (select name from tabCustomer
+ where exists(select name from `tabTerritory` where lft >= {lft} and rgt <= {rgt}
+ and name=tabCustomer.territory))"""
)
if self.filters.get("payment_terms_template"):
@@ -331,12 +321,10 @@
conditions.append(
"""exists(select name from `tabSales Team` steam where
- steam.sales_person in (select name from `tabSales Person` where lft >= {0} and rgt <= {1})
+ steam.sales_person in (select name from `tabSales Person` where lft >= {} and rgt <= {})
and ((steam.parent = voucher_no and steam.parenttype = voucher_type)
or (steam.parent = against_voucher and steam.parenttype = against_voucher_type)
- or (steam.parent = party and steam.parenttype = 'Customer')))""".format(
- lft, rgt
- )
+ or (steam.parent = party and steam.parenttype = 'Customer')))""".format(lft, rgt)
)
if self.filters.party_type == "Supplier":
@@ -392,7 +380,7 @@
)
gl_entries = frappe.db.sql(
- """
+ f"""
select
posting_date, account, party, voucher_type, voucher_no, debit, credit
from
@@ -406,10 +394,7 @@
where gle.party_type=%(party_type)s and ifnull(party, '') != ''
and gle.posting_date between %(from_date)s and %(to_date)s and gle.docstatus < 2 {conditions}
)
- """.format(
- accounts_query=accounts_query,
- conditions=conditions,
- ),
+ """,
self.filters,
as_dict=True,
)
@@ -440,14 +425,14 @@
if parties and accounts:
if len(parties) == 1:
- party = list(parties.keys())[0]
+ party = next(iter(parties.keys()))
for account, amount in accounts.items():
self.party_adjustment_accounts.add(account)
self.party_adjustment_details.setdefault(party, {})
self.party_adjustment_details[party].setdefault(account, 0)
self.party_adjustment_details[party][account] += amount
elif len(accounts) == 1 and not has_irrelevant_entry:
- account = list(accounts.keys())[0]
+ account = next(iter(accounts.keys()))
self.party_adjustment_accounts.add(account)
for party, amount in parties.items():
self.party_adjustment_details.setdefault(party, {})
diff --git a/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py b/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py
index eebd61c..7036009 100644
--- a/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py
+++ b/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py
@@ -10,7 +10,7 @@
from erpnext.accounts.utils import get_fiscal_year
-class Deferred_Item(object):
+class Deferred_Item:
"""
Helper class for processing items with deferred revenue/expense
"""
@@ -152,13 +152,11 @@
if posting.posted == "posted":
actual += self.get_amount(posting)
- self.period_total.append(
- frappe._dict({"key": period.key, "total": period_sum, "actual": actual})
- )
+ self.period_total.append(frappe._dict({"key": period.key, "total": period_sum, "actual": actual}))
return self.period_total
-class Deferred_Invoice(object):
+class Deferred_Invoice:
def __init__(self, invoice, items, filters, period_list):
"""
Helper class for processing invoices with deferred revenue/expense items
@@ -219,7 +217,7 @@
return ret_data
-class Deferred_Revenue_and_Expense_Report(object):
+class Deferred_Revenue_and_Expense_Report:
def __init__(self, filters=None):
"""
Initialize deferred revenue/expense report with user provided filters or system defaults, if none is provided
diff --git a/erpnext/accounts/report/deferred_revenue_and_expense/test_deferred_revenue_and_expense.py b/erpnext/accounts/report/deferred_revenue_and_expense/test_deferred_revenue_and_expense.py
index 7b1a902..f8a965b 100644
--- a/erpnext/accounts/report/deferred_revenue_and_expense/test_deferred_revenue_and_expense.py
+++ b/erpnext/accounts/report/deferred_revenue_and_expense/test_deferred_revenue_and_expense.py
@@ -1,5 +1,3 @@
-import unittest
-
import frappe
from frappe import qb
from frappe.tests.utils import FrappeTestCase, change_settings
@@ -13,8 +11,6 @@
)
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
from erpnext.accounts.utils import get_fiscal_year
-from erpnext.buying.doctype.supplier.test_supplier import create_supplier
-from erpnext.stock.doctype.item.test_item import create_item
class TestDeferredRevenueAndExpense(FrappeTestCase, AccountsTestMixin):
diff --git a/erpnext/accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py b/erpnext/accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py
index 5939a26..db984e8 100644
--- a/erpnext/accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py
+++ b/erpnext/accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.py
@@ -15,7 +15,6 @@
def execute(filters=None):
-
validate_filters(filters)
dimension_list = get_dimensions(filters)
@@ -90,9 +89,7 @@
gl_filters["dimensions"] = set(dimension_list)
if filters.get("include_default_book_entries"):
- gl_filters["company_fb"] = frappe.get_cached_value(
- "Company", filters.company, "default_finance_book"
- )
+ gl_filters["company_fb"] = frappe.get_cached_value("Company", filters.company, "default_finance_book")
gl_entries = frappe.db.sql(
"""
@@ -119,7 +116,6 @@
def format_gl_entries(gl_entries_by_account, accounts_by_name, dimension_list, dimension_type):
-
for entries in gl_entries_by_account.values():
for entry in entries:
d = accounts_by_name.get(entry.account)
@@ -151,7 +147,7 @@
"to_date": filters.to_date,
"currency": company_currency,
"account_name": (
- "{} - {}".format(d.account_number, d.account_name) if d.account_number else d.account_name
+ f"{d.account_number} - {d.account_name}" if d.account_number else d.account_name
),
}
@@ -183,7 +179,7 @@
def get_condition(dimension):
conditions = []
- conditions.append("{0} in %(dimensions)s".format(frappe.scrub(dimension)))
+ conditions.append(f"{frappe.scrub(dimension)} in %(dimensions)s")
return " and {}".format(" and ".join(conditions)) if conditions else ""
diff --git a/erpnext/accounts/report/financial_ratios/financial_ratios.py b/erpnext/accounts/report/financial_ratios/financial_ratios.py
index 47b4fd0..c97cd89 100644
--- a/erpnext/accounts/report/financial_ratios/financial_ratios.py
+++ b/erpnext/accounts/report/financial_ratios/financial_ratios.py
@@ -67,7 +67,6 @@
def get_ratios_data(filters, period_list, years):
-
data = []
assets, liabilities, income, expense = get_gl_data(filters, period_list, years)
@@ -113,9 +112,7 @@
add_solvency_ratios(
data, years, total_asset, total_liability, net_sales, cogs, total_income, total_expense
)
- add_turnover_ratios(
- data, years, period_list, filters, total_asset, net_sales, cogs, direct_expense
- )
+ add_turnover_ratios(data, years, period_list, filters, total_asset, net_sales, cogs, direct_expense)
return data
@@ -180,9 +177,7 @@
profit_after_tax = flt(total_income.get(year)) + flt(total_expense.get(year))
share_holder_fund = flt(total_asset.get(year)) - flt(total_liability.get(year))
- debt_equity_ratio[year] = calculate_ratio(
- total_liability.get(year), share_holder_fund, precision
- )
+ debt_equity_ratio[year] = calculate_ratio(total_liability.get(year), share_holder_fund, precision)
return_on_equity_ratio[year] = calculate_ratio(profit_after_tax, share_holder_fund, precision)
net_profit_ratio[year] = calculate_ratio(profit_after_tax, net_sales.get(year), precision)
@@ -198,9 +193,7 @@
data.append(return_on_equity_ratio)
-def add_turnover_ratios(
- data, years, period_list, filters, total_asset, net_sales, cogs, direct_expense
-):
+def add_turnover_ratios(data, years, period_list, filters, total_asset, net_sales, cogs, direct_expense):
precision = frappe.db.get_single_value("System Settings", "float_precision")
data.append({"ratio": "Turnover Ratios"})
@@ -240,7 +233,6 @@
net_dict=None,
total_net=0,
):
-
for entry in root_type_data:
if not entry.get("parent_account") and entry.get("is_group"):
total_dict[year] = entry[year]
@@ -283,9 +275,7 @@
company=filters.company,
account_type=account_type,
)
- avg_ratio[period["key"]] = flt(
- (flt(closing_balance) + flt(opening_balance)) / 2, precision=precision
- )
+ avg_ratio[period["key"]] = flt((flt(closing_balance) + flt(opening_balance)) / 2, precision=precision)
return avg_ratio
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index aadd873..6d763597 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -162,7 +162,6 @@
ignore_accumulated_values_for_fy=False,
total=True,
):
-
accounts = get_accounts(company, root_type)
if not accounts:
return None
@@ -178,7 +177,6 @@
root_type,
as_dict=1,
):
-
set_gl_entries_by_account(
company,
period_list[0]["year_start_date"] if only_current_fiscal_year else None,
@@ -242,7 +240,8 @@
if entry.posting_date <= period.to_date:
if (accumulated_values or entry.posting_date >= period.from_date) and (
- not ignore_accumulated_values_for_fy or entry.fiscal_year == period.to_date_fiscal_year
+ not ignore_accumulated_values_for_fy
+ or entry.fiscal_year == period.to_date_fiscal_year
):
d[period.key] = d.get(period.key, 0.0) + flt(entry.debit) - flt(entry.credit)
@@ -286,9 +285,7 @@
"is_group": d.is_group,
"opening_balance": d.get("opening_balance", 0.0) * (1 if balance_must_be == "Debit" else -1),
"account_name": (
- "%s - %s" % (_(d.account_number), _(d.account_name))
- if d.account_number
- else _(d.account_name)
+ f"{_(d.account_number)} - {_(d.account_name)}" if d.account_number else _(d.account_name)
),
}
)
@@ -382,7 +379,7 @@
def add_to_list(parent, level):
if level < depth:
children = parent_children_map.get(parent) or []
- sort_accounts(children, is_root=True if parent == None else False)
+ sort_accounts(children, is_root=True if parent is None else False)
for child in children:
child.indent = level
@@ -573,7 +570,9 @@
company_fb = frappe.get_cached_value("Company", filters.company, "default_finance_book")
if filters.finance_book and company_fb and cstr(filters.finance_book) != cstr(company_fb):
- frappe.throw(_("To use a different finance book, please uncheck 'Include Default FB Entries'"))
+ frappe.throw(
+ _("To use a different finance book, please uncheck 'Include Default FB Entries'")
+ )
query = query.where(
(gl_entry.finance_book.isin([cstr(filters.finance_book), cstr(company_fb), ""]))
diff --git a/erpnext/accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py b/erpnext/accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py
index 696a03b..89cf7e5 100644
--- a/erpnext/accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py
+++ b/erpnext/accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py
@@ -7,7 +7,7 @@
from frappe.query_builder.functions import Sum
-class General_Payment_Ledger_Comparison(object):
+class General_Payment_Ledger_Comparison:
"""
A Utility report to compare Voucher-wise balance between General and Payment Ledger
"""
@@ -58,10 +58,9 @@
for acc_type, val in self.account_types.items():
if val.accounts:
-
filter_criterion = []
if self.filters.voucher_no:
- filter_criterion.append((gle.voucher_no == self.filters.voucher_no))
+ filter_criterion.append(gle.voucher_no == self.filters.voucher_no)
if self.filters.period_start_date:
filter_criterion.append(gle.posting_date.gte(self.filters.period_start_date))
@@ -102,10 +101,9 @@
for acc_type, val in self.account_types.items():
if val.accounts:
-
filter_criterion = []
if self.filters.voucher_no:
- filter_criterion.append((ple.voucher_no == self.filters.voucher_no))
+ filter_criterion.append(ple.voucher_no == self.filters.voucher_no)
if self.filters.period_start_date:
filter_criterion.append(ple.posting_date.gte(self.filters.period_start_date))
@@ -141,7 +139,7 @@
self.ple_balances = set()
# consolidate both receivable and payable balances in one set
- for acc_type, val in self.account_types.items():
+ for _acc_type, val in self.account_types.items():
self.gle_balances = set(val.gle) | self.gle_balances
self.ple_balances = set(val.ple) | self.ple_balances
@@ -177,7 +175,6 @@
def get_columns(self):
self.columns = []
- options = None
self.columns.append(
dict(
label=_("Company"),
diff --git a/erpnext/accounts/report/general_and_payment_ledger_comparison/test_general_and_payment_ledger_comparison.py b/erpnext/accounts/report/general_and_payment_ledger_comparison/test_general_and_payment_ledger_comparison.py
index 59e906b..afa81b8 100644
--- a/erpnext/accounts/report/general_and_payment_ledger_comparison/test_general_and_payment_ledger_comparison.py
+++ b/erpnext/accounts/report/general_and_payment_ledger_comparison/test_general_and_payment_ledger_comparison.py
@@ -1,5 +1,3 @@
-import unittest
-
import frappe
from frappe import qb
from frappe.tests.utils import FrappeTestCase
@@ -40,9 +38,7 @@
)
# manually edit the payment ledger entry
- ple = frappe.db.get_all(
- "Payment Ledger Entry", filters={"voucher_no": sinv.name, "delinked": 0}
- )[0]
+ ple = frappe.db.get_all("Payment Ledger Entry", filters={"voucher_no": sinv.name, "delinked": 0})[0]
frappe.db.set_value("Payment Ledger Entry", ple.name, "amount", sinv.grand_total - 1)
filters = frappe._dict({"company": self.company})
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index cea3a7b..800d7a5 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -102,9 +102,7 @@
def set_account_currency(filters):
if filters.get("account") or (filters.get("party") and len(filters.party) == 1):
- filters["company_currency"] = frappe.get_cached_value(
- "Company", filters.company, "default_currency"
- )
+ filters["company_currency"] = frappe.get_cached_value("Company", filters.company, "default_currency")
account_currency = None
if filters.get("account"):
@@ -164,9 +162,7 @@
credit_in_account_currency """
if filters.get("show_remarks"):
- if remarks_length := frappe.db.get_single_value(
- "Accounts Settings", "general_ledger_remarks_length"
- ):
+ if remarks_length := frappe.db.get_single_value("Accounts Settings", "general_ledger_remarks_length"):
select_fields += f",substr(remarks, 1, {remarks_length}) as 'remarks'"
else:
select_fields += """,remarks"""
@@ -197,7 +193,7 @@
)
gl_entries = frappe.db.sql(
- """
+ f"""
select
name as gl_entry, posting_date, account, party_type, party,
voucher_type, voucher_subtype, voucher_no, {dimension_fields}
@@ -205,15 +201,9 @@
against_voucher_type, against_voucher, account_currency,
against, is_opening, creation {select_fields}
from `tabGL Entry`
- where company=%(company)s {conditions}
+ where company=%(company)s {get_conditions(filters)}
{order_by_statement}
- """.format(
- dimension_fields=dimension_fields,
- transaction_currency_fields=transaction_currency_fields,
- select_fields=select_fields,
- conditions=get_conditions(filters),
- order_by_statement=order_by_statement,
- ),
+ """,
filters,
as_dict=1,
)
@@ -283,7 +273,9 @@
if filters.get("company_fb") and cstr(filters.get("finance_book")) != cstr(
filters.get("company_fb")
):
- frappe.throw(_("To use a different finance book, please uncheck 'Include Default FB Entries'"))
+ frappe.throw(
+ _("To use a different finance book, please uncheck 'Include Default FB Entries'")
+ )
else:
conditions.append("(finance_book in (%(finance_book)s, '') OR finance_book IS NULL)")
else:
@@ -315,9 +307,9 @@
filters[dimension.fieldname] = get_dimension_with_children(
dimension.document_type, filters.get(dimension.fieldname)
)
- conditions.append("{0} in %({0})s".format(dimension.fieldname))
+ conditions.append(f"{dimension.fieldname} in %({dimension.fieldname})s")
else:
- conditions.append("{0} in %({0})s".format(dimension.fieldname))
+ conditions.append(f"{dimension.fieldname} in %({dimension.fieldname})s")
return "and {}".format(" and ".join(conditions)) if conditions else ""
@@ -351,7 +343,7 @@
data.append(totals.opening)
if filters.get("group_by") != "Group by Voucher (Consolidated)":
- for acc, acc_dict in gle_map.items():
+ for _acc, acc_dict in gle_map.items():
# acc
if acc_dict.entries:
# opening
@@ -383,7 +375,7 @@
def get_totals_dict():
def _get_debit_credit_dict(label):
return _dict(
- account="'{0}'".format(label),
+ account=f"'{label}'",
debit=0.0,
credit=0.0,
debit_in_account_currency=0.0,
@@ -432,9 +424,10 @@
data[key].debit_in_account_currency += gle.debit_in_account_currency
data[key].credit_in_account_currency += gle.credit_in_account_currency
- if filters.get("show_net_values_in_party_account") and account_type_map.get(
- data[key].account
- ) in ("Receivable", "Payable"):
+ if filters.get("show_net_values_in_party_account") and account_type_map.get(data[key].account) in (
+ "Receivable",
+ "Payable",
+ ):
net_value = data[key].debit - data[key].credit
net_value_in_account_currency = (
data[key].debit_in_account_currency - data[key].credit_in_account_currency
@@ -512,21 +505,19 @@
def get_account_type_map(company):
account_type_map = frappe._dict(
- frappe.get_all(
- "Account", fields=["name", "account_type"], filters={"company": company}, as_list=1
- )
+ frappe.get_all("Account", fields=["name", "account_type"], filters={"company": company}, as_list=1)
)
return account_type_map
def get_result_as_list(data, filters):
- balance, balance_in_account_currency = 0, 0
+ balance, _balance_in_account_currency = 0, 0
inv_details = get_supplier_invoice_details()
for d in data:
if not d.get("posting_date"):
- balance, balance_in_account_currency = 0, 0
+ balance, _balance_in_account_currency = 0, 0
balance = get_balance(d, balance, "debit", "credit")
d["balance"] = balance
diff --git a/erpnext/accounts/report/general_ledger/test_general_ledger.py b/erpnext/accounts/report/general_ledger/test_general_ledger.py
index 75f9430..33b356f 100644
--- a/erpnext/accounts/report/general_ledger/test_general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/test_general_ledger.py
@@ -203,9 +203,7 @@
revaluation.extend("accounts", accounts)
row = revaluation.accounts[0]
row.new_exchange_rate = 83
- row.new_balance_in_base_currency = flt(
- row.new_exchange_rate * flt(row.balance_in_account_currency)
- )
+ row.new_balance_in_base_currency = flt(row.new_exchange_rate * flt(row.balance_in_account_currency))
row.gain_loss = row.new_balance_in_base_currency - flt(row.balance_in_base_currency)
revaluation.set_total_gain_loss()
revaluation = revaluation.save().submit()
diff --git a/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.py b/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.py
index a52aaff..00f9c3e 100644
--- a/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.py
+++ b/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.py
@@ -49,9 +49,7 @@
total=False,
)
- columns = get_columns(
- filters.periodicity, period_list, filters.accumulated_values, filters.company
- )
+ columns = get_columns(filters.periodicity, period_list, filters.accumulated_values, filters.company)
gross_income = get_revenue(income, period_list)
gross_expense = get_revenue(expense, period_list)
@@ -119,9 +117,7 @@
def get_revenue(data, period_list, include_in_gross=1):
- revenue = [
- item for item in data if item["include_in_gross"] == include_in_gross or item["is_group"] == 1
- ]
+ revenue = [item for item in data if item["include_in_gross"] == include_in_gross or item["is_group"] == 1]
data_to_be_removed = True
while data_to_be_removed:
diff --git a/erpnext/accounts/report/gross_profit/gross_profit.py b/erpnext/accounts/report/gross_profit/gross_profit.py
index 25958692..8e2d9c6 100644
--- a/erpnext/accounts/report/gross_profit/gross_profit.py
+++ b/erpnext/accounts/report/gross_profit/gross_profit.py
@@ -158,9 +158,7 @@
return columns, data
-def get_data_when_grouped_by_invoice(
- columns, gross_profit_data, filters, group_wise_columns, data
-):
+def get_data_when_grouped_by_invoice(columns, gross_profit_data, filters, group_wise_columns, data):
column_names = get_column_names()
# to display item as Item Code: Item Name
@@ -395,7 +393,7 @@
)
-class GrossProfitGenerator(object):
+class GrossProfitGenerator:
def __init__(self, filters=None):
self.sle = {}
self.data = []
@@ -499,7 +497,8 @@
for i, row in enumerate(self.grouped[key]):
if row.indent == 1.0:
if (
- row.parent in self.returned_invoices and row.item_code in self.returned_invoices[row.parent]
+ row.parent in self.returned_invoices
+ and row.item_code in self.returned_invoices[row.parent]
):
returned_item_rows = self.returned_invoices[row.parent][row.item_code]
for returned_item_row in returned_item_rows:
@@ -512,7 +511,9 @@
row.qty = 0
returned_item_row.qty += row.qty
row.base_amount += flt(returned_item_row.base_amount, self.currency_precision)
- row.buying_amount = flt(flt(row.qty) * flt(row.buying_rate), self.currency_precision)
+ row.buying_amount = flt(
+ flt(row.qty) * flt(row.buying_rate), self.currency_precision
+ )
if flt(row.qty) or row.base_amount:
row = self.set_average_rate(row)
self.grouped_data.append(row)
@@ -567,9 +568,7 @@
new_row.buying_rate = (
flt(new_row.buying_amount / new_row.qty, self.float_precision) if new_row.qty else 0
)
- new_row.base_rate = (
- flt(new_row.base_amount / new_row.qty, self.float_precision) if new_row.qty else 0
- )
+ new_row.base_rate = flt(new_row.base_amount / new_row.qty, self.float_precision) if new_row.qty else 0
return new_row
def set_average_gross_profit(self, new_row):
@@ -656,7 +655,7 @@
elif self.delivery_notes.get((row.parent, row.item_code), None):
# check if Invoice has delivery notes
dn = self.delivery_notes.get((row.parent, row.item_code))
- parenttype, parent, item_row, warehouse = (
+ parenttype, parent, item_row, _warehouse = (
"Delivery Note",
dn["delivery_note"],
dn["item_row"],
@@ -751,7 +750,7 @@
conditions += " and (is_return = 0 or (is_return=1 and return_against is null))"
if self.filters.item_group:
- conditions += " and {0}".format(get_item_group_condition(self.filters.item_group))
+ conditions += f" and {get_item_group_condition(self.filters.item_group)}"
if self.filters.sales_person:
conditions += """
@@ -770,12 +769,10 @@
if self.filters.group_by == "Payment Term":
payment_term_cols = """,if(`tabSales Invoice`.is_return = 1,
- '{0}',
- coalesce(schedule.payment_term, '{1}')) as payment_term,
+ '{}',
+ coalesce(schedule.payment_term, '{}')) as payment_term,
schedule.invoice_portion,
- schedule.payment_amount """.format(
- _("Sales Return"), _("No Terms")
- )
+ schedule.payment_amount """.format(_("Sales Return"), _("No Terms"))
payment_term_table = """ left join `tabPayment Schedule` schedule on schedule.parent = `tabSales Invoice`.name and
`tabSales Invoice`.is_return = 0 """
else:
@@ -949,9 +946,7 @@
)
def get_bundle_item_details(self, item_code):
- return frappe.db.get_value(
- "Item", item_code, ["item_name", "description", "item_group", "brand"]
- )
+ return frappe.db.get_value("Item", item_code, ["item_name", "description", "item_group", "brand"])
def get_stock_ledger_entries(self, item_code, warehouse):
if item_code and warehouse:
diff --git a/erpnext/accounts/report/gross_profit/test_gross_profit.py b/erpnext/accounts/report/gross_profit/test_gross_profit.py
index aa820aa..8d15900 100644
--- a/erpnext/accounts/report/gross_profit/test_gross_profit.py
+++ b/erpnext/accounts/report/gross_profit/test_gross_profit.py
@@ -1,7 +1,7 @@
import frappe
from frappe import qb
from frappe.tests.utils import FrappeTestCase
-from frappe.utils import add_days, flt, nowdate
+from frappe.utils import flt, nowdate
from erpnext.accounts.doctype.sales_invoice.sales_invoice import make_delivery_note
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
diff --git a/erpnext/accounts/report/inactive_sales_items/inactive_sales_items.py b/erpnext/accounts/report/inactive_sales_items/inactive_sales_items.py
index 230b18c..df3fc48 100644
--- a/erpnext/accounts/report/inactive_sales_items/inactive_sales_items.py
+++ b/erpnext/accounts/report/inactive_sales_items/inactive_sales_items.py
@@ -92,7 +92,6 @@
def get_sales_details(filters):
- data = []
item_details_map = {}
date_field = "s.transaction_date" if filters["based_on"] == "Sales Order" else "s.posting_date"
@@ -116,7 +115,6 @@
def get_territories(filters):
-
filter_dict = {}
if filters.get("territory"):
filter_dict.update({"name": filters["territory"]})
diff --git a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py
index 9c6e2d0..4e7ab1b 100644
--- a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py
+++ b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py
@@ -140,7 +140,6 @@
def get_columns(additional_table_columns, filters):
-
columns = []
if filters.get("group_by") != ("Item"):
@@ -194,7 +193,12 @@
"options": "Supplier",
"width": 120,
},
- {"label": _("Supplier Name"), "fieldname": "supplier_name", "fieldtype": "Data", "width": 120},
+ {
+ "label": _("Supplier Name"),
+ "fieldname": "supplier_name",
+ "fieldtype": "Data",
+ "width": 120,
+ },
]
)
@@ -313,7 +317,7 @@
if additional_query_columns:
additional_query_columns = "," + ",".join(additional_query_columns)
return frappe.db.sql(
- """
+ f"""
select
`tabPurchase Invoice Item`.`name`, `tabPurchase Invoice Item`.`parent`,
`tabPurchase Invoice`.posting_date, `tabPurchase Invoice`.credit_to, `tabPurchase Invoice`.company,
@@ -326,14 +330,12 @@
`tabPurchase Invoice Item`.`purchase_receipt`, `tabPurchase Invoice Item`.`po_detail`,
`tabPurchase Invoice Item`.`expense_account`, `tabPurchase Invoice Item`.`stock_qty`,
`tabPurchase Invoice Item`.`stock_uom`, `tabPurchase Invoice Item`.`base_net_amount`,
- `tabPurchase Invoice`.`supplier_name`, `tabPurchase Invoice`.`mode_of_payment` {0}
+ `tabPurchase Invoice`.`supplier_name`, `tabPurchase Invoice`.`mode_of_payment` {additional_query_columns}
from `tabPurchase Invoice`, `tabPurchase Invoice Item`, `tabItem`
where `tabPurchase Invoice`.name = `tabPurchase Invoice Item`.`parent` and
`tabItem`.name = `tabPurchase Invoice Item`.`item_code` and
- `tabPurchase Invoice`.docstatus = 1 {1}
- """.format(
- additional_query_columns, conditions
- ),
+ `tabPurchase Invoice`.docstatus = 1 {conditions}
+ """,
filters,
as_dict=1,
)
diff --git a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
index a4f01fa..ce04af1 100644
--- a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
+++ b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
@@ -224,7 +224,12 @@
"options": "Customer",
"width": 120,
},
- {"label": _("Customer Name"), "fieldname": "customer_name", "fieldtype": "Data", "width": 120},
+ {
+ "label": _("Customer Name"),
+ "fieldname": "customer_name",
+ "fieldtype": "Data",
+ "width": 120,
+ },
]
)
@@ -379,9 +384,7 @@
"""
if not filters.get("group_by"):
- conditions += (
- "ORDER BY `tabSales Invoice`.posting_date desc, `tabSales Invoice Item`.item_group desc"
- )
+ conditions += "ORDER BY `tabSales Invoice`.posting_date desc, `tabSales Invoice Item`.item_group desc"
else:
conditions += get_group_by_conditions(filters, "Sales Invoice")
@@ -390,13 +393,13 @@
def get_group_by_conditions(filters, doctype):
if filters.get("group_by") == "Invoice":
- return "ORDER BY `tab{0} Item`.parent desc".format(doctype)
+ return f"ORDER BY `tab{doctype} Item`.parent desc"
elif filters.get("group_by") == "Item":
- return "ORDER BY `tab{0} Item`.`item_code`".format(doctype)
+ return f"ORDER BY `tab{doctype} Item`.`item_code`"
elif filters.get("group_by") == "Item Group":
- return "ORDER BY `tab{0} Item`.{1}".format(doctype, frappe.scrub(filters.get("group_by")))
+ return "ORDER BY `tab{} Item`.{}".format(doctype, frappe.scrub(filters.get("group_by")))
elif filters.get("group_by") in ("Customer", "Customer Group", "Territory", "Supplier"):
- return "ORDER BY `tab{0}`.{1}".format(doctype, frappe.scrub(filters.get("group_by")))
+ return "ORDER BY `tab{}`.{}".format(doctype, frappe.scrub(filters.get("group_by")))
def get_items(filters, additional_query_columns, additional_conditions=None):
@@ -423,14 +426,12 @@
`tabSales Invoice Item`.stock_qty, `tabSales Invoice Item`.stock_uom,
`tabSales Invoice Item`.base_net_rate, `tabSales Invoice Item`.base_net_amount,
`tabSales Invoice`.customer_name, `tabSales Invoice`.customer_group, `tabSales Invoice Item`.so_detail,
- `tabSales Invoice`.update_stock, `tabSales Invoice Item`.uom, `tabSales Invoice Item`.qty {0}
+ `tabSales Invoice`.update_stock, `tabSales Invoice Item`.uom, `tabSales Invoice Item`.qty {}
from `tabSales Invoice`, `tabSales Invoice Item`, `tabItem`
where `tabSales Invoice`.name = `tabSales Invoice Item`.parent and
`tabItem`.name = `tabSales Invoice Item`.`item_code` and
- `tabSales Invoice`.docstatus = 1 {1}
- """.format(
- additional_query_columns, conditions
- ),
+ `tabSales Invoice`.docstatus = 1 {}
+ """.format(additional_query_columns, conditions),
filters,
as_dict=1,
) # nosec
@@ -460,20 +461,15 @@
def get_grand_total(filters, doctype):
-
return frappe.db.sql(
- """ SELECT
- SUM(`tab{0}`.base_grand_total)
- FROM `tab{0}`
- WHERE `tab{0}`.docstatus = 1
+ f""" SELECT
+ SUM(`tab{doctype}`.base_grand_total)
+ FROM `tab{doctype}`
+ WHERE `tab{doctype}`.docstatus = 1
and posting_date between %s and %s
- """.format(
- doctype
- ),
+ """,
(filters.get("from_date"), filters.get("to_date")),
- )[0][
- 0
- ] # nosec
+ )[0][0] # nosec
def get_tax_accounts(
@@ -492,9 +488,7 @@
add_deduct_tax = "charge_type"
tax_amount_precision = (
- get_field_precision(
- frappe.get_meta(tax_doctype).get_field("tax_amount"), currency=company_currency
- )
+ get_field_precision(frappe.get_meta(tax_doctype).get_field("tax_amount"), currency=company_currency)
or 2
)
@@ -504,11 +498,13 @@
conditions = ""
if doctype == "Purchase Invoice":
- conditions = " and category in ('Total', 'Valuation and Total') and base_tax_amount_after_discount_amount != 0"
+ conditions = (
+ " and category in ('Total', 'Valuation and Total') and base_tax_amount_after_discount_amount != 0"
+ )
add_deduct_tax = "add_deduct_tax"
tax_details = frappe.db.sql(
- """
+ f"""
select
name, parent, description, item_wise_tax_detail, account_head,
charge_type, {add_deduct_tax}, base_tax_amount_after_discount_amount
@@ -519,11 +515,9 @@
and parent in (%s)
%s
order by description
- """.format(
- add_deduct_tax=add_deduct_tax
- )
+ """
% (tax_doctype, "%s", ", ".join(["%s"] * len(invoice_item_row)), conditions),
- tuple([doctype] + list(invoice_item_row)),
+ tuple([doctype, *list(invoice_item_row)]),
)
account_doctype = frappe.qb.DocType("Account")
@@ -531,13 +525,13 @@
query = (
frappe.qb.from_(account_doctype)
.select(account_doctype.name)
- .where((account_doctype.account_type == "Tax"))
+ .where(account_doctype.account_type == "Tax")
)
tax_accounts = query.run()
for (
- name,
+ _name,
parent,
description,
item_wise_tax_detail,
@@ -598,7 +592,9 @@
itemised_tax.setdefault(d.name, {})[description] = frappe._dict(
{
"tax_rate": "NA",
- "tax_amount": flt((tax_amount * d.base_net_amount) / d.base_net_total, tax_amount_precision),
+ "tax_amount": flt(
+ (tax_amount * d.base_net_amount) / d.base_net_total, tax_amount_precision
+ ),
}
)
diff --git a/erpnext/accounts/report/payment_ledger/payment_ledger.py b/erpnext/accounts/report/payment_ledger/payment_ledger.py
index 8875d27..9852c6e 100644
--- a/erpnext/accounts/report/payment_ledger/payment_ledger.py
+++ b/erpnext/accounts/report/payment_ledger/payment_ledger.py
@@ -8,7 +8,7 @@
from frappe.query_builder import Criterion
-class PaymentLedger(object):
+class PaymentLedger:
def __init__(self, filters=None):
self.filters = filters
self.columns, self.data = [], []
diff --git a/erpnext/accounts/report/payment_ledger/test_payment_ledger.py b/erpnext/accounts/report/payment_ledger/test_payment_ledger.py
index 5ae9b87..c982f31 100644
--- a/erpnext/accounts/report/payment_ledger/test_payment_ledger.py
+++ b/erpnext/accounts/report/payment_ledger/test_payment_ledger.py
@@ -1,5 +1,3 @@
-import unittest
-
import frappe
from frappe import qb
from frappe.tests.utils import FrappeTestCase
@@ -57,7 +55,7 @@
income_account=self.income_account,
warehouse=self.warehouse,
)
- pe = get_payment_entry(sinv.doctype, sinv.name).save().submit()
+ get_payment_entry(sinv.doctype, sinv.name).save().submit()
filters = frappe._dict({"company": self.company})
columns, data = execute(filters=filters)
diff --git a/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py b/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py
index eaeaa62..834eb5f 100644
--- a/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py
+++ b/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py
@@ -163,10 +163,8 @@
"""select
voucher_type, voucher_no, party_type, party, posting_date, debit, credit, remarks, against_voucher
from `tabGL Entry`
- where company=%(company)s and voucher_type in ('Journal Entry', 'Payment Entry') and is_cancelled = 0 {0}
- """.format(
- get_conditions(filters)
- ),
+ where company=%(company)s and voucher_type in ('Journal Entry', 'Payment Entry') and is_cancelled = 0 {}
+ """.format(get_conditions(filters)),
filters,
as_dict=1,
)
@@ -175,7 +173,7 @@
def get_invoice_posting_date_map(filters):
invoice_details = {}
dt = "Sales Invoice" if filters.get("payment_type") == _("Incoming") else "Purchase Invoice"
- for t in frappe.db.sql("select name, posting_date, due_date from `tab{0}`".format(dt), as_dict=1):
+ for t in frappe.db.sql(f"select name, posting_date, due_date from `tab{dt}`", as_dict=1):
invoice_details[t.name] = t
return invoice_details
diff --git a/erpnext/accounts/report/pos_register/pos_register.py b/erpnext/accounts/report/pos_register/pos_register.py
index 488bb99..7640ae8 100644
--- a/erpnext/accounts/report/pos_register/pos_register.py
+++ b/erpnext/accounts/report/pos_register/pos_register.py
@@ -50,17 +50,19 @@
order_by = "p.posting_date"
select_mop_field, from_sales_invoice_payment, group_by_mop_condition = "", "", ""
if group_by_field == "mode_of_payment":
- select_mop_field = ", sip.mode_of_payment, sip.base_amount - IF(sip.type='Cash', p.change_amount, 0) as paid_amount"
+ select_mop_field = (
+ ", sip.mode_of_payment, sip.base_amount - IF(sip.type='Cash', p.change_amount, 0) as paid_amount"
+ )
from_sales_invoice_payment = ", `tabSales Invoice Payment` sip"
group_by_mop_condition = "sip.parent = p.name AND ifnull(sip.base_amount - IF(sip.type='Cash', p.change_amount, 0), 0) != 0 AND"
order_by += ", sip.mode_of_payment"
elif group_by_field:
- order_by += ", p.{}".format(group_by_field)
+ order_by += f", p.{group_by_field}"
select_mop_field = ", p.base_paid_amount - p.change_amount as paid_amount "
return frappe.db.sql(
- """
+ f"""
SELECT
p.posting_date, p.name as pos_invoice, p.pos_profile,
p.owner, p.customer, p.is_return, p.base_grand_total as grand_total {select_mop_field}
@@ -72,13 +74,7 @@
{conditions}
ORDER BY
{order_by}
- """.format(
- select_mop_field=select_mop_field,
- from_sales_invoice_payment=from_sales_invoice_payment,
- group_by_mop_condition=group_by_mop_condition,
- conditions=conditions,
- order_by=order_by,
- ),
+ """,
filters,
as_dict=1,
)
@@ -131,9 +127,7 @@
def get_conditions(filters):
- conditions = (
- "company = %(company)s AND posting_date >= %(from_date)s AND posting_date <= %(to_date)s"
- )
+ conditions = "company = %(company)s AND posting_date >= %(from_date)s AND posting_date <= %(to_date)s"
if filters.get("pos_profile"):
conditions += " AND pos_profile = %(pos_profile)s"
diff --git a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py
index 12a8554..58610b2 100644
--- a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py
+++ b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py
@@ -57,9 +57,7 @@
if net_profit_loss:
data.append(net_profit_loss)
- columns = get_columns(
- filters.periodicity, period_list, filters.accumulated_values, filters.company
- )
+ columns = get_columns(filters.periodicity, period_list, filters.accumulated_values, filters.company)
chart = get_chart_data(filters, columns, income, expense, net_profit_loss)
diff --git a/erpnext/accounts/report/profit_and_loss_statement/test_profit_and_loss_statement.py b/erpnext/accounts/report/profit_and_loss_statement/test_profit_and_loss_statement.py
index b4423ab..816c2b9 100644
--- a/erpnext/accounts/report/profit_and_loss_statement/test_profit_and_loss_statement.py
+++ b/erpnext/accounts/report/profit_and_loss_statement/test_profit_and_loss_statement.py
@@ -3,7 +3,7 @@
import frappe
from frappe.tests.utils import FrappeTestCase
-from frappe.utils import add_days, getdate, today
+from frappe.utils import getdate, today
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.accounts.report.financial_statements import get_period_list
@@ -61,7 +61,7 @@
)
def test_profit_and_loss_output_and_summary(self):
- si = self.create_sales_invoice(qty=1, rate=150)
+ self.create_sales_invoice(qty=1, rate=150)
filters = self.get_report_filters()
period_list = get_period_list(
@@ -75,9 +75,7 @@
)
result = execute(filters)[1]
- current_period = [x for x in period_list if x.from_date <= getdate() and x.to_date >= getdate()][
- 0
- ]
+ current_period = next(x for x in period_list if x.from_date <= getdate() and x.to_date >= getdate())
current_period_key = current_period.key
without_current_period = [x for x in period_list if x.key != current_period.key]
# all period except current period(whence invoice was posted), should be '0'
diff --git a/erpnext/accounts/report/purchase_register/purchase_register.py b/erpnext/accounts/report/purchase_register/purchase_register.py
index 39eb312..504c74b 100644
--- a/erpnext/accounts/report/purchase_register/purchase_register.py
+++ b/erpnext/accounts/report/purchase_register/purchase_register.py
@@ -316,16 +316,12 @@
tuple([inv.name for inv in invoice_list]),
)
- purchase_taxes_query = get_taxes_query(
- invoice_list, "Purchase Taxes and Charges", "Purchase Invoice"
- )
+ purchase_taxes_query = get_taxes_query(invoice_list, "Purchase Taxes and Charges", "Purchase Invoice")
purchase_tax_accounts = purchase_taxes_query.run(as_dict=True, pluck="account_head")
tax_accounts = purchase_tax_accounts
if include_payments:
- advance_taxes_query = get_taxes_query(
- invoice_list, "Advance Taxes and Charges", "Payment Entry"
- )
+ advance_taxes_query = get_taxes_query(invoice_list, "Advance Taxes and Charges", "Payment Entry")
advance_tax_accounts = advance_taxes_query.run(as_dict=True, pluck="account_head")
tax_accounts = set(tax_accounts + advance_tax_accounts)
@@ -399,7 +395,7 @@
pi.outstanding_amount,
pi.mode_of_payment,
)
- .where((pi.docstatus == 1))
+ .where(pi.docstatus == 1)
.orderby(pi.posting_date, pi.name, order=Order.desc)
)
@@ -443,9 +439,7 @@
account_fieldname="paid_to",
party="supplier",
party_name="supplier_name",
- party_account=get_party_account(
- "Supplier", filters.supplier, filters.company, include_advance=True
- ),
+ party_account=get_party_account("Supplier", filters.supplier, filters.company, include_advance=True),
)
payment_entries = get_payment_entries(filters, args)
journal_entries = get_journal_entries(filters, args)
@@ -491,9 +485,7 @@
return internal_invoice_map
-def get_invoice_tax_map(
- invoice_list, invoice_expense_map, expense_accounts, include_payments=False
-):
+def get_invoice_tax_map(invoice_list, invoice_expense_map, expense_accounts, include_payments=False):
tax_details = frappe.db.sql(
"""
select parent, account_head, case add_deduct_tax when "Add" then sum(base_tax_amount_after_discount_amount)
@@ -558,9 +550,7 @@
invoice_po_pr_map.setdefault(d.parent, frappe._dict()).setdefault("purchase_receipt", pr_list)
if d.project:
- invoice_po_pr_map.setdefault(d.parent, frappe._dict()).setdefault("project", []).append(
- d.project
- )
+ invoice_po_pr_map.setdefault(d.parent, frappe._dict()).setdefault("project", []).append(d.project)
return invoice_po_pr_map
diff --git a/erpnext/accounts/report/purchase_register/test_purchase_register.py b/erpnext/accounts/report/purchase_register/test_purchase_register.py
index 6903662..a7a5c07 100644
--- a/erpnext/accounts/report/purchase_register/test_purchase_register.py
+++ b/erpnext/accounts/report/purchase_register/test_purchase_register.py
@@ -3,7 +3,7 @@
import frappe
from frappe.tests.utils import FrappeTestCase
-from frappe.utils import add_months, getdate, today
+from frappe.utils import add_months, today
from erpnext.accounts.report.purchase_register.purchase_register import execute
@@ -13,9 +13,7 @@
frappe.db.sql("delete from `tabPurchase Invoice` where company='_Test Company 6'")
frappe.db.sql("delete from `tabGL Entry` where company='_Test Company 6'")
- filters = frappe._dict(
- company="_Test Company 6", from_date=add_months(today(), -1), to_date=today()
- )
+ filters = frappe._dict(company="_Test Company 6", from_date=add_months(today(), -1), to_date=today())
pi = make_purchase_invoice()
@@ -40,7 +38,7 @@
supplier="_Test Supplier",
)
- pi = make_purchase_invoice()
+ make_purchase_invoice()
pe = make_payment_entry()
report_results = execute(filters)
@@ -58,7 +56,7 @@
from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center
from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
- gst_acc = create_account(
+ create_account(
account_name="GST",
account_type="Tax",
parent_account="Duties and Taxes - _TC6",
diff --git a/erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py b/erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py
index 0577214..7c2bf7e 100644
--- a/erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py
+++ b/erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py
@@ -144,9 +144,9 @@
"ON ("
"t1.parent = a.name and t1.base_total = a.base_total) "
"WHERE a.docstatus = 1"
- " AND {conditions} "
+ f" AND {conditions} "
"GROUP BY "
- "owner, posting_date, warehouse".format(conditions=conditions),
+ "owner, posting_date, warehouse",
filters,
as_dict=1,
)
@@ -156,7 +156,7 @@
def get_sales_invoice_data(filters):
conditions = get_conditions(filters)
return frappe.db.sql(
- """
+ f"""
select
a.posting_date, a.owner,
sum(a.net_total) as "net_total",
@@ -168,9 +168,7 @@
and {conditions}
group by
a.owner, a.posting_date
- """.format(
- conditions=conditions
- ),
+ """,
filters,
as_dict=1,
)
@@ -182,7 +180,7 @@
invoice_list_names = ",".join("'" + invoice["name"] + "'" for invoice in invoice_list)
if invoice_list:
inv_mop = frappe.db.sql(
- """select a.owner,a.posting_date, ifnull(b.mode_of_payment, '') as mode_of_payment
+ f"""select a.owner,a.posting_date, ifnull(b.mode_of_payment, '') as mode_of_payment
from `tabSales Invoice` a, `tabSales Invoice Payment` b
where a.name = b.parent
and a.docstatus = 1
@@ -202,9 +200,7 @@
and a.docstatus = 1
and b.reference_type = 'Sales Invoice'
and b.reference_name in ({invoice_list_names})
- """.format(
- invoice_list_names=invoice_list_names
- ),
+ """,
as_dict=1,
)
for d in inv_mop:
@@ -215,11 +211,9 @@
def get_invoices(filters):
conditions = get_conditions(filters)
return frappe.db.sql(
- """select a.name
+ f"""select a.name
from `tabSales Invoice` a
- where a.docstatus = 1 and {conditions}""".format(
- conditions=conditions
- ),
+ where a.docstatus = 1 and {conditions}""",
filters,
as_dict=1,
)
@@ -231,7 +225,7 @@
invoice_list_names = ",".join("'" + invoice["name"] + "'" for invoice in invoice_list)
if invoice_list:
inv_mop_detail = frappe.db.sql(
- """
+ f"""
select t.owner,
t.posting_date,
t.mode_of_payment,
@@ -264,23 +258,19 @@
group by a.owner, a.posting_date, mode_of_payment
) t
group by t.owner, t.posting_date, t.mode_of_payment
- """.format(
- invoice_list_names=invoice_list_names
- ),
+ """,
as_dict=1,
)
inv_change_amount = frappe.db.sql(
- """select a.owner, a.posting_date,
+ f"""select a.owner, a.posting_date,
ifnull(b.mode_of_payment, '') as mode_of_payment, sum(a.base_change_amount) as change_amount
from `tabSales Invoice` a, `tabSales Invoice Payment` b
where a.name = b.parent
and a.name in ({invoice_list_names})
and b.type = 'Cash'
and a.base_change_amount > 0
- group by a.owner, a.posting_date, mode_of_payment""".format(
- invoice_list_names=invoice_list_names
- ),
+ group by a.owner, a.posting_date, mode_of_payment""",
as_dict=1,
)
diff --git a/erpnext/accounts/report/sales_payment_summary/test_sales_payment_summary.py b/erpnext/accounts/report/sales_payment_summary/test_sales_payment_summary.py
index 3ad0ff2..3be96c6 100644
--- a/erpnext/accounts/report/sales_payment_summary/test_sales_payment_summary.py
+++ b/erpnext/accounts/report/sales_payment_summary/test_sales_payment_summary.py
@@ -33,7 +33,7 @@
def test_get_mode_of_payments(self):
filters = get_filters()
- for dummy in range(2):
+ for _dummy in range(2):
si = create_sales_invoice_record()
si.insert()
si.submit()
@@ -53,8 +53,8 @@
pe.submit()
mop = get_mode_of_payments(filters)
- self.assertTrue("Credit Card" in list(mop.values())[0])
- self.assertTrue("Cash" in list(mop.values())[0])
+ self.assertTrue("Credit Card" in next(iter(mop.values())))
+ self.assertTrue("Cash" in next(iter(mop.values())))
# Cancel all Cash payment entry and check if this mode of payment is still fetched.
payment_entries = frappe.get_all(
@@ -67,13 +67,13 @@
pe.cancel()
mop = get_mode_of_payments(filters)
- self.assertTrue("Credit Card" in list(mop.values())[0])
- self.assertTrue("Cash" not in list(mop.values())[0])
+ self.assertTrue("Credit Card" in next(iter(mop.values())))
+ self.assertTrue("Cash" not in next(iter(mop.values())))
def test_get_mode_of_payments_details(self):
filters = get_filters()
- for dummy in range(2):
+ for _dummy in range(2):
si = create_sales_invoice_record()
si.insert()
si.submit()
@@ -94,7 +94,7 @@
mopd = get_mode_of_payment_details(filters)
- mopd_values = list(mopd.values())[0]
+ mopd_values = next(iter(mopd.values()))
for mopd_value in mopd_values:
if mopd_value[0] == "Credit Card":
cc_init_amount = mopd_value[1]
@@ -110,7 +110,7 @@
pe.cancel()
mopd = get_mode_of_payment_details(filters)
- mopd_values = list(mopd.values())[0]
+ mopd_values = next(iter(mopd.values()))
for mopd_value in mopd_values:
if mopd_value[0] == "Credit Card":
cc_final_amount = mopd_value[1]
diff --git a/erpnext/accounts/report/sales_register/sales_register.py b/erpnext/accounts/report/sales_register/sales_register.py
index ec6dd72..f275695 100644
--- a/erpnext/accounts/report/sales_register/sales_register.py
+++ b/erpnext/accounts/report/sales_register/sales_register.py
@@ -129,7 +129,8 @@
if tax_acc not in income_accounts:
tax_amount_precision = (
get_field_precision(
- frappe.get_meta("Sales Taxes and Charges").get_field("tax_amount"), currency=company_currency
+ frappe.get_meta("Sales Taxes and Charges").get_field("tax_amount"),
+ currency=company_currency,
)
or 2
)
@@ -357,9 +358,7 @@
tax_accounts = sales_tax_accounts
if include_payments:
- advance_taxes_query = get_taxes_query(
- invoice_list, "Advance Taxes and Charges", "Payment Entry"
- )
+ advance_taxes_query = get_taxes_query(invoice_list, "Advance Taxes and Charges", "Payment Entry")
advance_tax_accounts = advance_taxes_query.run(as_dict=True, pluck="account_head")
tax_accounts = set(tax_accounts + advance_tax_accounts)
@@ -438,7 +437,7 @@
si.represents_company,
si.company,
)
- .where((si.docstatus == 1))
+ .where(si.docstatus == 1)
.orderby(si.posting_date, si.name, order=Order.desc)
)
@@ -480,9 +479,7 @@
account_fieldname="paid_from",
party="customer",
party_name="customer_name",
- party_account=get_party_account(
- "Customer", filters.customer, filters.company, include_advance=True
- ),
+ party_account=get_party_account("Customer", filters.customer, filters.company, include_advance=True),
)
payment_entries = get_payment_entries(filters, args)
journal_entries = get_journal_entries(filters, args)
diff --git a/erpnext/accounts/report/share_balance/share_balance.py b/erpnext/accounts/report/share_balance/share_balance.py
index d02f53b..1d02a99 100644
--- a/erpnext/accounts/report/share_balance/share_balance.py
+++ b/erpnext/accounts/report/share_balance/share_balance.py
@@ -15,7 +15,7 @@
columns = get_columns(filters)
- date = filters.get("date")
+ filters.get("date")
data = []
diff --git a/erpnext/accounts/report/share_ledger/share_ledger.py b/erpnext/accounts/report/share_ledger/share_ledger.py
index 629528e..ed65687 100644
--- a/erpnext/accounts/report/share_ledger/share_ledger.py
+++ b/erpnext/accounts/report/share_ledger/share_ledger.py
@@ -26,9 +26,9 @@
for transfer in transfers:
if transfer.transfer_type == "Transfer":
if transfer.from_shareholder == filters.get("shareholder"):
- transfer.transfer_type += " to {}".format(transfer.to_shareholder)
+ transfer.transfer_type += f" to {transfer.to_shareholder}"
else:
- transfer.transfer_type += " from {}".format(transfer.from_shareholder)
+ transfer.transfer_type += f" from {transfer.from_shareholder}"
row = [
filters.get("shareholder"),
transfer.date,
@@ -66,13 +66,11 @@
# if company:
# condition = 'AND company = %(company)s '
return frappe.db.sql(
- """SELECT * FROM `tabShare Transfer`
+ f"""SELECT * FROM `tabShare Transfer`
WHERE ((DATE(date) <= %(date)s AND from_shareholder = %(shareholder)s {condition})
OR (DATE(date) <= %(date)s AND to_shareholder = %(shareholder)s {condition}))
AND docstatus = 1
- ORDER BY date""".format(
- condition=condition
- ),
+ ORDER BY date""",
{"date": date, "shareholder": shareholder},
as_dict=1,
)
diff --git a/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py b/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py
index b18570b..ab50fcd 100644
--- a/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py
+++ b/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py
@@ -37,9 +37,7 @@
frappe.throw(_("From Date must be before To Date"))
-def get_result(
- filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map, net_total_map
-):
+def get_result(filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map, net_total_map):
party_map = get_party_pan_map(filters.get("party_type"))
tax_rate_map = get_tax_rate_map(filters)
gle_map = get_gle_map(tds_docs)
@@ -92,9 +90,9 @@
party_type = "customer_type"
row = {
- "pan"
- if frappe.db.has_column(filters.party_type, "pan")
- else "tax_id": party_map.get(party, {}).get("pan"),
+ "pan" if frappe.db.has_column(filters.party_type, "pan") else "tax_id": party_map.get(
+ party, {}
+ ).get("pan"),
"party": party_map.get(party, {}).get("name"),
}
@@ -281,7 +279,7 @@
journal_entries = []
tax_category_map = frappe._dict()
net_total_map = frappe._dict()
- or_filters = frappe._dict()
+ frappe._dict()
journal_entry_party_map = frappe._dict()
bank_accounts = frappe.get_all("Account", {"is_group": 0, "account_type": "Bank"}, pluck="name")
@@ -344,7 +342,7 @@
query = (
frappe.qb.from_(gle)
.select("voucher_no", "voucher_type", "against", "party")
- .where((gle.is_cancelled == 0))
+ .where(gle.is_cancelled == 0)
)
if filters.get("from_date"):
diff --git a/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py b/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py
index 2b5566f..e14d932 100644
--- a/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py
+++ b/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py
@@ -67,13 +67,13 @@
},
)
- party_category_wise_map.get((row.get("party"), row.get("section_code")))[
- "total_amount"
- ] += row.get("total_amount", 0.0)
+ party_category_wise_map.get((row.get("party"), row.get("section_code")))["total_amount"] += row.get(
+ "total_amount", 0.0
+ )
- party_category_wise_map.get((row.get("party"), row.get("section_code")))[
- "tax_amount"
- ] += row.get("tax_amount", 0.0)
+ party_category_wise_map.get((row.get("party"), row.get("section_code")))["tax_amount"] += row.get(
+ "tax_amount", 0.0
+ )
final_result = get_final_result(party_category_wise_map)
@@ -82,7 +82,7 @@
def get_final_result(party_category_wise_map):
out = []
- for key, value in party_category_wise_map.items():
+ for _key, value in party_category_wise_map.items():
out.append(value)
return out
diff --git a/erpnext/accounts/report/trial_balance/trial_balance.py b/erpnext/accounts/report/trial_balance/trial_balance.py
index 2ff0eff..f216ece 100644
--- a/erpnext/accounts/report/trial_balance/trial_balance.py
+++ b/erpnext/accounts/report/trial_balance/trial_balance.py
@@ -120,9 +120,7 @@
ignore_opening_entries=True,
)
- calculate_values(
- accounts, gl_entries_by_account, opening_balances, filters.get("show_net_values")
- )
+ calculate_values(accounts, gl_entries_by_account, opening_balances, filters.get("show_net_values"))
accumulate_values_into_parents(accounts, accounts_by_name)
data = prepare_data(accounts, filters, parent_children_map, company_currency)
@@ -170,9 +168,7 @@
)
# Report getting generate from the mid of a fiscal year
- if getdate(last_period_closing_voucher[0].posting_date) < getdate(
- add_days(filters.from_date, -1)
- ):
+ if getdate(last_period_closing_voucher[0].posting_date) < getdate(add_days(filters.from_date, -1)):
start_date = add_days(last_period_closing_voucher[0].posting_date, 1)
gle += get_opening_balance(
"GL Entry", filters, report_type, accounting_dimensions, start_date=start_date
@@ -253,9 +249,7 @@
if doctype == "Account Closing Balance":
opening_balance = opening_balance.where(closing_balance.is_period_closing_voucher_entry == 0)
else:
- opening_balance = opening_balance.where(
- closing_balance.voucher_type != "Period Closing Voucher"
- )
+ opening_balance = opening_balance.where(closing_balance.voucher_type != "Period Closing Voucher")
if filters.cost_center:
lft, rgt = frappe.db.get_value("Cost Center", filters.cost_center, ["lft", "rgt"])
@@ -388,7 +382,7 @@
"to_date": filters.to_date,
"currency": company_currency,
"account_name": (
- "{} - {}".format(d.account_number, d.account_name) if d.account_number else d.account_name
+ f"{d.account_number} - {d.account_name}" if d.account_number else d.account_name
),
}
diff --git a/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py b/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py
index ee22348..dd1a125 100644
--- a/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py
+++ b/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py
@@ -22,7 +22,7 @@
def get_data(filters, show_party_name):
if filters.get("party_type") in ("Customer", "Supplier", "Employee", "Member"):
- party_name_field = "{0}_name".format(frappe.scrub(filters.get("party_type")))
+ party_name_field = "{}_name".format(frappe.scrub(filters.get("party_type")))
elif filters.get("party_type") == "Shareholder":
party_name_field = "title"
else:
@@ -65,9 +65,7 @@
row.update({"debit": debit, "credit": credit})
# closing
- closing_debit, closing_credit = toggle_debit_credit(
- opening_debit + debit, opening_credit + credit
- )
+ closing_debit, closing_credit = toggle_debit_credit(opening_debit + debit, opening_credit + credit)
row.update({"closing_debit": closing_debit, "closing_credit": closing_credit})
# totals
@@ -92,13 +90,12 @@
def get_opening_balances(filters):
-
account_filter = ""
if filters.get("account"):
account_filter = "and account = %s" % (frappe.db.escape(filters.get("account")))
gle = frappe.db.sql(
- """
+ f"""
select party, sum(debit) as opening_debit, sum(credit) as opening_credit
from `tabGL Entry`
where company=%(company)s
@@ -106,9 +103,7 @@
and ifnull(party_type, '') = %(party_type)s and ifnull(party, '') != ''
and (posting_date < %(from_date)s or (ifnull(is_opening, 'No') = 'Yes' and posting_date <= %(to_date)s))
{account_filter}
- group by party""".format(
- account_filter=account_filter
- ),
+ group by party""",
{
"company": filters.company,
"from_date": filters.from_date,
@@ -127,13 +122,12 @@
def get_balances_within_period(filters):
-
account_filter = ""
if filters.get("account"):
account_filter = "and account = %s" % (frappe.db.escape(filters.get("account")))
gle = frappe.db.sql(
- """
+ f"""
select party, sum(debit) as debit, sum(credit) as credit
from `tabGL Entry`
where company=%(company)s
@@ -142,9 +136,7 @@
and posting_date >= %(from_date)s and posting_date <= %(to_date)s
and ifnull(is_opening, 'No') = 'No'
{account_filter}
- group by party""".format(
- account_filter=account_filter
- ),
+ group by party""",
{
"company": filters.company,
"from_date": filters.from_date,
diff --git a/erpnext/accounts/report/utils.py b/erpnext/accounts/report/utils.py
index aed338a7..bd1b355 100644
--- a/erpnext/accounts/report/utils.py
+++ b/erpnext/accounts/report/utils.py
@@ -78,10 +78,10 @@
:return: Retrieved exchange rate
"""
- rate = __exchange_rates.get("{0}-{1}@{2}".format(from_currency, to_currency, date))
+ rate = __exchange_rates.get(f"{from_currency}-{to_currency}@{date}")
if not rate:
rate = get_exchange_rate(from_currency, to_currency, date) or 1
- __exchange_rates["{0}-{1}@{2}".format(from_currency, to_currency, date)] = rate
+ __exchange_rates[f"{from_currency}-{to_currency}@{date}"] = rate
return rate
@@ -136,9 +136,7 @@
@frappe.whitelist()
-def get_invoiced_item_gross_margin(
- sales_invoice=None, item_code=None, company=None, with_item_data=False
-):
+def get_invoiced_item_gross_margin(sales_invoice=None, item_code=None, company=None, with_item_data=False):
from erpnext.accounts.report.gross_profit.gross_profit import GrossProfitGenerator
sales_invoice = sales_invoice or frappe.form_dict.get("sales_invoice")
diff --git a/erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py b/erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py
index bd9e9fc..1918165 100644
--- a/erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py
+++ b/erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py
@@ -43,9 +43,7 @@
gle = frappe.qb.DocType("GL Entry")
query = (
frappe.qb.from_(gle)
- .select(
- gle.voucher_type, gle.voucher_no, Sum(gle.debit).as_("debit"), Sum(gle.credit).as_("credit")
- )
+ .select(gle.voucher_type, gle.voucher_no, Sum(gle.debit).as_("debit"), Sum(gle.credit).as_("credit"))
.where(gle.is_cancelled == 0)
.groupby(gle.voucher_no)
)
diff --git a/erpnext/accounts/test/test_reports.py b/erpnext/accounts/test/test_reports.py
index 609f74e..c2e10f8 100644
--- a/erpnext/accounts/test/test_reports.py
+++ b/erpnext/accounts/test/test_reports.py
@@ -1,5 +1,4 @@
import unittest
-from typing import List, Tuple
from erpnext.tests.utils import ReportFilters, ReportName, execute_script_report
@@ -12,7 +11,7 @@
}
-REPORT_FILTER_TEST_CASES: List[Tuple[ReportName, ReportFilters]] = [
+REPORT_FILTER_TEST_CASES: list[tuple[ReportName, ReportFilters]] = [
("General Ledger", {"group_by": "Group by Voucher (Consolidated)"}),
("General Ledger", {"group_by": "Group by Voucher (Consolidated)", "include_dimensions": 1}),
("Accounts Payable", {"range1": 30, "range2": 60, "range3": 90, "range4": 120}),
diff --git a/erpnext/accounts/test/test_utils.py b/erpnext/accounts/test/test_utils.py
index c439d4b..59cbc11 100644
--- a/erpnext/accounts/test/test_utils.py
+++ b/erpnext/accounts/test/test_utils.py
@@ -10,7 +10,6 @@
get_future_stock_vouchers,
get_voucherwise_gl_entries,
sort_stock_vouchers_by_posting_date,
- update_reference_in_payment_entry,
)
from erpnext.stock.doctype.item.test_item import make_item
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt
@@ -20,7 +19,7 @@
class TestUtils(unittest.TestCase):
@classmethod
def setUpClass(cls):
- super(TestUtils, cls).setUpClass()
+ super().setUpClass()
make_test_objects("Address", ADDRESS_RECORDS)
@classmethod
@@ -36,7 +35,6 @@
self.assertEqual(address, "_Test Shipping Address 2 Title-Shipping")
def test_get_voucher_wise_gl_entry(self):
-
pr = make_purchase_receipt(
item_code="_Test Item",
posting_date="2021-02-01",
@@ -144,12 +142,8 @@
frappe.db.set_default("supp_master_name", "Auto Name")
# Configure Autoname in Supplier DocType
- make_property_setter(
- "Supplier", None, "naming_rule", "Expression", "Data", for_doctype="Doctype"
- )
- make_property_setter(
- "Supplier", None, "autoname", "SUP-.FY.-.#####", "Data", for_doctype="Doctype"
- )
+ make_property_setter("Supplier", None, "naming_rule", "Expression", "Data", for_doctype="Doctype")
+ make_property_setter("Supplier", None, "autoname", "SUP-.FY.-.#####", "Data", for_doctype="Doctype")
fiscal_year = get_fiscal_year(nowdate())[0]
@@ -171,9 +165,7 @@
"address_title": "_Test Billing Address Title",
"city": "Lagos",
"country": "Nigeria",
- "links": [
- {"link_doctype": "Customer", "link_name": "_Test Customer 2", "doctype": "Dynamic Link"}
- ],
+ "links": [{"link_doctype": "Customer", "link_name": "_Test Customer 2", "doctype": "Dynamic Link"}],
},
{
"doctype": "Address",
@@ -182,9 +174,7 @@
"address_title": "_Test Shipping Address 1 Title",
"city": "Lagos",
"country": "Nigeria",
- "links": [
- {"link_doctype": "Customer", "link_name": "_Test Customer 2", "doctype": "Dynamic Link"}
- ],
+ "links": [{"link_doctype": "Customer", "link_name": "_Test Customer 2", "doctype": "Dynamic Link"}],
},
{
"doctype": "Address",
@@ -194,9 +184,7 @@
"city": "Lagos",
"country": "Nigeria",
"is_shipping_address": "1",
- "links": [
- {"link_doctype": "Customer", "link_name": "_Test Customer 2", "doctype": "Dynamic Link"}
- ],
+ "links": [{"link_doctype": "Customer", "link_name": "_Test Customer 2", "doctype": "Dynamic Link"}],
},
{
"doctype": "Address",
@@ -206,8 +194,6 @@
"city": "Lagos",
"country": "Nigeria",
"is_shipping_address": "1",
- "links": [
- {"link_doctype": "Customer", "link_name": "_Test Customer 1", "doctype": "Dynamic Link"}
- ],
+ "links": [{"link_doctype": "Customer", "link_name": "_Test Customer 1", "doctype": "Dynamic Link"}],
},
]
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 02012ad..b61f195 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -3,7 +3,7 @@
from json import loads
-from typing import TYPE_CHECKING, List, Optional, Tuple
+from typing import TYPE_CHECKING, Optional
import frappe
import frappe.defaults
@@ -29,7 +29,7 @@
import erpnext
# imported to enable erpnext.accounts.utils.get_account_currency
-from erpnext.accounts.doctype.account.account import get_account_currency # noqa
+from erpnext.accounts.doctype.account.account import get_account_currency
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_dimensions
from erpnext.stock import get_warehouse_account_map
from erpnext.stock.utils import get_stock_value_on
@@ -81,9 +81,7 @@
FY = DocType("Fiscal Year")
query = (
- frappe.qb.from_(FY)
- .select(FY.name, FY.year_start_date, FY.year_end_date)
- .where(FY.disabled == 0)
+ frappe.qb.from_(FY).select(FY.name, FY.year_start_date, FY.year_end_date).where(FY.disabled == 0)
)
if fiscal_year:
@@ -130,9 +128,7 @@
else:
return ((fy.name, fy.year_start_date, fy.year_end_date),)
- error_msg = _("""{0} {1} is not in any active Fiscal Year""").format(
- label, formatdate(transaction_date)
- )
+ error_msg = _("""{0} {1} is not in any active Fiscal Year""").format(label, formatdate(transaction_date))
if company:
error_msg = _("""{0} for {1}""").format(error_msg, frappe.bold(company))
@@ -209,12 +205,12 @@
acc = frappe.get_doc("Account", account)
try:
- year_start_date = get_fiscal_year(date, company=company, verbose=0)[1]
+ get_fiscal_year(date, company=company, verbose=0)[1]
except FiscalYearError:
if getdate(date) > getdate(nowdate()):
# if fiscal year not found and the date is greater than today
# get fiscal year for today's date and its corresponding year start date
- year_start_date = get_fiscal_year(nowdate(), verbose=1)[1]
+ get_fiscal_year(nowdate(), verbose=1)[1]
else:
# this indicates that it is a date older than any existing fiscal year.
# hence, assuming balance as 0.0
@@ -229,15 +225,14 @@
cc = frappe.get_doc("Cost Center", cost_center)
if cc.is_group:
cond.append(
- """ exists (
+ f""" exists (
select 1 from `tabCost Center` cc where cc.name = gle.cost_center
- and cc.lft >= %s and cc.rgt <= %s
+ and cc.lft >= {cc.lft} and cc.rgt <= {cc.rgt}
)"""
- % (cc.lft, cc.rgt)
)
else:
- cond.append("""gle.cost_center = %s """ % (frappe.db.escape(cost_center),))
+ cond.append(f"""gle.cost_center = {frappe.db.escape(cost_center)} """)
if account:
if not (frappe.flags.ignore_account_permission or ignore_account_permission):
@@ -246,11 +241,10 @@
# different filter for group and ledger - improved performance
if acc.is_group:
cond.append(
- """exists (
+ f"""exists (
select name from `tabAccount` ac where ac.name = gle.account
- and ac.lft >= %s and ac.rgt <= %s
+ and ac.lft >= {acc.lft} and ac.rgt <= {acc.rgt}
)"""
- % (acc.lft, acc.rgt)
)
# If group and currency same as company,
@@ -258,7 +252,7 @@
if acc.account_currency == frappe.get_cached_value("Company", acc.company, "default_currency"):
in_account_currency = False
else:
- cond.append("""gle.account = %s """ % (frappe.db.escape(account),))
+ cond.append(f"""gle.account = {frappe.db.escape(account)} """)
if account_type:
accounts = frappe.db.get_all(
@@ -277,8 +271,7 @@
if party_type and party:
cond.append(
- """gle.party_type = %s and gle.party = %s """
- % (frappe.db.escape(party_type), frappe.db.escape(party))
+ f"""gle.party_type = {frappe.db.escape(party_type)} and gle.party = {frappe.db.escape(party)} """
)
if company:
@@ -295,11 +288,9 @@
bal = frappe.db.sql(
"""
- SELECT {0}
+ SELECT {}
FROM `tabGL Entry` gle
- WHERE {1}""".format(
- select_field, " and ".join(cond)
- ),
+ WHERE {}""".format(select_field, " and ".join(cond)),
(precision, precision),
)[0][0]
# if bal is None, return 0
@@ -334,30 +325,25 @@
# for pl accounts, get balance within a fiscal year
if acc.report_type == "Profit and Loss":
- cond.append(
- "posting_date >= '%s' and voucher_type != 'Period Closing Voucher'" % year_start_date
- )
+ cond.append("posting_date >= '%s' and voucher_type != 'Period Closing Voucher'" % year_start_date)
# different filter for group and ledger - improved performance
if acc.is_group:
cond.append(
- """exists (
+ f"""exists (
select name from `tabAccount` ac where ac.name = gle.account
- and ac.lft >= %s and ac.rgt <= %s
+ and ac.lft >= {acc.lft} and ac.rgt <= {acc.rgt}
)"""
- % (acc.lft, acc.rgt)
)
else:
- cond.append("""gle.account = %s """ % (frappe.db.escape(account),))
+ cond.append(f"""gle.account = {frappe.db.escape(account)} """)
entries = frappe.db.sql(
"""
SELECT name, posting_date, account, party_type, party,debit,credit,
voucher_type, voucher_no, against_voucher_type, against_voucher
FROM `tabGL Entry` gle
- WHERE {0}""".format(
- " and ".join(cond)
- ),
+ WHERE {}""".format(" and ".join(cond)),
as_dict=True,
)
@@ -380,13 +366,11 @@
or (gle.against_voucher == gle.voucher_no and gle.get(dr_or_cr) > 0)
):
payment_amount = frappe.db.sql(
- """
- SELECT {0}
+ f"""
+ SELECT {select_fields}
FROM `tabGL Entry` gle
WHERE docstatus < 2 and posting_date <= %(date)s and against_voucher = %(voucher_no)s
- and party = %(party)s and name != %(name)s""".format(
- select_fields
- ),
+ and party = %(party)s and name != %(name)s""",
{"date": date, "voucher_no": gle.voucher_no, "party": gle.party, "name": gle.name},
)[0][0]
@@ -441,7 +425,7 @@
args = make_tree_args(**args)
if args.parent_cost_center == args.company:
- args.parent_cost_center = "{0} - {1}".format(
+ args.parent_cost_center = "{} - {}".format(
args.parent_cost_center, frappe.get_cached_value("Company", args.company, "abbr")
)
@@ -457,7 +441,7 @@
def _build_dimensions_dict_for_exc_gain_loss(
- entry: dict | object = None, active_dimensions: list = None
+ entry: dict | object = None, active_dimensions: list | None = None
):
dimensions_dict = frappe._dict()
if entry and active_dimensions:
@@ -535,7 +519,11 @@
# Only update outstanding for newly linked vouchers
for entry in entries:
update_voucher_outstanding(
- entry.against_voucher_type, entry.against_voucher, entry.account, entry.party_type, entry.party
+ entry.against_voucher_type,
+ entry.against_voucher,
+ entry.account,
+ entry.party_type,
+ entry.party,
)
# update advance paid in Advance Receivable/Payable doctypes
if update_advance_paid:
@@ -566,15 +554,15 @@
.select(journal_acc[args.get("dr_or_cr")])
.where(
(journal_acc.account == args.get("account"))
- & ((journal_acc.party_type == args.get("party_type")))
- & ((journal_acc.party == args.get("party")))
+ & (journal_acc.party_type == args.get("party_type"))
+ & (journal_acc.party == args.get("party"))
& (
(journal_acc.reference_type.isnull())
| (journal_acc.reference_type.isin(["", "Sales Order", "Purchase Order"]))
)
- & ((journal_entry.name == args.get("voucher_no")))
- & ((journal_acc.name == args.get("voucher_detail_no")))
- & ((journal_entry.docstatus == 1))
+ & (journal_entry.name == args.get("voucher_no"))
+ & (journal_acc.name == args.get("voucher_detail_no"))
+ & (journal_entry.docstatus == 1)
)
)
@@ -614,9 +602,7 @@
def validate_allocated_amount(args):
- precision = args.get("precision") or frappe.db.get_single_value(
- "System Settings", "currency_precision"
- )
+ precision = args.get("precision") or frappe.db.get_single_value("System Settings", "currency_precision")
if args.get("allocated_amount") < 0:
throw(_("Allocated amount cannot be negative"))
elif flt(args.get("allocated_amount"), precision) > flt(args.get("unadjusted_amount"), precision):
@@ -631,9 +617,9 @@
# Update Advance Paid in SO/PO since they might be getting unlinked
update_advance_paid = []
- advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_receivable_doctypes"
- ) + frappe.get_hooks("advance_payment_payable_doctypes")
+ advance_payment_doctypes = frappe.get_hooks("advance_payment_receivable_doctypes") + frappe.get_hooks(
+ "advance_payment_payable_doctypes"
+ )
if jv_detail.get("reference_type") in advance_payment_doctypes:
update_advance_paid.append((jv_detail.reference_type, jv_detail.reference_name))
@@ -709,9 +695,9 @@
existing_row = payment_entry.get("references", {"name": d["voucher_detail_no"]})[0]
# Update Advance Paid in SO/PO since they are getting unlinked
- advance_payment_doctypes = frappe.get_hooks(
- "advance_payment_receivable_doctypes"
- ) + frappe.get_hooks("advance_payment_payable_doctypes")
+ advance_payment_doctypes = frappe.get_hooks("advance_payment_receivable_doctypes") + frappe.get_hooks(
+ "advance_payment_payable_doctypes"
+ )
if existing_row.get("reference_doctype") in advance_payment_doctypes:
update_advance_paid.append((existing_row.reference_doctype, existing_row.reference_name))
@@ -747,7 +733,7 @@
def cancel_exchange_gain_loss_journal(
- parent_doc: dict | object, referenced_dt: str = None, referenced_dn: str = None
+ parent_doc: dict | object, referenced_dt: str | None = None, referenced_dn: str | None = None
) -> None:
"""
Cancel Exchange Gain/Loss for Sales/Purchase Invoice, if they have any.
@@ -790,7 +776,7 @@
def update_accounting_ledgers_after_reference_removal(
- ref_type: str = None, ref_no: str = None, payment_name: str = None
+ ref_type: str | None = None, ref_no: str | None = None, payment_name: str | None = None
):
# General Ledger
gle = qb.DocType("GL Entry")
@@ -816,9 +802,7 @@
.set(ple.modified, now())
.set(ple.modified_by, frappe.session.user)
.where(
- (ple.against_voucher_type == ref_type)
- & (ple.against_voucher_no == ref_no)
- & (ple.delinked == 0)
+ (ple.against_voucher_type == ref_type) & (ple.against_voucher_no == ref_no) & (ple.delinked == 0)
)
)
@@ -835,7 +819,7 @@
qb.from_(adv_type).delete().where(adv_type.parent == ref_doc.name).run()
-def unlink_ref_doc_from_payment_entries(ref_doc: object = None, payment_name: str = None):
+def unlink_ref_doc_from_payment_entries(ref_doc: object = None, payment_name: str | None = None):
remove_ref_doc_link_from_jv(ref_doc.doctype, ref_doc.name, payment_name)
remove_ref_doc_link_from_pe(ref_doc.doctype, ref_doc.name, payment_name)
update_accounting_ledgers_after_reference_removal(ref_doc.doctype, ref_doc.name, payment_name)
@@ -843,7 +827,7 @@
def remove_ref_doc_link_from_jv(
- ref_type: str = None, ref_no: str = None, payment_name: str = None
+ ref_type: str | None = None, ref_no: str | None = None, payment_name: str | None = None
):
jea = qb.DocType("Journal Entry Account")
@@ -883,7 +867,7 @@
def remove_ref_doc_link_from_pe(
- ref_type: str = None, ref_no: str = None, payment_name: str = None
+ ref_type: str | None = None, ref_no: str | None = None, payment_name: str | None = None
):
per = qb.DocType("Payment Entry Reference")
pay = qb.DocType("Payment Entry")
@@ -891,9 +875,7 @@
linked_pe = (
qb.from_(per)
.select(per.parent)
- .where(
- (per.reference_doctype == ref_type) & (per.reference_name == ref_no) & (per.docstatus.lt(2))
- )
+ .where((per.reference_doctype == ref_type) & (per.reference_name == ref_no) & (per.docstatus.lt(2)))
.run(as_list=1)
)
linked_pe = convert_to_list(linked_pe)
@@ -906,9 +888,7 @@
.set(per.allocated_amount, 0)
.set(per.modified, now())
.set(per.modified_by, frappe.session.user)
- .where(
- (per.docstatus.lt(2) & (per.reference_doctype == ref_type) & (per.reference_name == ref_no))
- )
+ .where(per.docstatus.lt(2) & (per.reference_doctype == ref_type) & (per.reference_name == ref_no))
)
if payment_name:
@@ -923,13 +903,15 @@
# Call cancel on only removed reference
references = [
- x for x in pe_doc.references if x.reference_doctype == ref_type and x.reference_name == ref_no
+ x
+ for x in pe_doc.references
+ if x.reference_doctype == ref_type and x.reference_name == ref_no
]
[pe_doc.make_advance_gl_entries(x, cancel=1) for x in references]
pe_doc.clear_unallocated_reference_document_rows()
pe_doc.validate_payment_type_with_outstanding()
- except Exception as e:
+ except Exception:
msg = _("There were issues unlinking payment entry {0}.").format(pe_doc.name)
msg += "<br>"
msg += _("Please cancel payment entry manually first")
@@ -939,9 +921,7 @@
pay.base_total_allocated_amount, pe_doc.base_total_allocated_amount
).set(pay.unallocated_amount, pe_doc.unallocated_amount).set(pay.modified, now()).set(
pay.modified_by, frappe.session.user
- ).where(
- pay.name == pe
- ).run()
+ ).where(pay.name == pe).run()
frappe.msgprint(_("Payment Entries {0} are un-linked").format("\n".join(linked_pe)))
@@ -975,9 +955,10 @@
dr_or_cr = d.voucher_type == "Sales Invoice" and "credit" or "debit"
frappe.db.sql(
- """update `tabGL Entry` set %s = %s + %s
- where voucher_type = %s and voucher_no = %s and %s > 0 limit 1"""
- % (dr_or_cr, dr_or_cr, "%s", "%s", "%s", dr_or_cr),
+ """update `tabGL Entry` set {} = {} + {}
+ where voucher_type = {} and voucher_no = {} and {} > 0 limit 1""".format(
+ dr_or_cr, dr_or_cr, "%s", "%s", "%s", dr_or_cr
+ ),
(d.diff, d.voucher_type, d.voucher_no),
)
@@ -1020,7 +1001,6 @@
limit=None, # passed by reconciliation tool
voucher_no=None, # filter passed by reconciliation tool
):
-
ple = qb.DocType("Payment Ledger Entry")
outstanding_invoices = []
precision = frappe.get_precision("Sales Invoice", "outstanding_amount") or 2
@@ -1083,15 +1063,11 @@
)
)
- outstanding_invoices = sorted(
- outstanding_invoices, key=lambda k: k["due_date"] or getdate(nowdate())
- )
+ outstanding_invoices = sorted(outstanding_invoices, key=lambda k: k["due_date"] or getdate(nowdate()))
return outstanding_invoices
-def get_account_name(
- account_type=None, root_type=None, is_group=None, account_currency=None, company=None
-):
+def get_account_name(account_type=None, root_type=None, is_group=None, account_currency=None, company=None):
"""return account based on matching conditions"""
return frappe.db.get_value(
"Account",
@@ -1124,7 +1100,7 @@
if frappe.db.has_column(doctype, "disabled") and not include_disabled:
filters.append(["disabled", "=", False])
- filters.append(['ifnull(`{0}`,"")'.format(parent_fieldname), "=", "" if is_root else parent])
+ filters.append([f'ifnull(`{parent_fieldname}`,"")', "=", "" if is_root else parent])
if is_root:
fields += ["root_type", "report_type", "account_currency"] if doctype == "Account" else []
@@ -1144,7 +1120,6 @@
@frappe.whitelist()
def get_account_balances(accounts, company):
-
if isinstance(accounts, str):
accounts = loads(accounts)
@@ -1155,9 +1130,7 @@
for account in accounts:
account["company_currency"] = company_currency
- account["balance"] = flt(
- get_balance_on(account["value"], in_account_currency=False, company=company)
- )
+ account["balance"] = flt(get_balance_on(account["value"], in_account_currency=False, company=company))
if account["account_currency"] and account["account_currency"] != company_currency:
account["balance_in_account_currency"] = flt(get_balance_on(account["value"], company=company))
@@ -1307,20 +1280,17 @@
warehouse_account=None,
company=None,
):
- stock_vouchers = get_future_stock_vouchers(
- posting_date, posting_time, for_warehouses, for_items, company
- )
+ stock_vouchers = get_future_stock_vouchers(posting_date, posting_time, for_warehouses, for_items, company)
repost_gle_for_stock_vouchers(stock_vouchers, posting_date, company, warehouse_account)
def repost_gle_for_stock_vouchers(
- stock_vouchers: List[Tuple[str, str]],
+ stock_vouchers: list[tuple[str, str]],
posting_date: str,
- company: Optional[str] = None,
+ company: str | None = None,
warehouse_account=None,
repost_doc: Optional["RepostItemValuation"] = None,
):
-
from erpnext.accounts.general_ledger import toggle_debit_credit_if_negative
if not stock_vouchers:
@@ -1366,16 +1336,12 @@
def _delete_pl_entries(voucher_type, voucher_no):
ple = qb.DocType("Payment Ledger Entry")
- qb.from_(ple).delete().where(
- (ple.voucher_type == voucher_type) & (ple.voucher_no == voucher_no)
- ).run()
+ qb.from_(ple).delete().where((ple.voucher_type == voucher_type) & (ple.voucher_no == voucher_no)).run()
def _delete_gl_entries(voucher_type, voucher_no):
gle = qb.DocType("GL Entry")
- qb.from_(gle).delete().where(
- (gle.voucher_type == voucher_type) & (gle.voucher_no == voucher_no)
- ).run()
+ qb.from_(gle).delete().where((gle.voucher_type == voucher_type) & (gle.voucher_no == voucher_no)).run()
def _delete_accounting_ledger_entries(voucher_type, voucher_no):
@@ -1386,9 +1352,7 @@
_delete_pl_entries(voucher_type, voucher_no)
-def sort_stock_vouchers_by_posting_date(
- stock_vouchers: List[Tuple[str, str]]
-) -> List[Tuple[str, str]]:
+def sort_stock_vouchers_by_posting_date(stock_vouchers: list[tuple[str, str]]) -> list[tuple[str, str]]:
sle = frappe.qb.DocType("Stock Ledger Entry")
voucher_nos = [v[1] for v in stock_vouchers]
@@ -1409,10 +1373,7 @@
return sorted_vouchers
-def get_future_stock_vouchers(
- posting_date, posting_time, for_warehouses=None, for_items=None, company=None
-):
-
+def get_future_stock_vouchers(posting_date, posting_time, for_warehouses=None, for_items=None, company=None):
values = []
condition = ""
if for_items:
@@ -1428,16 +1389,14 @@
values.append(company)
future_stock_vouchers = frappe.db.sql(
- """select distinct sle.voucher_type, sle.voucher_no
+ f"""select distinct sle.voucher_type, sle.voucher_no
from `tabStock Ledger Entry` sle
where
timestamp(sle.posting_date, sle.posting_time) >= timestamp(%s, %s)
and is_cancelled = 0
{condition}
- order by timestamp(sle.posting_date, sle.posting_time) asc, creation asc for update""".format(
- condition=condition
- ),
- tuple([posting_date, posting_time] + values),
+ order by timestamp(sle.posting_date, sle.posting_time) asc, creation asc for update""",
+ tuple([posting_date, posting_time, *values]),
as_dict=True,
)
@@ -1464,9 +1423,8 @@
select name, account, credit, debit, cost_center, project, voucher_type, voucher_no
from `tabGL Entry`
where
- posting_date >= %s and voucher_no in (%s)"""
- % ("%s", ", ".join(["%s"] * len(voucher_nos))),
- tuple([posting_date] + voucher_nos),
+ posting_date >= {} and voucher_no in ({})""".format("%s", ", ".join(["%s"] * len(voucher_nos))),
+ tuple([posting_date, *voucher_nos]),
as_dict=1,
)
@@ -1505,16 +1463,16 @@
def get_stock_accounts(company, voucher_type=None, voucher_no=None):
stock_accounts = [
d.name
- for d in frappe.db.get_all(
- "Account", {"account_type": "Stock", "company": company, "is_group": 0}
- )
+ for d in frappe.db.get_all("Account", {"account_type": "Stock", "company": company, "is_group": 0})
]
if voucher_type and voucher_no:
if voucher_type == "Journal Entry":
stock_accounts = [
d.account
for d in frappe.db.get_all(
- "Journal Entry Account", {"parent": voucher_no, "account": ["in", stock_accounts]}, "account"
+ "Journal Entry Account",
+ {"parent": voucher_no, "account": ["in", stock_accounts]},
+ "account",
)
]
@@ -1523,7 +1481,11 @@
d.account
for d in frappe.db.get_all(
"GL Entry",
- {"voucher_type": voucher_type, "voucher_no": voucher_no, "account": ["in", stock_accounts]},
+ {
+ "voucher_type": voucher_type,
+ "voucher_no": voucher_no,
+ "account": ["in", stock_accounts],
+ },
"account",
)
]
@@ -1554,9 +1516,7 @@
def get_journal_entry(account, stock_adjustment_account, amount):
- db_or_cr_warehouse_account = (
- "credit_in_account_currency" if amount < 0 else "debit_in_account_currency"
- )
+ db_or_cr_warehouse_account = "credit_in_account_currency" if amount < 0 else "debit_in_account_currency"
db_or_cr_stock_adjustment_account = (
"debit_in_account_currency" if amount < 0 else "credit_in_account_currency"
)
@@ -1577,7 +1537,7 @@
frappe.delete_doc("Desktop Icon", icon)
-def create_err_and_its_journals(companies: list = None) -> None:
+def create_err_and_its_journals(companies: list | None = None) -> None:
if companies:
for company in companies:
err = frappe.new_doc("Exchange Rate Revaluation")
@@ -1634,9 +1594,7 @@
accounts_with_types = (
qb.from_(account)
.select(account.name, account.account_type)
- .where(
- (account.account_type.isin(["Receivable", "Payable"]) & (account.company.isin(companies)))
- )
+ .where(account.account_type.isin(["Receivable", "Payable"]) & (account.company.isin(companies)))
.run(as_dict=True)
)
receivable_or_payable_accounts = [y.name for y in accounts_with_types]
@@ -1703,7 +1661,6 @@
ple_map = get_payment_ledger_entries(gl_entries, cancel=cancel)
for entry in ple_map:
-
ple = frappe.get_doc(entry)
if cancel:
@@ -1781,7 +1738,7 @@
query.run()
-class QueryPaymentLedger(object):
+class QueryPaymentLedger:
"""
Helper Class for Querying Payment Ledger Entry
"""
@@ -1949,7 +1906,8 @@
Table("outstanding").amount_in_account_currency.as_("outstanding_in_account_currency"),
(Table("vouchers").amount - Table("outstanding").amount).as_("paid_amount"),
(
- Table("vouchers").amount_in_account_currency - Table("outstanding").amount_in_account_currency
+ Table("vouchers").amount_in_account_currency
+ - Table("outstanding").amount_in_account_currency
).as_("paid_amount_in_account_currency"),
Table("vouchers").due_date,
Table("vouchers").currency,