Adds Z-Report feature with PDF generation and UI components
Introduces Z-Report page and related functionality for cash register reconciliation - Adds new Z-Report page template with comprehensive financial reporting - Updates reconciliation table with Z-Report download buttons - Implements print-optimized CSS for report styling - Adds TypeScript handler for Z-Report button interactions
This commit is contained in:
parent
eaae745c42
commit
f3c54dde35
6 changed files with 603 additions and 21 deletions
|
|
@ -0,0 +1,173 @@
|
|||
@page "/kasse/z-rapport/{id}"
|
||||
@model PlanTempus.Application.Features.CashRegister.Pages.ZReportModel
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
<!DOCTYPE html>
|
||||
<html lang="da">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Z-Rapport Z-@Model.ReportId - Salon OS</title>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@@phosphor-icons/web@@2.1.2/src/regular/style.css" />
|
||||
<link rel="stylesheet" href="~/css/design-tokens.css">
|
||||
<link rel="stylesheet" href="~/css/print.css">
|
||||
</head>
|
||||
<body>
|
||||
<swp-z-report>
|
||||
<!-- Print Actions (hidden when printing) -->
|
||||
<swp-z-actions class="no-print">
|
||||
<swp-btn class="primary" onclick="window.print()">
|
||||
<i class="ph ph-printer"></i>
|
||||
<span>Print / Gem som PDF</span>
|
||||
</swp-btn>
|
||||
<swp-btn class="secondary" onclick="window.close()">
|
||||
<i class="ph ph-x"></i>
|
||||
<span>Luk</span>
|
||||
</swp-btn>
|
||||
</swp-z-actions>
|
||||
|
||||
<!-- Report Header -->
|
||||
<swp-z-header>
|
||||
<swp-z-company>
|
||||
<swp-z-company-name>Salon Harmoni</swp-z-company-name>
|
||||
<swp-z-company-address>Nørregade 42, 8000 Aarhus C</swp-z-company-address>
|
||||
<swp-z-company-cvr>CVR: 12345678</swp-z-company-cvr>
|
||||
</swp-z-company>
|
||||
<swp-z-title>
|
||||
<swp-z-title-label>Z-Rapport</swp-z-title-label>
|
||||
<swp-z-id>Z-@Model.ReportId</swp-z-id>
|
||||
</swp-z-title>
|
||||
</swp-z-header>
|
||||
|
||||
<!-- Period + Revenue Row -->
|
||||
<swp-z-row-grid>
|
||||
<swp-z-section>
|
||||
<swp-z-section-title>Periode</swp-z-section-title>
|
||||
<swp-z-section-content>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Fra</swp-z-label>
|
||||
<swp-z-value>28. dec 2025 kl. 18:00</swp-z-value>
|
||||
</swp-z-row>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Til</swp-z-label>
|
||||
<swp-z-value>29. dec 2025 kl. 17:45</swp-z-value>
|
||||
</swp-z-row>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Kassepunkt</swp-z-label>
|
||||
<swp-z-value>Kasse 1 - Reception</swp-z-value>
|
||||
</swp-z-row>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Åbnet af</swp-z-label>
|
||||
<swp-z-value>Anna Jensen</swp-z-value>
|
||||
</swp-z-row>
|
||||
</swp-z-section-content>
|
||||
</swp-z-section>
|
||||
|
||||
<swp-z-section>
|
||||
<swp-z-section-title>Omsætning</swp-z-section-title>
|
||||
<swp-z-section-content>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Kortbetalinger</swp-z-label>
|
||||
<swp-z-amount>12.875,50 kr</swp-z-amount>
|
||||
</swp-z-row>
|
||||
<swp-z-row>
|
||||
<swp-z-label>MobilePay / Online</swp-z-label>
|
||||
<swp-z-amount>2.450,00 kr</swp-z-amount>
|
||||
</swp-z-row>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Kontantsalg</swp-z-label>
|
||||
<swp-z-amount>3.540,00 kr</swp-z-amount>
|
||||
</swp-z-row>
|
||||
<swp-z-row class="total">
|
||||
<swp-z-label>Total omsætning</swp-z-label>
|
||||
<swp-z-amount>18.865,50 kr</swp-z-amount>
|
||||
</swp-z-row>
|
||||
<swp-z-row class="muted">
|
||||
<swp-z-label>Heraf moms (25%)</swp-z-label>
|
||||
<swp-z-amount>3.773,10 kr</swp-z-amount>
|
||||
</swp-z-row>
|
||||
</swp-z-section-content>
|
||||
</swp-z-section>
|
||||
</swp-z-row-grid>
|
||||
|
||||
<!-- Cash Section -->
|
||||
<swp-z-section>
|
||||
<swp-z-section-title>Kontanter</swp-z-section-title>
|
||||
<swp-z-section-content>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Startbeholdning</swp-z-label>
|
||||
<swp-z-amount>2.000,00 kr</swp-z-amount>
|
||||
</swp-z-row>
|
||||
<swp-z-row>
|
||||
<swp-z-label>+ Kontantsalg</swp-z-label>
|
||||
<swp-z-amount>3.540,00 kr</swp-z-amount>
|
||||
</swp-z-row>
|
||||
<swp-z-row>
|
||||
<swp-z-label>- Udbetalinger / Bilag</swp-z-label>
|
||||
<swp-z-amount>320,00 kr</swp-z-amount>
|
||||
</swp-z-row>
|
||||
<swp-z-row>
|
||||
<swp-z-label>- Udtaget til bank</swp-z-label>
|
||||
<swp-z-amount>2.000,00 kr</swp-z-amount>
|
||||
</swp-z-row>
|
||||
<swp-z-divider></swp-z-divider>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Forventet beholdning</swp-z-label>
|
||||
<swp-z-amount>3.220,00 kr</swp-z-amount>
|
||||
</swp-z-row>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Optalt beholdning</swp-z-label>
|
||||
<swp-z-amount>3.195,00 kr</swp-z-amount>
|
||||
</swp-z-row>
|
||||
<swp-z-row class="difference negative">
|
||||
<swp-z-label>Kassedifference</swp-z-label>
|
||||
<swp-z-amount>-25,00 kr</swp-z-amount>
|
||||
</swp-z-row>
|
||||
</swp-z-section-content>
|
||||
</swp-z-section>
|
||||
|
||||
<!-- Note + Approval Row -->
|
||||
<swp-z-row-grid>
|
||||
<swp-z-section>
|
||||
<swp-z-section-title>Note</swp-z-section-title>
|
||||
<swp-z-section-content>
|
||||
<swp-z-note>Difference skyldes vekslepenge givet forkert.</swp-z-note>
|
||||
</swp-z-section-content>
|
||||
</swp-z-section>
|
||||
|
||||
<swp-z-section>
|
||||
<swp-z-section-title>Godkendelse</swp-z-section-title>
|
||||
<swp-z-section-content>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Status</swp-z-label>
|
||||
<swp-z-value class="approved">
|
||||
<i class="ph ph-check-circle"></i>
|
||||
Godkendt
|
||||
</swp-z-value>
|
||||
</swp-z-row>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Afsluttet af</swp-z-label>
|
||||
<swp-z-value>Anna Jensen</swp-z-value>
|
||||
</swp-z-row>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Godkendt af</swp-z-label>
|
||||
<swp-z-value>Karina Knudsen</swp-z-value>
|
||||
</swp-z-row>
|
||||
<swp-z-row>
|
||||
<swp-z-label>Tidspunkt</swp-z-label>
|
||||
<swp-z-value>29. dec 2025 kl. 17:52</swp-z-value>
|
||||
</swp-z-row>
|
||||
</swp-z-section-content>
|
||||
</swp-z-section>
|
||||
</swp-z-row-grid>
|
||||
|
||||
<!-- Footer -->
|
||||
<swp-z-footer>
|
||||
<swp-z-generated>Genereret: 29. december 2025 kl. 17:55</swp-z-generated>
|
||||
<swp-z-ref>Afstemnings-ID: KA-2025-12-29</swp-z-ref>
|
||||
</swp-z-footer>
|
||||
</swp-z-report>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
|
||||
namespace PlanTempus.Application.Features.CashRegister.Pages;
|
||||
|
||||
public class ZReportModel : PageModel
|
||||
{
|
||||
public string ReportId { get; set; } = string.Empty;
|
||||
|
||||
public void OnGet(string id)
|
||||
{
|
||||
ReportId = id ?? string.Empty;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue