17540c6b1d
feat: removes phoen number as member field and makes name optional
2026-01-02 16:19:06 +01:00
844b4b6409
Merge pull request 'Implements validation for required custom fields closes #274 ' ( #301 ) from bugfix/274_required_custom_fields into main
...
continuous-integration/drone/push Build is passing
Reviewed-on: #301
2026-01-02 13:57:40 +01:00
850f00fe22
formatting
continuous-integration/drone/push Build is passing
2026-01-02 13:53:24 +01:00
08f563a412
Merge branch 'main' into bugfix/274_required_custom_fields
continuous-integration/drone/push Build is failing
2026-01-02 13:47:24 +01:00
058bfc2182
Merge pull request 'Membership Fee 6 - UI Components & LiveViews closes #280 ' ( #304 ) from feature/280_membership_fee_ui into main
...
continuous-integration/drone/push Build is passing
Reviewed-on: #304
2025-12-26 23:14:49 +01:00
0df5d1c0b9
Merge branch 'main' into feature/280_membership_fee_ui
continuous-integration/drone/push Build is passing
2025-12-26 23:14:10 +01:00
0d79e026e2
fix: add Logger metadata keys and update gettext
...
continuous-integration/drone/push Build is passing
Add member_id, member_email, error, error_type, cycles_count, and notifications_count to Logger metadata configuration. Update gettext translations.
2025-12-26 21:52:09 +01:00
6f568bfe54
test: fix tests after join_date validation and UI changes
...
Update test to expect join_date validation error. Fix toggle button selector in cycle view test. Remove unnecessary cleanup from create_cycle helper.
2025-12-26 21:41:30 +01:00
77ac3d1b18
fix: remove duplicate toggle button in table header
...
Keep only the toggle button in toolbar for better UX.
2025-12-26 21:41:22 +01:00
619fdc90af
fix: clear warning state on Decimal.parse error
...
Explicitly call hide_amount_warning when Decimal.parse returns error.
2025-12-26 21:41:14 +01:00
856ce53295
fix: improve MembershipFeesComponent state management and error handling
...
Replace assign_new with assign for cycles and available_fee_types. Set regenerating flag at event start. Fix create_cycle parsing with explicit error handling. Use atomic bulk delete for all cycles. Improve delete confirmation robustness. Fix unless/else pattern for Credo compliance.
2025-12-26 21:41:05 +01:00
3afc20c2e2
refactor: improve format_currency robustness and reduce complexity
...
Extract formatting logic into helper functions to reduce cyclomatic complexity. Improve pattern matching for edge cases.
2025-12-26 21:40:53 +01:00
ee6589c4fa
docs: correct load_cycles_for_members documentation
...
Document that function loads all cycles, not just relevant ones, as no database-level filtering is currently implemented.
2025-12-26 21:40:42 +01:00
5318b2c07d
docs: add typespec for SetDefaultMembershipFeeType.change/3
2025-12-26 21:40:32 +01:00
d02add75ef
fix: convert after_action to after_transaction for cycle generation
...
Replace after_action hooks with after_transaction to ensure async tasks only run after successful commit. Extract common cycle generation logic into handle_cycle_generation/2 to reduce duplication. Add structured error logging with context.
2025-12-26 21:40:22 +01:00
b2c2013b4d
refactor: extract sql_sandbox config to Mv.Config module
...
Centralize application-wide configuration values for better maintainability.
2025-12-26 21:40:12 +01:00
961261eff2
feat: add Task.Supervisor to supervision tree
...
Add Task.Supervisor for supervised async task execution in cycle generation.
2025-12-26 21:40:04 +01:00
3035869fc8
Add explicit domain to Ash.get! for consistency
continuous-integration/drone/push Build is passing
2025-12-26 21:04:43 +01:00
a8ea121800
Refactor cycle generator and update translations
...
continuous-integration/drone/push Build is passing
Extract error handling into separate functions to reduce nesting depth.
2025-12-26 21:01:17 +01:00
e9b99e6749
Merge pull request 'Fix hidden empty custom fields closes #282 ' ( #313 ) from bugfix/228_hidden_empty_custom_field_ into main
...
continuous-integration/drone/push Build is passing
Reviewed-on: #313
2025-12-23 18:24:18 +01:00
f87e6d3e1d
fix tests
continuous-integration/drone/push Build is passing
2025-12-23 18:21:15 +01:00
3cf8244cd6
fix linting errors
continuous-integration/drone/push Build is failing
2025-12-23 18:14:59 +01:00
1dd68bcaf2
feat: coherent required boolean handling
continuous-integration/drone/push Build is failing
2025-12-23 18:08:31 +01:00
33652265b8
feat: add accessible empty value also to member fields
continuous-integration/drone/push Build is failing
2025-12-23 17:10:52 +01:00
398a63a98f
add tests for empty custom field section
2025-12-23 17:07:52 +01:00
8e58829e95
fix: improve performance loading custom fields
2025-12-23 17:07:38 +01:00
ca702cf2c1
i18n: Update translations for custom field validation
continuous-integration/drone/push Build is passing
2025-12-23 17:02:30 +01:00
324425a991
test: Add tests for empty string validation in custom fields
2025-12-23 17:02:23 +01:00
4e101ea36e
feat: Add WCAG-compliant handling for boolean custom fields
2025-12-23 17:02:07 +01:00
e3ff3e610c
feat: optimize required custom fields query
2025-12-23 17:01:50 +01:00
2d2865b5a6
feat: improve validation for custom fields
2025-12-23 17:01:21 +01:00
5718a37aca
fix: show custom field input fields also when empty
continuous-integration/drone/push Build is passing
2025-12-23 16:15:22 +01:00
def399122c
fix tests with async true
2025-12-23 16:14:58 +01:00
1bb03b52c9
Fix accessibility issues: add tooltip for disabled delete button
continuous-integration/drone/push Build is failing
2025-12-22 18:00:17 +01:00
9233f56847
Fix accessibility issues: add select label, improve contrast, fix heading hierarchy
2025-12-22 17:56:56 +01:00
18766df224
Optimize member count queries to avoid N+1 problem
...
Load all member counts in a single query during mount. Counts are stored in assigns
as a map and retrieved without additional queries.
2025-12-22 17:40:50 +01:00
46af6bbbed
Add required validation and error display for interval field
...
Show required asterisk and validation errors when interval is not selected
2025-12-22 17:22:12 +01:00
75dc7056ae
Fix amount change warning and form value preservation
...
Add phx-debounce to amount input and preserve form values on confirm
2025-12-22 17:13:51 +01:00
562d7d6ab4
Fix handle_event for update_create_cycle_date to use correct param name
2025-12-22 17:02:07 +01:00
a03056e6ae
Make seed script deterministic and idempotent for fee type assignments
...
Fix update action name from :update to :update_member for Member resource
2025-12-22 16:56:12 +01:00
3241dd7d96
Fix cycle end calculation for misaligned cycle_start dates
...
Make cycle generation idempotent by skipping existing cycles
2025-12-22 16:39:49 +01:00
e3d615acb8
Fix failing tests after filter refactoring
...
continuous-integration/drone/push Build is failing
Update tests to use new cycle_status_filter parameter instead of
membership_fee_filter. Fix button selector for toggle_cycle_view to
target the header button. Fix edit cycle amount test to click on
span element instead of button.
2025-12-18 15:11:04 +01:00
46fb12c3f4
Add German translations and fix Credo warnings
...
Add translations for 'Current Cycle Payment Status' and 'Last Cycle
Payment Status'. Replace length/1 with Enum.empty?/1 in seeds tests
to fix Credo warnings.
2025-12-18 15:11:04 +01:00
50a8657718
Fix cycle action buttons layout and visibility
...
Arrange Paid/Suspended/Unpaid/Delete buttons side by side without wrapping.
Hide Suspend button when cycle is already suspended, matching behavior
of Paid and Unpaid buttons.
2025-12-18 15:11:03 +01:00
39de5c9237
Fix seeds test: add Ash.Query require
2025-12-18 15:11:03 +01:00
239d784f3c
Update seeds: member without fee type, cycles with various statuses
...
Add member without membership fee type. Generate cycles for members
with fee types and set different statuses: all paid, all unpaid, and
mixed (paid/unpaid/suspended). Update tests accordingly.
2025-12-18 15:11:03 +01:00
f25e198b0e
Update cycle button styling and text
...
Make cycle button match PaymentFilterComponent and Columns button style.
Show 'Current Cycle Payment Status' or 'Last Cycle Payment Status'
based on active state. Button shows active state when current cycle
is selected.
2025-12-18 15:11:03 +01:00
effb710741
Assign membership fee types to all seed members
...
Ensure all members created in seeds are assigned to a membership fee type
using round-robin distribution. Add tests to verify all members have fee
types and each fee type has at least one member.
2025-12-18 15:11:03 +01:00
adb107e6a4
Rename cycle button to Show Last/Current Cycle Payment Status
...
Update button text and styling to match PaymentFilterComponent.
Button now shows active state when filter is applied.
2025-12-18 15:11:02 +01:00
c65b3808bf
Refactor filters to use cycle status instead of paid field
...
Replace paid_filter with cycle_status_filter that filters based on
membership fee cycle status (last or current cycle). Update
PaymentFilterComponent to use new filter with options All, Paid, Unpaid.
Remove membership fee status filter dropdown. Extend
filter_members_by_cycle_status/3 to support both paid and unpaid filtering.
Update toggle_cycle_view to preserve filter state in URL.
2025-12-18 15:11:02 +01:00