Renames danish to english

This commit is contained in:
Janus C. H. Knudsen 2026-01-11 21:42:24 +01:00
parent 754681059d
commit 5e0bd9db74
29 changed files with 405 additions and 438 deletions

View file

@ -1,12 +1,12 @@
using Microsoft.AspNetCore.Mvc;
namespace PlanTempus.Application.Features.Kasse.Components;
namespace PlanTempus.Application.Features.CashRegister.Components;
/// <summary>
/// ViewComponent for the approval section.
/// Handles status, approver selection, and confirmation checkbox.
/// </summary>
public class KasseGodkendelseViewComponent : ViewComponent
public class CashApprovalViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{

View file

@ -1,12 +1,12 @@
using Microsoft.AspNetCore.Mvc;
namespace PlanTempus.Application.Features.Kasse.Components;
namespace PlanTempus.Application.Features.CashRegister.Components;
/// <summary>
/// ViewComponent for cash calculation section.
/// Handles starting balance, payouts, bank deposits, and actual cash count.
/// </summary>
public class KasseKontanterViewComponent : ViewComponent
public class CashBalanceViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{

View file

@ -1,12 +1,12 @@
using Microsoft.AspNetCore.Mvc;
namespace PlanTempus.Application.Features.Kasse.Components;
namespace PlanTempus.Application.Features.CashRegister.Components;
/// <summary>
/// ViewComponent for displaying the cash difference.
/// Shows positive/negative/neutral states with color coding.
/// </summary>
public class KasseDifferenceViewComponent : ViewComponent
public class CashDifferenceViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{

View file

@ -1,12 +1,12 @@
using Microsoft.AspNetCore.Mvc;
namespace PlanTempus.Application.Features.Kasse.Components;
namespace PlanTempus.Application.Features.CashRegister.Components;
/// <summary>
/// ViewComponent for daily reconciliation info.
/// ViewComponent for period reconciliation info.
/// Shows period, register, and employee information.
/// </summary>
public class KasseDagsoplysningerViewComponent : ViewComponent
public class PeriodInfoViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{

View file

@ -1,12 +1,12 @@
using Microsoft.AspNetCore.Mvc;
namespace PlanTempus.Application.Features.Kasse.Components;
namespace PlanTempus.Application.Features.CashRegister.Components;
/// <summary>
/// ViewComponent for displaying today's payment figures.
/// ViewComponent for displaying period payment figures.
/// Shows system values vs. optional control values for different payment types.
/// </summary>
public class KasseDagensTalViewComponent : ViewComponent
public class PeriodRevenueViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{

View file

@ -1,12 +1,12 @@
using Microsoft.AspNetCore.Mvc;
namespace PlanTempus.Application.Features.Kasse.Components;
namespace PlanTempus.Application.Features.CashRegister.Components;
/// <summary>
/// ViewComponent for the note field.
/// Optional field for explaining cash differences.
/// </summary>
public class KasseNoteViewComponent : ViewComponent
public class ReconciliationNoteViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{

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-cash-table>
<swp-cash-table-header>
<swp-cash-th class="checkbox"><input type="checkbox" id="selectAll" /></swp-cash-th>
<swp-cash-th>Dato</swp-cash-th>
<swp-cash-th>ID</swp-cash-th>
<swp-cash-th>Periode</swp-cash-th>
<swp-cash-th>Kassepunkt</swp-cash-th>
<swp-cash-th>Afsluttet af</swp-cash-th>
<swp-cash-th class="right">Omsætning</swp-cash-th>
<swp-cash-th class="right">Difference</swp-cash-th>
<swp-cash-th>Status</swp-cash-th>
<swp-cash-th></swp-cash-th>
</swp-cash-table-header>
<swp-cash-table-body>
<!-- Draft row (current day) -->
<swp-cash-table-row data-id="draft" class="draft-row">
<swp-cash-td class="checkbox"></swp-cash-td>
<swp-cash-td class="muted">I dag</swp-cash-td>
<swp-cash-td class="id muted"></swp-cash-td>
<swp-cash-td>
<swp-period-cell>
<span class="dates">29. dec 17:45 → ...</span>
</swp-period-cell>
</swp-cash-td>
<swp-cash-td>Kasse 1</swp-cash-td>
<swp-cash-td class="muted"></swp-cash-td>
<swp-cash-td class="right mono muted">4.250 kr</swp-cash-td>
<swp-cash-td class="right mono muted"></swp-cash-td>
<swp-cash-td><swp-status-badge class="draft">Kladde</swp-status-badge></swp-cash-td>
<swp-cash-td><swp-row-arrow><i class="ph ph-caret-right"></i></swp-row-arrow></swp-cash-td>
</swp-cash-table-row>
<swp-cash-table-row data-id="043">
<swp-cash-td class="checkbox"><input type="checkbox" class="row-select" /></swp-cash-td>
<swp-cash-td>29. dec</swp-cash-td>
<swp-cash-td class="id">Z-043</swp-cash-td>
<swp-cash-td>
<swp-period-cell>
<span class="dates">28. dec 18:00 → 29. dec 17:45</span>
</swp-period-cell>
</swp-cash-td>
<swp-cash-td>Kasse 1</swp-cash-td>
<swp-cash-td>Anna Jensen</swp-cash-td>
<swp-cash-td class="right mono">18.865 kr</swp-cash-td>
<swp-cash-td class="right mono">0 kr</swp-cash-td>
<swp-cash-td><swp-status-badge class="approved">Godkendt</swp-status-badge></swp-cash-td>
<swp-cash-td><swp-row-toggle><i class="ph ph-caret-right"></i></swp-row-toggle></swp-cash-td>
</swp-cash-table-row>
<swp-cash-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-cash-row-detail>
<swp-cash-table-row data-id="042">
<swp-cash-td class="checkbox"><input type="checkbox" class="row-select" /></swp-cash-td>
<swp-cash-td>28. dec</swp-cash-td>
<swp-cash-td class="id">Z-042</swp-cash-td>
<swp-cash-td>
<swp-period-cell>
<span class="dates">27. dec 18:30 → 28. dec 18:00</span>
</swp-period-cell>
</swp-cash-td>
<swp-cash-td>Kasse 1</swp-cash-td>
<swp-cash-td>Karina Knudsen</swp-cash-td>
<swp-cash-td class="right mono">12.450 kr</swp-cash-td>
<swp-cash-td class="right mono negative">-25 kr</swp-cash-td>
<swp-cash-td><swp-status-badge class="approved">Godkendt</swp-status-badge></swp-cash-td>
<swp-cash-td><swp-row-toggle><i class="ph ph-caret-right"></i></swp-row-toggle></swp-cash-td>
</swp-cash-table-row>
<swp-cash-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-cash-row-detail>
<swp-cash-table-row data-id="041">
<swp-cash-td class="checkbox"><input type="checkbox" class="row-select" /></swp-cash-td>
<swp-cash-td>27. dec</swp-cash-td>
<swp-cash-td class="id">Z-041</swp-cash-td>
<swp-cash-td>
<swp-period-cell>
<span class="dates">26. dec 18:00 → 27. dec 18:30</span>
</swp-period-cell>
</swp-cash-td>
<swp-cash-td>Kasse 1</swp-cash-td>
<swp-cash-td>Martin Nielsen</swp-cash-td>
<swp-cash-td class="right mono">21.340 kr</swp-cash-td>
<swp-cash-td class="right mono">0 kr</swp-cash-td>
<swp-cash-td><swp-status-badge class="approved">Godkendt</swp-status-badge></swp-cash-td>
<swp-cash-td><swp-row-toggle><i class="ph ph-caret-right"></i></swp-row-toggle></swp-cash-td>
</swp-cash-table-row>
<swp-cash-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-cash-row-detail>
<swp-cash-table-row data-id="040">
<swp-cash-td class="checkbox"><input type="checkbox" class="row-select" /></swp-cash-td>
<swp-cash-td>23. dec</swp-cash-td>
<swp-cash-td class="id">Z-040</swp-cash-td>
<swp-cash-td>
<swp-period-cell>
<span class="dates">22. dec 18:00 → 23. dec 17:30</span>
</swp-period-cell>
</swp-cash-td>
<swp-cash-td>Kasse 1</swp-cash-td>
<swp-cash-td>Anna Jensen</swp-cash-td>
<swp-cash-td class="right mono">28.750 kr</swp-cash-td>
<swp-cash-td class="right mono negative">-50 kr</swp-cash-td>
<swp-cash-td><swp-status-badge class="approved">Godkendt</swp-status-badge></swp-cash-td>
<swp-cash-td><swp-row-toggle><i class="ph ph-caret-right"></i></swp-row-toggle></swp-cash-td>
</swp-cash-table-row>
<swp-cash-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-cash-row-detail>
</swp-cash-table-body>
<swp-cash-table-footer>
<span>Viser 5 afstemninger</span>
<span>Z-040 → Z-043</span>
</swp-cash-table-footer>
</swp-cash-table>

View file

@ -0,0 +1,15 @@
using Microsoft.AspNetCore.Mvc;
namespace PlanTempus.Application.Features.CashRegister.Components;
/// <summary>
/// ViewComponent for the reconciliation table on the Cash Register list page.
/// Shows all reconciliations with action bar and SAF-T export.
/// </summary>
public class ReconciliationTableViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return View();
}
}

View file

@ -0,0 +1,15 @@
using Microsoft.AspNetCore.Mvc;
namespace PlanTempus.Application.Features.CashRegister.Components;
/// <summary>
/// ViewComponent for the filter bar on the Cash Register list page.
/// Contains date range, register point, and status filters.
/// </summary>
public class RegisterFilterBarViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return View();
}
}

View file

@ -0,0 +1,93 @@
@page "/kasse"
@using PlanTempus.Application.Features.CashRegister.Pages
@model PlanTempus.Application.Features.CashRegister.Pages.IndexModel
@{
ViewData["Title"] = "Kasse";
}
<!-- Sticky Header (Stats + Tabs) -->
<swp-cash-sticky-header>
<!-- Context Stats (changes based on active tab) -->
<swp-cash-header>
<!-- Stats for Oversigt tab -->
<swp-cash-stats data-for-tab="oversigt" class="active">
<swp-cash-stat>
<swp-cash-stat-value>12</swp-cash-stat-value>
<swp-cash-stat-label>Afstemninger i periode</swp-cash-stat-label>
</swp-cash-stat>
<swp-cash-stat class="highlight">
<swp-cash-stat-value>186.450 kr</swp-cash-stat-value>
<swp-cash-stat-label>Total omsætning</swp-cash-stat-label>
</swp-cash-stat>
<swp-cash-stat>
<swp-cash-stat-value>42.340 kr</swp-cash-stat-value>
<swp-cash-stat-label>Kontantsalg</swp-cash-stat-label>
</swp-cash-stat>
<swp-cash-stat class="warning">
<swp-cash-stat-value>-75 kr</swp-cash-stat-value>
<swp-cash-stat-label>Samlet difference</swp-cash-stat-label>
</swp-cash-stat>
</swp-cash-stats>
<!-- Stats for Kasseafstemning tab -->
<swp-cash-stats data-for-tab="afstemning">
<swp-cash-stat>
<swp-cash-stat-value>47</swp-cash-stat-value>
<swp-cash-stat-label>Transaktioner i dag</swp-cash-stat-label>
</swp-cash-stat>
<swp-cash-stat class="highlight">
<swp-cash-stat-value>18.865 kr</swp-cash-stat-value>
<swp-cash-stat-label>Omsætning i dag</swp-cash-stat-label>
</swp-cash-stat>
<swp-cash-stat>
<swp-cash-stat-value>29. dec 17:45</swp-cash-stat-value>
<swp-cash-stat-label>Sidste afstemning</swp-cash-stat-label>
</swp-cash-stat>
<swp-cash-stat>
<swp-cash-stat-value>Anna J.</swp-cash-stat-value>
<swp-cash-stat-label>Åbnede kassen 29. dec 09:05</swp-cash-stat-label>
</swp-cash-stat>
</swp-cash-stats>
</swp-cash-header>
<!-- Tab Bar -->
<swp-tab-bar>
<swp-tab class="active" data-tab="oversigt">
<i class="ph ph-list-checks"></i>
Oversigt
</swp-tab>
<swp-tab data-tab="afstemning">
<i class="ph ph-cash-register"></i>
Kasseafstemning
</swp-tab>
</swp-tab-bar>
</swp-cash-sticky-header>
<!-- Tab Content: Oversigt -->
<swp-tab-content data-tab="oversigt" class="active">
<swp-page-container>
@await Component.InvokeAsync("RegisterFilterBar")
@await Component.InvokeAsync("ReconciliationTable")
</swp-page-container>
</swp-tab-content>
<!-- Tab Content: Kasseafstemning -->
<swp-tab-content data-tab="afstemning">
<swp-page-container>
<swp-cash-grid>
<swp-cash-column>
@await Component.InvokeAsync("PeriodRevenue")
@await Component.InvokeAsync("CashBalance")
@await Component.InvokeAsync("CashDifference")
</swp-cash-column>
<swp-cash-column>
@await Component.InvokeAsync("PeriodInfo")
@await Component.InvokeAsync("ReconciliationNote")
@await Component.InvokeAsync("CashApproval")
</swp-cash-column>
</swp-cash-grid>
<swp-system-note>Systemet gemmer hvornår og af hvem der er godkendt enkelt kontrolspor.</swp-system-note>
</swp-page-container>
</swp-tab-content>

View file

@ -1,6 +1,6 @@
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace PlanTempus.Application.Features.Kasse.Pages;
namespace PlanTempus.Application.Features.CashRegister.Pages;
public class IndexModel : PageModel
{

View file

@ -1,15 +0,0 @@
using Microsoft.AspNetCore.Mvc;
namespace PlanTempus.Application.Features.Kasse.Components;
/// <summary>
/// ViewComponent for the filter bar on the Kasse list page.
/// Contains date range, kassepunkt, and status filters.
/// </summary>
public class KasseFilterBarViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return View();
}
}

View file

@ -1,18 +0,0 @@
<swp-kasse-stats>
<swp-kasse-stat>
<swp-kasse-stat-value>12</swp-kasse-stat-value>
<swp-kasse-stat-label>Afstemninger i periode</swp-kasse-stat-label>
</swp-kasse-stat>
<swp-kasse-stat class="highlight">
<swp-kasse-stat-value>186.450 kr</swp-kasse-stat-value>
<swp-kasse-stat-label>Total omsætning</swp-kasse-stat-label>
</swp-kasse-stat>
<swp-kasse-stat>
<swp-kasse-stat-value>42.340 kr</swp-kasse-stat-value>
<swp-kasse-stat-label>Kontantsalg</swp-kasse-stat-label>
</swp-kasse-stat>
<swp-kasse-stat class="warning">
<swp-kasse-stat-value>-75 kr</swp-kasse-stat-value>
<swp-kasse-stat-label>Samlet difference</swp-kasse-stat-label>
</swp-kasse-stat>
</swp-kasse-stats>

View file

@ -1,15 +0,0 @@
using Microsoft.AspNetCore.Mvc;
namespace PlanTempus.Application.Features.Kasse.Components;
/// <summary>
/// ViewComponent for the stats bar on the Kasse list page.
/// Shows summary statistics for reconciliations.
/// </summary>
public class KasseStatsBarViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return View();
}
}

View file

@ -1,191 +0,0 @@
<!-- 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>

View file

@ -1,15 +0,0 @@
using Microsoft.AspNetCore.Mvc;
namespace PlanTempus.Application.Features.Kasse.Components;
/// <summary>
/// ViewComponent for the reconciliation table on the Kasse list page.
/// Shows all reconciliations with action bar and SAF-T export.
/// </summary>
public class KasseTableViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return View();
}
}

View file

@ -1,93 +0,0 @@
@page "/kasse"
@using PlanTempus.Application.Features.Kasse.Pages
@model PlanTempus.Application.Features.Kasse.Pages.IndexModel
@{
ViewData["Title"] = "Kasse";
}
<!-- Sticky Header (Stats + Tabs) -->
<swp-kasse-sticky-header>
<!-- Context Stats (changes based on active tab) -->
<swp-kasse-header>
<!-- Stats for Oversigt tab -->
<swp-kasse-stats data-for-tab="oversigt" class="active">
<swp-kasse-stat>
<swp-kasse-stat-value>12</swp-kasse-stat-value>
<swp-kasse-stat-label>Afstemninger i periode</swp-kasse-stat-label>
</swp-kasse-stat>
<swp-kasse-stat class="highlight">
<swp-kasse-stat-value>186.450 kr</swp-kasse-stat-value>
<swp-kasse-stat-label>Total omsætning</swp-kasse-stat-label>
</swp-kasse-stat>
<swp-kasse-stat>
<swp-kasse-stat-value>42.340 kr</swp-kasse-stat-value>
<swp-kasse-stat-label>Kontantsalg</swp-kasse-stat-label>
</swp-kasse-stat>
<swp-kasse-stat class="warning">
<swp-kasse-stat-value>-75 kr</swp-kasse-stat-value>
<swp-kasse-stat-label>Samlet difference</swp-kasse-stat-label>
</swp-kasse-stat>
</swp-kasse-stats>
<!-- Stats for Dagens afstemning tab -->
<swp-kasse-stats data-for-tab="afstemning">
<swp-kasse-stat>
<swp-kasse-stat-value>47</swp-kasse-stat-value>
<swp-kasse-stat-label>Transaktioner i dag</swp-kasse-stat-label>
</swp-kasse-stat>
<swp-kasse-stat class="highlight">
<swp-kasse-stat-value>18.865 kr</swp-kasse-stat-value>
<swp-kasse-stat-label>Omsætning i dag</swp-kasse-stat-label>
</swp-kasse-stat>
<swp-kasse-stat>
<swp-kasse-stat-value>29. dec 17:45</swp-kasse-stat-value>
<swp-kasse-stat-label>Sidste afstemning</swp-kasse-stat-label>
</swp-kasse-stat>
<swp-kasse-stat>
<swp-kasse-stat-value>Anna J.</swp-kasse-stat-value>
<swp-kasse-stat-label>Åbnede kassen 29. dec 09:05</swp-kasse-stat-label>
</swp-kasse-stat>
</swp-kasse-stats>
</swp-kasse-header>
<!-- Tab Bar -->
<swp-tab-bar>
<swp-tab class="active" data-tab="oversigt">
<i class="ph ph-list-checks"></i>
Oversigt
</swp-tab>
<swp-tab data-tab="afstemning">
<i class="ph ph-cash-register"></i>
Kasseafstemning
</swp-tab>
</swp-tab-bar>
</swp-kasse-sticky-header>
<!-- Tab Content: Oversigt -->
<swp-tab-content data-tab="oversigt" class="active">
<swp-page-container>
@await Component.InvokeAsync("KasseFilterBar")
@await Component.InvokeAsync("KasseTable")
</swp-page-container>
</swp-tab-content>
<!-- Tab Content: Dagens Afstemning -->
<swp-tab-content data-tab="afstemning">
<swp-page-container>
<swp-kasse-grid>
<swp-kasse-column>
@await Component.InvokeAsync("KasseDagensTal")
@await Component.InvokeAsync("KasseKontanter")
@await Component.InvokeAsync("KasseDifference")
</swp-kasse-column>
<swp-kasse-column>
@await Component.InvokeAsync("KasseDagsoplysninger")
@await Component.InvokeAsync("KasseNote")
@await Component.InvokeAsync("KasseGodkendelse")
</swp-kasse-column>
</swp-kasse-grid>
<swp-system-note>Systemet gemmer hvornår og af hvem der er godkendt enkelt kontrolspor.</swp-system-note>
</swp-page-container>
</swp-tab-content>

View file

@ -24,7 +24,7 @@
<link rel="stylesheet" href="~/css/quick-stats.css">
<link rel="stylesheet" href="~/css/waitlist.css">
<link rel="stylesheet" href="~/css/tabs.css">
<link rel="stylesheet" href="~/css/kasse.css">
<link rel="stylesheet" href="~/css/cash.css">
@await RenderSectionAsync("Styles", required: false)
</head>
<body class="has-demo-banner">