Feature - Add support for a fiscal year period defined in user settings.

* Add "This fiscal year", "Last fiscal year" as date range options in Transaction Details to filter transactions to those periods
* Add fiscal year ranges to Statistics & Trend Analysis
* Add "fiscal year start date" to user profile settings, allowing the user to select any date of the calendar year as the start of the fiscal year
* Add "fiscal year format" to user profile settings, allowing the user to specify how financial year date labels should appear

Implementation notes:
* The default fiscal year start is January 1 and the default fiscal year display format is "FY 2025"
* Fiscal year start date (month number & day number) are stored together in db as a uint16, high byte & low byte respectively
* February 29 is disallowed as a fiscal year start date, since it is never used as a convention in any country
* Jest is added to the project as a dev dependency, for unit tests in frontend

Signed-off-by: Sebastian Reategui <seb.reategui@gmail.com>
This commit is contained in:
Sebastian Reategui
2025-06-05 12:36:46 +10:00
committed by mayswind
parent 70eea8ff33
commit b94dc8eb83
42 changed files with 3417 additions and 105 deletions
+14
View File
@@ -19,6 +19,7 @@
"default": {
"currency": "USD",
"firstDayOfWeek": "Sunday",
"fiscalYearFormat": "EndYYYY",
"longDateFormat": "MMDDYYYY",
"shortDateFormat": "MMDDYYYY",
"longTimeFormat": "HHMMSSA",
@@ -85,6 +86,13 @@
"q3": "{year}Q3",
"q4": "{year}Q4"
},
"fiscalYear": {
"StartYYYY_EndYYYY": "FY {StartYYYY}-{EndYYYY}",
"StartYYYY_EndYY": "FY {StartYYYY}-{EndYY}",
"StartYY_EndYY": "FY {StartYY}-{EndYY}",
"EndYYYY": "FY {EndYYYY}",
"EndYY": "FY {EndYY}"
},
"misc": {
"multiTextJoinSeparator": ", ",
"hoursBehindDefaultTimezone": "{hours} hour(s) behind default timezone",
@@ -1196,6 +1204,7 @@
"oldPassword": "Current Password",
"defaultCurrency": "Default Currency",
"firstDayOfWeek": "First Day of Week",
"fiscalYearStart": "Fiscal Year Start Date",
"transactionEditScope": "Editable Transaction Range",
"name": "Name",
"category": "Category",
@@ -1366,6 +1375,8 @@
"Last month": "Last month",
"This year": "This year",
"Last year": "Last year",
"This fiscal year": "This fiscal year",
"Last fiscal year": "Last fiscal year",
"Recent 12 months": "Recent 12 months",
"Recent 24 months": "Recent 24 months",
"Recent 36 months": "Recent 36 months",
@@ -1447,10 +1458,12 @@
"Default Currency": "Default Currency",
"Default Account": "Default Account",
"First Day of Week": "First Day of Week",
"Fiscal Year Start Date": "Fiscal Year Start Date",
"Long Date Format": "Long Date Format",
"Short Date Format": "Short Date Format",
"Long Time Format": "Long Time Format",
"Short Time Format": "Short Time Format",
"Fiscal Year Format": "Fiscal Year Format",
"Decimal Separator": "Decimal Separator",
"Digit Grouping Symbol": "Digit Grouping Symbol",
"Digit Grouping": "Digit Grouping",
@@ -1807,6 +1820,7 @@
"Aggregate by Month": "Aggregate by Month",
"Aggregate by Quarter": "Aggregate by Quarter",
"Aggregate by Year": "Aggregate by Year",
"Aggregate by Fiscal Year": "Aggregate by Fiscal Year",
"Filter Accounts": "Filter Accounts",
"Filter Transaction Categories": "Filter Transaction Categories",
"Filter Transaction Tags": "Filter Transaction Tags",