@page "/finance-cockpit/vergleich" @using TrafagSalesExporter.Models @using TrafagSalesExporter.Services @inject IFinanceReconciliationService FinanceReconciliationService @inject IUiTextService UiText @T("Soll/Ist Vergleich", "Actual/reference comparison") @T("Soll/Ist Vergleich", "Actual/reference comparison")
@T("Net Sales Actuals 2025 Referenz", "Net sales actuals 2025 reference") check.xlsx / Power BI Stand 29.04.2026
@(_loading ? T("Lade...", "Loading...") : T("Aktualisieren", "Refresh"))
@T("Firma", "Company") @T("Ist 2025", "Actual 2025") @T("IC-Abzug", "IC deduction") @T("Ist exkl. IC", "Actual excl. IC") @T("Referenz", "Reference") @T("Summenfeld", "Value field") @T("Quelle", "Source") @T("Differenz", "Difference") @T("Diff exkl. IC", "Diff excl. IC") @T("Waehrung", "Currency") @T("Zeilen", "Rows") @T("Status", "Status") @context.Label @FormatAmount(context.ActualValue) @FormatAmount(context.IntercompanyDeduction) @FormatAmount(context.ActualValueExcludingIntercompany) @FormatAmount(context.ReferenceValue) @(string.IsNullOrWhiteSpace(context.ValueField) ? "-" : context.ValueField) @context.ReferenceSource @FormatAmount(context.Difference) @FormatAmount(context.DifferenceExcludingIntercompany) @(string.IsNullOrWhiteSpace(context.Currencies) ? "-" : context.Currencies) @(context.RowCount > 0 ? context.RowCount.ToString("N0") : "-") @if (context.Status == "OK") { OK } else if (context.Status == "Pruefen") { @T("Pruefen", "Check") } else { @T("Keine Daten", "No data") } @T("Keine Referenzdaten fuer aktive Standorte gefunden.", "No reference data found for active sites.") @T("Vergleich: Jahr 2025 aus Buchungsdatum, sonst Invoice Date, sonst Extraction Date. Das Summenfeld wird automatisch aus Sales Price/Value, DocTotalFC - VatSumFC oder DocTotal - VatSum gewaehlt; Belegkopfwerte werden pro DocEntry nur einmal gezaehlt. IC-Abzug ist eine Diagnose fuer den aktuellen Abgleich und veraendert die Originaldaten nicht.", "Comparison: year 2025 from posting date, otherwise invoice date, otherwise extraction date. The value field is selected automatically from Sales Price/Value, DocTotalFC - VatSumFC, or DocTotal - VatSum; document header values are counted only once per DocEntry. IC deduction is a diagnostic value for the current reconciliation and does not change the original data.")
@code { private List _netSalesReferenceRows = new(); private bool _loading = true; protected override async Task OnInitializedAsync() { await LoadAsync(); } private async Task LoadAsync() { _loading = true; _netSalesReferenceRows = await FinanceReconciliationService.BuildNetSalesReferenceRowsAsync(2025); _loading = false; } private static string FormatAmount(decimal? value) => value.HasValue ? value.Value.ToString("N2") : "-"; private string T(string german, string english) => UiText.Text(german, english); }