Přihlášky - vyúčtování
Tady je odkaz na Finanční pravidla, která platí už od roku 2023, měnilo se tam akorát výše příspěvků a kolik se platí jednotě...
{% set requestedYear = uri.query('year')|default(0)|int %} {% set requestedUserId = (uri.query('userid')|default('') ~ '')|trim %} {% set requestedFamilyId = (uri.query('family')|default('') ~ '')|trim %} {% set latestEntriesYear = oris_user_entries_latest_year()|default("now"|date("Y"))|int %} {% set year = requestedYear > 0 ? requestedYear : latestEntriesYear %} {% set currentYear = "now"|date("Y")|int %} {% set yearOptions = range(currentYear - 5, currentYear + 1)|reverse %}
{% set entries = oris_calculated_entries_data(year)|default([]) %} {% set familyData = oris_families_data()|default({'families': [], 'memberships': {}}) %} {% set families = familyData.families|default([]) %} {% set memberships = familyData.memberships|default({}) %} {% set userGroupsByKey = {} %} {% for entry in entries %} {% set entryUserId = (entry.UserID|default('') ~ '')|trim %} {% set entryRegNo = (entry.RegNo|default('') ~ '')|trim %} {% set entryName = (entry.Name|default('') ~ '')|trim %} {% set groupKey = entryRegNo ? ('r:' ~ entryRegNo) : (entryName ? ('n:' ~ entryName) : ('u:' ~ entryUserId)) %} {% set existingGroup = userGroupsByKey[groupKey]|default({'label': '', 'regNo': '', 'ids': [], 'primaryId': ''}) %} {% set groupIds = existingGroup.ids|default([]) %} {% if entryUserId and entryUserId not in groupIds %} {% set groupIds = groupIds|merge([entryUserId]) %} {% endif %} {% set groupPrimaryId = existingGroup.primaryId|default('') %} {% if groupPrimaryId == '' and entryUserId %} {% set groupPrimaryId = entryUserId %} {% endif %} {% set groupLabel = existingGroup.label|default('') %} {% if groupLabel == '' %} {% set groupLabel = entryName ? entryName : (entryRegNo ? entryRegNo : entryUserId) %} {% endif %} {% set groupRegNo = existingGroup.regNo|default('') %} {% if groupRegNo == '' and entryRegNo %} {% set groupRegNo = entryRegNo %} {% endif %} {% set userGroupsByKey = userGroupsByKey|merge({ (groupKey): {'label': groupLabel, 'regNo': groupRegNo, 'ids': groupIds, 'primaryId': groupPrimaryId} }) %} {% endfor %}
{% set usersById = {} %} {% set userIdToGroupKey = {} %} {% for groupKey, group in userGroupsByKey %} {% set groupPrimaryId = (group.primaryId|default('') ~ '')|trim %} {% if groupPrimaryId %} {% set groupLabel = (group.label|default('') ~ '')|trim %} {% set groupRegNo = (group.regNo|default('') ~ '')|trim %} {% set dropdownLabel = groupLabel %} {% if groupRegNo %} {% set dropdownLabel = groupLabel ~ ' (' ~ groupRegNo ~ ')' %} {% endif %} {% set usersById = usersById|merge({ ('k' ~ groupKey): {'id': groupPrimaryId, 'label': dropdownLabel} }) %} {% endif %} {% for groupedUserId in group.ids|default([]) %} {% set normalizedGroupedUserId = (groupedUserId ~ '')|trim %} {% if normalizedGroupedUserId %} {% set userIdToGroupKey = userIdToGroupKey|merge({ (normalizedGroupedUserId): groupKey }) %} {% endif %} {% endfor %} {% endfor %}
{% set selectedGroupKey = userIdToGroupKey[requestedUserId]|default('') %} {% set selectedGroup = selectedGroupKey ? userGroupsByKey[selectedGroupKey]|default(null) : null %} {% set selectedGroupUserIds = selectedGroup ? selectedGroup.ids|default([]) : [] %} {% set selectedPrimaryUserId = selectedGroup ? (selectedGroup.primaryId|default(requestedUserId)) : requestedUserId %}
{% set familyMembersByFamilyId = {} %} {% for userId, familyId in memberships %} {% set normalizedFamilyId = (familyId ~ '')|trim %} {% set normalizedUserId = (userId ~ '')|trim %} {% if normalizedFamilyId and normalizedUserId %} {% set existingMembers = familyMembersByFamilyId[normalizedFamilyId]|default([]) %} {% if normalizedUserId not in existingMembers %} {% set familyMembersByFamilyId = familyMembersByFamilyId|merge({ (normalizedFamilyId): existingMembers|merge([normalizedUserId]) }) %} {% endif %} {% endif %} {% endfor %}
{% set selectedFamilyMembers = requestedFamilyId ? familyMembersByFamilyId[requestedFamilyId]|default([]) : [] %}
{% set filteredEntries = [] %} {% for entry in entries %} {% set entryUserId = (entry.UserID|default('') ~ '')|trim %} {% if not requestedUserId and not requestedFamilyId %} {% set filteredEntries = filteredEntries|merge([entry]) %} {% elseif requestedUserId %} {% if selectedGroupUserIds|length > 0 and entryUserId in selectedGroupUserIds %} {% set filteredEntries = filteredEntries|merge([entry]) %} {% elseif selectedGroupUserIds|length == 0 and entryUserId == requestedUserId %} {% set filteredEntries = filteredEntries|merge([entry]) %} {% endif %} {% elseif requestedFamilyId %} {% if entryUserId in selectedFamilyMembers %} {% set filteredEntries = filteredEntries|merge([entry]) %} {% endif %} {% endif %} {% endfor %}
{% set totalFee = 0 %} {% set totalDoplatit = 0 %} {% set totalProplaciFsp = 0 %}
<style> .oris-entries-toolbar { margin: 15px 0; padding: 15px; background: #f5f5f5; border-radius: 5px; } .oris-entries-toolbar label { margin-right: 10px; font-weight: bold; } .oris-entries-toolbar select { margin-right: 15px; padding: 5px; min-width: 120px; } .oris-entries-summary { margin: 12px 0; } .oris-entries-table { width: 100%; border-collapse: collapse; margin-top: 15px; font-size: 14px; } .oris-entries-table th, .oris-entries-table td { border: 1px solid #ddd; padding: 8px; text-align: left; } .oris-entries-table th { background-color: #f5f5f5; font-weight: bold; } .oris-entries-table tfoot td { background-color: #f5f5f5; font-weight: bold; } .oris-entries-table tr.is-entry-stop-problem { background-color: #fdeaea; } .oris-entries-table tr.is-entry-stop-problem:hover { background-color: #f9dede; } .oris-entries-table tr:hover { background-color: #f9f9f9; } .oris-entries-empty { margin-top: 20px; color: #666; } </style>{% if filteredEntries|length > 0 %}
| EventID | Datum | Název | Pořadatel | Kat | RegNo | Jméno | UserID | Fee | Termín | Základní startovné | Platila FSP | Proplácí FSP | Doplatit | Důvod doplatku |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ entry.EventID|default('') }} | {{ entry.EventDate|default('') }} | {{ entry.EventName|default('') }} | {{ entry.EventOrgAbbr|default('') }} | {{ classDesc }} | {{ entry.RegNo|default('') }} | {{ entry.Name|default('') }} | {{ entry.UserID|default('') }} | {{ entry.Fee|default('') }} | {{ entry.EntryStop|default('') }} | {{ baseFeeValue }} | {{ paidLabel }} | {{ refundedLabel }} | {{ doplatit }} | {{ doplatitReason }} |
| Celkem | {{ totalFee }} | {{ totalProplaciFsp }} | {{ totalDoplatit }} | |||||||||||
{% elseif entries|length == 0 %}
{% else %}
{% endif %}
<script> (function() { var yearSelect = document.getElementById('entries-year'); var userSelect = document.getElementById('entries-user'); function updateUrl() { var url = new URL(window.location.href); if (yearSelect) { url.searchParams.set('year', yearSelect.value); } var familySelect = document.getElementById('entries-family'); if (userSelect && userSelect.value) { url.searchParams.set('userid', userSelect.value); url.searchParams.delete('family'); } else if (familySelect && familySelect.value) { url.searchParams.set('family', familySelect.value); url.searchParams.delete('userid'); } else { url.searchParams.delete('userid'); url.searchParams.delete('family'); } window.location.href = url.toString(); } if (yearSelect) { yearSelect.addEventListener('change', updateUrl); } var familySelect = document.getElementById('entries-family'); if (userSelect) { userSelect.addEventListener('change', function() { if (userSelect.value && familySelect) { familySelect.value = ''; } updateUrl(); }); } if (familySelect) { familySelect.addEventListener('change', function() { if (familySelect.value && userSelect) { userSelect.value = ''; } updateUrl(); }); } })(); </script>