Adds Kasse (Cash Register) module and related components

Introduces comprehensive cash management functionality with multiple view components for tracking daily transactions, filtering, and reconciliation

Implements:
- Cash calculation and difference tracking
- Dynamic tab switching
- Checkbox selection and row expansion
- Date filtering and approval mechanisms
This commit is contained in:
Janus C. H. Knudsen 2026-01-11 21:08:56 +01:00
parent 12869e35bf
commit 754681059d
31 changed files with 2904 additions and 28 deletions

View file

@ -0,0 +1,191 @@
<!-- Action Bar -->
<swp-action-bar>
<swp-selection-info>
<span id="selectionCount">0 valgt</span>
</swp-selection-info>
<swp-btn class="primary" id="exportBtn" disabled>
<i class="ph ph-download"></i>
Eksporter SAF-T
</swp-btn>
</swp-action-bar>
<!-- Table -->
<swp-kasse-table>
<swp-kasse-table-header>
<swp-kasse-th class="checkbox"><input type="checkbox" id="selectAll" /></swp-kasse-th>
<swp-kasse-th>Dato</swp-kasse-th>
<swp-kasse-th>ID</swp-kasse-th>
<swp-kasse-th>Periode</swp-kasse-th>
<swp-kasse-th>Kassepunkt</swp-kasse-th>
<swp-kasse-th>Afsluttet af</swp-kasse-th>
<swp-kasse-th class="right">Omsætning</swp-kasse-th>
<swp-kasse-th class="right">Difference</swp-kasse-th>
<swp-kasse-th>Status</swp-kasse-th>
<swp-kasse-th></swp-kasse-th>
</swp-kasse-table-header>
<swp-kasse-table-body>
<!-- Draft row (current day) -->
<swp-kasse-table-row data-id="draft" class="draft-row">
<swp-kasse-td class="checkbox"></swp-kasse-td>
<swp-kasse-td class="muted">I dag</swp-kasse-td>
<swp-kasse-td class="id muted"></swp-kasse-td>
<swp-kasse-td>
<swp-period-cell>
<span class="dates">29. dec 17:45 → ...</span>
</swp-period-cell>
</swp-kasse-td>
<swp-kasse-td>Kasse 1</swp-kasse-td>
<swp-kasse-td class="muted"></swp-kasse-td>
<swp-kasse-td class="right mono muted">4.250 kr</swp-kasse-td>
<swp-kasse-td class="right mono muted"></swp-kasse-td>
<swp-kasse-td><swp-status-badge class="draft">Kladde</swp-status-badge></swp-kasse-td>
<swp-kasse-td><swp-row-arrow><i class="ph ph-caret-right"></i></swp-row-arrow></swp-kasse-td>
</swp-kasse-table-row>
<swp-kasse-table-row data-id="043">
<swp-kasse-td class="checkbox"><input type="checkbox" class="row-select" /></swp-kasse-td>
<swp-kasse-td>29. dec</swp-kasse-td>
<swp-kasse-td class="id">Z-043</swp-kasse-td>
<swp-kasse-td>
<swp-period-cell>
<span class="dates">28. dec 18:00 → 29. dec 17:45</span>
</swp-period-cell>
</swp-kasse-td>
<swp-kasse-td>Kasse 1</swp-kasse-td>
<swp-kasse-td>Anna Jensen</swp-kasse-td>
<swp-kasse-td class="right mono">18.865 kr</swp-kasse-td>
<swp-kasse-td class="right mono">0 kr</swp-kasse-td>
<swp-kasse-td><swp-status-badge class="approved">Godkendt</swp-status-badge></swp-kasse-td>
<swp-kasse-td><swp-row-toggle><i class="ph ph-caret-right"></i></swp-row-toggle></swp-kasse-td>
</swp-kasse-table-row>
<swp-kasse-row-detail data-for="043">
<swp-row-detail-content>
<swp-row-detail-actions>
<swp-btn class="secondary">
<i class="ph ph-file-csv"></i>
Download CSV
</swp-btn>
<swp-btn class="secondary">
<i class="ph ph-file-pdf"></i>
Download PDF
</swp-btn>
<swp-btn class="primary">
<i class="ph ph-list-bullets"></i>
Se transaktioner
</swp-btn>
</swp-row-detail-actions>
</swp-row-detail-content>
</swp-kasse-row-detail>
<swp-kasse-table-row data-id="042">
<swp-kasse-td class="checkbox"><input type="checkbox" class="row-select" /></swp-kasse-td>
<swp-kasse-td>28. dec</swp-kasse-td>
<swp-kasse-td class="id">Z-042</swp-kasse-td>
<swp-kasse-td>
<swp-period-cell>
<span class="dates">27. dec 18:30 → 28. dec 18:00</span>
</swp-period-cell>
</swp-kasse-td>
<swp-kasse-td>Kasse 1</swp-kasse-td>
<swp-kasse-td>Karina Knudsen</swp-kasse-td>
<swp-kasse-td class="right mono">12.450 kr</swp-kasse-td>
<swp-kasse-td class="right mono negative">-25 kr</swp-kasse-td>
<swp-kasse-td><swp-status-badge class="approved">Godkendt</swp-status-badge></swp-kasse-td>
<swp-kasse-td><swp-row-toggle><i class="ph ph-caret-right"></i></swp-row-toggle></swp-kasse-td>
</swp-kasse-table-row>
<swp-kasse-row-detail data-for="042">
<swp-row-detail-content>
<swp-row-detail-actions>
<swp-btn class="secondary">
<i class="ph ph-file-csv"></i>
Download CSV
</swp-btn>
<swp-btn class="secondary">
<i class="ph ph-file-pdf"></i>
Download PDF
</swp-btn>
<swp-btn class="primary">
<i class="ph ph-list-bullets"></i>
Se transaktioner
</swp-btn>
</swp-row-detail-actions>
</swp-row-detail-content>
</swp-kasse-row-detail>
<swp-kasse-table-row data-id="041">
<swp-kasse-td class="checkbox"><input type="checkbox" class="row-select" /></swp-kasse-td>
<swp-kasse-td>27. dec</swp-kasse-td>
<swp-kasse-td class="id">Z-041</swp-kasse-td>
<swp-kasse-td>
<swp-period-cell>
<span class="dates">26. dec 18:00 → 27. dec 18:30</span>
</swp-period-cell>
</swp-kasse-td>
<swp-kasse-td>Kasse 1</swp-kasse-td>
<swp-kasse-td>Martin Nielsen</swp-kasse-td>
<swp-kasse-td class="right mono">21.340 kr</swp-kasse-td>
<swp-kasse-td class="right mono">0 kr</swp-kasse-td>
<swp-kasse-td><swp-status-badge class="approved">Godkendt</swp-status-badge></swp-kasse-td>
<swp-kasse-td><swp-row-toggle><i class="ph ph-caret-right"></i></swp-row-toggle></swp-kasse-td>
</swp-kasse-table-row>
<swp-kasse-row-detail data-for="041">
<swp-row-detail-content>
<swp-row-detail-actions>
<swp-btn class="secondary">
<i class="ph ph-file-csv"></i>
Download CSV
</swp-btn>
<swp-btn class="secondary">
<i class="ph ph-file-pdf"></i>
Download PDF
</swp-btn>
<swp-btn class="primary">
<i class="ph ph-list-bullets"></i>
Se transaktioner
</swp-btn>
</swp-row-detail-actions>
</swp-row-detail-content>
</swp-kasse-row-detail>
<swp-kasse-table-row data-id="040">
<swp-kasse-td class="checkbox"><input type="checkbox" class="row-select" /></swp-kasse-td>
<swp-kasse-td>23. dec</swp-kasse-td>
<swp-kasse-td class="id">Z-040</swp-kasse-td>
<swp-kasse-td>
<swp-period-cell>
<span class="dates">22. dec 18:00 → 23. dec 17:30</span>
</swp-period-cell>
</swp-kasse-td>
<swp-kasse-td>Kasse 1</swp-kasse-td>
<swp-kasse-td>Anna Jensen</swp-kasse-td>
<swp-kasse-td class="right mono">28.750 kr</swp-kasse-td>
<swp-kasse-td class="right mono negative">-50 kr</swp-kasse-td>
<swp-kasse-td><swp-status-badge class="approved">Godkendt</swp-status-badge></swp-kasse-td>
<swp-kasse-td><swp-row-toggle><i class="ph ph-caret-right"></i></swp-row-toggle></swp-kasse-td>
</swp-kasse-table-row>
<swp-kasse-row-detail data-for="040">
<swp-row-detail-content>
<swp-row-detail-actions>
<swp-btn class="secondary">
<i class="ph ph-file-csv"></i>
Download CSV
</swp-btn>
<swp-btn class="secondary">
<i class="ph ph-file-pdf"></i>
Download PDF
</swp-btn>
<swp-btn class="primary">
<i class="ph ph-list-bullets"></i>
Se transaktioner
</swp-btn>
</swp-row-detail-actions>
</swp-row-detail-content>
</swp-kasse-row-detail>
</swp-kasse-table-body>
<swp-kasse-table-footer>
<span>Viser 5 afstemninger</span>
<span>Z-040 → Z-043</span>
</swp-kasse-table-footer>
</swp-kasse-table>