mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-31 07:28:04 +00:00
Merge pull request #57559 from aerele/backport-57335-version-16-hotfix
refactor: reuse shared date range validation across reports
This commit is contained in:
@@ -5,6 +5,8 @@ import frappe
|
|||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.query_builder.functions import IfNull
|
from frappe.query_builder.functions import IfNull
|
||||||
|
|
||||||
|
from erpnext.accounts.report.utils import validate_mandatory_date_range
|
||||||
|
|
||||||
|
|
||||||
class TaxWithholdingDetailsReport:
|
class TaxWithholdingDetailsReport:
|
||||||
party_types = ("Customer", "Supplier")
|
party_types = ("Customer", "Supplier")
|
||||||
@@ -25,11 +27,7 @@ class TaxWithholdingDetailsReport:
|
|||||||
return self.get_columns(), self.get_data()
|
return self.get_columns(), self.get_data()
|
||||||
|
|
||||||
def validate_filters(self):
|
def validate_filters(self):
|
||||||
if not self.filters.from_date or not self.filters.to_date:
|
validate_mandatory_date_range(self.filters)
|
||||||
frappe.throw(_("From Date and To Date are required"))
|
|
||||||
|
|
||||||
if self.filters.from_date > self.filters.to_date:
|
|
||||||
frappe.throw(_("From Date must be before To Date"))
|
|
||||||
|
|
||||||
def get_data(self):
|
def get_data(self):
|
||||||
self.entries = self.get_entries_query().run(as_dict=True)
|
self.entries = self.get_entries_query().run(as_dict=True)
|
||||||
|
|||||||
@@ -21,8 +21,7 @@ class TDSComputationSummaryReport(TaxWithholdingDetailsReport):
|
|||||||
AGGREGATE_FIELDS = ("total_amount", "tax_amount")
|
AGGREGATE_FIELDS = ("total_amount", "tax_amount")
|
||||||
|
|
||||||
def validate_filters(self):
|
def validate_filters(self):
|
||||||
if self.filters.from_date > self.filters.to_date:
|
super().validate_filters()
|
||||||
frappe.throw(_("From Date must be before To Date"))
|
|
||||||
|
|
||||||
from_year = get_fiscal_year(self.filters.from_date)[0]
|
from_year = get_fiscal_year(self.filters.from_date)[0]
|
||||||
to_year = get_fiscal_year(self.filters.to_date)[0]
|
to_year = get_fiscal_year(self.filters.to_date)[0]
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import frappe
|
import frappe
|
||||||
|
from frappe import _
|
||||||
from frappe.query_builder.custom import ConstantColumn
|
from frappe.query_builder.custom import ConstantColumn
|
||||||
from frappe.query_builder.functions import Sum
|
from frappe.query_builder.functions import Sum
|
||||||
from frappe.utils import flt, formatdate, get_datetime_str, get_table_name
|
from frappe.utils import flt, formatdate, get_datetime_str, get_table_name
|
||||||
@@ -16,6 +17,19 @@ from erpnext.setup.utils import get_exchange_rate
|
|||||||
__exchange_rates = {}
|
__exchange_rates = {}
|
||||||
|
|
||||||
|
|
||||||
|
def validate_mandatory_date_range(filters, from_field="from_date", to_field="to_date"):
|
||||||
|
from_date = filters.get(from_field)
|
||||||
|
to_date = filters.get(to_field)
|
||||||
|
|
||||||
|
if not from_date or not to_date:
|
||||||
|
frappe.throw(
|
||||||
|
_("{0} and {1} are mandatory").format(frappe.bold(_("From Date")), frappe.bold(_("To Date")))
|
||||||
|
)
|
||||||
|
|
||||||
|
if from_date > to_date:
|
||||||
|
frappe.throw(_("From Date must be before To Date"))
|
||||||
|
|
||||||
|
|
||||||
def get_currency(filters):
|
def get_currency(filters):
|
||||||
"""
|
"""
|
||||||
Returns a dictionary containing currency information. The keys of the dict are
|
Returns a dictionary containing currency information. The keys of the dict are
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from frappe import _
|
|||||||
from frappe.utils import add_to_date, cint, flt, get_datetime, get_table_name, getdate
|
from frappe.utils import add_to_date, cint, flt, get_datetime, get_table_name, getdate
|
||||||
from pypika import functions as fn
|
from pypika import functions as fn
|
||||||
|
|
||||||
|
from erpnext.accounts.report.utils import validate_mandatory_date_range
|
||||||
from erpnext.deprecation_dumpster import deprecated
|
from erpnext.deprecation_dumpster import deprecated
|
||||||
from erpnext.stock.doctype.stock_closing_entry.stock_closing_entry import StockClosing
|
from erpnext.stock.doctype.stock_closing_entry.stock_closing_entry import StockClosing
|
||||||
from erpnext.stock.doctype.warehouse.warehouse import apply_warehouse_filter
|
from erpnext.stock.doctype.warehouse.warehouse import apply_warehouse_filter
|
||||||
@@ -30,8 +31,7 @@ def execute(filters=None):
|
|||||||
_("Please select either the Item or Warehouse or Warehouse Type filter to generate the report.")
|
_("Please select either the Item or Warehouse or Warehouse Type filter to generate the report.")
|
||||||
)
|
)
|
||||||
|
|
||||||
if filters.from_date > filters.to_date:
|
validate_mandatory_date_range(filters)
|
||||||
frappe.throw(_("From Date must be before To Date"))
|
|
||||||
|
|
||||||
float_precision = cint(frappe.db.get_default("float_precision")) or 3
|
float_precision = cint(frappe.db.get_default("float_precision")) or 3
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ from frappe import _
|
|||||||
from frappe.utils import date_diff
|
from frappe.utils import date_diff
|
||||||
|
|
||||||
from erpnext.accounts.report.general_ledger.general_ledger import get_gl_entries
|
from erpnext.accounts.report.general_ledger.general_ledger import get_gl_entries
|
||||||
|
from erpnext.accounts.report.utils import validate_mandatory_date_range
|
||||||
|
|
||||||
Filters = frappe._dict
|
Filters = frappe._dict
|
||||||
Row = frappe._dict
|
Row = frappe._dict
|
||||||
@@ -34,8 +35,7 @@ def update_filters_with_account(filters: Filters) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def validate_filters(filters: Filters) -> None:
|
def validate_filters(filters: Filters) -> None:
|
||||||
if filters.from_date > filters.to_date:
|
validate_mandatory_date_range(filters)
|
||||||
frappe.throw(_("From Date must be before To Date"))
|
|
||||||
|
|
||||||
|
|
||||||
def get_columns() -> Columns:
|
def get_columns() -> Columns:
|
||||||
|
|||||||
Reference in New Issue
Block a user