Files
Ai/TrafagSalesExporter/lastchange.md
T

81 KiB

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.

Lokaler Uebergangsserver bis IIS-Fix 2026-05-21

Zweck:

  • Falls der zentrale IIS-Server noch nicht erreichbar ist, kann die App voruebergehend auf dem Entwicklungs-PC laufen.
  • Andere Mitarbeitende greifen dann im Firmennetz ueber die IP des PCs zu.
  • Ausfuehrliche Betriebsdoku: docs/LOCAL_DEV_SERVER_UEBERGANG_2026-05-21.md.

Start auf dem Entwicklungs-PC:

dotnet run --urls "http://0.0.0.0:5000"

Nachtrag:

  • Properties/launchSettings.json wurde so angepasst, dass das Entwicklungsprofil zusaetzlich auf http://0.0.0.0:5000 lauscht.
  • Bei Start aus Visual Studio bzw. ueber das Projektprofil bleibt https://localhost:55415 lokal verfuegbar, Port 5000 ist aber zusaetzlich fuer andere PCs erreichbar.
  • Falls bereits eine alte Visual-Studio-Instanz laeuft, App stoppen und neu starten, damit die geaenderte URL-Bindung aktiv wird.

Zugriff von anderen PCs:

http://<PC-IP>:5000

Aktueller Stand vom 2026-05-21:

PC-IP im WLAN/Firmennetz: 172.16.9.185
Lokale Test-URL: http://172.16.9.185:5000

IP des PCs ermitteln:

ipconfig

Firewall-Regel einmalig in einer PowerShell "Als Administrator" anlegen:

netsh advfirewall firewall add rule name="TrafagSalesExporter local web 5000" dir=in action=allow protocol=TCP localport=5000 profile=domain,private

Am 2026-05-21 wurde eine allgemeine Port-5000-Regel angelegt und danach auf alle Firewall-Profile erweitert:

Regelname: Local Dev Web Port 5000
Aktiviert: Ja
Profile: Domaene, Privat, Oeffentlich
Protokoll: TCP
Lokaler Port: 5000
Aktion: Zulassen

Damit koennen spaeter auch andere lokale Entwicklungsprogramme auf Port 5000 von anderen Firmen-PCs erreicht werden, sofern sie an 0.0.0.0:5000 oder die konkrete PC-IP binden.

Pruefen:

netsh advfirewall firewall show rule name="TrafagSalesExporter local web 5000"

Spaeter wieder entfernen:

netsh advfirewall firewall delete rule name="TrafagSalesExporter local web 5000"

Hinweise:

  • Die Firewall-Regel bleibt nach einem Windows-Neustart aktiv.
  • Die Firewall-Regel bleibt normalerweise auch nach Windows-Updates aktiv.
  • Da die Regel auf Domaene, Privat und Oeffentlich gilt, ist Port 5000 auch abgedeckt, wenn AlwaysOnVPN oder Windows das Netzwerk nicht als Domaenenprofil erkennt.
  • Die App selbst startet nach einem Neustart nicht automatisch; dotnet run ... muss erneut gestartet werden.
  • Die PC-IP kann sich nach Neustart, WLAN-Wechsel oder DHCP-Erneuerung aendern; dann ipconfig ausfuehren und die neue URL weitergeben.
  • Der PC muss eingeschaltet bleiben und das PowerShell-Fenster muss offen bleiben.
  • Nur im Firmennetz verwenden, nicht oeffentlich freigeben.
  • Die lokale Uebergangs-URL ist bewusst HTTP, nicht HTTPS. Fuer diesen temporaeren internen Betrieb reicht das; lokales HTTPS waere moeglich, wuerde aber Zertifikats-/Trust-Aufwand fuer andere PCs verursachen.
  • Finance Cockpit und HR KPI bleiben ueber ihre App-internen Logins geschuetzt.
  • Wenn ein Finance-User im Buero die App ueber die VPN-IP des Entwicklungs-PCs trotzdem nicht erreicht, liegt es wahrscheinlich am AlwaysOnVPN-/Firmennetz-Routing. Das kann lokal auf dem PC nicht sicher freigeschaltet werden.

Serverbefund:

  • Der IIS-Server fordert beim HTTPS/TLS-Handshake ein Client-Zertifikat (RequestedClientCert=True).
  • Dadurch erreichen Requests weder diag.txt noch BiDashboard.dll.
  • Marco/IT muss in IIS die SSL Settings pruefen und Client Certificates auf Ignore oder hoechstens Accept setzen, nicht Require.

Adminbereich und Passwortwechsel 2026-05-21

Geaendert:

  • Finance Cockpit und HR KPI Login-Masken haben einen Bereich Passwort ändern.
  • Passwortaenderung verlangt Benutzername, aktuelles Passwort, neues Passwort und Wiederholung.
  • Neue Passwoerter muessen mindestens 8 Zeichen haben.
  • Gespeichert wird ein SHA-256-Hash in appsettings.json, kein Klartext.
  • Neuer interner Adminbereich /admin/sessions.
  • Der Adminbereich hat eine eigene App-interne Sperre AdminAccess.
  • Adminseite Aktive Logins zeigt App-interne HR-/Finance-Entsperrungen seit dem letzten App-Start:
    • Bereich
    • Login-Name
    • IP-Adresse, soweit aus dem Request verfuegbar
    • Entsperrt seit
    • Zuletzt gesehen
  • Hinweis: Da HR und Finance gemeinsame App-Logins verwenden, zeigt die Seite nicht zwingend die echte Person, sondern die verwendete App-Session.
  • Standorte-Tabelle zeigt jetzt Icons fuer den Quellentyp:
    • Upload-Datei = Manual Excel / CSV
    • Cloud Sync = SAP OData
    • Storage = HANA / Server

Initialer Adminzugang:

Username: admin
Initialpasswort: TrafagAdmin2026!

Nach erster Nutzung sollte das Adminpasswort ueber die Admin-Loginmaske geaendert werden.

Verifiziert:

  • dotnet build .\TrafagSalesExporter.csproj --no-restore --verbosity minimal -p:OutDir=C:\TMP\trafag_out\
  • Ergebnis: Build erfolgreich, nur bestehende MudBlazor-Analyzer-Warnungen zu Dense auf vorhandenen Controls.

Markdown-Doku und Anwenderdokus nachgezogen 2026-05-20

Geaendert:

  • Neue zentrale Markdown-Uebersicht docs/MD_DOKUMENTENSTATUS_2026-05-20.md erstellt.
  • Markdown-Dateien werden dort als aktuell fuehrend, Detaildoku oder historisch eingeordnet.
  • Alte Markdown-Dateien wurden nicht geloescht, weil sie Pruefwerte, Zwischenentscheide und Audit-Spuren enthalten.
  • HR- und Finance-Word-Anleitungen wurden visuell ueberarbeitet:
    • Titelbereich
    • Tabellen
    • Hinweisboxen
    • eingebettete neutrale Cockpit-Vorschaugrafiken
  • Neue Bilddateien:
    • docs/hr_kpi_cockpit_preview.png
    • docs/finance_cockpit_preview.png

Commits:

  • 0bff161 Document HR cockpit feature list
  • a044040 Improve cockpit user guide documents

Management Analyse auf Finance Summary ausgerichtet 2026-05-20

Geaendert:

  • Management Analyse hat jetzt einen fuehrenden Reiter Finance Summary.
  • Die Kennzahlen in diesem Reiter verwenden dieselbe FinanceRuleEngine wie das zentrale Excel-Blatt Finance Summary.
  • Filter fuer Jahr, Land und Waehrung wirken auf das Endergebnis, nicht nur auf eine Rohdatenansicht.
  • Die bisherige Management-Tabelle bleibt als separater Rohdaten-/Diagnose-Reiter erhalten.
  • Fuer DE 2026 wird kein Fehler mehr geworfen. Da DE/Alphaplan fachlich auf 2025 gezwungen ist, zeigt das Dashboard fuer DE 2026 einen leeren Zustand mit Hinweis.

Verifiziert:

  • Lokale Probe gegen DB und Excel zeigte, dass die alte Management Analyse wegen Rohwerten, anderem Datum und EUR-Umrechnung nicht mit der Finance Summary uebereinstimmte.
  • Tests: dotnet test TrafagSalesExporter.sln --verbosity minimal mit 77/77 bestanden.

Commit:

  • 610e771 Add finance summary view and HR guide

HR KPI Cockpit erweitert und Anwenderdokus erstellt 2026-05-20

Geaendert:

  • HR KPI Cockpit hat einen neuen Reiter Anleitung fuer HR-Anwenderinnen.
  • Der Datenordner fuer Rexx-/SAP-Dateien ist im Cockpit sichtbar und je Lauf anpassbar; dauerhaft ueber HrKpi:DataFolder in appsettings.json.
  • Dateistatus zeigt jetzt letzte Aenderung, Dateialter und Frischebewertung.
  • Neue Auswertungen: Ampeln, Periodenvergleich, Datenqualitaets-Hinweise, Austritte nach Typ/Organisation und Absenzen nach Organisation.
  • Managementsicht anonymisiert personenbezogene Details und reduziert die Anzeige auf aggregierte Kennzahlen.
  • Print-/PDF-Funktion im Cockpit ergaenzt.

Anwenderdokus:

  • docs/HR_KPI_ANLEITUNG_HR_2026-05-20.docx
  • docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx

Verifiziert:

  • Word-Dateien als gueltige DOCX-Pakete geprueft.
  • Tests: dotnet test TrafagSalesExporter.sln --verbosity minimal mit 77/77 bestanden.

Commit:

  • 06fb560 Expand HR KPI cockpit and add user guides

Workflow-Konsistenz fuer Keyuser verbessert 2026-05-20

Geaendert:

  • Export Dashboard zeigt jetzt Warnungen, wenn aktive Manual-Excel-Standorte noch keine Datei/Pfad hinterlegt haben.
  • Nach einem Einzelstandortexport wird darauf hingewiesen, dass die zentrale Excel separat neu erzeugt werden muss.
  • Dashboard markiert, wenn seit der letzten zentralen Excel ein Standortexport gelaufen ist.
  • Neuer Keyuser-Menuepunkt Manuelle Importe fuer DE/UK/ES-artige Excel-/CSV-Quellen:
    • Pfad/SharePoint-Referenz pflegen
    • Datei hochladen
    • Standort aktiv/inaktiv setzen
    • Pfad pruefen
  • Live-Status startet nicht mehr pauschal mit HANA Abfrage..., sondern quellenneutral bzw. fuer Manual Excel/SAP passender.
  • Zentrale Excel enthaelt ein neues Blatt Finance Summary mit Summen nach Jahr, Land und Waehrung.
  • Management Analyse ist klarer als Rohdaten-/Plausibilitaetssicht markiert.
  • Soll/Ist Vergleich ist klarer als verbindliche Finance-Sicht markiert.

Nachtrag:

  • Unter Manuelle Importe gibt es jetzt einen zweiten Reiter Anleitung.
  • Der Reiter zeigt den Keyuser-Ablauf grafisch:
    • Excel bereitstellen
    • speichern und aktivieren
    • Standort exportieren
    • zentrale Excel erzeugen
    • Finance pruefen
  • Zusatzhinweise markieren die richtige Reihenfolge, den offenen DE-Fachentscheid und dass auf dem Server kein Microsoft Excel benoetigt wird.

Bewusst nicht geaendert:

  • DE-Fachregel bleibt offen, bis Munir/Finance bestaetigt, welche Kundenlaender/Filter zum offiziellen DE-Ist gehoeren.

Keyuser Prozessdoku SVG 2026-05-20

Erstellt:

  • docs/KEYUSER_PROZESSDOKU_2026-05-20.svg

Inhalt:

  • Prozess von Vorbereitung ueber Standortexport, zentrale Excel und Finance-Soll/Ist bis Fehlerbehandlung.
  • Fokus auf Keyuser-Aktionen in der App: Settings, Standorte, Export Dashboard, Management Analyse, Soll/Ist Vergleich, Logs.
  • Enthaltene Fachpunkte: Manual Excel fuer UK/ES/DE, DE Alphaplan, IT-Sonderregel, Finance-Spalten im Endexcel.
  • Technische Implementierungsdetails und Testprogramme sind bewusst ausgeklammert.

Technische Systemarchitektur SVG 2026-05-20

Erstellt:

  • docs/SYSTEMARCHITEKTUR_TECHNISCH_2026-05-20.svg

Inhalt:

  • Laufzeit und IIS-Publish als BiDashboard.dll ohne EXE/AppHost.
  • Blazor-UI, Authentisierung, Start-/Background-Services.
  • Applikationskern: Export-Orchestrierung, Standortexport, Adapter, Transformationen, zentrale Tabelle.
  • Datenquellen: SAP HANA/BI1/SAGE, SAP Gateway/OData, Manual Excel/CSV, SharePoint.
  • Persistenzmodell mit wichtigsten SQLite-Tabellen.
  • Output-/SharePoint-Pfade, Finance-Sonderregeln, HR/Finance-Zugriff und Betriebspruefpunkte.
  • Test-/Probeprogramme sind bewusst nicht enthalten.

IT Finance-Methode fachlich bestaetigt 2026-05-20

Entscheid:

  • Fuer Italien gilt die vom Finance-Leiter bestaetigte Methode.
  • CustomerName enthaelt Trafag Italia wird aus dem IT-Finance-Ist ausgeschlossen.
  • Doppelte IT-Zeilen mit leerem Supplier country werden nur einmal gezaehlt.
  • Diese Regel gilt nur fuer IT.

Wichtig:

  • Die bisherige Kundenausschluss-Kombination passte 2025 numerisch naeher an den Sollwert, ist aber nicht die belastbare Methode fuer Folgejahre.
  • Der 2025-Zufallstreffer wird deshalb nicht als fachliche Regel weiterverwendet.

Gegen aktuelle DB getestet:

Soll IT:                         7'669'840.00
Bisherige IT-Summe:              7'669'641.47
Bisherige Differenz:                  -198.53
Trafag Italia Abzug in DB:           6'495.71
Dubletten-Abzug SupplierCountry leer:    0.00
Neue fachliche Methode:          7'663'145.76
Neue Differenz:                    -6'694.24

Umsetzung:

  • Services/FinanceReconciliationService.cs
  • Services/ExcelExportService.cs
  • Tests in TrafagSalesExporter.Tests/FinanceReconciliationServiceTests.cs

IIS Deployment Handoff 2026-05-19

Aktueller Deployment-/IIS-Stand wurde hier dokumentiert:

docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md

Kurzstand:

  • TrafagSalesExporter veroeffentlicht jetzt als BiDashboard.dll.
  • Keine EXE im Publish.
  • Publish-Ziel: \\trch-webapp-bidashboard.trafagch.local\BiDashboard$\.
  • Wahrscheinliche URL: https://trch-webapp-bidashboard.trafagch.local/BiDashboard/.
  • Diagnose-web.config ist aktiv mit httpErrors Detailed und stdoutLogEnabled=true.
  • logs-Ordner existiert auf dem Share, blieb nach dem 500 aber leer.
  • ACL-Befund: IIS_IUSRS hat nur ReadAndExecute; App braucht fuer SQLite/logs wahrscheinlich Modify.
  • Rechte konnten lokal nicht gesetzt werden: icacls auf dem Share endete mit Zugriff verweigert.

Naechster Schritt:

  • Server-Spezialist muss App-Pool-Identity bzw. IIS_IUSRS mit Modify auf Publish-Ordner, logs und trafag_exporter.db* berechtigen und danach App-Pool neu starten.

ASP.NET Publish direkt aus TrafagSalesExporter 2026-05-19

Entscheid:

  • TrafagSalesExporter bleibt das fuehrende Projekt.
  • Das separate BiDashboard-Projekt wird fuer den aktuellen Stand nicht benoetigt.
  • TrafagSalesExporter ist bereits eine ASP.NET/Blazor-Webanwendung (Microsoft.NET.Sdk.Web) und kann direkt veroeffentlicht werden.

Umsetzung:

  • OutputType=WinExe wurde aus TrafagSalesExporter.csproj entfernt.
  • Der BiDashboard-Verweis wurde aus TrafagSalesExporter.sln entfernt.
  • Das Publish-Profil Properties/PublishProfiles/FolderProfile.pubxml zeigt auf den Server-Publish-Pfad:
\\trch-webapp-bidashboard.trafagch.local\BiDashboard$

Wichtig fuer Deployment:

  • Die Anwendung wird nicht durch Doppelklick auf eine EXE gestartet.
  • Der Server-Spezialist soll die publish-Ausgabe als ASP.NET-Webanwendung/IIS-App betreiben.
  • Publish lokal:
dotnet publish .\TrafagSalesExporter.csproj -c Release

Finance Cockpit Login und Vergleichsnachtrag 2026-05-19

Nach dem Finance-Handoff vom 2026-05-18 wurden noch mehrere Schritte umgesetzt:

  • Haupt-App-Seite /finance-cockpit/vergleich wurde an die Logik und Darstellung der FinanceProbe angeglichen.
  • Leere Ist-Zeilen ohne belastbaren Ist-Wert werden im Finance-Vergleich ausgefiltert.
  • Die verwendeten Berechnungsformeln je Land wurden dokumentiert:
docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md
  • Finance Cockpit erhielt einen separaten Login, unabhaengig vom HR-KPI-Login.

Technischer Stand Finance-Cockpit-Login:

  • Konfiguration: FinanceCockpitAccess in appsettings.json
  • Benutzer im aktuellen Stand: finance
  • Passwort ist als SHA-256-Hash gespeichert.
  • Finance nutzt ein eigenes Passwort: Trafag-Finance-Cockpit-2026!.
  • HR-KPI nutzt weiterhin seine eigene HrKpiAccess-Konfiguration.
  • Umsetzung:
    • Services/FinanceCockpitAccessService.cs
    • Security/FinanceCockpitAccessOptions.cs
    • Components/FinanceCockpit/FinanceCockpitUnlockPanel.razor
    • Components/Routes.razor
    • Components/Layout/NavMenu.razor
    • Registrierung in Program.cs

AD-/Rollenstand:

  • Security.Enabled = false deaktiviert die globale AD-/Rollenpruefung fuer den Moment.
  • Die vorhandenen AccessGroups und AdminGroups bleiben in appsettings.json stehen und wurden nicht geloescht.
  • Wenn AD/Rollen wieder gelten sollen, Security.Enabled auf true setzen.
  • Finance- und HR-KPI-Sperren bleiben auch bei deaktivierter AD-Pruefung aktiv.

Relevante Commits:

8f1b1b8 Align main finance comparison with probe
f855e06 Filter empty actual finance rows
5c654ad Document finance formulas by country
9c544af Protect finance cockpit with login

Zentrale Excel Finance-Filter 2026-05-19

Die zentrale Laenderdatei Sales_All_yyyy-MM-dd.xlsx wurde fuer den CFO-/Finance-Abgleich erweitert.

Im Blatt Sales gibt es rechts einen zusammengehoerigen Finance-Spaltenblock:

Finance | Year
Finance | Country Key
Finance | Date
Finance | Net Sales Actual
Finance | Currency
Finance | Include
Finance | Source Value Field

Ziel:

  • Finance kann im zentralen Excel dieselben Ist-Summen erzeugen wie im Testprogramm.
  • Es muss nicht geraten werden, ob Land, TSC, Sales Price/Value, Document Total LC, posting date oder invoice date zu verwenden ist.

Filterregel fuer Finance:

Finance | Year = 2025
Finance | Country Key = gewuenschtes Land
Finance | Include = TRUE
Summe ueber Finance | Net Sales Actual

Nur in der zentralen Datei wird ein zweites Blatt erzeugt:

Finance Filter Hilfe

Dieses Hilfsblatt beschreibt die zusammengehoerigen Finance-Spalten und die konkrete Filter-/Summenlogik.

Verifikation:

  • Build erfolgreich:
dotnet build .\TrafagSalesExporter.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_finance_help_sheet\ --verbosity minimal
  • Preview-Excel erzeugt und geprueft:
.tmp_tools\GenerateConsolidatedPreview\out\Sales_All_2026-05-19.xlsx
  • Gepruefte Blaetter:
Sales | Finance Filter Hilfe
  • Finance-Spaltenblock im Blatt Sales:
36: Finance | Year
37: Finance | Country Key
38: Finance | Date
39: Finance | Net Sales Actual
40: Finance | Currency
41: Finance | Include
42: Finance | Source Value Field
  • Summenvergleich gegen FinanceReconciliationService fuer 2025:
Key Finance-Service Excel-Finance-Spalten Status
AT 3'438'121.37 3'438'121.37 MATCH
CH 43'521'390.82 43'521'390.82 MATCH
ES 3'082'320.18 3'082'320.18 MATCH
FR 1'471'218.44 1'471'218.44 MATCH
IN 750'936'591.38 750'936'591.38 MATCH
IT 7'669'641.47 7'669'641.47 MATCH
UK 3'533'710.09 3'533'710.09 MATCH
US 3'749'865.33 3'749'865.33 MATCH

Relevante Commits:

ebbc5a1 Add finance filter columns to consolidated export
b23f73e Add finance filter help sheet

UK_B1 Mapping / FinanceProbe Nachtrag 2026-05-11

Anlass:

  • In der FinanceProbe zeigte UK/England fuer TRUK nur 395'605.82 GBP Ist gegen 3'749'865.00 GBP Soll.
  • In den Varianten fehlten weitere sinnvolle Abgrenzungen; sichtbar war nur Positions-Netto (Sales Price/Value).
  • Der Standort soll weiterhin UK_B1 verwenden.

Technischer Befund:

  • Standort:
    • Land = England
    • TSC = TRUK
    • SourceSystem = MANUAL_EXCEL
  • Korrekte Quelle:
https://trafagag.sharepoint.com/sites/WorldwideBIPlatform/Import/Finance/UK_B1
  • Lokal waren fuer TRUK keine ManualExcelColumnMappings vorhanden.
  • Der Import lief deshalb ueber die Header-Automatik.
  • Die Header-Automatik behandelte Sales Price/Value als fertigen Positionswert.
  • In der UK-B1-Datei ist Sales Price/Value nach aktuellem Befund aber ein Stueckpreis.
  • Der Finance-Positionswert muss deshalb berechnet werden:
[Sales Price/Value] * [Quantity]

Probe auf den bereits geladenen UK-Daten:

Berechnung Wert
Bisher importiert: Summe SalesPriceValue 395'605.82 GBP
Rekonstruiert: Summe SalesPriceValue * Quantity 3'533'348.89 GBP
Soll check.xlsx 3'749'865.00 GBP
Restdifferenz nach Multiplikation ca. 216'516.11 GBP

Umgesetzte Codeaenderung:

  • Services/ManualExcelImportService.cs
    • grafische Manual-Excel-Mappings koennen jetzt einfache berechnete Quellen auswerten
    • aktuell benoetigte Syntax:
=[Header A]*[Header B]
  • Konstanten wie =GBP bleiben unveraendert gueltig

  • Services/DatabaseSeedService.cs

    • England/TRUK wird auf den SharePoint-Ordner Import/Finance/UK_B1 repariert, wenn der alte/falsche Pfad Import/Finance/England oder ein leerer Pfad vorhanden ist
    • fuer TRUK wird ein grafisches Manual-Excel-Mapping geseedet
    • wichtigste Zuordnung:
SalesPriceValue <- =[Sales Price/Value]*[Quantity]
SalesCurrency   <- =GBP
DocumentCurrency<- =GBP
CompanyCurrency <- =GBP
PostingDate     <- invoice date
InvoiceDate     <- invoice date
  • TrafagSalesExporter.Tests/ManualExcelImportServiceTests.cs
    • neuer Test fuer Multiplikationsausdruck im Manual-Excel-Mapping
    • prueft, dass 123.45 * 7 = 864.15 als SalesPriceValue importiert wird

Aktueller Verifikationsstand:

dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore -p:UseAppHost=false --verbosity minimal

Ergebnis:

  • Tests erfolgreich.
  • 59/59 Tests gruen.
  • Bekannte Warnungen bleiben die bestehenden MudBlazor-Analyzerwarnungen zu Dense.

Zusatzfix:

  • DatabaseSeedService wurde gehaertet.
  • Der UK-Mapping-Seed wird nur ausgefuehrt, wenn ManualExcelColumnMappings sauber auf Sites referenziert.
  • Dadurch wird der Initialisierungslauf nicht blockiert, wenn eine bestehende SQLite-DB gerade noch aus alten Reparaturtabellen wie Sites_repair_old bereinigt wird.

Naechster praktischer Schritt:

  • Lokale DB wurde direkt aktualisiert:
    • TRUK zeigt auf https://trafagag.sharepoint.com/sites/WorldwideBIPlatform/Import/Finance/UK_B1
    • TRUK hat 18 aktive Manual-Excel-Mapping-Zeilen
    • SalesPriceValue <= =[Sales Price/Value]*[Quantity]
  • FinanceProbe wurde auf http://127.0.0.1:5099 neu gestartet.
  • /finance antwortet mit HTTP 200.
  • /run/export/TRUK wurde angestossen, konnte aber wegen lokaler SharePoint-/Graph-Authentifizierung nicht neu laden:
ClientSecretCredential authentication failed
Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte. (127.0.0.1:9)

Damit gilt:

  • Code, Seed und lokale Mapping-Konfiguration sind vorbereitet.
  • Die zentrale Tabelle CentralSalesRecords enthaelt fuer UK noch den alten Importstand, bis der SharePoint-Zugriff wieder funktioniert und TRUK neu exportiert wird.
  • Aktueller alter Zentralstand bleibt deshalb:
    • 1'882 Zeilen
    • 395'605.82 GBP Summe SalesPriceValue
    • rekonstruiert 3'533'348.89 GBP ueber SalesPriceValue * Quantity

Offen fachlich fuer UK:

  • Nach neuem Export mit Mapping muss die Restdifferenz gegen check.xlsx erneut gemessen werden.
  • Wenn der Wert bei ca. 3.53 Mio. GBP liegt, UK-Datei auf Rabatte, Fracht, Nebenpositionen oder eine andere Netto-Spalte pruefen.
  • Wenn der Wert auf 3.75 Mio. GBP steigt, war das Mapping die Hauptursache.

Manual Excel/CSV SharePoint-Ordner und Quellordner-Export 2026-05-08

Umgesetzte Anpassungen:

  • Manual Excel/CSV Quellen erzeugen nun immer eine neue Exportdatei; die Quelldatei wird nicht als Exportdatei weitergereicht.
  • Lokale Manual-Dateien schreiben die neue Exportdatei in denselben lokalen Ordner wie die Quelldatei.
  • SharePoint-Manual-Dateien schreiben die neue Exportdatei in denselben SharePoint-Ordner wie die Quelldatei.
  • SharePoint-Referenzen ohne Dateiendung werden als Ordner behandelt.
  • Bei SharePoint-Ordnern sucht die App die neueste passende Excel-/CSV-Datei fuer den Standort.
  • Fuer datierte Dateien wird das Muster ddMMyy_TSC.xlsx bzw. ddMMyy_TSC.csv ausgewertet.
  • Beispiel England/UK:
    • Ordner: https://trafagag.sharepoint.com/sites/WorldwideBIPlatform/Import/Finance/UK_B1
    • 010526_TRUK.xlsx wird vor 010426_TRUK.xlsx gewaehlt.
    • Falls kein Datum aus dem Dateinamen gelesen werden kann, faellt die Auswahl auf das SharePoint-Aenderungsdatum zurueck.

Technischer Befund aus den Logs:

  • Spanien konnte die SharePoint-Datei lesen (4'341 Zeilen), fiel danach aber auf einen ungueltigen lokalen Pfad, weil die URL als lokale Exportdatei behandelt wurde.
  • Fehlerpfad war sinngemaess ...\https:\trafagag.sharepoint.com\...\Spain_Sales_2025.csv.
  • Deutschland hatte keinen manuellen Dateipfad hinterlegt.
  • England/TRUK zeigte lokal versehentlich auf die Deutschland-Alphaplan-Datei; die lokale DB wurde auf den UK_B1-Ordner korrigiert.

Codeaenderungen:

  • DataSourceFetchResult enthaelt optionale Overrides fuer lokalen Output-Ordner und SharePoint-Zielordner.
  • ManualExcelDataSourceAdapter erkennt SharePoint-Dateien vs. SharePoint-Ordner und waehlt bei Ordnern die neueste passende Datei.
  • SharePointUploadService kann den neuesten passenden Datei-Eintrag in einem SharePoint-Ordner aufloesen.
  • SiteExportService nutzt fuer Manual-Quellen den Quellordner als Zielordner.
  • StandortePageService erlaubt fuer Manual-Importe nun auch SharePoint-Ordnerreferenzen.
  • Standort-UI-Hilfetext wurde entsprechend angepasst.
  • DatabaseSeedService repariert England/TRUK auf den UK_B1-Ordner, wenn der Manual-Pfad leer ist.

Letzte technische Verifikation:

dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore --verbosity minimal

Ergebnis:

  • Tests erfolgreich, 55/55
  • Bekannte MudBlazor-Analyzerwarnungen zu Dense bleiben bestehen.

FinanceProbe erweitert fuer alle Finance-Referenzen 2026-05-08

Umgesetzte Anpassungen:

  • FinanceProbe zeigt nun alle aktiven FinanceReferences fuer 2025, auch wenn noch kein aktiver/importierter Standort dazu Daten liefert.
  • Damit werden auch Laender wie AT, CH, CN, CZ, GFS, JP, MS, MSA, PL und RU sichtbar als Keine Daten, bis Ist-Daten vorhanden sind.
  • Zusaetzliche Sektion Datenabdeckung je Standort:
    • Standort / TSC
    • Quellsystem und Anschlussart
    • Manual-Datei- oder SharePoint-Pfad
    • Aktivstatus
    • Anzahl 2025-Zeilen in CentralSalesRecords
    • Summe SalesPriceValue
    • Waehrungen
    • importierte Periode
    • letzter Exportstatus und Hinweis
  • Referenzschluessel-Erkennung wurde fuer CH/AT praezisiert:
    • AT, AUT, Oesterreich/Austria -> AT
    • CH, CHE, Schweiz/Switzerland -> CH
  • Damit koennen Zeilen aus ZSCHWEIZ mit LAND1 = AT fachlich Oesterreich zugeordnet werden.

Verifikation:

  • Tools/FinanceProbe Build erfolgreich.
  • Haupttests wurden mit separatem Output/Obj-Pfad ausgefuehrt, damit die laufende App nicht stoert.

FinanceProbe als KI-Steuerprogramm 2026-05-11

Die FinanceProbe ist bewusst als temporaeres Test-/KI-Steuerprogramm erweitert worden. Die produktive Blazor-App bleibt davon getrennt.

Neue Routen:

  • /run/export/{siteKey}
    • startet einen Standortexport nach Id, TSC oder Land
    • Beispiele: /run/export/TRUK, /run/export/Spanien, /run/export/7
  • /run/export-all
    • startet Export aller aktiven Standorte
    • erzeugt danach die zentrale Datei
  • /run/consolidated
    • erzeugt nur die zentrale Datei aus CentralSalesRecords

Nach jedem Lauf zeigt die FinanceProbe eine Run Summary:

  • neue Exportlogs seit Start
  • Finance-Abgleich gegen check.xlsx
  • Datenabdeckung je Standort

Zweck:

  • Exporte und Finance-Abgleich koennen fuer Tests von der KI per HTTP angestossen werden.
  • Die Funktion ist nicht als produktive Bedienoberflaeche gedacht und kann spaeter wieder entfernt werden.

Mapper-/Finance-Konfiguration konsolidiert 2026-05-07

Umgesetzte Aufraeumarbeiten:

  • Die doppelte SAP-OData/HANA-Mapping-Engine wurde entfernt.
  • Neuer gemeinsamer Service: MappedSalesRecordComposer.
  • SapCompositionService und HanaQueryService.GetMappedSalesRecordsAsync laden ihre Quellen weiterhin separat, nutzen danach aber denselben Composer fuer:
    • Primaerquelle
    • Left Joins
    • SapFieldMapping nach SalesRecord
    • Konstanten wie =SAP / =HANA
    • Datums-/Zahlenkonvertierung
  • Der alte HANA-B1-Pfad fuer OINV/INV1/ORIN/RIN1 bleibt bewusst bestehen, damit BI1/SAGE ohne grafisches Mapping weiter laufen.
  • Die SAP-Mapping-Normalisierung liegt nur noch in StandorteSapEditorService; StandortePageService ruft diesen Service beim Speichern auf.
  • Der tote Parameter im konsolidierten Export wurde entfernt. ConsolidatedExportService.ExportAsync() liest eindeutig aus CentralSalesRecords.
  • Manueller Import erlaubt in UI und Service jetzt .xlsx und .csv.

Finance-Konfiguration:

  • Neue Tabelle FinanceReferences fuer Soll-/check.xlsx-Referenzen je Jahr.
  • Neue Tabelle FinanceIntercompanyRules fuer 2nd-party/IC-Erkennung nach ScopeKey, Kundennummer oder Namensmarker.
  • Budgetkurse 2025 werden in CurrencyExchangeRates mit Notes = Budget 2025 geseedet.
  • FinanceReconciliationService liest Sollwerte, Budgetkurse und IC-Regeln aus der DB.
  • Config-Export/-Import enthaelt jetzt FinanceReferences und FinanceIntercompanyRules.

Noch bewusst offen:

  • HANA-B1-Spezialpfad und generischer HANA-Mapper laufen parallel. Das ist aktuell noetig fuer bestehende BI1/SAGE-Standorte ohne Mapping.
  • Manual Excel hat weiterhin Header-Automatik und grafisches Mapping. Naechster Aufraeumpunkt waere eine gemeinsame Import-Mapping-Engine.

Letzte technische Verifikation:

dotnet build .\TrafagSalesExporter.csproj --no-restore -p:UseAppHost=false --verbosity minimal
dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore --verbosity minimal

Ergebnis:

  • Build erfolgreich
  • Tests erfolgreich, 52/52
  • Bekannte MudBlazor-Analyzerwarnungen zu Dense bleiben bestehen.

SAP OData / ZSCHWEIZ / HANA Mapping 2026-05-07

Aktueller Entscheid:

  • ZSCHWEIZ wird nicht direkt als SAP-HANA-Spezialfall gelesen.
  • ZSCHWEIZ wird ueber den bestehenden SAP-OData/Gateway-Pfad gelesen.
  • Der grafische Quellen- und Feldmapper bleibt dafuer aktiv.
  • Feldinfos muessen nicht hart codiert werden, solange der Gateway-Service $metadata fuer das EntitySet liefert.

Quellsystem-Namen wurden zur Entwirrung geschaerft:

  • Code SAP bleibt technisch bestehen, DisplayName ist jetzt SAP OData.
  • Code SAP_HANA bleibt fuer direkte HANA-Tabellen/Views bestehen, DisplayName ist jetzt SAP HANA Tables/Views.
  • Bestehende Konfigurationen bleiben dadurch kompatibel.

Seed / Vorkonfiguration:

  • Standort ZSCHWEIZ / Land Schweiz/Oesterreich wird als inaktiver Standort angelegt bzw. repariert.
  • SourceSystem = SAP.
  • Quelle: Alias Z, EntitySet ZSCHWEIZSet.
  • Mapping ist grafisch editierbar und wird auf die Felder der Tabelle ZSCHWEIZ gesetzt.
  • Die Seed-/Repair-Logik zieht Quelle und Mapping auch bei bereits vorhandener ZSCHWEIZ-Konfiguration nach; manuelles Mapping ist nur noetig, wenn die Gateway-Feldnamen vom erwarteten ZSCHWEIZ-Layout abweichen.

Wichtig fuer die UI:

  1. App neu starten, damit Seed/Repair laeuft.
  2. Settings -> Quellsysteme: SAP sollte als SAP OData erscheinen.
  3. Standorte -> ZSCHWEIZ:
    • Quellsystem SAP OData (SAP)
    • SAP Service URL Override auf den finalen OData-Service fuer ZSCHWEIZ setzen, falls die zentrale SAP-URL noch auf ZPOWERBI_EINKAUF_SRV zeigt.
    • Entity Sets refreshen.
    • Quelle Z soll auf ZSCHWEIZSet zeigen.
    • Felder aus Quellen laden.
    • Mapping kontrollieren.

ABAP / SAP:

  • ABAP-Report liegt in report.abap.
  • Report fuellt Tabelle ZSCHWEIZ aus Buchungskreis 1100 = Schweiz und 1200 = Oesterreich.
  • LAND1 ist Reporting-Land aus Buchungskreis.
  • CUSTOMER_LAND ist Kundenland aus KNA1-LAND1.
  • Upsert erfolgt per MODIFY zschweiz FROM TABLE.

Letzte technische Verifikation:

dotnet build .\TrafagSalesExporter.csproj --no-restore -p:UseAppHost=false --verbosity minimal
dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore --verbosity minimal

Ergebnis:

  • Build erfolgreich
  • Tests erfolgreich, 50/50

Finance-Abgrenzung: Antworten Andreas 2026-05-07

Fachliche Vorgabe nach Rueckmeldung:

  • Net Sales Actuals werden in Hauswaehrung gerechnet.
  • Massgebend ist der Nettofakturawert.
  • Umrechnung nach CHF erfolgt mit Budgetkursen, nicht mit Tageskursen.
  • Umrechnung/Summierung soll pro Artikel bzw. Belegposition erfolgen.
  • Indien wird in INR betrachtet.
  • Italien wird in Hauswaehrung betrachtet; Intercompany-/2nd-party-Abgrenzung wird separat angeschaut.
  • UK wird in GBP betrachtet.
  • Gutschriften haben eigene Rechnungsnummern/Rechnungspositionen und sollen ueber Artikelnummern/Positionen behandelt werden.
  • Intercompany soll im zweiten Schritt als 2nd-party/3rd-party-Klassifikation pflegbar werden.
  • Genannte 2nd-party/Intercompany-Indikatoren: Trafag, Magnetic Sense/Magnets Sense, Gesellschaft fuer Sensorik; Nummern/Uebersetzungen koennen je Land abweichen.

Budgetkurse 2025 fuer CHF-Ausweis:

USD/CHF = 0.85
EUR/CHF = 0.95
GBP/CHF = 1.13
CHF/INR = 90.91
CHF/CZK = 25.64
PLN/CHF = 0.22
CHF/JPY = 156.25

Umsetzung in der FinanceProbe:

  • Auswahl der Ist-Variante bevorzugt nun Nettofakturawert Hauswaehrung (DocTotal - VatSum).
  • Sales Price/Value bleibt als Vergleichsvariante sichtbar.
  • Zusaetzlicher Kandidat Nettofakturawert Hauswaehrung -> CHF Budget 2025.
  • Referenz in der Oberflaeche wird als check.xlsx Sollwert bezeichnet, nicht mehr als fuehrende Power-BI-Referenz.
  • Intercompany-Anzeige wurde fachlich als 2nd-party/IC beschriftet; Regeln werden jetzt in FinanceIntercompanyRules geseedet und per Config exportiert/importiert.

Finance Probe / Sales-Abgrenzung

Ziel der heutigen Arbeit:

  • separate kleine Pruef-GUI fuer Finanz-/Sales-Abgrenzungen bauen
  • moeglichst viel Logik aus dem Hauptprogramm wiederverwenden
  • verschiedene Summenlogiken pro Land nebeneinander sichtbar machen
  • gegen check.xlsx vergleichen

Wichtiges fachliches Verstaendnis nach Klaerung im Chat:

  • check.xlsx kommt von Rhino und enthaelt die Soll-Zahlen von Andreas.
  • Aus den Landessystemen kommt der Ist-Wert.
  • Power BI soll in der fachlichen Kommunikation nicht als fuehrende Referenz genannt werden.
  • Ziel ist nicht, zufaellig die passendste technische Variante zu nehmen, sondern je Land/System die fachlich korrekte Abgrenzungslogik zu klaeren.

Commit

Rollback-Commit fuer die Finance-Probe wurde erstellt:

15dec06 Add finance reconciliation probe

Dieser Commit enthaelt gezielt:

  • Services/FinanceReconciliationService.cs
  • Tools/FinanceProbe/FinanceProbe.csproj
  • Tools/FinanceProbe/Program.cs
  • DI-Registrierung in Program.cs
  • Dashboard nutzt den ausgelagerten Finance-Service
  • TrafagSalesExporter.csproj schliesst Tools/** aus dem Hauptprojekt aus
  • TrafagSalesExporter.sln enthaelt das neue Tool-Projekt

Andere bereits vorhandene Worktree-Aenderungen wurden nicht mitcommitted.

Neues Tool

Neues separates Probe-GUI:

Tools/FinanceProbe

Start:

dotnet run --project Tools\FinanceProbe\FinanceProbe.csproj --urls http://localhost:55417

URL:

http://localhost:55417/finance

Aktueller Start im Chat:

  • Probe-GUI wurde auf localhost:55417 gestartet
  • HTTP 200 bestaetigt

Hinweis Netzwerk:

  • Start mit localhost ist nur lokal auf dem Laptop erreichbar.
  • Andere im Trafag-Netz koennen es so normalerweise nicht ueber Laptop-IP oeffnen.
  • Fuer Netzwerkzugriff waere http://0.0.0.0:55417 noetig.
  • Probe-GUI hat aktuell keine Authentifizierung, daher nicht unkontrolliert im Netzwerk freigeben.

FinanceReconciliationService

Neue wiederverwendbare Logik:

Services/FinanceReconciliationService.cs

Interface:

IFinanceReconciliationService

Aktuelle Funktion:

Task<List<NetSalesReferenceRow>> BuildNetSalesReferenceRowsAsync(int year = 2025)

Logik:

  • liest CentralSalesRecords
  • filtert Jahr ueber InvoiceDate, fallback ExtractionDate
  • gruppiert pro Referenz-Key/Land
  • berechnet Kandidaten:
    • SalesPriceValue
    • DocTotalFC - VatSumFC
    • DocTotal - VatSum
  • Belegkopfwerte werden vor Summierung dedupliziert:
    • bevorzugt TSC + DocumentType + DocumentEntry
    • fallback TSC + DocumentType + InvoiceNumber
  • erkennt aktuell Intercompany nur pragmatisch fuer IT/TRIT anhand bekannter Kunden
  • liefert pro Kandidat Wert, Waehrung, IC-Wert, Differenzen

FinanceProbe Darstellung

Die Tabelle zeigt aktuell:

  • Status
  • Firma
  • gewaehlte Abgrenzung
  • Ist-Waehrung
  • Ist 2025
  • Referenz-Waehrung
  • Referenz
  • Excel LC
  • Excel CHF
  • Excel Power BI
  • Excel Status
  • Differenz
  • Differenz ohne IC
  • Waehrung
  • Zeilen
  • Varianten aufklappbar

Wichtig:

  • Die Bezeichnung Power BI ist in der Probe-Oberflaeche noch sichtbar, weil check.xlsx diese Spalte enthaelt.
  • Fachlich soll in Kommunikation gegen Andreas aber check.xlsx / Soll-Zahl genannt werden, nicht Power BI als fuehrende Referenz.
  • Eine sinnvolle naechste UI-Bereinigung waere, die Spalte/Labels in der Probe auf Excel Sollwert oder Rhino Sollwert umzubenennen.

Probe-Output vom 2026-05-04 09:55

Zusammenfassung:

8 Standorte
4 OK
1 Pruefen
3 Keine Daten
Excel-Referenzen gelesen: 17

Befunde:

CH

  • Keine Ist-Daten
  • keine sichtbare Soll-Zahl

DE

  • Keine Ist-Zeilen aus Systemdaten
  • Soll/LC aus Excel vorhanden:
    • Referenz ca. 3'635'923
    • Excel LC 3'635'922.91
    • Excel CHF 3'407'000.00

Offen:

  • Quelle fuer DE klaeren
  • evtl. MANUAL_EXCEL oder noch nicht exportiert

ES

  • Keine Ist-Zeilen aus Systemdaten
  • Soll/LC aus Excel vorhanden:
    • Referenz ca. 3'102'334
    • Excel LC 3'102'333.61
    • Excel CHF 2'907'000.00

Offen:

  • Quelle fuer ES klaeren
  • evtl. MANUAL_EXCEL oder noch nicht exportiert

FR

  • Status OK
  • gewaehlte Abgrenzung: Sales Price/Value
  • Ist-Waehrung: EUR
  • Ist: 1'471'218.44
  • Soll/Referenz: 1'471'218.00
  • Differenz: 0.44
  • Zeilen: 1649

Befund:

  • FR passt praktisch exakt mit Sales Price/Value in EUR.

Offene Frage an Andreas:

  • Ist Sales Price/Value in EUR fuer FR fachlich korrekt?

IN

  • Status OK
  • gewaehlte Abgrenzung: Sales Price/Value
  • Ist-Waehrungen: CHF, EUR, GBP, INR, JPY, USD
  • Ist: 750'936'591.38
  • Soll/Referenz: 750'936'591.00
  • Differenz: 0.38
  • Zeilen: 4000

Befund:

  • IN passt rechnerisch fast exakt, aber Waehrungen sind gemischt.

Offene Frage an Andreas:

  • Ist diese gemischte Summe fachlich korrekt?
  • Oder muss nach CHF umgerechnet bzw. nach Waehrung getrennt werden?

IT

  • Status Pruefen
  • gewaehlte Abgrenzung: DocTotal - VatSum
  • Ist-Waehrung: EUR
  • Ist: 11'866'896.53
  • Soll/Referenz LC: 7'669'840.00
  • Differenz: 4'197'056.53
  • Differenz ohne IC: 3'733.67
  • Zeilen: 15883

Befund:

  • IT liegt ohne IC-Abzug stark daneben.
  • Mit erkanntem IC-Abzug ist die Differenz sehr klein.

Offene Frage an Andreas:

  • Soll IT mit Intercompany-Abzug gerechnet werden?
  • Falls ja: nach welchen Kunden/Kriterien erkennt Finance Intercompany?

UK

  • Status OK
  • gewaehlte Abgrenzung: Sales Price/Value
  • Ist-Waehrung: USD
  • Ist: 3'749'865.33
  • Soll/Referenz: 3'749'865.00
  • Differenz: 0.33
  • Zeilen: 942

Befund:

  • UK passt praktisch exakt mit Sales Price/Value in USD.

Offene Frage an Andreas:

  • Ist USD fuer UK korrekt?
  • Oder muss fuer offizielles Reporting nach CHF umgerechnet werden?

US

  • Status OK
  • gewaehlte Abgrenzung: Sales Price/Value
  • Ist-Waehrung: USD
  • Ist: 3'749'865.33
  • Soll/Referenz: 3'749'865.00
  • Differenz: 0.33
  • Zeilen: 942

Befund:

  • US zeigt denselben Ist-Wert wie UK.
  • Das wirkt auffaellig und sollte fachlich/technisch geprueft werden.

Offene Frage:

  • Welche Quelle und Logik ist fuer US korrekt?
  • Ist US im aktuellen System richtig zugeordnet?

Word-Datei fuer Andreas

Erstellt:

FINANZ_OFFENE_FRAGEN_ANDREAS.docx

Inhalt:

  • kurze Mail an Andreas
  • check.xlsx als Soll-Zahl von Andreas/Rhino formuliert
  • Power BI fachlich nicht als Referenz genannt
  • bisherige Befunde pro Land:
    • FR
    • IN
    • IT
    • UK
    • US
    • DE / ES
  • offene Fragen zu:
    • Waehrung und CHF-Umrechnung
    • Umsatzdefinition
    • Periodenabgrenzung
    • Gutschriften/Storno
    • Intercompany
    • Entscheid-Tabelle pro Land

Markdown-Datei fuer Andreas

Erstellt/angepasst:

FINANZ_FRAGEN_ANDREAS.md

Aktuelle Formulierung:

  • check.xlsx kommt von Rhino und enthaelt Soll-Zahlen von Andreas.
  • Landessysteme liefern Ist-Werte.
  • offen ist, welche fachliche Logik pro Land/System zur Soll-Zahl fuehren soll.
  • Power BI ist nicht mehr als fuehrende Referenz formuliert.

Verifikation

Ausgefuehrt:

dotnet build .\TrafagSalesExporter.csproj --verbosity minimal
dotnet build .\Tools\FinanceProbe\FinanceProbe.csproj --verbosity minimal
dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --verbosity minimal

Ergebnis:

  • Hauptprojekt baut erfolgreich
  • FinanceProbe baut erfolgreich
  • Tests erfolgreich
  • 48/48 Tests gruen

Bekannte Warnungen:

  • NU1900 im Probe-Build, weil NuGet-Sicherheitsdaten wegen Netzwerk/nuget.org nicht geladen werden konnten
  • bekannte MudBlazor Analyzer-Warnungen zu Dense

Offene sinnvolle naechste Schritte

  1. In der Probe-UI Power BI-Labels fachlich bereinigen:
    • z. B. Excel Sollwert / Rhino Sollwert
  2. Andreas' Antworten in eine Konfiguration ueberfuehren:
    • Land/System
    • Summenlogik
    • System-Waehrung
    • CHF-Umrechnung ja/nein
    • Periodendatum
    • IC-Regel
  3. DE/ES Quelle klaeren:
    • aktuell keine Ist-Daten
  4. US/UK Doppelwert pruefen:
    • US zeigt denselben Ist-Wert wie UK
  5. IT Intercompany-Regel fachlich bestaetigen
  6. Wenn Regeln bestaetigt sind:
    • Finance-Probe erweitert anzeigen
    • spaeter produktiv ins Hauptprogramm uebernehmen

Nachtrag 2026-05-04: Excel-Spaltenmapper fuer manuelle Land-Excel-Dateien

Ausloeser:

  • Deutschland hat ein eigenes Excel-Beispiel geliefert.
  • Das Format entspricht nicht dem bisherigen Standard-Excel-Import.
  • Ziel war, nicht fuer jedes Land statischen Spezialcode zu schreiben, sondern die Spaltenzuordnung konfigurierbar zu machen.

Beispielhafte deutsche Spalten:

  • Export-Datum
  • Firma
  • Belegnummer
  • Position
  • ArtikelBezeichnung
  • Warengruppen-Bezeichnung
  • Anz. VE
  • Lieferanten Nummer
  • Name Lieferant
  • Land Lieferant
  • AdressNummer-Kunde
  • Name Kunde
  • Land Kunde
  • Branche
  • EinstandsPreis
  • Währung
  • BestellNummer
  • NettoPreisEinzelX
  • NettoPreisGesamtX
  • Versandbedingung
  • AdressNummer_V
  • Belegdatum-Rechnung
  • BelegDatum Auftrag
  • ArtikelNummer

Wichtige fachliche/technische Interpretation fuer Deutschland:

  • NettoPreisGesamtX wird als SalesPriceValue verwendet.
  • Währung wird fuer SalesCurrency, DocumentCurrency, CompanyCurrency und StandardCostCurrency verwendet.
  • Belegdatum-Rechnung wird als InvoiceDate verwendet.
  • BelegDatum Auftrag wird als OrderDate verwendet.
  • ArtikelNummer wird als Material verwendet.
  • Kommentar-/Info-Zeilen ohne echte Position und ohne Betrag werden beim Import ignoriert.

Neue Datenstruktur

Neue Tabelle / neues Model:

ManualExcelColumnMappings
Models/ManualExcelColumnMapping.cs

Felder:

  • SiteId
  • TargetField
  • SourceHeader
  • IsRequired
  • IsActive
  • SortOrder

Zweck:

  • Pro Standort kann festgelegt werden, welche Excel-Spalte auf welches internes SalesRecord-Feld gemappt wird.
  • Konstanten sind moeglich, wenn SourceHeader mit = beginnt, z. B. =Manual Excel.

Geaenderte Hauptlogik

Geaendert:

Services/ManualExcelImportService.cs

Neue Logik:

  • Beim manuellen Excel-Import werden zuerst aktive ManualExcelColumnMappings des Standorts geladen.
  • Wenn Mapping-Zeilen vorhanden sind, wird dieses Mapping verwendet.
  • Wenn kein Mapping vorhanden ist, laeuft weiterhin die bisherige statische Standarderkennung.
  • Damit bleiben bestehende manuelle Excel-Imports abwaertskompatibel.

Wichtig:

  • Der Mapper ersetzt nicht die fachliche Finanzlogik.
  • Er sorgt nur dafuer, dass fremde Excel-Spalten korrekt in die internen Felder geschrieben werden.
  • Welche Summe spaeter fuer Finance gilt, muss weiterhin fachlich entschieden werden.

Geaenderte Standort-UI

Geaendert:

Components/Pages/Standorte.razor
Services/StandortePageService.cs

In der Standortbearbeitung fuer manuelle Excel-Standorte gibt es neu:

  • Bereich Excel-Spaltenmapping
  • Button Spalten aus Excel laden
  • Button Auto-Match
  • Button Mapping hinzufuegen
  • Tabelle mit:
    • Zielfeld
    • Excel-Spalte / Konstante
    • Pflicht
    • Aktiv
    • Loeschen

Auto-Match erkennt aktuell u. a. die deutschen Spalten und schlaegt passende Zuordnungen vor.

Config-Export / Import

Geaendert:

Services/ConfigTransferService.cs
Models/ConfigTransferPackage.cs

Neu:

  • ManualExcelColumnMappings werden im Konfigurationspaket mit exportiert.
  • Beim Import werden die Mapping-Zeilen wieder hergestellt.

Damit kann die Konfiguration spaeter zwischen Umgebungen mitgenommen werden.

Datenbank-Schema

Geaendert:

Data/AppDbContext.cs
Services/DatabaseInitializationService.SchemaSql.cs
Services/DatabaseSchemaMaintenanceService.cs

Neu:

  • DbSet<ManualExcelColumnMapping>
  • CREATE TABLE ManualExcelColumnMappings
  • Schema-Wartung legt die Tabelle nachtraeglich an, falls sie in einer bestehenden DB fehlt.
  • Beim Loeschen eines Standorts werden dessen manuelle Excel-Mappings mit geloescht.

Deutschland lokal eingerichtet

Am 2026-05-04 wurde Deutschland in der lokalen Datenbank direkt ohne UI eingerichtet.

Lokale DB:

C:\Users\koi\source\repos\Ai\TrafagSalesExporter\trafag_exporter.db

Gefundener/konfigurierter Standort:

Id=8
TSC=TRDE
Land=Deutschland
SourceSystem=MANUAL_EXCEL

Aktive Mapping-Zeilen:

26

Konkrete Zuordnung fuer DE:

ExtractionDate           <- Export-Datum
InvoiceNumber            <- Belegnummer
PositionOnInvoice        <- Position
Material                 <- ArtikelNummer
Name                     <- ArtikelBezeichnung
ProductGroup             <- Warengruppen-Bezeichnung
Quantity                 <- Anz. VE
SupplierNumber           <- Lieferanten Nummer
SupplierName             <- Name Lieferant
SupplierCountry          <- Land Lieferant
CustomerNumber           <- AdressNummer-Kunde
CustomerName             <- Name Kunde
CustomerCountry          <- Land Kunde
CustomerIndustry         <- Branche
StandardCost             <- EinstandsPreis
StandardCostCurrency     <- Währung
PurchaseOrderNumber      <- BestellNummer
SalesPriceValue          <- NettoPreisGesamtX
SalesCurrency            <- Währung
DocumentCurrency         <- Währung
CompanyCurrency          <- Währung
Incoterms2020            <- Versandbedingung
SalesResponsibleEmployee <- AdressNummer_V
InvoiceDate              <- Belegdatum-Rechnung
OrderDate                <- BelegDatum Auftrag
DocumentType             <- =Manual Excel

Wichtig fuer Rollback/Umzug:

  • Diese DE-Einrichtung wurde direkt in trafag_exporter.db gespeichert.
  • Die DB-Aenderung ist kein Git-Commit-Inhalt, weil SQLite-Datenbankdaten normalerweise nicht sauber versioniert werden.
  • Der Code fuer den Mapper ist aktuell im Worktree vorhanden, aber noch nicht committed.
  • Wenn die DB zurueckgerollt oder neu erstellt wird, muss das DE-Mapping erneut ueber die UI, Config-Import oder ein Hilfsskript eingerichtet werden.

Tests

Ergaenzt:

TrafagSalesExporter.Tests/ManualExcelImportServiceTests.cs

Neuer Test:

ReadSalesRecordsAsync_Uses_Configured_Manual_Excel_Mapping_For_German_Headers

Der Test prueft:

  • deutsches Excel-Headerformat
  • Kommentarzeile ohne echte Position wird ignoriert
  • echte Belegposition wird importiert
  • NettoPreisGesamtX mit Schweizer Tausenderzeichen wird korrekt als Dezimalzahl gelesen
  • Waehrung EUR wird in Sales-/Document-/Company-Currency uebernommen
  • Rechnungsdatum und Auftragsdatum werden korrekt gelesen

Letzter bekannter Teststand nach Mapper-Arbeit:

dotnet build .\TrafagSalesExporter.csproj --verbosity minimal
dotnet build .\Tools\FinanceProbe\FinanceProbe.csproj --verbosity minimal
dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --verbosity minimal --no-restore

Ergebnis:

  • Hauptprojekt baut erfolgreich
  • FinanceProbe baut erfolgreich
  • Tests erfolgreich
  • 49/49 Tests gruen

Bekannte Warnung:

  • NU1900, weil NuGet-Sicherheitsdaten wegen Netzwerk/nuget.org nicht geladen werden konnten

Aktueller Laufstand

Die Haupt-App war nach der DE-Konfiguration erreichbar:

http://localhost:55416/standorte
HTTP 200

Hinweis:

  • Der Browser kann geschlossen sein, waehrend der Serverprozess weiterlaeuft.
  • Wenn ein Build wegen gesperrter Dateien fehlschlaegt, zuerst den laufenden TrafagSalesExporter-Prozess beenden.

Noch offen nach Excel-Spaltenmapper

  1. Mapper-Code committen, sobald der aktuelle Stand als Rollback-Punkt gesichert werden soll.
  2. In der Standort-UI Deutschland oeffnen und visuell pruefen, ob die 26 Mapping-Zeilen angezeigt werden.
  3. Mit echtem DE-Excel einen Importlauf testen.
  4. Danach Finance-Probe erneut pruefen:
    • ob DE nicht mehr Keine Daten ist
    • ob SalesPriceValue gegen Soll aus check.xlsx passt
  5. Falls weitere Laender eigene Excel-Formate liefern:
    • nicht statischen Code bauen
    • neues Mapping pro Standort pflegen
  6. Klaeren, ob DE fachlich NettoPreisGesamtX in EUR als Ist-Wert verwenden soll oder ob CHF-Umrechnung noetig ist.

Nachtrag 2026-05-05: FinanceProbe Ampel, Spanien v2 und Deutschland-Beispielfile

FinanceProbe Management-Ansicht

Das Testprogramm Tools/FinanceProbe wurde fuer das Finance-Meeting erweitert.

URL lokal:

http://localhost:55417/finance

Neue Ansicht:

  • Meeting Ampel 2025
  • Ampel pro Land:
    • Gruen: Zahl passt rechnerisch gegen Referenz
    • Gelb: Differenz oder fachliche Abgrenzung offen
    • Grau: keine belastbaren Importdaten
  • Anzeige pro Land:
    • Ist
    • Soll / Referenz
    • Differenz
    • passender technischer Wert
    • Waehrung / CHF-Hinweis
    • kurze fachliche Begruendung

Wichtig zur Waehrung:

  • Wenn Quelle CHF liefert, kann CHF direkt gezeigt werden.
  • Wenn Quelle EUR, USD, GBP, INR usw. liefert, ist es Mandanten-/Originalwaehrung.
  • CHF-Ausweis braucht dann eine separate FX-Regel bzw. offiziellen Umrechnungskurs.

Spanien v2 im Testprogramm

Spanien wird im FinanceProbe nicht mehr nur als normaler Zentralimport betrachtet.

Direkter CSV-Check:

sagespain/v2/Spain_Sales_2025.csv

Gelesene Werte:

  • Zeilen: 4'341
  • Ist 2025 / SalesPriceValue: 3'082'320.18
  • Waehrung: EUR
  • Soll aus check.xlsx: 3'102'333.61
  • Differenz: -20'013.43

Status:

  • Ampel: Gelb / Pruefen
  • Grund: Export technisch lesbar, aber Differenz zu check.xlsx offen.

Offen fuer Spanien:

  • korrekte Datumsabgrenzung (FechaFactura vs. Alternativen)
  • Serien REG, LAT, PRO, REC
  • Behandlung von Gutschriften / REC
  • offizielle Sage-Auswertung mit identischem Filter zur Sollzahl

Deutschland-Beispielfile

Neues File im Projektordner:

DE_Beispiel_Export_Daten.xlsx

Hinweis:

  • Der Benutzer hatte zuerst .xls genannt, vorhanden ist .xlsx.
  • Das File ist als Beispielfile zu behandeln, nicht als finale Jahresdatei.

Technischer Check:

  • relevante Spalte: NettoPreisGesamtX
  • Mapping-Ziel: SalesPriceValue
  • Betragszeilen: 2
  • Summe NettoPreisGesamtX: 8'290.70
  • Waehrung: EUR

Einbau im FinanceProbe:

  • eigener Abschnitt Germany Excel sample check
  • zeigt Datei, Zeilenzahl, Summe und Referenz aus check.xlsx
  • markiert explizit, dass die Differenz nur Sample-Charakter hat
  • in der Management-Ampel wird Deutschland weiter nicht als OK gewertet, solange kein finaler DE-Jahresexport/import vorliegt

Fachliche Interpretation fuer Deutschland:

  • Das Mapping funktioniert technisch.
  • NettoPreisGesamtX kann als Kandidat fuer SalesPriceValue gelesen werden.
  • Das Beispielfile darf nicht gegen die Jahresreferenz 3'635'922.91 als finale Ist-Zahl verwendet werden.
  • Fuer das Meeting ist die Aussage:
    • Deutschland-Format ist technisch verstanden.
    • Finale DE-Zahl fehlt noch.
    • Benoetigt wird ein vollstaendiger DE-Jahresfile 2025 oder ein bestaetigter Importlauf.

Verifikation 2026-05-05

Ausgefuehrt:

dotnet build .\Tools\FinanceProbe\FinanceProbe.csproj --verbosity minimal --no-restore
dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --verbosity minimal --no-restore

Ergebnis:

  • FinanceProbe Build erfolgreich
  • Tests erfolgreich
  • 50/50 Tests gruen
  • Web UI liefert HTTP 200
  • FinanceProbe enthaelt:
    • Meeting Ampel 2025
    • Spain CSV direct check
    • Germany Excel sample check

Financechef-Regeln abgesichert 2026-05-11

Umgesetzt:

  • PostingDate als eigenes Feld in SalesRecord und CentralSalesRecord.
  • Zentrale SQLite-Tabelle erhaelt PostingDate automatisch per Schema-Maintenance.
  • HANA-B1 liest DocDate als Buchungsdatum und TaxDate als Fakturadatum.
  • Excel/CSV-Import erkennt posting date, Buchungsdatum und LineRegistrationDate.
  • Finance-Abgleich filtert das Jahr nach PostingDate, mit Fallback auf InvoiceDate und danach ExtractionDate.
  • Finance-Abgleich bevorzugt Nettofakturawert in Hauswaehrung positionsweise.
  • Wenn lokale Belegkopfwerte pro Position wiederholt wirken, wird die Ueberzaehlung erkannt:
    • B1-Positionswert SalesPriceValue wird dann als Positions-Netto bevorzugt.
    • deduplizierter Belegkopfwert bleibt als Kandidat sichtbar.
  • Intercompany wird weiterhin separat ausgewiesen und nicht still entfernt.

Verifikation:

dotnet build .\Tools\FinanceProbe\FinanceProbe.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\verify_probe_out\ --verbosity minimal
dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore -p:UseAppHost=false --verbosity minimal

Ergebnis:

  • FinanceProbe Build erfolgreich.
  • Tests erfolgreich: 57/57.
  • Bekannte externe Warnung: NuGet-Sicherheitsdaten konnten wegen fehlendem Zugriff auf api.nuget.org nicht geladen werden.
  • Lokaler Smoke-Test /finance: HTTP 200.
  • Hinweis: Ein bestehender dotnet-Prozess sperrt den normalen FinanceProbe-Build-Output. Der Smoke-Test wurde deshalb ohne Rebuild direkt aus dem vorhandenen Output gestartet.

Finance-Entscheide dokumentiert 2026-05-11

Neue Doku:

docs/FINANCE_ENTSCHEIDE.md

Enthaelt die verbindlichen Financechef-Entscheide:

  • Hauswaehrung ist fuehrend.
  • CHF-Umrechnung ueber Budgetkurse.
  • Aggregation pro Artikel/Belegposition.
  • Net Sales Actuals = Nettofakturawert.
  • Jahresabgrenzung ueber Buchungsdatum.
  • Gutschriften separat ueber Beleg-/Positionslogik.
  • Intercompany/2nd-party separat ausweisen.
  • Indien fachlich immer in INR.

FinanceProbe / UK Nachdokumentation 2026-05-11

Ergaenzt in docs/FINANCE_ENTSCHEIDE.md:

  • Pruefstand der Finance-Regeln.
  • Testergebnis 58/58.
  • UK/England-Befund:
    • TRUK
    • 1'881 geladene Zeilen
    • 395'605.82 GBP Ist
    • 3'749'865.00 Soll
    • Differenz -3'354'259.18
    • Interpretation: vermutlich Teilmenge/Monatsfile statt Jahreswert.
  • Offener UK-Entscheid: Monatsdateien aufsummieren oder kumulierten Jahresfile lesen.

Ergaenzt in docs/PROGRAMM_DIAGRAMME.md:

  • FinanceProbe-Start und Hinweis zu Console-Logging.
  • Hinweis zu DLL-Sperren durch Visual Studio bzw. alte dotnet-Prozesse.

HR KPI Cockpit und Filterkorrektur 2026-05-13

Ergaenzt:

  • Separater HR-KPI-Reiter /hr-kpi.
  • Dashboard-Tabs fuer Ueberblick, Fluktuation, Absenzen, Zeit/Ferien, Mitarbeitende und Datenstatus.
  • Fluktuationsvisuals: Gauge, Funnel, Donut, Organisation-Balken und Monatsbalken.
  • Architektur-Cleanup: HrKpiService als Fassade, Build-Pipeline in Services/HrKpi/HrKpiDashboardBuilder.cs, UI-Tabs in Components/HrKpi/HrKpiDashboardTabs.razor.
  • Konfigurierbare HR-Dateiquellen ueber HrKpi in appsettings.json.
  • HR-KPI-Regressionstests.

Korrigiert:

  • Austrittsjahr ist jetzt optional.
  • Leeres Austrittsjahr bedeutet: alle Austritte.
  • Von/Bis-Austritt hat Vorrang vor Austrittsjahr.
  • Die Austrittsjahr-Auswahl wird aus den vorhandenen Austrittsdaten aufgebaut.
  • Austrittsjahr ist beim Start leer statt automatisch aktuelles Jahr.
  • Fluktuation nutzt nur vergleichbare Filter auf Mitarbeitenden- und Austrittsdaten.
  • Kostenstelle, GLZ und Restferien filtern nicht die Fluktuation, weil die Austrittsdatei diese Felder nicht stabil enthaelt; das Cockpit zeigt dazu einen Hinweis.
  • Bei Mehrjahresauswahl wird die Fluktuation als Auswahlwert statt als Jahreswert gefuehrt.
  • Fluktuationsvisuals zaehlen distinct nach Personalnummer.
  • Fluktuationsraten nutzen nun durchschnittlichen Headcount statt Stichtags-Headcount: Monat, Quartal und Jahr folgen formeln.docx.
  • Krankenquote nutzt den FTE-Nenner: Krankheitstage / (FTE * 21 Tage).
  • Rexx-Austrittsarten mit Umlaut werden korrekt normalisiert: Kündigung AN zaehlt als Arbeitnehmerkuendigung, Kündigung AG als Arbeitgeberkuendigung-Ausschluss, Ruhestand als Pensionierung.

Nachdokumentation:

docs/HR_KPI_NACHDOKU_2026-05-13.md

Verifikation:

  • dotnet build .\TrafagSalesExporter.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_app\ --verbosity minimal
  • dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_tests\ --verbosity minimal
  • Ergebnis: 69/69 Tests bestanden.
  • Kontrollwert C:\temp\Personalausgeschieden.xlsx: 104 Austritte total, 42 Kündigung AN, 34 Kündigung AG, 33 fluktuationsrelevant.
  • Kontrollwert neuer Nenner: Avg Headcount 2025 211.3, Fluktuation Jahr effektiv 15.6%.

FinanceProbe Finanzchef-Uebersicht 2026-05-13

Ergaenzt:

  • Neuer Reiter Finanzchef Uebersicht in Tools/FinanceProbe.
  • Kompakte Soll/Ist-Sicht nur fuer offene Laender.
  • Spalten reduziert auf Status, Land, Waehrung, Ist, Soll, Abweichung und Pruefgrund.
  • Bestehende Detailtabellen bleiben unveraendert fuer Analyse/Nachvollzug.

Verifikation:

  • dotnet build .\Tools\FinanceProbe\FinanceProbe.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_financeprobe\ --verbosity minimal
  • Ergebnis: Build erfolgreich, 0 Fehler.
  • Hinweis: NU1900 wegen nicht erreichbarer NuGet-Sicherheitsdaten im eingeschraenkten Netzwerk.

Finance CFO Word-Kurzbericht 2026-05-13

Erstellt:

  • docs/FINANCE_CHEF_SUMMARY_2026-05-13.docx
  • Kurzbericht fuer Finance/CFO mit Kernaussagen und Massnahmen.
  • Enthalten: FR, IN, US, AT, ES, UK/EN, DE, CH, IT.
  • Ausgeschlossen: GFS und reine 0-/Leer-Faelle ohne operative Aussage.

Inhaltlicher Fokus:

  • Freigabefaehige Laender: FR, IN, US.
  • Kleine/mittlere Klaerung: AT, ES.
  • Hohe Prioritaet: UK/EN, DE, CH.
  • Kritisch: IT wegen groesster Abweichung und offener Berechnungsart.

Finance CFO Word-Kurzbericht Erweiterung 2026-05-15

Ergaenzt:

  • Aktuelle Fassung: docs/FINANCE_CHEF_SUMMARY_2026-05-15.docx
  • Erweiterte Tabellenansicht mit Status, Ist, Soll/Rhino, Abweichung, Pruefquelle, Massnahme und Prioritaet.
  • Grafische Ampel-Uebersicht fuer OK/Klaeren/Hoch/Kritisch.
  • Prioritaetsgrafik fuer IT, DE, UK/EN, CH, AT/ES.
  • Abschnitt Geprueft gegen mit Rhino/Andreas check.xlsx, FinanceProbe/CentralSalesRecords, Spain CSV, Deutschland-Beispielfile und UK_B1.

Verifikation:

  • DOCX enthaelt word/document.xml.
  • Inhalte Rhino / Andreas check.xlsx, Management-Ampel, Prioritaetsgrafik und Laendertabelle mit Massnahmen wurden im Dokumentpaket geprueft.

Finance Spanien Mailentwurf 2026-05-15

Erstellt:

  • docs/FINANCE_ES_MAIL_ABWEICHUNG_2026-05-15.md
  • Spanischer Mailentwurf zur Abweichung Spanien Net Sales 2025.
  • Enthaltene Pruefpunkte: Zeitraum, Serien REG/LAT/PRO/REC, Abonos/Credit Notes, Datumslogik und verwendetes Netto-Umsatzfeld.

Finance IT und UK Mailentwuerfe 2026-05-15

Erstellt:

  • docs/FINANCE_IT_MAIL_ABWEICHUNG_2026-05-15.md
  • docs/FINANCE_UK_MAIL_ABWEICHUNG_2026-05-15.md

Inhalt:

  • Italien: grosse Abweichung +7.034.496,29 EUR, Fokus Berechnungsart, Beleg/Position-Deduplizierung, Intercompany, Credit Notes, Datumslogik und Waehrung.
  • UK/England: Restdifferenz -216,154.91 GBP, Fokus Jahresvollstaendigkeit, Periodenbereich, Credit Notes, Nettofeld, Discounts/Freight/Charges, 2nd-/3rd-party und Waehrung.

Finance Entscheide Extraktion 2026-05-15

Erstellt:

  • entscheide.md

Inhalt:

  • Fragen und Entscheide aus der Finance-Abstimmung extrahiert.
  • Festgehaltene Kernentscheide: Hauswaehrung je Land, Budgetkurse fuer CHF-Sicht, Berechnung pro Artikel/Belegposition, Nettofakturawert, Buchungsdatum, separate Gutschriftenausweisung und Intercompany/2nd-party als eigenes Auswahlfeld.
  • Intercompany-Marker dokumentiert: MAGNETS SENSE, MAGNETIC SENSE, TRAFAG, GESELLSCHAFT FUER SENSORIK, GESELLSCHAFT FUR SENSORIK.

Finance Dokumentgueltigkeit 2026-05-15

Erstellt:

  • docs/FINANCE_WELCHES_DOKUMENT_GILT_2026-05-15.md

Festgelegt:

  • Fuehrendes CFO-Dokument: docs/FINANCE_CHEF_SUMMARY_2026-05-15.docx
  • Alte CFO-Version docs/FINANCE_CHEF_SUMMARY_2026-05-13.docx entfernt, weil sie durch die Version vom 2026-05-15 ersetzt wurde.
  • Entscheidbasis: entscheide.md und docs/FINANCE_ENTSCHEIDE.md.

Finance Dashboard Todo 2026-05-15

Erstellt:

  • docs/FINANCE_DASHBOARD_TODO_2026-05-15.md

Inhalt:

  • Todo-Liste fuer Group Sales Reporting Intranet-Dashboard.
  • Priorisierte Punkte fuer CFO-Dokument, offene Laenderabweichungen, Intercompany, Budgetkurse und Berechtigungskonzept.

Navigation und HR-KPI-Zugriff 2026-05-15

Geaendert:

  • Linke Navigation reduziert:
    • Hauptgruppe Finance Cockpit
    • eigener Hauptpunkt HR KPI (Login)
  • Bisherige Finance-Seiten liegen als Unterpunkte unter Finance Cockpit:
    • Dashboard
    • Management Cockpit
    • Standorte
    • Transformationen
    • Settings
    • Logs
  • HR KPI hat eine separate zweite Zugriffssperre mit Name und Passwort.
  • HR-Daten werden erst geladen und angezeigt, wenn die HR-KPI-Sperre erfolgreich entsperrt wurde.

Konfiguration:

  • Abschnitt HrKpiAccess in appsettings.json
  • Benutzer: hr
  • Passwortvorschlag: Trafag-HR-KPI-2026!
  • Im Repo ist nur der SHA-256-Hash gespeichert, nicht das Klartextpasswort.

Verifikation:

dotnet build .\TrafagSalesExporter.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_hrlogin\ --verbosity minimal

Ergebnis:

  • Build erfolgreich.
  • 3 bestehende MudBlazor-Analyzer-Warnungen in Logs.razor, Transformations.razor und Standorte.razor.

IIS 500 Diagnose und Hosting-Modell 2026-05-20

Geaendert:

  • web.config fuer IIS auf hostingModel="outofprocess" umgestellt.
  • stdoutLogEnabled="true" bleibt aktiv, Logziel bleibt .\logs\stdout.
  • ASPNETCORE_DETAILEDERRORS=true fuer die temporaere IIS-Fehlerdiagnose gesetzt.
  • Ziel: Wenn IIS/ASP.NET Core vor dem App-Start scheitert, sollen eher verwertbare Startlogs entstehen; ausserdem wird die App nicht mehr direkt im IIS Worker-Prozess gehostet.

Aktueller Stand:

  • Publish-Ordner \\trch-webapp-bidashboard.trafagch.local\BiDashboard$\ enthaelt BiDashboard.dll, web.config, wwwroot, runtimes, trafag_exporter.db und logs.
  • logs war trotz aktivem stdout-Logging leer.
  • Die veroeffentlichte DLL liess sich vom Publish-Ordner aus starten und brach nicht sofort mit einer Exception ab.
  • Remote-Pruefung der installierten .NET-Runtimes per WinRM war nicht moeglich; der Serveradmin muss deshalb am Server pruefen, ob das .NET 8 Hosting Bundle installiert ist.

Naechste Server-Pruefpunkte:

  • URL https://trch-webapp-bidashboard.trafagch.local/BiDashboard/diag.txt testen.
  • Wenn diag.txt nicht erreichbar ist, stimmt IIS-Anwendung/virtueller Pfad/Binding nicht.
  • Wenn diag.txt erreichbar ist, aber die App 500 liefert, Windows Event Viewer pruefen:
    • Windows Logs > Application
    • Quellen: IIS AspNetCore Module V2, .NET Runtime, Application Error
  • App Pool pruefen:
    • .NET CLR Version: No Managed Code
    • Pipeline: Integrated
    • 32-bit Applications: False
    • Identity muss Modify-Rechte auf Publish-Ordner und logs haben.

Architekturreview Static/Hardcoding 2026-05-15

Erstellt:

  • docs/ARCHITEKTUR_REVIEW_STATICS_HARDCODING_2026-05-15.md

Inhalt:

  • Bewertung der vielen static-Methoden im Code.
  • Ergebnis: static ist fuer kleine zustandslose Helper akzeptabel; problematisch sind fachliche Regeln und grosse Klassen mit zu vielen Verantwortungen.
  • Dokumentierte Befunde:
    • HR-Testpersonen sind aktuell Code-Regel und sollten in Konfiguration/DB.
    • Finance Vergleich ist aktuell fix auf 2025 und Referenztext.
    • Hauswaehrungen je Land sollten langfristig in Finance-/Standortkonfiguration.
    • Finance-Sollwerte, Budgetkurse und IC-Regeln sind als Seed okay, aber produktiv pflegbar machen.
  • Empfehlung: nicht blind alle static-Methoden entfernen, sondern zuerst fachlich veraenderbare Regeln auslagern.

CFO-Bericht IT/Intercompany Diagnose 2026-05-15

Ergaenzt:

  • docs/CFO_Kurzbericht_270515.docx
  • docs/FINANCE_DASHBOARD_TODO_2026-05-15.md

Inhalt:

  • IT/Intercompany-Diagnose fuer die grosse Italien-Abweichung.
  • Marker dokumentiert: TRAFAG, MAGNETIC SENSE, MAGNETS SENSE, GESELLSCHAFT FUER SENSORIK, GESELLSCHAFT FUR SENSORIK.
  • Zahlen:
    • IT Ist vor IC-Abzug: 14.704.336,29 EUR
    • IC-/2nd-party-Abzug: 4.397.746,90 EUR
    • IT Ist exkl. IC: 10.306.589,39 EUR
    • Rhino/check.xlsx Soll: 7.669.840,00 EUR
    • Restabweichung nach IC: +2.636.749,39 EUR

Bewertung:

  • Intercompany/2nd-party erklaert einen grossen Teil der IT-Abweichung.
  • Restabweichung bleibt offen und muss ueber Summenlogik, Beleg/Position-Deduplizierung, Gutschriften/Storno und weitere lokale IC-Kunden oder Schreibweisen geprueft werden.

HR KPI Testpersonen-Ausschluss 2026-05-15

Geaendert:

  • Folgende Testpersonen werden zentral aus dem HR-KPI-Dashboard ausgeschlossen:
    • Angelina Jolie
    • Brad Pitt
    • Peter Muster
    • ICT Trafag
    • Empfanger Reminder / Empfaenger Reminder
  • Der Ausschluss erfolgt vor KPI-, Filter- und Tabellenberechnung.
  • Betroffen sind aktive Mitarbeitende, Absenzen und Austritte.
  • Im Dashboard erscheint eine Notice, wie viele Testpersonen-Zeilen ausgeschlossen wurden.

Verifikation:

dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_hr_exclusions\ --verbosity minimal

Ergebnis:

  • 70/70 Tests erfolgreich.
  • 3 bestehende MudBlazor-Analyzer-Warnungen in Logs.razor, Transformations.razor und Standorte.razor.

KI-Arbeitsanweisung 2026-05-15

Erstellt:

  • persona.md

Inhalt:

  • Rolle der KI als Entwicklungs-, Analyse- und Dokumentationswerkzeug.
  • Grenzen der KI bei fachlicher Verantwortung, Finance, HR, Datenschutz und Freigaben.
  • Arbeitsprinzipien fuer dieses Projekt: bestehende Architektur nutzen, kritisch testen, sauber dokumentieren und offene fachliche Punkte als Pruefpunkte markieren.

Navigation in Finance/HR/Admin gegliedert 2026-05-15

Geaendert:

  • Linke Navigation neu gegliedert:
    • Finance Cockpit
    • HR KPI (Login)
    • Admin
  • Unter Finance Cockpit stehen:
    • Export Dashboard
    • Management Analyse
    • Soll/Ist Vergleich
  • Unter Admin stehen:
    • Standorte
    • Transformationen
    • Settings
    • Logs
  • Seitentitel wurden an die neuen Menuebezeichnungen angepasst.

Verifikation:

dotnet build .\TrafagSalesExporter.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_nav_groups\ --verbosity minimal

Ergebnis:

  • Build erfolgreich.
  • 3 bestehende MudBlazor-Analyzer-Warnungen in Logs.razor, Transformations.razor und Standorte.razor.

DE Alphaplan-Excel provisorisch vorbereitet 2026-05-20

Geaendert:

  • Deutschland wird beim Start als manueller Excel-Standort vorbereitet:
    • TSC = TRDE
    • Land = Deutschland
    • SourceSystem = MANUAL_EXCEL
    • IsActive = false, damit der Gesamtexport ohne gesetzte Datei nicht scheitert.
  • Alphaplan-Mapping wird fuer Deutschland geseedet:
    • NettoPreisGesamtX -> SalesPriceValue
    • Belegnummer, Position, ArtikelNummer, ArtikelBezeichnung
    • Warengruppen-Bezeichnung, Anz. VE
    • Lieferant/Kunde/Land/Branche
    • Waehrung, Versandbedingung, AdressNummer_V
    • Belegdatum-Rechnung fuer Posting-/Invoice-Date
    • DocumentType = Alphaplan Excel
  • Testdatei erhalten und eingeordnet:
    • docs/2025_DataExport_DE.xlsx

Erster Befund:

  • NettoPreisGesamtX komplett: 4'154'690.05 EUR
  • Land Kunde = Deutschland: 3'455'276.64 EUR
  • Land Kunde = Deutschland + China: 3'647'592.44 EUR
  • Sollwert DE: 3'635'923.00 EUR

Offen:

  • Finance/Munir muss bestaetigen, welche Kundenlaender und Filter in Alphaplan fuer den offiziellen DE-Istwert gelten.
  • Manager-Input nennt Warengruppen- und Versandbedingungs-Codes; im Excel sind aktuell vor allem Bezeichnungen/Texte sichtbar.

Verifikation:

dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_de_alphaplan\ --verbosity minimal

Ergebnis:

  • 75/75 Tests erfolgreich.
  • Bestehende Warnungen: NU1900 wegen lokaler Paket-Sicherheitsdatenabfrage, sowie bekannte MudBlazor-Analyzer-Warnungen zu Dense.

Management Cockpit zentrale Filterkopplung 2026-05-15

Geaendert:

  • Die untere Zentrale Roh-Auswertung im Management Cockpit ist nicht mehr nur global.
  • Neue Filterfelder: Landfilter und TSC.
  • Wenn oben eine Einzeldatei analysiert wird, uebernimmt die zentrale Auswertung automatisch Land und TSC aus dieser Datei.
  • Beispiel: Auswahl USA | TRUS | Sales_TRUS_2026-05-08.xlsx setzt unten automatisch USA / TRUS.
  • Button Global leert die Filter, falls wieder alle Laender/Standorte ausgewertet werden sollen.
  • Jahres-, Monats-, Jahreswerte-, Monatswerte-, Tageswerte-, Quellen- und Laendertabellen verwenden denselben Land/TSC-Filter.

Verifikation:

dotnet build .\TrafagSalesExporter.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_management_scope2\ --verbosity minimal

Ergebnis:

  • Build erfolgreich.
  • 3 bestehende MudBlazor-Analyzer-Warnungen in Logs.razor, Transformations.razor und Standorte.razor.

Finance Vergleich als eigener Reiter 2026-05-15

Geaendert:

  • Net Sales Actuals 2025 Referenz aus dem Start-Dashboard entfernt.
  • Neue Seite Finance Vergleich unter Finance Cockpit angelegt.
  • Route: /finance-cockpit/vergleich
  • Die Seite zeigt den Soll/Ist-Vergleich gegen check.xlsx separat, inklusive IC-Abzug, Referenzwert, Summenfeld, Differenz, Waehrung, Zeilen und Status.
  • DashboardPageService laedt die Finance-Referenzdaten nicht mehr automatisch mit dem operativen Dashboard.

Verifikation:

dotnet build .\TrafagSalesExporter.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_finance_compare_tab\ --verbosity minimal

Ergebnis:

  • Build erfolgreich.
  • 3 bestehende MudBlazor-Analyzer-Warnungen in Logs.razor, Transformations.razor und Standorte.razor.

Finance-Regeln und Dashboard-Basis-Spalte 2026-05-20

Geaendert:

  • Neuer Admin-Reiter Finance Regeln angelegt.
    • Route: /finance-rules
    • Navigation: Admin -> Finance Regeln
    • Zugriff wie andere Admin-Seiten ueber AdminOnly.
  • Neue Tabelle/Model FinanceRules.
  • Finance-Regeln werden beim Start geseedet und sind danach in der UI pflegbar.
  • Die Regeln wirken auf die Finance-Sicht, nicht auf Rohdaten und nicht auf das technische Spaltenmapping.
  • DE- und IT-Sonderlogik wurde aus dem zentralen Excel-Export in eine generische Regel-Engine verschoben.
  • ConfigTransferService exportiert/importiert FinanceRules mit.
  • FinanceReconciliationService nutzt dieselbe Regel-Engine wie das zentrale Excel, damit Soll/Ist-Vergleich und Endexcel dieselbe Finance-Sicht verwenden.
  • Export Dashboard:
    • neue Spalte Basis direkt nach Land
    • zeigt Datenbasis mit Icon und Text:
      • Excel-Datei
      • CSV-Datei
      • SAP Service
      • Server
      • Manuelle Datei

Aktuelle Default-Finance-Regeln:

  • DE
    • Jahr auf 2025 erzwingen fuer das Alphaplan-Jahresfile.
    • CustomerName = Trafag AG ausschliessen.
    • CustomerName contains Magnetic Sense ausschliessen.
    • InvoiceNumber = GS2510095 ausschliessen, weil bereits 2024 erfasst.
    • InvoiceNumber starts with GS als negativer Betrag zaehlen.
  • IT
    • CustomerName contains Trafag Italia ausschliessen.
    • doppelte Zeilen ohne SupplierCountry deduplizieren.

DE-Fachabgleich nach Rueckmeldung Deutschland:

Gesamtumsatz NettoPreisGesamtX:                 4'154'690.05
- Weiterberechnungen Trafag AG:                   391'655.88
- Weiterberechnungen Magnetic Sense 2025:          55'648.21
- Gutschriften GS als negativ statt positiv:        28'205.60 doppelte Wirkung
- GS2510095 nicht in 2025:                           1'419.70
= DE Jahresabschluss-Umsatz:                    3'652'394.46

Verifikation:

dotnet test TrafagSalesExporter.sln --verbosity minimal

Ergebnis:

  • 76/76 Tests erfolgreich.

Echter DE-Import und zentrale Excel erneut geprueft:

CentralSalesRecords DE 2025 rows: 4'430
CentralSalesRecords DE 2025 SalesPriceValue: 3'652'394.46
Central Excel Sales sheet Finance DE 2025 sum: 3'652'394.46
Central Excel Finance Summary DE 2025 sum: 3'652'394.46

Technische Hauptdateien:

  • Models/FinanceRule.cs
  • Services/FinanceRuleEngine.cs
  • Services/FinanceRulesPageService.cs
  • Components/Pages/FinanceRules.razor
  • Services/ExcelExportService.cs
  • Services/FinanceReconciliationService.cs
  • Services/DashboardPageService.cs
  • Components/Pages/Dashboard.razor
  • Data/AppDbContext.cs
  • Services/DatabaseInitializationService.SchemaSql.cs
  • Services/DatabaseSchemaMaintenanceService.cs
  • Services/DatabaseSeedService.cs
  • Services/ConfigTransferService.cs

Finales zentralisiertes Excel finall.xlsx geprueft 2026-05-20

Gepruefte Datei:

  • C:\Users\koi\Downloads\finall.xlsx

Ergebnis:

  • Datei ist als zentralisierter Export lesbar.
  • Blaetter:
    • Finance Summary
    • Sales
    • Finance Filter Hilfe
  • Sales enthaelt 67'247 Datenzeilen.
  • Finance Summary stimmt gegen die Finance-Spalten im Blatt Sales exakt:
    • Differenz je Land/Jahr/Waehrung: 0.00
  • Die Summen entsprechen der lokal erzeugten zentralen Datei output\Sales_All_2026-05-20.xlsx.
  • Deutschland 2025 bleibt korrekt:
    • DE 2025 EUR = 3'652'394.46

Finance-Summen 2025 aus finall.xlsx:

AT  EUR   3'438'121.37
CH  CHF  43'521'390.82
DE  EUR   3'652'394.46
ES  EUR   3'082'320.18
FR  EUR   1'471'218.44
IN  INR 750'936'591.38
IT  EUR   7'663'145.76
UK  GBP   3'533'710.09
US  USD   3'749'865.33

Hinweis:

  • Der direkte Vergleich gegen die lokale SQLite-Datei trafag_exporter.db war nicht aussagekraeftig, weil diese lokale DB keine passenden CentralSalesRecords fuer diesen Stand enthaelt.
  • Die Excel-interne Summenpruefung und der Vergleich gegen output\Sales_All_2026-05-20.xlsx waren konsistent.

Admin Bereich und Startseite aktualisiert 2026-05-21

Admin Bereich:

  • /admin/sessions ist nicht mehr durch den Finance-Cockpit-Login vorgeschaltet.
  • Der Admin Bereich nutzt weiterhin ein eigenes Admin-Passwort über AdminAccess.
  • Initialer Benutzer: admin
  • Initiales Passwort: TrafagAdmin2026!
  • Das Admin-Passwort ist unabhängig vom Finance-Cockpit-Passwort.
  • Dokumentation ergänzt: docs/ADMIN_BEREICH_STARTSEITE_2026-05-21.md

Startseite:

  • Corporate-Schrift auf Open Sans mit Trafag-nahen Fallbacks angepasst.
  • Manometer-Startgrafik bleibt auf weißem Hintergrund, schwarz gezeichnet und mit Trafag-Schriftzug.
  • Willkommenstext ist sprachabhängig.
  • Optionales Strichmännchen mit Kittel unter dem Willkommenstext ergänzt.
  • Das Strichmännchen ist standardmäßig deaktiviert.
  • Aktivierung über Admin Bereich -> Strichmännchen anzeigen.
  • Einstellung wird in appsettings.json unter LandingPage.ShowWalkingLabFigure gespeichert.

Technische Dateien:

  • Components/Routes.razor
  • Components/App.razor
  • wwwroot/css/app.css
  • Components/Pages/Dashboard.razor
  • Components/Pages/AdminSessions.razor
  • Program.cs
  • Security/LandingPageOptions.cs
  • Services/LandingPageSettingsService.cs
  • Services/UiTextService.cs
  • appsettings.json

Nachtrag 2026-05-26: Publish-Fixes, HR-KPI-Upload, Varianten und PDF

Deployment / Blazor:

  • Interaktive Blazor-Server-Render-Mode-Deklarationen fuer die routbaren Seiten ergaenzt, damit Buttons und Formulare auf der publizierten IIS-Seite reagieren.
  • Navigation auf relative Links umgestellt, damit die Anwendung unter /BiDashboard nicht auf Root-URLs ohne PathBase springt.
  • Admin-, Finance- und HR-KPI-Login auf serverseitige POST-Endpunkte mit Unlock-Cookies umgestellt, damit Login auch auf der publizierten Seite ohne Blazor-Click-Event funktioniert.
  • SAP-HANA Native DLL libadonetHDB.dll wird mitpubliziert und HDBDOTNETCORE im web.config auf den Publish-Ordner gesetzt.

HR-KPI:

  • Massenupload fuer die fuenf HR-KPI-Dateien direkt im HR-KPI-Cockpit eingebaut.
  • Upload-Ziel auf dem Server: C:\inetpub\wwwcust\BiDashboard\hrdata.
  • Erwartete Dateien:
    • Saldiperstichdatum.xlsx
    • Exportkommengehen.xlsx
    • HR_KPI_Export.xlsx
    • Abwesenheitinstunden.xlsx
    • Personalausgeschieden.xlsx
  • Allgemeiner Zeitraumfilter Von Datum / Bis Datum ersetzt die reine Austrittsbeschriftung.
  • Fluktuation nutzt den Zeitraum ueber Austrittsdatum.
  • Absenzquote nutzt den Zeitraum als Nenner mit Arbeitstagen statt fix 21 Tage.
  • Wenn die Rexx-Absenzen selbst Datumsfelder enthalten, werden Absenzen auf den Zeitraum gefiltert.
  • Wenn die Rexx-Absenzen keine Datumsfelder enthalten, wird angenommen, dass Abwesenheitinstunden.xlsx bereits fuer den gewaehlten Zeitraum exportiert wurde.
  • MudDatePicker nutzt explizit de-CH, damit Eingaben wie 31.03.2026 auf Server und Browser stabil geparst werden.
  • PDF-/Druckbuttons je HR-KPI-Reiter ergaenzt, z. B. fuer Fluktuation, Absenzen, Ampel, Mitarbeitende und Datenstatus.
  • Der Druck/PDF-Export rendert nur den jeweiligen Reiterinhalt inkl. Titel, Datenordner und Filterzusammenfassung.
  • Serverseitige HR-KPI-Varianten eingefuehrt:
    • Speicherdatei: C:\inetpub\wwwcust\BiDashboard\hrdata\hr-kpi-variants.json
    • letzte Selektion wird serverseitig gespeichert und beim Oeffnen wieder geladen
    • Varianten sind fuer alle Benutzer sichtbar
    • Varianten koennen gespeichert, geladen, aktualisiert, umbenannt und geloescht werden
  • Initiale Testvarianten fuer HR wurden auf dem Server angelegt:
    • Fluktuation Q1 2026
    • Fluktuation Jahr 2026
    • Absenzquote Q1 2026

Firewall / Betrieb:

  • Aktueller HANA-Fehler nach DLL-Fix ist Netzwerk/Firewall, nicht mehr SAP-DLL:
    • Webserver: 10.120.1.17
    • HANA Internal: 10.194.65.22:30015
    • India HANA: 20.197.20.60:30015
    • SAP OData: 10.194.64.29:8000
    • SharePoint: trafagag.sharepoint.com:443
  • Support-Mail an externen Support vorbereitet; Freigabe muss vom Webserver zu den Zielsystemen erfolgen.

Validierung:

  • dotnet build .\TrafagSalesExporter.csproj --no-restore --verbosity minimal erfolgreich.
  • dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore --verbosity minimal erfolgreich mit 78/78 Tests.
  • Mehrfach erfolgreich nach \\trch-webapp-bidashboard.trafagch.local\BiDashboard$\ publiziert.

Nachtrag 2026-05-26: Nachdokumentation Remote-/Refactoring-Commits

Beim Rebase auf origin/main wurden zusaetzliche lokal noch nicht vorhandene Commits integriert. Der lokale Stand und origin/main sind danach synchron.

Finance Details / Export:

  • Finanzdetail-Export und erweiterte Uebersetzungen wurden ergaenzt.
  • Betroffene Bereiche:
    • Services/ExcelExportService.cs
    • Services/ConsolidatedExportService.cs
    • Services/SharePointUploadService.cs
    • Services/UiTextService.cs
    • Components/Layout/MainLayout.razor
    • Components/Layout/NavMenu.razor
  • Tests fuer Excel-Export und UI-Texte wurden erweitert.
  • SharePoint-Upload-Schnittstelle wurde leicht angepasst.

In-App-Training / Anwenderdoku:

  • Neue Trainingsseiten in der Anwendung:
    • Components/Pages/FinanceTraining.razor
    • Components/Pages/HrKpiTraining.razor
    • Components/TrainingSection.razor
  • Navigation um Trainingseintraege ergaenzt.
  • Neue Trainingsassets:
    • wwwroot/training/systemarchitektur.svg
    • wwwroot/training/keyuser-prozess.svg
    • wwwroot/training/finance_cockpit_preview.png
    • wwwroot/training/hr_kpi_cockpit_preview.png
  • Aktualisierte Anwenderdokumente:
    • docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx
    • docs/HR_KPI_ANLEITUNG_HR_2026-05-20.docx
    • docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md

Lokaler Dev-Server / Uebergang:

  • launchSettings.json wurde fuer den lokalen Uebergang angepasst.
  • Doku ergaenzt:
    • docs/LOCAL_DEV_SERVER_UEBERGANG_2026-05-21.md
    • docs/MD_DOKUMENTENSTATUS_2026-05-20.md
  • Ziel: lokal lauffaehige Umgebung dokumentieren, falls IIS/Publish nicht erreichbar ist.

Admin / Startseite:

  • Admin-Bereich wurde von Finance-Login getrennt.
  • Startseite/Landing-Dashboard und Admin-Sessions wurden erweitert.
  • Doku:
    • docs/ADMIN_BEREICH_STARTSEITE_2026-05-21.md
  • Relevante technische Bereiche:
    • Components/AdminAccessPanel.razor
    • Components/Pages/AdminSessions.razor
    • Security/AdminAccessOptions.cs
    • Services/AdminAccessService.cs
    • Services/AccessSessionTracker.cs
    • Services/AccessPasswordSettingsWriter.cs
    • Security/LandingPageOptions.cs
    • Services/LandingPageSettingsService.cs

Trading Engine:

  • Ein Python-Trading-Engine-Paket wurde unter trade_web ergaenzt.
  • Dateien:
    • trade_web/trading_engine.py
    • trade_web/trading_engine/__init__.py
  • Zweck laut Commit-Historie: Trading-Cockpit-Engine als importierbares Paket bereitstellen.
  • Dieser Bereich ist separat vom TrafagSalesExporter/.NET-BI-Dashboard zu betrachten.

Aktueller Git-Stand:

  • Rebase auf origin/main erfolgreich.
  • Neuer Head nach Rebase und Push: d853f53 Add published HR KPI workflow fixes.
  • HEAD und origin/main sind synchron.
  • Lokal unversioniert bleiben nur Arbeitsartefakte/Screenshots:
    • ../BiDashboard/
    • error.png
    • it_export_result.html
    • italien.png