67 KiB
Last Change 2026-05-04
Management Analyse auf Finance Summary ausgerichtet 2026-05-20
Geaendert:
Management Analysehat jetzt einen fuehrenden ReiterFinance Summary.- Die Kennzahlen in diesem Reiter verwenden dieselbe
FinanceRuleEnginewie das zentrale Excel-BlattFinance 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 Analysewegen Rohwerten, anderem Datum und EUR-Umrechnung nicht mit der Finance Summary uebereinstimmte. - Tests:
dotnet test TrafagSalesExporter.sln --verbosity minimalmit77/77bestanden.
Commit:
610e771 Add finance summary view and HR guide
HR KPI Cockpit erweitert und Anwenderdokus erstellt 2026-05-20
Geaendert:
HR KPI Cockpithat einen neuen ReiterAnleitungfuer HR-Anwenderinnen.- Der Datenordner fuer Rexx-/SAP-Dateien ist im Cockpit sichtbar und je Lauf anpassbar; dauerhaft ueber
HrKpi:DataFolderinappsettings.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.docxdocs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx
Verifiziert:
- Word-Dateien als gueltige DOCX-Pakete geprueft.
- Tests:
dotnet test TrafagSalesExporter.sln --verbosity minimalmit77/77bestanden.
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 Importefuer 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 Summarymit Summen nach Jahr, Land und Waehrung. Management Analyseist klarer als Rohdaten-/Plausibilitaetssicht markiert.Soll/Ist Vergleichist klarer als verbindliche Finance-Sicht markiert.
Nachtrag:
- Unter
Manuelle Importegibt es jetzt einen zweiten ReiterAnleitung. - 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.dllohne 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.
CustomerNameenthaeltTrafag Italiawird aus dem IT-Finance-Ist ausgeschlossen.- Doppelte IT-Zeilen mit leerem
Supplier countrywerden 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.csServices/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:
TrafagSalesExporterveroeffentlicht jetzt alsBiDashboard.dll.- Keine EXE im Publish.
- Publish-Ziel:
\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\. - Wahrscheinliche URL:
https://trch-webapp-bidashboard.trafagch.local/BiDashboard/. - Diagnose-
web.configist aktiv mithttpErrors DetailedundstdoutLogEnabled=true. logs-Ordner existiert auf dem Share, blieb nach dem 500 aber leer.- ACL-Befund:
IIS_IUSRShat nurReadAndExecute; App braucht fuer SQLite/logs wahrscheinlichModify. - Rechte konnten lokal nicht gesetzt werden:
icaclsauf dem Share endete mitZugriff verweigert.
Naechster Schritt:
- Server-Spezialist muss App-Pool-Identity bzw.
IIS_IUSRSmitModifyauf Publish-Ordner,logsundtrafag_exporter.db*berechtigen und danach App-Pool neu starten.
ASP.NET Publish direkt aus TrafagSalesExporter 2026-05-19
Entscheid:
TrafagSalesExporterbleibt das fuehrende Projekt.- Das separate
BiDashboard-Projekt wird fuer den aktuellen Stand nicht benoetigt. TrafagSalesExporterist bereits eine ASP.NET/Blazor-Webanwendung (Microsoft.NET.Sdk.Web) und kann direkt veroeffentlicht werden.
Umsetzung:
OutputType=WinExewurde ausTrafagSalesExporter.csprojentfernt.- Der
BiDashboard-Verweis wurde ausTrafagSalesExporter.slnentfernt. - Das Publish-Profil
Properties/PublishProfiles/FolderProfile.pubxmlzeigt 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/vergleichwurde 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:
FinanceCockpitAccessinappsettings.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.csSecurity/FinanceCockpitAccessOptions.csComponents/FinanceCockpit/FinanceCockpitUnlockPanel.razorComponents/Routes.razorComponents/Layout/NavMenu.razor- Registrierung in
Program.cs
AD-/Rollenstand:
Security.Enabled = falsedeaktiviert die globale AD-/Rollenpruefung fuer den Moment.- Die vorhandenen
AccessGroupsundAdminGroupsbleiben inappsettings.jsonstehen und wurden nicht geloescht. - Wenn AD/Rollen wieder gelten sollen,
Security.Enabledauftruesetzen. - 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 dateoderinvoice datezu 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
FinanceReconciliationServicefuer 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
TRUKnur395'605.82 GBPIst gegen3'749'865.00 GBPSoll. - In den Varianten fehlten weitere sinnvolle Abgrenzungen; sichtbar war nur
Positions-Netto (Sales Price/Value). - Der Standort soll weiterhin
UK_B1verwenden.
Technischer Befund:
- Standort:
Land = EnglandTSC = TRUKSourceSystem = MANUAL_EXCEL
- Korrekte Quelle:
https://trafagag.sharepoint.com/sites/WorldwideBIPlatform/Import/Finance/UK_B1
- Lokal waren fuer
TRUKkeineManualExcelColumnMappingsvorhanden. - Der Import lief deshalb ueber die Header-Automatik.
- Die Header-Automatik behandelte
Sales Price/Valueals fertigen Positionswert. - In der UK-B1-Datei ist
Sales Price/Valuenach 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
=GBPbleiben unveraendert gueltig -
Services/DatabaseSeedService.cs- England/TRUK wird auf den SharePoint-Ordner
Import/Finance/UK_B1repariert, wenn der alte/falsche PfadImport/Finance/Englandoder ein leerer Pfad vorhanden ist - fuer
TRUKwird ein grafisches Manual-Excel-Mapping geseedet - wichtigste Zuordnung:
- England/TRUK wird auf den SharePoint-Ordner
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.15alsSalesPriceValueimportiert wird
Aktueller Verifikationsstand:
dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore -p:UseAppHost=false --verbosity minimal
Ergebnis:
- Tests erfolgreich.
59/59Tests gruen.- Bekannte Warnungen bleiben die bestehenden MudBlazor-Analyzerwarnungen zu
Dense.
Zusatzfix:
DatabaseSeedServicewurde gehaertet.- Der UK-Mapping-Seed wird nur ausgefuehrt, wenn
ManualExcelColumnMappingssauber aufSitesreferenziert. - Dadurch wird der Initialisierungslauf nicht blockiert, wenn eine bestehende SQLite-DB gerade noch aus alten Reparaturtabellen wie
Sites_repair_oldbereinigt wird.
Naechster praktischer Schritt:
- Lokale DB wurde direkt aktualisiert:
TRUKzeigt aufhttps://trafagag.sharepoint.com/sites/WorldwideBIPlatform/Import/Finance/UK_B1TRUKhat18aktive Manual-Excel-Mapping-ZeilenSalesPriceValue <= =[Sales Price/Value]*[Quantity]
- FinanceProbe wurde auf
http://127.0.0.1:5099neu gestartet. /financeantwortet mit HTTP200./run/export/TRUKwurde 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
CentralSalesRecordsenthaelt fuer UK noch den alten Importstand, bis der SharePoint-Zugriff wieder funktioniert undTRUKneu exportiert wird. - Aktueller alter Zentralstand bleibt deshalb:
1'882Zeilen395'605.82 GBPSummeSalesPriceValue- rekonstruiert
3'533'348.89 GBPueberSalesPriceValue * Quantity
Offen fachlich fuer UK:
- Nach neuem Export mit Mapping muss die Restdifferenz gegen
check.xlsxerneut gemessen werden. - Wenn der Wert bei ca.
3.53 Mio. GBPliegt, UK-Datei auf Rabatte, Fracht, Nebenpositionen oder eine andere Netto-Spalte pruefen. - Wenn der Wert auf
3.75 Mio. GBPsteigt, 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.xlsxbzw.ddMMyy_TSC.csvausgewertet. - Beispiel England/UK:
- Ordner:
https://trafagag.sharepoint.com/sites/WorldwideBIPlatform/Import/Finance/UK_B1 010526_TRUK.xlsxwird vor010426_TRUK.xlsxgewaehlt.- Falls kein Datum aus dem Dateinamen gelesen werden kann, faellt die Auswahl auf das SharePoint-Aenderungsdatum zurueck.
- Ordner:
Technischer Befund aus den Logs:
- Spanien konnte die SharePoint-Datei lesen (
4'341Zeilen), 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:
DataSourceFetchResultenthaelt optionale Overrides fuer lokalen Output-Ordner und SharePoint-Zielordner.ManualExcelDataSourceAdaptererkennt SharePoint-Dateien vs. SharePoint-Ordner und waehlt bei Ordnern die neueste passende Datei.SharePointUploadServicekann den neuesten passenden Datei-Eintrag in einem SharePoint-Ordner aufloesen.SiteExportServicenutzt fuer Manual-Quellen den Quellordner als Zielordner.StandortePageServiceerlaubt fuer Manual-Importe nun auch SharePoint-Ordnerreferenzen.- Standort-UI-Hilfetext wurde entsprechend angepasst.
DatabaseSeedServicerepariert 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
Densebleiben bestehen.
FinanceProbe erweitert fuer alle Finance-Referenzen 2026-05-08
Umgesetzte Anpassungen:
- FinanceProbe zeigt nun alle aktiven
FinanceReferencesfuer 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->ATCH,CHE,Schweiz/Switzerland->CH
- Damit koennen Zeilen aus
ZSCHWEIZmitLAND1 = ATfachlich Oesterreich zugeordnet werden.
Verifikation:
Tools/FinanceProbeBuild 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,TSCoderLand - Beispiele:
/run/export/TRUK,/run/export/Spanien,/run/export/7
- startet einen Standortexport nach
/run/export-all- startet Export aller aktiven Standorte
- erzeugt danach die zentrale Datei
/run/consolidated- erzeugt nur die zentrale Datei aus
CentralSalesRecords
- erzeugt nur die zentrale Datei aus
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. SapCompositionServiceundHanaQueryService.GetMappedSalesRecordsAsyncladen ihre Quellen weiterhin separat, nutzen danach aber denselben Composer fuer:- Primaerquelle
- Left Joins
SapFieldMappingnachSalesRecord- Konstanten wie
=SAP/=HANA - Datums-/Zahlenkonvertierung
- Der alte HANA-B1-Pfad fuer
OINV/INV1/ORIN/RIN1bleibt bewusst bestehen, damit BI1/SAGE ohne grafisches Mapping weiter laufen. - Die SAP-Mapping-Normalisierung liegt nur noch in
StandorteSapEditorService;StandortePageServiceruft diesen Service beim Speichern auf. - Der tote Parameter im konsolidierten Export wurde entfernt.
ConsolidatedExportService.ExportAsync()liest eindeutig ausCentralSalesRecords. - Manueller Import erlaubt in UI und Service jetzt
.xlsxund.csv.
Finance-Konfiguration:
- Neue Tabelle
FinanceReferencesfuer Soll-/check.xlsx-Referenzen je Jahr. - Neue Tabelle
FinanceIntercompanyRulesfuer 2nd-party/IC-Erkennung nachScopeKey, Kundennummer oder Namensmarker. - Budgetkurse 2025 werden in
CurrencyExchangeRatesmitNotes = Budget 2025geseedet. FinanceReconciliationServiceliest Sollwerte, Budgetkurse und IC-Regeln aus der DB.- Config-Export/-Import enthaelt jetzt
FinanceReferencesundFinanceIntercompanyRules.
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
Densebleiben bestehen.
SAP OData / ZSCHWEIZ / HANA Mapping 2026-05-07
Aktueller Entscheid:
ZSCHWEIZwird nicht direkt als SAP-HANA-Spezialfall gelesen.ZSCHWEIZwird 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
$metadatafuer das EntitySet liefert.
Quellsystem-Namen wurden zur Entwirrung geschaerft:
- Code
SAPbleibt technisch bestehen, DisplayName ist jetztSAP OData. - Code
SAP_HANAbleibt fuer direkte HANA-Tabellen/Views bestehen, DisplayName ist jetztSAP HANA Tables/Views. - Bestehende Konfigurationen bleiben dadurch kompatibel.
Seed / Vorkonfiguration:
- Standort
ZSCHWEIZ/ LandSchweiz/Oesterreichwird als inaktiver Standort angelegt bzw. repariert. SourceSystem = SAP.- Quelle: Alias
Z, EntitySetZSCHWEIZSet. - Mapping ist grafisch editierbar und wird auf die Felder der Tabelle
ZSCHWEIZgesetzt. - 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:
- App neu starten, damit Seed/Repair laeuft.
Settings -> Quellsysteme:SAPsollte alsSAP ODataerscheinen.Standorte -> ZSCHWEIZ:- Quellsystem
SAP OData (SAP) - SAP Service URL Override auf den finalen OData-Service fuer
ZSCHWEIZsetzen, falls die zentrale SAP-URL noch aufZPOWERBI_EINKAUF_SRVzeigt. Entity Sets refreshen.- Quelle
Zsoll aufZSCHWEIZSetzeigen. Felder aus Quellen laden.- Mapping kontrollieren.
- Quellsystem
ABAP / SAP:
- ABAP-Report liegt in
report.abap. - Report fuellt Tabelle
ZSCHWEIZaus Buchungskreis1100= Schweiz und1200= Oesterreich. LAND1ist Reporting-Land aus Buchungskreis.CUSTOMER_LANDist Kundenland ausKNA1-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/Valuebleibt als Vergleichsvariante sichtbar.- Zusaetzlicher Kandidat
Nettofakturawert Hauswaehrung -> CHF Budget 2025. - Referenz in der Oberflaeche wird als
check.xlsx Sollwertbezeichnet, nicht mehr als fuehrende Power-BI-Referenz. - Intercompany-Anzeige wurde fachlich als
2nd-party/ICbeschriftet; Regeln werden jetzt inFinanceIntercompanyRulesgeseedet 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.xlsxvergleichen
Wichtiges fachliches Verstaendnis nach Klaerung im Chat:
check.xlsxkommt 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.csTools/FinanceProbe/FinanceProbe.csprojTools/FinanceProbe/Program.cs- DI-Registrierung in
Program.cs - Dashboard nutzt den ausgelagerten Finance-Service
TrafagSalesExporter.csprojschliesstTools/**aus dem Hauptprojekt ausTrafagSalesExporter.slnenthaelt 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:55417gestartet - HTTP
200bestaetigt
Hinweis Netzwerk:
- Start mit
localhostist 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:55417noetig. - 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, fallbackExtractionDate - gruppiert pro Referenz-Key/Land
- berechnet Kandidaten:
SalesPriceValueDocTotalFC - VatSumFCDocTotal - VatSum
- Belegkopfwerte werden vor Summierung dedupliziert:
- bevorzugt
TSC + DocumentType + DocumentEntry - fallback
TSC + DocumentType + InvoiceNumber
- bevorzugt
- 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 BIist in der Probe-Oberflaeche noch sichtbar, weilcheck.xlsxdiese 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 SollwertoderRhino Sollwertumzubenennen.
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
- Referenz ca.
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
- Referenz ca.
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/Valuein EUR.
Offene Frage an Andreas:
- Ist
Sales Price/Valuein 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/Valuein 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.xlsxals 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.xlsxkommt 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/48Tests gruen
Bekannte Warnungen:
NU1900im Probe-Build, weil NuGet-Sicherheitsdaten wegen Netzwerk/nuget.org nicht geladen werden konnten- bekannte MudBlazor Analyzer-Warnungen zu
Dense
Offene sinnvolle naechste Schritte
- In der Probe-UI
Power BI-Labels fachlich bereinigen:- z. B.
Excel Sollwert/Rhino Sollwert
- z. B.
- Andreas' Antworten in eine Konfiguration ueberfuehren:
- Land/System
- Summenlogik
- System-Waehrung
- CHF-Umrechnung ja/nein
- Periodendatum
- IC-Regel
- DE/ES Quelle klaeren:
- aktuell keine Ist-Daten
- US/UK Doppelwert pruefen:
- US zeigt denselben Ist-Wert wie UK
- IT Intercompany-Regel fachlich bestaetigen
- 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-DatumFirmaBelegnummerPositionArtikelBezeichnungWarengruppen-BezeichnungAnz. VELieferanten NummerName LieferantLand LieferantAdressNummer-KundeName KundeLand KundeBrancheEinstandsPreisWährungBestellNummerNettoPreisEinzelXNettoPreisGesamtXVersandbedingungAdressNummer_VBelegdatum-RechnungBelegDatum AuftragArtikelNummer
Wichtige fachliche/technische Interpretation fuer Deutschland:
NettoPreisGesamtXwird alsSalesPriceValueverwendet.Währungwird fuerSalesCurrency,DocumentCurrency,CompanyCurrencyundStandardCostCurrencyverwendet.Belegdatum-Rechnungwird alsInvoiceDateverwendet.BelegDatum Auftragwird alsOrderDateverwendet.ArtikelNummerwird alsMaterialverwendet.- Kommentar-/Info-Zeilen ohne echte Position und ohne Betrag werden beim Import ignoriert.
Neue Datenstruktur
Neue Tabelle / neues Model:
ManualExcelColumnMappings
Models/ManualExcelColumnMapping.cs
Felder:
SiteIdTargetFieldSourceHeaderIsRequiredIsActiveSortOrder
Zweck:
- Pro Standort kann festgelegt werden, welche Excel-Spalte auf welches internes
SalesRecord-Feld gemappt wird. - Konstanten sind moeglich, wenn
SourceHeadermit=beginnt, z. B.=Manual Excel.
Geaenderte Hauptlogik
Geaendert:
Services/ManualExcelImportService.cs
Neue Logik:
- Beim manuellen Excel-Import werden zuerst aktive
ManualExcelColumnMappingsdes 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:
ManualExcelColumnMappingswerden 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.dbgespeichert. - 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
NettoPreisGesamtXmit Schweizer Tausenderzeichen wird korrekt als Dezimalzahl gelesen- Waehrung
EURwird 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/49Tests 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
- Mapper-Code committen, sobald der aktuelle Stand als Rollback-Punkt gesichert werden soll.
- In der Standort-UI Deutschland oeffnen und visuell pruefen, ob die 26 Mapping-Zeilen angezeigt werden.
- Mit echtem DE-Excel einen Importlauf testen.
- Danach Finance-Probe erneut pruefen:
- ob DE nicht mehr
Keine Datenist - ob
SalesPriceValuegegen Soll auscheck.xlsxpasst
- ob DE nicht mehr
- Falls weitere Laender eigene Excel-Formate liefern:
- nicht statischen Code bauen
- neues Mapping pro Standort pflegen
- Klaeren, ob DE fachlich
NettoPreisGesamtXin 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
CHFliefert, kann CHF direkt gezeigt werden. - Wenn Quelle
EUR,USD,GBP,INRusw. 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.xlsxoffen.
Offen fuer Spanien:
- korrekte Datumsabgrenzung (
FechaFacturavs. 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
.xlsgenannt, 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.
NettoPreisGesamtXkann als Kandidat fuerSalesPriceValuegelesen werden.- Das Beispielfile darf nicht gegen die Jahresreferenz
3'635'922.91als 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/50Tests gruen- Web UI liefert
HTTP 200 - FinanceProbe enthaelt:
Meeting Ampel 2025Spain CSV direct checkGermany Excel sample check
Financechef-Regeln abgesichert 2026-05-11
Umgesetzt:
PostingDateals eigenes Feld inSalesRecordundCentralSalesRecord.- Zentrale SQLite-Tabelle erhaelt
PostingDateautomatisch per Schema-Maintenance. - HANA-B1 liest
DocDateals Buchungsdatum undTaxDateals Fakturadatum. - Excel/CSV-Import erkennt
posting date,BuchungsdatumundLineRegistrationDate. - Finance-Abgleich filtert das Jahr nach
PostingDate, mit Fallback aufInvoiceDateund danachExtractionDate. - Finance-Abgleich bevorzugt Nettofakturawert in Hauswaehrung positionsweise.
- Wenn lokale Belegkopfwerte pro Position wiederholt wirken, wird die Ueberzaehlung erkannt:
- B1-Positionswert
SalesPriceValuewird dann als Positions-Netto bevorzugt. - deduplizierter Belegkopfwert bleibt als Kandidat sichtbar.
- B1-Positionswert
- 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.orgnicht 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:
TRUK1'881geladene Zeilen395'605.82 GBPIst3'749'865.00Soll- 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:
HrKpiServiceals Fassade, Build-Pipeline inServices/HrKpi/HrKpiDashboardBuilder.cs, UI-Tabs inComponents/HrKpi/HrKpiDashboardTabs.razor. - Konfigurierbare HR-Dateiquellen ueber
HrKpiinappsettings.json. - HR-KPI-Regressionstests.
Korrigiert:
Austrittsjahrist jetzt optional.- Leeres Austrittsjahr bedeutet: alle Austritte.
- Von/Bis-Austritt hat Vorrang vor Austrittsjahr.
- Die Austrittsjahr-Auswahl wird aus den vorhandenen Austrittsdaten aufgebaut.
Austrittsjahrist 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 ANzaehlt als Arbeitnehmerkuendigung,Kündigung AGals Arbeitgeberkuendigung-Ausschluss,Ruhestandals 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 minimaldotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_tests\ --verbosity minimal- Ergebnis:
69/69Tests bestanden. - Kontrollwert
C:\temp\Personalausgeschieden.xlsx:104Austritte total,42Kündigung AN,34Kündigung AG,33fluktuationsrelevant. - Kontrollwert neuer Nenner: Avg Headcount 2025
211.3, Fluktuation Jahr effektiv15.6%.
FinanceProbe Finanzchef-Uebersicht 2026-05-13
Ergaenzt:
- Neuer Reiter
Finanzchef UebersichtinTools/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,
0Fehler. - Hinweis:
NU1900wegen 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 gegenmit Rhino/Andreascheck.xlsx, FinanceProbe/CentralSalesRecords, Spain CSV, Deutschland-Beispielfile und UK_B1.
Verifikation:
- DOCX enthaelt
word/document.xml. - Inhalte
Rhino / Andreas check.xlsx,Management-Ampel,PrioritaetsgrafikundLaendertabelle mit Massnahmenwurden 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.mddocs/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.docxentfernt, weil sie durch die Version vom 2026-05-15 ersetzt wurde. - Entscheidbasis:
entscheide.mdunddocs/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)
- Hauptgruppe
- 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
HrKpiAccessinappsettings.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.razorundStandorte.razor.
IIS 500 Diagnose und Hosting-Modell 2026-05-20
Geaendert:
web.configfuer IIS aufhostingModel="outofprocess"umgestellt.stdoutLogEnabled="true"bleibt aktiv, Logziel bleibt.\logs\stdout.ASPNETCORE_DETAILEDERRORS=truefuer 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$\enthaeltBiDashboard.dll,web.config,wwwroot,runtimes,trafag_exporter.dbundlogs. logswar 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.txttesten. - Wenn
diag.txtnicht erreichbar ist, stimmt IIS-Anwendung/virtueller Pfad/Binding nicht. - Wenn
diag.txterreichbar 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
logshaben.
- .NET CLR Version:
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:
staticist 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
2025und 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.docxdocs/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
- IT Ist vor IC-Abzug:
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.razorundStandorte.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 CockpitHR KPI (Login)Admin
- Unter
Finance Cockpitstehen:Export DashboardManagement AnalyseSoll/Ist Vergleich
- Unter
Adminstehen:StandorteTransformationenSettingsLogs
- 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.razorundStandorte.razor.
DE Alphaplan-Excel provisorisch vorbereitet 2026-05-20
Geaendert:
- Deutschland wird beim Start als manueller Excel-Standort vorbereitet:
TSC = TRDELand = DeutschlandSourceSystem = MANUAL_EXCELIsActive = false, damit der Gesamtexport ohne gesetzte Datei nicht scheitert.
- Alphaplan-Mapping wird fuer Deutschland geseedet:
NettoPreisGesamtX->SalesPriceValueBelegnummer,Position,ArtikelNummer,ArtikelBezeichnungWarengruppen-Bezeichnung,Anz. VE- Lieferant/Kunde/Land/Branche
Waehrung,Versandbedingung,AdressNummer_VBelegdatum-Rechnungfuer Posting-/Invoice-DateDocumentType = Alphaplan Excel
- Testdatei erhalten und eingeordnet:
docs/2025_DataExport_DE.xlsx
Erster Befund:
NettoPreisGesamtXkomplett:4'154'690.05 EURLand Kunde = Deutschland:3'455'276.64 EURLand 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-Auswertungim Management Cockpit ist nicht mehr nur global. - Neue Filterfelder:
LandfilterundTSC. - 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.xlsxsetzt unten automatischUSA / TRUS. - Button
Globalleert 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.razorundStandorte.razor.
Finance Vergleich als eigener Reiter 2026-05-15
Geaendert:
Net Sales Actuals 2025 Referenzaus dem Start-Dashboard entfernt.- Neue Seite
Finance VergleichunterFinance Cockpitangelegt. - Route:
/finance-cockpit/vergleich - Die Seite zeigt den Soll/Ist-Vergleich gegen
check.xlsxseparat, inklusive IC-Abzug, Referenzwert, Summenfeld, Differenz, Waehrung, Zeilen und Status. DashboardPageServicelaedt 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.razorundStandorte.razor.
Finance-Regeln und Dashboard-Basis-Spalte 2026-05-20
Geaendert:
- Neuer Admin-Reiter
Finance Regelnangelegt.- Route:
/finance-rules - Navigation:
Admin -> Finance Regeln - Zugriff wie andere Admin-Seiten ueber
AdminOnly.
- Route:
- 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.
ConfigTransferServiceexportiert/importiertFinanceRulesmit.FinanceReconciliationServicenutzt dieselbe Regel-Engine wie das zentrale Excel, damit Soll/Ist-Vergleich und Endexcel dieselbe Finance-Sicht verwenden.- Export Dashboard:
- neue Spalte
Basisdirekt nachLand - zeigt Datenbasis mit Icon und Text:
Excel-DateiCSV-DateiSAP ServiceServerManuelle Datei
- neue Spalte
Aktuelle Default-Finance-Regeln:
DE- Jahr auf
2025erzwingen fuer das Alphaplan-Jahresfile. CustomerName = Trafag AGausschliessen.CustomerName contains Magnetic Senseausschliessen.InvoiceNumber = GS2510095ausschliessen, weil bereits 2024 erfasst.InvoiceNumber starts with GSals negativer Betrag zaehlen.
- Jahr auf
ITCustomerName contains Trafag Italiaausschliessen.- doppelte Zeilen ohne
SupplierCountrydeduplizieren.
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.csServices/FinanceRuleEngine.csServices/FinanceRulesPageService.csComponents/Pages/FinanceRules.razorServices/ExcelExportService.csServices/FinanceReconciliationService.csServices/DashboardPageService.csComponents/Pages/Dashboard.razorData/AppDbContext.csServices/DatabaseInitializationService.SchemaSql.csServices/DatabaseSchemaMaintenanceService.csServices/DatabaseSeedService.csServices/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 SummarySalesFinance Filter Hilfe
Salesenthaelt 67'247 Datenzeilen.Finance Summarystimmt gegen die Finance-Spalten im BlattSalesexakt:- Differenz je Land/Jahr/Waehrung:
0.00
- Differenz je Land/Jahr/Waehrung:
- 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.dbwar nicht aussagekraeftig, weil diese lokale DB keine passendenCentralSalesRecordsfuer diesen Stand enthaelt. - Die Excel-interne Summenpruefung und der Vergleich gegen
output\Sales_All_2026-05-20.xlsxwaren konsistent.