diff --git a/TrafagSalesExporter/Components/Layout/NavMenu.razor b/TrafagSalesExporter/Components/Layout/NavMenu.razor index d94ccf0..428aea1 100644 --- a/TrafagSalesExporter/Components/Layout/NavMenu.razor +++ b/TrafagSalesExporter/Components/Layout/NavMenu.razor @@ -19,6 +19,9 @@ @T("Soll/Ist Vergleich", "Actual/reference comparison") } + + @T("Finance Schulung", "Finance training") + @T("Manuelle Importe", "Manual imports") @@ -51,9 +54,14 @@ } - - @T("HR KPI (Login)", "HR KPI (login)") - + + + @T("HR Dashboard", "HR dashboard") + + + @T("HR KPI Schulung", "HR KPI training") + + @code { diff --git a/TrafagSalesExporter/Components/Pages/FinanceTraining.razor b/TrafagSalesExporter/Components/Pages/FinanceTraining.razor new file mode 100644 index 0000000..cb7d8c1 --- /dev/null +++ b/TrafagSalesExporter/Components/Pages/FinanceTraining.razor @@ -0,0 +1,218 @@ +@page "/finance-cockpit/schulung" +@inject TrafagSalesExporter.Services.IUiTextService UiText + +@T("Finance Schulung", "Finance training") + +@T("Finance Schulung", "Finance training") + + Ausführliche Anwenderunterlage für Finance-Keyuser, CFO/Finance-Leitung und Administratoren. Die Schulung beschreibt den + produktiven Ablauf vom manuellen Import bis zur zentralen Excel-Datei, inklusive Finance Summary, Finance Details und Soll/Ist Vergleich. + + + + + + Finance Cockpit Vorschau + + + + Verbindlich ist die Finance-Sicht: Finance Summary, Finance Details und Soll/Ist Vergleich müssen zusammen plausibel sein. + + + + RolleAufgabe + + + Finance KeyuserImporte bereitstellen, Standorte exportieren, Summen prüfen + CFO/Finance LeitungSoll/Ist-Abgleich freigeben und Abweichungen entscheiden + AdminStandorte, Mapping, Regeln, Settings und SharePoint konfigurieren + + + + + + + + + +

Das Finance Cockpit bereitet Sales- und Finance-Daten so auf, dass Länder, Systeme und unterschiedliche Spaltenlogiken in + einer zentralen Sicht vergleichbar werden. Die Rohdaten bleiben nachvollziehbar, die Finance-Spalten liefern die verbindliche + Abgrenzung für Summen und Soll/Ist-Vergleich.

+
    +
  • Finance Summary zeigt die aggregierten Summen nach Jahr, Land und Währung.
  • +
  • Finance Details zeigt die Detailzeilen, die zu diesen Summen führen.
  • +
  • Sales enthält die breitere Rohdatensicht inklusive Finance-Spaltenblock.
  • +
  • Soll/Ist Vergleich prüft die App-Daten gegen die gepflegten Referenzwerte.
  • +
+
+ + +
+
1Dateien bereitstellenSharePoint, lokaler Pfad oder Quellsystem
+
2Standort exportierenCentralSalesRecords je Standort ersetzen
+
3Zentrale Excel erzeugenSales, Summary und Details neu schreiben
+
4Summen prüfenSummary gegen Details aggregieren
+
5Soll/Ist freigebenAbweichungen dokumentieren
+
+

Nach jeder neuen Datei muss zuerst der betroffene Standort exportiert werden. Erst danach ist die zentrale Excel-Datei aktuell.

+
+ + + + + Keyuser Prozess + + + Systemarchitektur + + + +
+ + + +

Manuelle Importe ersetzen beim Standortexport den aktuellen Datenstand dieses Standorts in CentralSalesRecords. + Deshalb darf eine Delta-Datei nur dann verwendet werden, wenn die App sie zusammen mit einer Basisdatei liest.

+ + LandQuelleLieferlogikKonsequenz + + UK / EnglandSage Excel/CSV im Ordner UK_B1Jahresdatei plus DeltasDelta-fähig, weil Basis und Deltas zusammen gelesen werden + SpanienSage CSV / Manual ExcelVollfile erforderlichKeine Delta-Dateien verwenden + DeutschlandAlphaplan ExcelVollfile/Jahresfile erforderlichKeine Delta-Dateien verwenden + CH/ATSAP ODataQuellsystem wird neu gelesenKein manueller Delta-Prozess + FR/IT/US/INHANA/SAP B1/Sagedirekte QuelleStandortdaten werden aus Quelle aufgebaut + + + + Spanien und Deutschland müssen vollständige Dateien liefern. Eine einzelne Delta-Datei würde technisch den bisherigen Stand ersetzen und damit unvollständig werden. + +
+ + +

Der Standortexport ist der Schritt, der Rohdaten aus der jeweiligen Quelle in die zentrale Datenbank schreibt. Er liest nicht nur + eine Datei, sondern wendet auch Mapping, Transformationen und Finance-Regeln an.

+
    +
  • Bei SAP/HANA wird die definierte Quelle abgefragt.
  • +
  • Bei manuellen Excel-/CSV-Importen wird die hinterlegte Datei oder der hinterlegte Ordner verwendet.
  • +
  • Bestehende Zeilen des Standorts werden ersetzt, damit keine veralteten Dubletten stehen bleiben.
  • +
  • Fehler stehen in den Logs und müssen vor der zentralen Excel-Erzeugung geklärt werden.
  • +
+
+ + + + BlattZweckPrüfung + + SalesRohdaten plus normalisierte SpaltenLand, TSC, Beleg, Kunde, Wert, Währung + Finance Summaryverbindliche AggregationJahr, Land, Währung, Net Sales Actual + Finance DetailsDetailzeilen zur SummarySumme je Land muss Summary ergeben + Finance Filter HilfeHinweise zur Excel-PrüfungFilter und Pivot-Anleitung + + + +
+ + + +

Finance Summary ist die kompakte Sicht für Finance. Sie enthält nur Zeilen, die nach Finance-Regel eingeschlossen sind. + Entscheidend sind Finance-Jahr, Country Key, Währung und Net Sales Actual.

+
    +
  • Immer zuerst nach Jahr 2025 filtern, wenn der 2025-Abgleich geprüft wird.
  • +
  • Country Key ist die Finance-Länderlogik, nicht zwingend nur der sichtbare Rohdaten-Ländername.
  • +
  • Währung muss zum Referenzwert passen, zum Beispiel GBP für UK oder INR für Indien.
  • +
  • Included Rows zeigt, wie viele Detailzeilen in die Summe geflossen sind.
  • +
+
+ + +

Finance Details ist das Kontrollblatt für Rückfragen. Die Summe über Net Sales Actual in Finance Details muss + je Jahr, Land und Währung exakt mit Finance Summary übereinstimmen.

+ + PrüfungVorgehenErwartung + + LandessummeDetails nach Year, Country Key und Currency aggregierenidentisch zu Finance Summary + EinzelbelegInvoice Number, Position und Document Entry suchenBeleg nachvollziehbar + AusschlussSales-Blatt mit Finance Include vergleichenRegelgrund sichtbar + DublettenBelegkopfwerte und Positionen prüfenB1-Kopflogik wird nicht doppelt gezählt + + +
+ + +

Der Soll/Ist Vergleich nutzt dieselbe Finance-Reconciliation-Logik wie die zentrale Finance-Sicht. Er ist die Seite für + Freigabe, Abweichungsanalyse und Status je Land.

+ + StatusBedeutungAktion + + OKIstwert passt gegen Referenz innerhalb Toleranzfür Freigabe vormerken + PrüfenDifferenz vorhanden oder Regel noch nicht finalDetails und Länderregel prüfen + Keine DatenKein aktueller Stand in CentralSalesRecordsStandortexport oder Import prüfen + + +
+ + + + LandAktuelle HauptlogikHinweis + + DEAlphaplan NettoPreisGesamtX, GS negativ, Finance-AusschlüsseVollfile erforderlich + ESSage ImporteNeto, REC/Credit negativVollfile erforderlich + ITB1 Positions-Netto, Trafag Italia ausgeschlossen, DublettenlogikDetailprüfung wichtig + UKSage Netto in GBP, Credit Notes negativBasis plus Deltas möglich + FR/USB1 Sales Price/Value bevorzugtgegen CheckValue prüfen + INHauswährung INRReferenz in Local Currency + CH/ATSAP OData NetwrHcAT hat Referenz, CH aktuell ohne Sollwert + + + +
+ + + + + FehlerUrsacheMassnahme + + Zentrale Datei konnte nicht erzeugt werdenExcel/SharePoint-Datei gesperrt oder UploadfehlerDatei schliessen, Logs prüfen, ggf. Zeitstempeldatei verwenden + Land fehlt in SummaryStandort nicht exportiert oder keine Finance Include ZeilenStandortexport und Finance-Regeln prüfen + Summe passt nicht zum Sollfalsche Datei, falsches Jahr, Länderregel offenFinance Details aggregieren und Länderlogik prüfen + Zu wenige Zeilen nach ImportDelta statt Vollfile verwendetbei ES/DE vollständige Datei neu liefern lassen + Keine Verbindung zur QuelleCredentials, Netzwerk, HANA/SAP nicht erreichbarSettings und Logs prüfen + + + + + + + Nr.PrüfpunktOK + + 1Alle relevanten Standorte wurden nach letzter Dateiänderung exportiert + 2Zentrale Excel wurde danach neu erzeugt + 3Finance Summary stimmt aggregiert mit Finance Details überein + 4Soll/Ist Vergleich enthält keine unerwarteten Abweichungen + 5ES und DE wurden als Vollfile geliefert + 6Offene Länder- oder Regelentscheidungen sind dokumentiert + 7SharePoint/Excel-Datei ist nicht mehr gesperrt + + + + +
+ + + +@code { + private string T(string german, string english) => UiText.Text(german, english); +} diff --git a/TrafagSalesExporter/Components/Pages/HrKpiTraining.razor b/TrafagSalesExporter/Components/Pages/HrKpiTraining.razor new file mode 100644 index 0000000..f5a9d85 --- /dev/null +++ b/TrafagSalesExporter/Components/Pages/HrKpiTraining.razor @@ -0,0 +1,187 @@ +@page "/hr-kpi/schulung" +@inject TrafagSalesExporter.Services.IUiTextService UiText + +@T("HR KPI Schulung", "HR KPI training") + +@T("HR KPI Schulung", "HR KPI training") + + Ausführliche Anwenderunterlage für HR-Keyuser, HR-Leitung und Stellvertretungen. Die Seite erklärt nicht nur die Bedienung, + sondern auch die Reihenfolge, die Prüfpflichten und die fachliche Interpretation der wichtigsten Kennzahlen. + + + + + + HR KPI Cockpit Vorschau + + + + Diese Schulung ist als Arbeitsanleitung gedacht: erst Datenstatus prüfen, dann filtern, danach Kennzahlen interpretieren. + + + + RolleSchwerpunkt + + + HR KeyuserDaten bereitstellen, Plausibilität prüfen, Monatsauswertung erstellen + HR LeitungKennzahlen bewerten, Managementsicht freigeben, Massnahmen ableiten + IT/AdminZugriff, Pfad, Konfiguration und technische Fehler klären + + + + + + + + + +

Das HR KPI Cockpit bündelt operative HR-Auswertungen in einer geschützten Oberfläche. Es ersetzt keine fachliche Freigabe, + sondern liefert eine nachvollziehbare Sicht auf Headcount, Fluktuation, Absenzen, GLZ, Restferien und Datenqualität.

+

Die wichtigste Regel lautet: Eine Kennzahl ist nur so belastbar wie die Quelldateien, Filter und fachlichen Ausschlüsse, + die zu ihrer Berechnung verwendet wurden. Deshalb beginnt jede Auswertung mit dem Datenstatus.

+
    +
  • Vor jeder Weitergabe den Reiter Datenstatus öffnen.
  • +
  • Rote Datenqualitätsmeldungen zuerst klären.
  • +
  • Filter und Zeitraum in Bericht oder E-Mail nennen.
  • +
  • Für Managementberichte personenbezogene Detailtabellen vermeiden.
  • +
+
+ + +
+
1Dateien exportierenRexx/SAP-Quellen aktualisieren
+
2Datenordner prüfenPfad und Dateistand kontrollieren
+
3LadenCockpit neu aufbauen
+
4DatenqualitätWarnungen und Fehler lesen
+
5KPI freigebenInterpretieren und dokumentieren
+
+

Diese Reihenfolge verhindert, dass alte Dateien, leere Filter oder unvollständige Exporte als Managementzahlen verwendet werden.

+
+ + + + DateiInhaltPrüfung + + Saldiperstichdatum.xlsxAktive Mitarbeitende, Saldi, Ferien, Organisation, KostenstelleZeilenanzahl, Alter, Organisationsabdeckung + Exportkommengehen.xlsxArbeitszeitmodell, Sollzeit, GeburtsdatumFTE-/Sollzeit-Fallback prüfen + HR_KPI_Export.xlsxSAP-HR-Felder, Beschäftigungsgrad, Geschlecht, BU/NBU, PlanstelleJoin auf Personalnummer plausibilisieren + Abwesenheitinstunden.xlsxKrankheit kurz/lang, Unfall, StundenwerteStunden-zu-Tage-Logik und Zeitraum prüfen + Personalausgeschieden.xlsxAustritte, Austrittsart, AustrittsdatumAustrittsarten und Ausschlüsse kontrollieren + + + + PDF-Dateien sind für diese Auswertung ungeeignet. Die Dateien müssen als strukturierte Excel-Dateien vorliegen. + + +
+ + + +

Filter sind fachliche Eingriffe in die Sicht. Deshalb muss bei jeder Auswertung klar sein, ob ein Filter nur aktive Mitarbeitende, + Austritte oder beide Datenbereiche betrifft.

+ + FilterWirkungHinweis + + Austrittsjahrgrenzt Austritte nach Jahr einLeer bedeutet alle verfügbaren Jahre + Von/Bis Austritthat Vorrang vor AustrittsjahrFür Quartals- und Sonderauswertungen verwenden + Organisationwirkt auf aktive Mitarbeitende und passende AustrittsdatenLeere Organisationen sind Datenqualitätsthema + Kostenstellewirkt stabil auf aktive MitarbeitendeNicht jede Austrittsquelle enthält Kostenstellen sauber + GLZ/Restferien Ampelfokussiert operative PrüffälleNicht als Fluktuationsfilter interpretieren + Managementsichtreduziert personenbezogene DetailsFür Weitergabe und Ausdruck bevorzugen + + +
+ + +

Headcount ist die Basis fast aller HR-Kennzahlen. Sprünge gegenüber Vormonat oder Vorjahr müssen erklärbar sein, + zum Beispiel durch Eintritte, Austritte, Organisationswechsel oder geänderte Quelldateien.

+
    +
  • Headcount nach Organisation zählt eindeutige Personalnummern.
  • +
  • Leere Personalnummern werden nicht als verlässlicher Distinct-Headcount verwendet.
  • +
  • FTE kann aus SAP-Beschäftigungsgrad oder aus Arbeitszeitmodell/Sollzeit abgeleitet werden.
  • +
  • Bei unerwarteten Sprüngen zuerst Datenstatus und Join-Hinweise prüfen.
  • +
+
+ + +

Die Fluktuation wird aus ausgeschiedenen Personen berechnet. Relevant sind vor allem Arbeitnehmerkündigungen. + Praktikanten, befristete Verträge, Pensionierungen und Arbeitgeberkündigungen werden für die relevante Fluktuation ausgeschlossen.

+ + KennzahlBerechnungInterpretation + + Monatsfluktuationrelevante Austritte im Monat / Headcount des MonatsOperativer Frühindikator + Quartalsfluktuationrelevante Austritte im Quartal / durchschnittlicher Quartals-HeadcountStabiler als Monatswert + Jahresfluktuationrelevante Austritte im Jahr / durchschnittlicher Jahres-HeadcountManagement-KPI + Hochrechnungaktuelle Quartalsfluktuation x 4Nur als Prognose lesen + + +
+ + +

Absenzen werden nach Stunden/Tagen und Organisation ausgewertet. Die Krankenquote nutzt Krankheitstage im Verhältnis + zu FTE und Arbeitstagen. Unfalltage können je nach Quelle anders abgegrenzt sein und müssen daher vorsichtig interpretiert werden.

+
    +
  • Top-Absenzen dienen der operativen Prüfung, nicht der direkten Weitergabe.
  • +
  • Kritische Restferien zeigen Planungsbedarf oder Datenfehler.
  • +
  • Kritische GLZ-Saldi sollten mit Linienverantwortlichen geprüft werden.
  • +
  • Gelbe Ampeln sind Beobachtungspunkte, rote Ampeln brauchen aktive Klärung.
  • +
+
+
+ + + + + FehlerbildMögliche UrsacheMassnahme + + Keine DatenDatei fehlt, falscher Ordner, falscher DateinamePfad korrigieren und neu laden + Alter DateistandExport wurde nicht erneuertQuelle neu exportieren + Leere OrganisationJoin oder Stammdatenfeld fehltQuelldaten und Personalnummer prüfen + Sprung im Headcountneuer Export, Filter, StichtagswechselVorperiode und Dateistatus vergleichen + Ungewöhnliche AbsenzenStundenlogik, Zeitraum, DoppelerfassungEinzelzeilen und Quelle prüfen + + + + + +

HR-Daten enthalten personenbezogene Informationen. Für Berichte an Management oder Dritte ist die Managementsicht zu bevorzugen. + Detailtabellen mit Namen, Personalnummern oder Einzelfällen dürfen nur an berechtigte Personen gehen.

+ + Keine HR-Dateien per E-Mail weiterleiten und keine Kopien in ungeschützten Ordnern liegen lassen. + +
+ + + + Nr.PrüfpunktErledigt + + 1Alle HR-Quelldateien neu exportiert und im richtigen Ordner abgelegt + 2Cockpit neu geladen, keine roten Dateistatusmeldungen + 3Headcount gegen Vorperiode plausibilisiert + 4Fluktuationsausschlüsse fachlich geprüft + 5Absenzen, GLZ und Restferien auf Ausreisser geprüft + 6Filter, Zeitraum und Datenstand im Bericht dokumentiert + 7Managementsicht für Weitergabe verwendet + + + +
+
+ + + +@code { + private string T(string german, string english) => UiText.Text(german, english); +} diff --git a/TrafagSalesExporter/Components/Routes.razor b/TrafagSalesExporter/Components/Routes.razor index f31bb99..643b727 100644 --- a/TrafagSalesExporter/Components/Routes.razor +++ b/TrafagSalesExporter/Components/Routes.razor @@ -44,6 +44,7 @@ return path is "" or "management-cockpit" or "finance-cockpit/vergleich" or + "finance-cockpit/schulung" or "standorte" or "transformations" or "finance-rules" or diff --git a/TrafagSalesExporter/Components/TrainingSection.razor b/TrafagSalesExporter/Components/TrainingSection.razor new file mode 100644 index 0000000..227821d --- /dev/null +++ b/TrafagSalesExporter/Components/TrainingSection.razor @@ -0,0 +1,12 @@ +
+ @Title + @ChildContent +
+ +@code { + [Parameter] + public string Title { get; set; } = string.Empty; + + [Parameter] + public RenderFragment? ChildContent { get; set; } +} diff --git a/TrafagSalesExporter/Services/UiTextService.cs b/TrafagSalesExporter/Services/UiTextService.cs index 664821f..54e1e63 100644 --- a/TrafagSalesExporter/Services/UiTextService.cs +++ b/TrafagSalesExporter/Services/UiTextService.cs @@ -32,6 +32,7 @@ public sealed class UiTextService : IUiTextService ["Export Dashboard"] = "Panel de exportación", ["Management Analyse"] = "Análisis de gestión", ["Soll/Ist Vergleich"] = "Comparación real/referencia", + ["Finance Schulung"] = "Formación financiera", ["Manuelle Importe"] = "Importaciones manuales", ["Admin"] = "Administración", ["Standorte"] = "Sitios", @@ -41,6 +42,8 @@ public sealed class UiTextService : IUiTextService ["Logs"] = "Registros", ["Finance sperren"] = "Bloquear finanzas", ["HR KPI (Login)"] = "KPI RR. HH. (login)", + ["HR Dashboard"] = "Panel HR", + ["HR KPI Schulung"] = "Formación HR KPI", ["HR KPI enthaelt sensible Personaldaten. Bitte separat anmelden."] = "HR KPI contiene datos personales sensibles. Inicie sesión por separado.", ["HR-KPI-Zugang ist noch nicht konfiguriert. Bitte Username und PasswordHash in HrKpiAccess konfigurieren."] = "El acceso a HR KPI aún no está configurado. Configure Username y PasswordHash en HrKpiAccess.", ["HR KPI entsperren"] = "Desbloquear HR KPI", @@ -233,6 +236,7 @@ public sealed class UiTextService : IUiTextService ["Export Dashboard"] = "Dashboard esportazioni", ["Management Analyse"] = "Analisi di gestione", ["Soll/Ist Vergleich"] = "Confronto consuntivo/riferimento", + ["Finance Schulung"] = "Formazione finance", ["Manuelle Importe"] = "Import manuali", ["Admin"] = "Amministrazione", ["Standorte"] = "Sedi", @@ -242,6 +246,8 @@ public sealed class UiTextService : IUiTextService ["Logs"] = "Log", ["Finance sperren"] = "Blocca finance", ["HR KPI (Login)"] = "KPI HR (login)", + ["HR Dashboard"] = "Dashboard HR", + ["HR KPI Schulung"] = "Formazione KPI HR", ["HR KPI enthaelt sensible Personaldaten. Bitte separat anmelden."] = "HR KPI contiene dati personali sensibili. Effettuare un accesso separato.", ["HR-KPI-Zugang ist noch nicht konfiguriert. Bitte Username und PasswordHash in HrKpiAccess konfigurieren."] = "L'accesso a HR KPI non è ancora configurato. Configurare Username e PasswordHash in HrKpiAccess.", ["HR KPI entsperren"] = "Sblocca HR KPI", @@ -434,6 +440,7 @@ public sealed class UiTextService : IUiTextService ["Export Dashboard"] = "निर्यात डैशबोर्ड", ["Management Analyse"] = "प्रबंधन विश्लेषण", ["Soll/Ist Vergleich"] = "वास्तविक/संदर्भ तुलना", + ["Finance Schulung"] = "वित्त प्रशिक्षण", ["Manuelle Importe"] = "मैनुअल आयात", ["Admin"] = "प्रशासन", ["Standorte"] = "साइटें", @@ -443,6 +450,8 @@ public sealed class UiTextService : IUiTextService ["Logs"] = "लॉग", ["Finance sperren"] = "वित्त लॉक करें", ["HR KPI (Login)"] = "HR KPI (लॉगिन)", + ["HR Dashboard"] = "HR डैशबोर्ड", + ["HR KPI Schulung"] = "HR KPI प्रशिक्षण", ["HR KPI enthaelt sensible Personaldaten. Bitte separat anmelden."] = "HR KPI में संवेदनशील कर्मचारी डेटा है. कृपया अलग से साइन इन करें.", ["HR-KPI-Zugang ist noch nicht konfiguriert. Bitte Username und PasswordHash in HrKpiAccess konfigurieren."] = "HR KPI एक्सेस अभी कॉन्फ़िगर नहीं है. कृपया HrKpiAccess में Username और PasswordHash सेट करें.", ["HR KPI entsperren"] = "HR KPI अनलॉक करें", diff --git a/TrafagSalesExporter/docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx b/TrafagSalesExporter/docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx index 12ed63a..a328a2c 100644 Binary files a/TrafagSalesExporter/docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx and b/TrafagSalesExporter/docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx differ diff --git a/TrafagSalesExporter/docs/HR_KPI_ANLEITUNG_HR_2026-05-20.docx b/TrafagSalesExporter/docs/HR_KPI_ANLEITUNG_HR_2026-05-20.docx index a60a371..854e473 100644 Binary files a/TrafagSalesExporter/docs/HR_KPI_ANLEITUNG_HR_2026-05-20.docx and b/TrafagSalesExporter/docs/HR_KPI_ANLEITUNG_HR_2026-05-20.docx differ diff --git a/TrafagSalesExporter/docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md b/TrafagSalesExporter/docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md new file mode 100644 index 0000000..179e860 --- /dev/null +++ b/TrafagSalesExporter/docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md @@ -0,0 +1,101 @@ +# Manual-Import und Delta-Stand + +Stand: 2026-05-21 + +Diese Datei beschreibt, wie manuelle Excel-/CSV-Importe aktuell behandelt werden und wie neue Eintraege bzw. Delta-Dateien verarbeitet werden. + +## Uebersicht + +| Land / Standort | Quelle aktuell | Dateityp | Neue Eintraege / Deltas | Wie die App auswaehlt | Was beim Standortexport passiert | Finance-Wert | +| --- | --- | --- | --- | --- | --- | --- | +| UK / England `TRUK` | SharePoint-Ordner `Import/Finance/UK_B1` | Sage Excel `.xlsx` | Delta-faehig | Bei Jahreslauf: Jahresdatei fuer `TRUK` plus spaetere datierte Dateien `ddMMyy_TRUK.xlsx` oder `.csv` | Alle gefundenen Dateien werden gelesen und zusammen in `CentralSalesRecords` fuer `TRUK` ersetzt | `Sales Price/Value * Quantity`, Credit Notes negativ, GBP | +| Spanien `TRSE` / `TRES` | SharePoint-Datei oder Ordner / Sage CSV | `.csv` | Vollfile erforderlich, keine Deltas | Wenn Ordner: neueste passende Vollfile-Datei nach TSC/Datum | Datei wird gelesen, Standortdaten werden ersetzt | Sage `ImporteNeto`, REC/Abono/Credit negativ, EUR | +| Deutschland `TRDE` | Alphaplan Excel | `.xlsx` | Vollfile/Jahresfile erforderlich, keine Deltas | Pfad/Datei am Standort hinterlegt | Datei wird gelesen, DE-Zeilen ersetzen bisherigen DE-Stand | `NettoPreisGesamtX`, Finance-Regeln: Ausschluesse, GS negativ, 2025-Zwang | +| CH/AT `ZSCHWEIZ` | SAP OData | OData | Kein manueller Delta-Excel-Prozess | App liest SAP-Service | ZSCHWEIZ-Zeilen ersetzen bisherigen Stand | `NetwrHc`, CHF/EUR nach Land | +| FR / IT / US | HANA / SAP B1 | direkte DB | Kein manueller Delta-Excel-Prozess | App liest HANA nach Datum/Schema | Standortdaten werden neu aus HANA aufgebaut | B1 Positions-Netto, Credit Notes negativ | +| IN | HANA / Sage | direkte DB | Kein manueller Delta-Excel-Prozess | App liest HANA/Sage | Standortdaten werden neu aus Quelle aufgebaut | Hauswaehrung INR | + +## UK / England Delta-Mechanik + +UK ist aktuell am besten fuer laufende Delta-Lieferungen vorbereitet. + +| Punkt | Aktuelle Logik | +| --- | --- | +| Standort | `England`, `TSC = TRUK`, `SourceSystem = MANUAL_EXCEL` | +| SharePoint-Ordner | `Import/Finance/UK_B1` | +| Basisdatei | Jahresdatei im SharePoint-Ordner, z. B. mit Jahr `2025` im Namen | +| Delta-Dateien | Datierte Dateien wie `010526_TRUK.xlsx` oder `010526_TRUK.csv` | +| Auswahl | Jahresdatei zuerst, danach alle spaeteren Delta-Dateien im gleichen Jahr | +| Import | App liest alle ausgewaehlten Dateien in einem Lauf zusammen | +| Persistenz | `CentralSalesRecords` fuer `TRUK` werden ersetzt, nicht blind additiv angehaengt | +| Nach Delta-Lieferung | Delta-Datei in den Ordner legen, `TRUK` exportieren, danach zentrale Excel neu erzeugen | + +Wichtig: + +- Der Ordnername `UK_B1` ist nur technisch/historisch. Fachlich ist UK Sage, nicht SAP B1. +- UK nutzt grafisches Manual-Excel-Mapping. +- Der Finance-Wert wird aus `Sales Price/Value * Quantity` gebildet. +- Credit Notes werden anhand erkennbarer Sage-Typen negativ gesetzt. + +## Spanien + +Spanien nutzt technisch ebenfalls `MANUAL_EXCEL`, fachlich aber Sage CSV. + +Aktueller Implementierungsstand: + +- Datei/Ordner kann ueber SharePoint oder lokal hinterlegt werden. +- Bei SharePoint-Ordnern wird die neueste passende Datei nach TSC/Datum ausgewaehlt. +- Spanien muss immer den kompletten relevanten Datenstand liefern. +- Delta-Dateien sind fuer Spanien nicht vorgesehen. +- Praktisch gilt Spanien deshalb als Vollfile-Import. +- Beim Standortexport ersetzt die App den bisherigen Spanien-Stand in `CentralSalesRecords`. +- Wenn versehentlich nur eine Delta-Datei als neueste Datei im Ordner liegt oder direkt als Pfad hinterlegt wird, wuerde die App technisch nur dieses Delta lesen und damit den bisherigen Spanien-Stand ersetzen. +- Es gibt aktuell keine explizite Sperre, die eine Spanien-Delta-Datei erkennt und ablehnt. + +Finance-Logik: + +- `SalesPriceValue = ImporteNeto` +- `REC`, Abono bzw. Credit-Faelle werden negativ. +- Waehrung ist EUR. + +## Deutschland + +Deutschland nutzt Alphaplan Excel. + +Aktueller Implementierungsstand: + +- Standort `TRDE` ist als `MANUAL_EXCEL` vorbereitet. +- Quelle ist ein Jahres-/Vollfile, aktuell fuer 2025. +- Finance-Regeln erzwingen DE fachlich auf 2025. +- Deutschland muss immer den kompletten relevanten Datenstand liefern. +- Delta-Dateien sind fuer Deutschland nicht vorgesehen. +- Beim Standortexport ersetzt die App den bisherigen Deutschland-Stand in `CentralSalesRecords`. +- Wenn versehentlich nur eine Delta-Datei als Pfad hinterlegt wird, wuerde die App technisch nur dieses Delta lesen und damit den bisherigen Deutschland-Stand ersetzen. +- Es gibt aktuell keine explizite Sperre, die eine Deutschland-Delta-Datei erkennt und ablehnt. + +Finance-Logik: + +- `SalesPriceValue = NettoPreisGesamtX` +- Ausschluesse gemaess Finance-Regeln: + - `CustomerName = Trafag AG` + - `CustomerName contains Magnetic Sense` + - `InvoiceNumber = GS2510095` +- `InvoiceNumber starts with GS` wird negativ gerechnet. + +Offen: + +- Finance/Munir muss bestaetigen, welche Kundenlaender und Filter fuer den offiziellen DE-Istwert gelten. + +## Praktische Bedienreihenfolge + +1. Neue Datei oder Delta-Datei im richtigen Ordner bereitstellen. +2. In `Manuelle Importe` Pfad pruefen bzw. Standort aktiv lassen. +3. Standortexport fuer das betroffene Land ausfuehren. +4. Danach `Zentrale Datei neu erzeugen` starten. +5. Im zentralen Excel `Finance Summary` und `Finance Details` pruefen. + +## Merksatz + +Manual-Importe ersetzen pro Standort den aktuellen Stand in `CentralSalesRecords`. Delta-Dateien muessen daher beim Import zusammen mit der passenden Basisdatei gelesen werden. Das ist aktuell nur fuer UK vorgesehen. Spanien und Deutschland muessen immer Vollfiles liefern. + +Wichtig: Fuer Spanien und Deutschland ist das fachlich/prozessual so vorgesehen und durch den Ersetzungsmechanismus praktisch erforderlich. Eine technische Validierung, die Delta-Dateien fuer ES/DE aktiv blockiert, ist aktuell noch nicht eingebaut. diff --git a/TrafagSalesExporter/lastchange.md b/TrafagSalesExporter/lastchange.md index a8ad364..7effb40 100644 --- a/TrafagSalesExporter/lastchange.md +++ b/TrafagSalesExporter/lastchange.md @@ -1,5 +1,28 @@ # Last Change 2026-05-04 +## In-App-Schulungen und Finance-Detaildoku 2026-05-21 + +Geaendert: + +- Neue HTML-/Razor-Schulungsseite `HR KPI Schulung` unter `/hr-kpi/schulung`. +- Neue HTML-/Razor-Schulungsseite `Finance Schulung` unter `/finance-cockpit/schulung`. +- Navigation erweitert: + - `Finance Cockpit` enthaelt jetzt `Finance Schulung`. + - `HR KPI (Login)` ist jetzt eine Gruppe mit `HR Dashboard` und `HR KPI Schulung`. +- Finance-Schulung ist wie die restlichen Finance-Seiten ueber die Finance-Cockpit-Entsperrung geschuetzt. +- Schulungsseiten enthalten Tabellen, Checklisten, Prozessablauf und eingebettete Grafiken aus `wwwroot/training`. +- Sprachtexte fuer die neuen Menuepunkte in Englisch, Spanisch, Italienisch und Hindi ergaenzt. +- Word-Schulungsdokumente fuer HR und Finance neu erzeugt und Umlaut-Schreibweisen korrigiert. +- Neue Markdown-Doku `docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md` beschreibt den aktuellen Delta-/Vollfile-Stand: + - UK kann Basis plus Deltas lesen. + - Spanien und Deutschland muessen vollstaendige Dateien liefern. + - Manual-Importe ersetzen pro Standort den aktuellen Stand in `CentralSalesRecords`. + +Verifiziert: + +- `dotnet test TrafagSalesExporter.sln --verbosity minimal --no-restore -p:BaseOutputPath=.tmp_build\bin\ -p:BaseIntermediateOutputPath=.tmp_build\obj\` +- Normaler Debug-Build war lokal durch eine von Visual Studio/.NET Host gesperrte `bin\Debug\net8.0\BiDashboard.dll` blockiert. + ## Markdown-Doku und Anwenderdokus nachgezogen 2026-05-20 Geaendert: diff --git a/TrafagSalesExporter/wwwroot/training/finance_cockpit_preview.png b/TrafagSalesExporter/wwwroot/training/finance_cockpit_preview.png new file mode 100644 index 0000000..e930d03 Binary files /dev/null and b/TrafagSalesExporter/wwwroot/training/finance_cockpit_preview.png differ diff --git a/TrafagSalesExporter/wwwroot/training/hr_kpi_cockpit_preview.png b/TrafagSalesExporter/wwwroot/training/hr_kpi_cockpit_preview.png new file mode 100644 index 0000000..d17436d Binary files /dev/null and b/TrafagSalesExporter/wwwroot/training/hr_kpi_cockpit_preview.png differ diff --git a/TrafagSalesExporter/wwwroot/training/keyuser-prozess.svg b/TrafagSalesExporter/wwwroot/training/keyuser-prozess.svg new file mode 100644 index 0000000..8511a5a --- /dev/null +++ b/TrafagSalesExporter/wwwroot/training/keyuser-prozess.svg @@ -0,0 +1,279 @@ + + + + + + + + + + + + + Keyuser-Prozessdoku - Finance Export, zentrale Excel und Kontrolle + Stand 2026-05-20 | Zielgruppe: Finance Keyuser / Poweruser | Fokus: was wann in der App tun, nicht technische Implementierung + + + Kurzprinzip + 1. Einstellungen und Standorte pflegen -> 2. Länder-/Standortdaten importieren/exportieren -> 3. zentrale Excel erzeugen -> 4. Finance Soll/Ist prüfen -> 5. offene fachliche Abgrenzungen klären. + Die zentrale Excel und das Finance Cockpit verwenden dieselbe Basis: CentralSalesRecords. Für Finance immer die Spalten `Finance | ...` bzw. den Reiter `Soll/Ist Vergleich` verwenden. + + + + A. Vorbereitung / Stammdaten + + + B. Import und Export ausführen + + + C. Kontrolle und Finance-Abgleich + + + D. Fehler / Freigabe / Betrieb + + + + + 1 + Settings prüfen + Export Einstellungen öffnen + Datum-Filter ab z.B. 2025-01-01 + Timer nur aktivieren, wenn automatischer Lauf gewünscht ist + SharePoint nur bei vollständigen Credentials nutzen + + + + 2 + Standorte pflegen + Admin -> Standorte + aktive Länder kontrollieren + TSC, Land, SourceSystem prüfen + HANA/SAP: Schema, EntitySet, Mapping + Manual Excel: Datei/Pfad und Mapping + + + + 3 + Manual Excel Länder vorbereiten + UK: Sage Excel / SharePoint-Ordner UK_B1 + ES: Sage CSV / Manual Excel + DE: Alphaplan Excel, Datei hochladen oder Pfad setzen + nach Datei setzen: Header laden / Mapping prüfen + Standort erst aktivieren, wenn Datei erreichbar ist + + + + 4 + Optional: Transformationen + Admin -> Transformationen + nur ändern, wenn Feld-/Währungslogik bekannt ist + bestehende Regeln nicht spontan löschen + Änderung danach mit Einzelstandort testen + + + + 5 + Vor dem Lauf kurz prüfen + Sind die richtigen Standorte aktiv? + Sind manuelle Dateien aktuell? + Ist Datum-Filter korrekt? + SharePoint Upload gewünscht und konfiguriert? + Bei Unsicherheit zuerst Einzelstandort ausführen + + + + + 6 + Einzelstandort exportieren + Export Dashboard öffnen + Land/Standort starten + Statusmeldungen beobachten + bei Manual Excel wird Datei gelesen und gespeichert + + + + 7 + Was beim Standortexport passiert + Quelle wird gelesen: HANA, SAP OData oder Excel/CSV + Mapping/Transformationen werden angewendet + CentralSalesRecords für diesen Standort wird ersetzt + Standortdatei und Logs werden geschrieben + optional SharePoint Upload + + + + 8 + Alle Standorte exportieren + nur verwenden, wenn aktive Standorte bereit sind + läuft Standort für Standort + danach wird zentrale Excel automatisch erzeugt + bei Fehler: Logs prüfen und Einzelstandort wiederholen + + + + 9 + Zentrale Excel erzeugen + Button zentrale Datei / konsolidierter Export + liest alle CentralSalesRecords + erstellt Sales_All_yyyy-MM-dd.xlsx + enthält Blatt Sales und Finance Filter Hilfe + + + + 10 + Endexcel richtig filtern + Blatt Sales verwenden + Finance | Year = gewünschtes Jahr + Finance | Country Key = Land, z.B. IT oder DE + Finance | Include = TRUE + Finance | Net Sales Actual summieren + + + + + 11 + Soll/Ist Vergleich öffnen + Finance Cockpit -> Soll/Ist Vergleich + Jahr 2025 prüfen + Spalten: Ist, Soll, Differenz, Währung + Status OK/Prüfen beachten + + + + 12 + Management Analyse nutzen + für Plausibilität je Land/Jahr/Monat + Summenfeld bewusst wählen + zentrale Roh-Auswertung arbeitet auf CentralSalesRecords + bei Einzeldatei: Land/TSC Filter übernehmen + keine fachliche Freigabe nur aus Rohsummen ableiten + + + + 13 + Länderspezifische Prüfpunkte + IT: Trafag Italia ausgeschlossen + IT: doppelte Zeilen ohne Supplier country nur einmal + DE: Alphaplan, Kundenländer noch fachlich offen + UK/ES: Sage-Dateien, Gutschriften negativ + CH/AT: SAP OData DACH-Abgrenzung + + + + 14 + Excel gegen Cockpit abgleichen + Endexcel: Finance-Spalten filtern + Soll/Ist Vergleich: gleiche Land/Jahr-Sicht + Summen sollten gleich sein + Abweichung dokumentieren, nicht manuell korrigieren + + + + 15 + Freigabe vorbereiten + zentrale Excel ablegen/teilen + offene Länder markieren + Finance-Leiter entscheidet fachliche Regel + erst danach Regel fixieren + + + + + 16 + Wenn Export fehlschlägt + Logs öffnen + technische Fehlermeldung kopieren + bei Manual Excel: Pfad/Datei/Mapping prüfen + bei SAP/HANA: Verbindung/Schema/EntitySet prüfen + + + + 17 + Wenn zentrale Excel fehlt + prüfen, ob CentralSalesRecords vorhanden sind + mindestens ein Standort muss erfolgreich gelaufen sein + lokaler zentraler Pfad in Settings prüfen + SharePoint Upload separat von lokaler Erzeugung prüfen + Logs und AppEventLogs lesen + + + + 18 + Wenn Soll/Ist nicht passt + nicht direkt Code oder Excel manuell ändern + Quelle, Filter, Datum, Währung prüfen + Landesspezifische Regeln dokumentieren + Finance-Leiter um Bestätigung bitten + erst danach Mapping/Regel produktiv anpassen + + + + 19 + Betrieb / Server + IIS 500: Serveradmin/Event Viewer + .NET 8 Hosting Bundle prüfen + App Pool Rechte auf DB/logs prüfen + Microsoft Excel ist auf Server nicht nötig + + + + 20 + Monats-/Jahresabschluss + Exportdatum und Dateiversion notieren + offene Länder in Mail/Teams aufführen + freigegebene Regeln nicht rückwirkend überschreiben + neue Fachentscheide nachdokumentieren + + + + + + + + + + + + + + + Keyuser-Merksatz und offene Fachpunkte + Nie direkt Rohspalten wie `Sales Price/Value`, `Document Total LC` oder lokale Excel-Summen vergleichen, wenn es um CFO/Finance geht. Fuer den Abgleich immer `Soll/Ist Vergleich` oder im Endexcel die `Finance | ...`-Spalten nutzen. + DE offen: Alphaplan liefert `NettoPreisGesamtX`, aber Kundenländer/Filter müssen von Munir/Finance bestätigt werden. IT bestätigt: Trafag Italia ausschliessen und Blank-Supplier-Dubletten nur einmal zählen. + Bei Fehlern: Screenshot/Fehlertext, betroffener Standort, Uhrzeit, Datei/Pfad und letzter Schritt notieren. Danach Logs prüfen und erst dann technische Anpassung beauftragen. + + + + Vorbereitung + + Ausführen + + Prüfen + + Fehler/Fachentscheid + Quelle: App-Navigation, Services und aktuelle Finance-Doku, Stand 2026-05-20 + diff --git a/TrafagSalesExporter/wwwroot/training/systemarchitektur.svg b/TrafagSalesExporter/wwwroot/training/systemarchitektur.svg new file mode 100644 index 0000000..5b9bd63 --- /dev/null +++ b/TrafagSalesExporter/wwwroot/training/systemarchitektur.svg @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + + + + + TrafagSalesExporter / BiDashboard - technische Systemarchitektur + Stand 2026-05-20 | Produktive Applikation ohne Test-/Probeprogramme | ASP.NET Core Blazor Server, SQLite, SharePoint, SAP/HANA/OData/Manual Excel + + + Deployment und Laufzeit + Fuehrendes Projekt: TrafagSalesExporter.csproj + Publish-Ausgabe: BiDashboard.dll, keine EXE/AppHost + IIS URL: https://trch-webapp-bidashboard.trafagch.local/BiDashboard/ + Runtime: .NET 8 / ASP.NET Core Hosting Bundle + Publish-Ziel: \\trch-webapp-bidashboard.trafagch.local\BiDashboard$\ | web.config: dotnet .\BiDashboard.dll, stdout logs .\logs\stdout, out-of-process Diagnose + + + + Benutzer + Browser im Trafag-Netz + Finance / HR / Admin + + + Authentisierung + IIS / Windows Auth vorbereitet + AD-Rollen aktuell deaktivierbar + HR und Finance: eigene Logins + + + Blazor Server UI + Dashboard / Export Dashboard + Finance Vergleich / Management Analyse + HR KPI + Admin: Standorte, Settings, Transformationen, Logs + + + Startup / Background + DatabaseInitializationService + DatabaseSchemaMaintenanceService + TimerBackgroundService + + + SQLite + trafag_exporter.db + WAL/SHM auf Server + App-Pool braucht Modify + + + + + + + + + Applikationskern und Services + + + ExportOrchestrationService + Startet Einzel-/Alle-Exporte + Status fuer UI und Timer + Schreibt ExportLogs + + + SiteExportService + Quelle je Standort aufloesen + Adapter ausfuehren + Lokale/SharePoint-Ausgabe + + + DataSourceAdapterResolver + ConnectionKind entscheidet + HANA / SAP Gateway / Manual Excel + einheitliches SalesRecord-Modell + + + Transformationen + RecordTransformationService + TransformationCatalog + Copy, Replace, Currency, FirstNonEmpty + + + CentralSalesRecordService + Standortdaten ersetzen + Batch Insert in CentralSalesRecords + Grundlage fuer Cockpits und Endexcel + + + + + + + + + ConsolidatedExportService + Sales_All_yyyy-MM-dd.xlsx + zentraler Export aus CentralSalesRecords + + + ExcelExportService + Standortdateien und Endexcel + Finance-Spalten + Hilfe-Blatt + + + FinanceReconciliationService + Soll/Ist gegen FinanceReferences + Landeslogiken: IT, UK, ES, DE vorbereitet + + + ManagementCockpitService + Analysen aus Einzeldateien + Analysen aus CentralSalesRecords + + + HR KPI Services + HrKpiService + AccessService + liest HR-Excel-Dateien aus konfiguriertem Ordner + + + + + + + + + Datenquellen und Adapter + + + SAP HANA / BI1 / SAGE + HanaQueryService + HanaDataSourceAdapter + FR/IT/US B1, IN SAGE/HANA + Schema je Standort + + + SAP Gateway / OData + SapGatewayService + SapCompositionService + Quellen, Joins, Feldmappings + CH/AT ZSCHWEIZ + + + Manual Excel / CSV + ManualExcelImportService + lokal, UNC oder SharePoint Download + UK Sage, ES Sage CSV, DE Alphaplan + konfigurierbare Spaltenmappings + + + SharePoint / Graph + SharePointUploadService + Upload Standort-/Zentraldateien + Download Manual Imports + ClientId/TenantId/Secret aus Settings + + + Dateisystem / Output + lokaler Standardpfad ./output + optionale Standort-/Zentralpfade + Sales_TRxx_yyyy-MM-dd.xlsx + Sales_All_yyyy-MM-dd.xlsx + + + + + + + + + + + Persistenzmodell SQLite - wichtigste Tabellen + + + Sites + Standorte, TSC, Land + SourceSystem, ManualImportFilePath + + + SourceSystemDefinitions + ConnectionKind + SAP / BI1 / SAGE / MANUAL_EXCEL + + + Mappings + SapSource/Join/FieldMappings + ManualExcelColumnMappings + + + CentralSalesRecords + normalisierte SalesRecord-Zeilen + Basis fuer Endexcel/Cockpit + + + ExportSettings + Datumfilter, Timer, Pfade + Debug Live-Logging + + + SharePointConfigs + SiteUrl, ExportFolder + Tenant/Client/Secret + + + Finance-Tabellen + FinanceReferences + BudgetRates, IntercompanyRules + + + Logs + AppEventLogs + ExportLogs + + + + Betrieb, Security, fachliche Besonderheiten + + + Zugriff + Security.Enabled steuert globale AD-Policy + Finance/HR Cockpit eigene Passwortsperren + + + Serveranforderungen + .NET 8 Hosting Bundle + kein Microsoft Excel noetig + + + Finance-Sonderregeln + IT: Trafag Italia ausgeschlossen + DE: Alphaplan provisorisch vorbereitet + + + IIS Diagnose + diag.txt beweist korrekten Pfad + Event Viewer bei 500 pruefen + + + + UI + + Service + + SQLite/Persistenz + + externes System + + Security/Betrieb + Quelle: Codebasis TrafagSalesExporter, Stand 2026-05-20 +