Organize markdown docs for RAG routing
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,733 +1,19 @@
|
||||
# TrafagSalesExporter LLM System Guide
|
||||
# LLM System Guide
|
||||
|
||||
Stand: 2026-05-05
|
||||
Stand: 2026-05-27
|
||||
|
||||
## Aktueller Projektstand 2026-05-05
|
||||
Diese Datei ist fuer tokenarme RAG-Nutzung komprimiert.
|
||||
|
||||
Fuer den aktuellen Finance-/Laenderabgleich zuerst diese Dateien lesen:
|
||||
## Kontext-Regel
|
||||
|
||||
- [HANDOFF_2026-04-15.md](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/HANDOFF_2026-04-15.md)
|
||||
- [NEXT_STEPS_2026-04-15.md](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/NEXT_STEPS_2026-04-15.md)
|
||||
- [lastchange.md](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/lastchange.md)
|
||||
- [SAGE_SPAIN_EXPORT_2026-05-05.md](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/SAGE_SPAIN_EXPORT_2026-05-05.md)
|
||||
1. Zuerst `docs/RAG_ROUTER.md` laden.
|
||||
2. Danach genau eine passende Kurzdatei aus `docs/rag/` laden.
|
||||
3. Original-/Rohdokus nur bei Detail-, Audit- oder Fehleranalysebedarf laden.
|
||||
|
||||
Lokaler FinanceProbe:
|
||||
## Volltext Bei Bedarf
|
||||
|
||||
Die Detailhistorie liegt hier:
|
||||
|
||||
```text
|
||||
http://localhost:55417/finance
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
|
||||
## Aktueller Zusatzstand 2026-05-07 SAP OData / ZSCHWEIZ
|
||||
|
||||
Schweiz/Oesterreich werden ueber eine neue SAP-Tabelle `ZSCHWEIZ` bereitgestellt.
|
||||
|
||||
Wichtige Punkte:
|
||||
|
||||
- ABAP-Report: `report.abap`
|
||||
- SAP-Tabelle: `ZSCHWEIZ`
|
||||
- OData EntitySet: `ZSCHWEIZSet`
|
||||
- App-Standort: `ZSCHWEIZ` / `Schweiz/Oesterreich`
|
||||
- Geplanter App-Pfad: `SAP` = `SAP OData`, nicht direkter HANA-Spezialcode
|
||||
|
||||
Quellsystem-Codes:
|
||||
|
||||
- `SAP`: SAP OData/Gateway, DisplayName `SAP OData`
|
||||
- `SAP_HANA`: direkte HANA-Tabellen/Views, DisplayName `SAP HANA Tables/Views`
|
||||
- `BI1`: HANA
|
||||
- `SAGE`: HANA
|
||||
- `MANUAL_EXCEL`: Excel/CSV
|
||||
|
||||
Mapper:
|
||||
|
||||
- SAP OData nutzt `SapSourceDefinition`, `SapJoinDefinition`, `SapFieldMapping`.
|
||||
- Direkte HANA-Tabellen/Views koennen dieselben Mapping-Tabellen ebenfalls nutzen.
|
||||
- Gemeinsame Mapping-Engine ist `MappedSalesRecordComposer`.
|
||||
- `SapCompositionService` und `HanaQueryService.GetMappedSalesRecordsAsync` unterscheiden sich nur noch in der Quellenbeschaffung; Join und `SalesRecord`-Mapping sind zentral.
|
||||
- Bei HANA mit gepflegten Quellen/Mappings nutzt `HanaDataSourceAdapter` den generischen Mapping-Pfad.
|
||||
- Ohne HANA-Mapping bleibt der alte B1-HANA-Standardpfad fuer `OINV/INV1/ORIN/RIN1` aktiv.
|
||||
|
||||
Finance-Konfiguration:
|
||||
|
||||
- `FinanceReferences` enthaelt Soll-/check.xlsx-Referenzen.
|
||||
- `FinanceIntercompanyRules` enthaelt 2nd-party/IC-Regeln.
|
||||
- Budgetkurse werden als `CurrencyExchangeRates` mit `Notes = Budget 2025` gepflegt.
|
||||
- Config-Export/-Import umfasst Finance-Referenzen und IC-Regeln.
|
||||
|
||||
ZSCHWEIZ-Seed:
|
||||
|
||||
- Quelle Alias `Z`
|
||||
- EntitySet `ZSCHWEIZSet`
|
||||
- Mapping auf `SalesRecord` ist vorbefuellt und grafisch editierbar.
|
||||
- Beim App-Start wird die ZSCHWEIZ-Quelle samt Feldmapping per Upsert angelegt oder repariert.
|
||||
- Wenn Gateway `$metadata` liefert, koennen Felder in der UI per `Felder aus Quellen laden` gelesen werden.
|
||||
|
||||
ABAP-Fachlogik:
|
||||
|
||||
- `BUKRS 1100` = Schweiz, `TSC TRCH`, `LAND1 CH`
|
||||
- `BUKRS 1200` = Oesterreich, `TSC TRAT`, `LAND1 AT`
|
||||
- `CUSTOMER_LAND` = Kundenland aus `KNA1-LAND1`
|
||||
- Netto-/Steuerwerte werden in Belegwaehrung und Hauswaehrung geschrieben.
|
||||
|
||||
Aktuelle FinanceProbe-Funktionen:
|
||||
|
||||
- `Meeting Ampel 2025` fuer alle Laender aus `check.xlsx`
|
||||
- `Detail alle Laender`
|
||||
- `Spain CSV direct check`
|
||||
- `Germany Excel sample check`
|
||||
|
||||
Spanien:
|
||||
|
||||
- Datei: `sagespain/v2/Spain_Sales_2025.csv`
|
||||
- Ist: `3'082'320.18` EUR
|
||||
- Soll: `3'102'333.61`
|
||||
- Differenz: `-20'013.43`
|
||||
- Status: Gelb / Pruefen
|
||||
- Technisch lesbar, fachliche Differenz noch offen
|
||||
|
||||
Deutschland:
|
||||
|
||||
- Datei: `DE_Beispiel_Export_Daten.xlsx`
|
||||
- Sample-Summe `NettoPreisGesamtX`: `8'290.70` EUR
|
||||
- Nur Beispielfile, keine finale Jahreszahl
|
||||
- Mapping technisch verstanden, finaler DE-Jahresfile fehlt
|
||||
|
||||
Letzte Verifikation:
|
||||
|
||||
- `dotnet build .\Tools\FinanceProbe\FinanceProbe.csproj --verbosity minimal --no-restore`
|
||||
- `dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --verbosity minimal --no-restore`
|
||||
- Ergebnis: Build OK, Tests `50/50`, FinanceProbe `HTTP 200`
|
||||
|
||||
Diese Datei ist fuer andere LLMs gedacht, die das Projekt schnell verstehen und daraus Architekturtexte, Visualisierungen, Ablaufdiagramme oder UI-/Datenflussgrafiken erzeugen sollen.
|
||||
|
||||
## Zweck des Systems
|
||||
|
||||
`TrafagSalesExporter` ist eine Blazor Server App auf `.NET 8`, die Verkaufsdaten aus mehreren Quellsystemen in ein gemeinsames Zielschema ueberfuehrt.
|
||||
|
||||
Quellsysteme:
|
||||
|
||||
- `HANA`-basierte Systeme wie `BI1` und `SAGE`
|
||||
- `SAP_GATEWAY` ueber OData
|
||||
- `MANUAL_EXCEL` aus hochgeladenen oder referenzierten Excel-Dateien
|
||||
|
||||
Zielbild:
|
||||
|
||||
- jede Quelle wird in `SalesRecord` normalisiert
|
||||
- Standortdaten koennen lokal als Excel exportiert werden
|
||||
- alle Datensaetze werden in `CentralSalesRecords` gespeichert
|
||||
- eine zentrale konsolidierte Datei wird aus dem zentralen Datenbestand erzeugt
|
||||
- ein `Management Cockpit` analysiert sowohl exportierte Dateien als auch zentrale Rohdaten
|
||||
|
||||
## Technologie-Stack
|
||||
|
||||
- UI: Blazor Server + MudBlazor
|
||||
- Authentifizierung: ASP.NET Core Authentication/Authorization, produktiv Windows Authentication / Active Directory
|
||||
- Datenbank: SQLite (`trafag_exporter.db`)
|
||||
- Excel lesen/schreiben: ClosedXML
|
||||
- SAP HANA Zugriff: `Sap.Data.Hana.Core.v2.1.dll`
|
||||
- SAP Gateway / OData: eigener Service ueber HTTP
|
||||
- SharePoint Upload/Download: Microsoft Graph + Azure Identity
|
||||
- Tests: xUnit
|
||||
|
||||
## Einstiegspunkte
|
||||
|
||||
Wichtige Dateien:
|
||||
|
||||
- [Program.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Program.cs)
|
||||
- [Data/AppDbContext.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Data/AppDbContext.cs)
|
||||
- [Components/Layout/NavMenu.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Layout/NavMenu.razor)
|
||||
|
||||
`Program.cs` registriert fast die komplette Architektur ueber DI und fuehrt beim Start `DatabaseInitializationService.InitializeAsync()` aus.
|
||||
|
||||
Zusaetzlich registriert `Program.cs` den Zugriffsschutz:
|
||||
|
||||
- `AddCascadingAuthenticationState`
|
||||
- Windows Authentication fuer produktive Umgebungen
|
||||
- Development-Authentication-Handler nur bei `ASPNETCORE_ENVIRONMENT=Development` und `Security:DevelopmentBypass=true`
|
||||
- globale Fallback-Policy fuer authentifizierte/berechtigte User
|
||||
- Policy `AdminOnly` fuer administrative Seiten
|
||||
|
||||
## Hauptseiten
|
||||
|
||||
Navigation:
|
||||
|
||||
- `/` Dashboard
|
||||
- `/standorte`
|
||||
- `/transformations`
|
||||
- `/management-cockpit`
|
||||
- `/settings`
|
||||
- `/logs`
|
||||
|
||||
Dateien:
|
||||
|
||||
- [Components/Pages/Dashboard.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Pages/Dashboard.razor)
|
||||
- [Components/Pages/Standorte.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Pages/Standorte.razor)
|
||||
- [Components/Pages/Transformations.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Pages/Transformations.razor)
|
||||
- [Components/Pages/ManagementCockpit.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Pages/ManagementCockpit.razor)
|
||||
- [Components/Pages/Settings.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Pages/Settings.razor)
|
||||
- [Components/Pages/Logs.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Pages/Logs.razor)
|
||||
|
||||
Kurzrollen:
|
||||
|
||||
- `Dashboard`: Einzel-Export, Alle exportieren, zentrale Datei neu erzeugen, Live-Status
|
||||
- `Standorte`: Standortpflege, zentrale HANA-Technik, SAP-Konfiguration pro Standort, manueller Excel-Import
|
||||
- `Transformations`: feldweise und record-basierte Regeln
|
||||
- `Management Cockpit`: Dateianalyse und Rohanalyse aus `CentralSalesRecords`
|
||||
- `Settings`: SharePoint, Exportpfade, Quellsysteme, Wechselkurse, Config Import/Export
|
||||
- `Logs`: technische Ereignisprotokolle
|
||||
|
||||
Security:
|
||||
|
||||
- alle Routen erfordern Authentifizierung
|
||||
- `Settings`, `Standorte` und `Transformations` sind `AdminOnly`
|
||||
- Admin-Navigation wird nur fuer Admins angezeigt
|
||||
- eingeloggter Benutzer wird im App-Bar angezeigt
|
||||
|
||||
## Kernmodelle
|
||||
|
||||
Wichtige Entity-Klassen:
|
||||
|
||||
- [Models/Site.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/Site.cs)
|
||||
- [Models/SourceSystemDefinition.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/SourceSystemDefinition.cs)
|
||||
- [Models/HanaServer.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/HanaServer.cs)
|
||||
- [Models/SalesRecord.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/SalesRecord.cs)
|
||||
- [Models/CentralSalesRecord.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/CentralSalesRecord.cs)
|
||||
- [Models/FieldTransformationRule.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/FieldTransformationRule.cs)
|
||||
- [Models/SapSourceDefinition.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/SapSourceDefinition.cs)
|
||||
- [Models/SapJoinDefinition.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/SapJoinDefinition.cs)
|
||||
- [Models/SapFieldMapping.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/SapFieldMapping.cs)
|
||||
- [Models/SharePointConfig.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/SharePointConfig.cs)
|
||||
- [Models/ExportSettings.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/ExportSettings.cs)
|
||||
- [Models/ExportLog.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/ExportLog.cs)
|
||||
- [Models/AppEventLog.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/AppEventLog.cs)
|
||||
- [Models/CurrencyExchangeRate.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/CurrencyExchangeRate.cs)
|
||||
|
||||
`SalesRecord` / `CentralSalesRecord` enthalten neben den positionsnahen Feldern auch B1-Belegwaehrungsfelder:
|
||||
|
||||
- `DocumentCurrency` aus `DocCur`
|
||||
- `DocumentTotalForeignCurrency` aus `DocTotalFC`
|
||||
- `DocumentTotalLocalCurrency` aus `DocTotal`
|
||||
- `VatSumForeignCurrency` aus `VatSumFC`
|
||||
- `VatSumLocalCurrency` aus `VatSum`
|
||||
- `DocumentRate` aus `DocRate`
|
||||
- `CompanyCurrency` aus `OADM.MainCurncy`
|
||||
|
||||
Wichtig: diese Dokumentwerte sind Belegkopfwerte und werden in der positionsbasierten Excel pro Position wiederholt. Fuer Belegkopfsummen muessen Auswertungen nach Beleg deduplizieren.
|
||||
|
||||
Wichtige Relationen:
|
||||
|
||||
- `Site -> HanaServer` optional
|
||||
- `Site -> SapSourceDefinitions`
|
||||
- `Site -> SapJoinDefinitions`
|
||||
- `Site -> SapFieldMappings`
|
||||
- `Site -> CentralSalesRecords`
|
||||
- `SourceSystemDefinition` ist zentrale Stammdatenquelle fuer Quellsysteme
|
||||
|
||||
## Datenbanktabellen
|
||||
|
||||
`AppDbContext` enthaelt:
|
||||
|
||||
- `HanaServers`
|
||||
- `SourceSystemDefinitions`
|
||||
- `Sites`
|
||||
- `SharePointConfigs`
|
||||
- `ExportSettings`
|
||||
- `ExportLogs`
|
||||
- `AppEventLogs`
|
||||
- `FieldTransformationRules`
|
||||
- `CurrencyExchangeRates`
|
||||
- `SapSourceDefinitions`
|
||||
- `SapJoinDefinitions`
|
||||
- `SapFieldMappings`
|
||||
- `CentralSalesRecords`
|
||||
|
||||
## Architekturrollen der Services
|
||||
|
||||
### Export / Orchestrierung
|
||||
|
||||
- [Services/ExportOrchestrationService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ExportOrchestrationService.cs)
|
||||
- [Services/SiteExportService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/SiteExportService.cs)
|
||||
- [Services/ConsolidatedExportService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ConsolidatedExportService.cs)
|
||||
- [Services/CentralSalesRecordService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/CentralSalesRecordService.cs)
|
||||
- [Services/ExportLogService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ExportLogService.cs)
|
||||
|
||||
Rollen:
|
||||
|
||||
- `ExportOrchestrationService` steuert UI-nahe Exportlaeufe und Live-Status
|
||||
- `SiteExportService` entscheidet anhand des Quellsystems, wie ein Standort gelesen wird
|
||||
- `CentralSalesRecordService` ersetzt zentrale Saetze pro Standort
|
||||
- `ConsolidatedExportService` erzeugt die zentrale Datei
|
||||
|
||||
### Datenquellen
|
||||
|
||||
- [Services/HanaQueryService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/HanaQueryService.cs)
|
||||
- [Services/SapGatewayService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/SapGatewayService.cs)
|
||||
- [Services/SapCompositionService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/SapCompositionService.cs)
|
||||
- [Services/ManualExcelImportService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ManualExcelImportService.cs)
|
||||
- [Services/SharePointUploadService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/SharePointUploadService.cs)
|
||||
|
||||
Rollen:
|
||||
|
||||
- `HanaQueryService`: SQL gegen SAP B1/HANA-nahe Schemata
|
||||
- `SapGatewayService`: OData-Metadaten und Reads
|
||||
- `SapCompositionService`: Mehrquellen-/Join-/Mapping-Aufbau fuer SAP
|
||||
- `ManualExcelImportService`: Import im Exportformat aus `.xlsx`
|
||||
- `SharePointUploadService`: Upload fuer Exportdateien und Download fuer manuelle Excel-Dateien
|
||||
|
||||
### Transformation / Mapping
|
||||
|
||||
- [Services/TransformationCatalog.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/TransformationCatalog.cs)
|
||||
- [Services/TransformationStrategies.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/TransformationStrategies.cs)
|
||||
- [Services/RecordTransformationService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/RecordTransformationService.cs)
|
||||
- [Services/CurrencyExchangeRateService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/CurrencyExchangeRateService.cs)
|
||||
- [Services/ExchangeRateImportService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ExchangeRateImportService.cs)
|
||||
|
||||
Rollen:
|
||||
|
||||
- `Value`-Transformationen fuer einzelne Felder
|
||||
- `Record`-Transformationen fuer zeilenweite Regeln
|
||||
- Wechselkursimport und -umrechnung
|
||||
|
||||
### Reporting / Monitoring / Infrastruktur
|
||||
|
||||
- [Services/ManagementCockpitService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ManagementCockpitService.cs)
|
||||
- [Services/AppEventLogService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/AppEventLogService.cs)
|
||||
- [Services/ConfigTransferService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ConfigTransferService.cs)
|
||||
- [Services/DatabaseInitializationService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/DatabaseInitializationService.cs)
|
||||
- [Services/TimerBackgroundService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/TimerBackgroundService.cs)
|
||||
|
||||
## Der wichtigste technische Ablauf
|
||||
|
||||
### 1. Standort-Export
|
||||
|
||||
Pfad:
|
||||
|
||||
`Dashboard/Standorte -> ExportOrchestrationService -> SiteExportService`
|
||||
|
||||
`SiteExportService` unterscheidet drei Modi:
|
||||
|
||||
1. `SAP_GATEWAY`
|
||||
- SAP-Quellen lesen
|
||||
- SAP-Joins anwenden
|
||||
- SAP-Feldmappings auf `SalesRecord`
|
||||
- Transformationen anwenden
|
||||
- Standort-Excel erzeugen
|
||||
- `CentralSalesRecords` ersetzen
|
||||
- optional SharePoint-Upload
|
||||
|
||||
2. `HANA`
|
||||
- effektive zentrale HANA-Konfiguration laden
|
||||
- optionale Standort-Credential-Overrides anwenden
|
||||
- SQL in HANA ausfuehren
|
||||
- `SalesRecord` erzeugen
|
||||
- Transformationen anwenden
|
||||
- Standort-Excel erzeugen
|
||||
- `CentralSalesRecords` ersetzen
|
||||
- optional SharePoint-Upload
|
||||
|
||||
3. `MANUAL_EXCEL`
|
||||
- `ManualImportFilePath` auswerten
|
||||
- wenn lokal/UNC vorhanden: lokal lesen
|
||||
- wenn SharePoint-Referenz: via Graph temp herunterladen
|
||||
- Excel in `SalesRecord` lesen
|
||||
- Transformationen anwenden
|
||||
- keine neue Standortdatei erzeugen, bestehende Excel dient als Eingabe
|
||||
- `CentralSalesRecords` ersetzen
|
||||
|
||||
### 2. Konsolidierter Export
|
||||
|
||||
Pfad:
|
||||
|
||||
`Dashboard -> ExportOrchestrationService -> ConsolidatedExportService`
|
||||
|
||||
Semantik aktuell:
|
||||
|
||||
- die zentrale Datei basiert fachlich auf `CentralSalesRecords`
|
||||
- `ExportAllAsync()` sammelt zwar auch `consolidatedRecords`, aber die zentrale Exportsemantik ist historisch noch nicht vollkommen bereinigt
|
||||
|
||||
### 3. Management Cockpit
|
||||
|
||||
Zwei Betriebsarten:
|
||||
|
||||
1. Dateibasiert
|
||||
- vorhandene `.xlsx` waehlen
|
||||
- Datei mit ClosedXML lesen
|
||||
- Summenfeld waehlen
|
||||
- Anzeige-Waehrung waehlen
|
||||
- Kennzahlen, Top-Listen, Datenqualitaet, Findings erzeugen
|
||||
|
||||
2. Zentraldatenbasiert
|
||||
- direkt aus `CentralSalesRecords`
|
||||
- Jahr/Monat Filter
|
||||
- Summenfeld waehlen
|
||||
- optionale weitere Summenfelder fuer Zeitreihen waehlen
|
||||
- Anzeige-Waehrung waehlen
|
||||
- Rohsicht ohne Intercompany-, Budget- oder Spartelogik
|
||||
|
||||
Aktuelle Summenfelder:
|
||||
|
||||
- `Sales Price/Value`
|
||||
- `Quantity`
|
||||
- `Standard cost`
|
||||
- `Quantity * Standard cost`
|
||||
|
||||
Aktuelle Anzeige-Waehrungen:
|
||||
|
||||
- `EUR`
|
||||
- `USD`
|
||||
- `Original`
|
||||
|
||||
Die Waehrungsumrechnung nutzt `CurrencyExchangeRateService`. Bei `Original` bleiben Werte in Quellwaehrungen gruppiert. Nicht-betragliche Summenfelder wie `Quantity` haben keine Waehrung. Fehlende Wechselkurse werden gezaehlt und in Hinweisen bzw. Findings sichtbar; betroffene Werte werden in der Zielwaehrung mit `0` einbezogen.
|
||||
|
||||
## Quellsystemlogik
|
||||
|
||||
### SourceSystemDefinition
|
||||
|
||||
`SourceSystemDefinition` ist die fuehrende Wahrheit fuer:
|
||||
|
||||
- `Code`
|
||||
- `DisplayName`
|
||||
- `ConnectionKind`
|
||||
- `IsActive`
|
||||
- `CentralUsername`
|
||||
- `CentralPassword`
|
||||
- `CentralServiceUrl` fuer SAP
|
||||
|
||||
Anschlussarten:
|
||||
|
||||
- `HANA`
|
||||
- `SAP_GATEWAY`
|
||||
- `MANUAL_EXCEL`
|
||||
|
||||
### HANA
|
||||
|
||||
Fachliche Logik:
|
||||
|
||||
- zentrale technische HANA-Konfiguration pro Quellsystem
|
||||
- keine separaten Vollverbindungen pro Standort
|
||||
- Standort speichert nur Fachdaten plus optionale Username-/Password-Overrides
|
||||
|
||||
Schema-Lookup:
|
||||
|
||||
- in `Standorte` gibt es jetzt `Schemas laden`
|
||||
- Lookup fragt `sys.tables` in HANA ab
|
||||
- eingeschraenkt auf typische B1-Schemas mit Tabellen wie `OINV`, `INV1`, `ORIN`, `RIN1`, `OCRD`, `OITM`
|
||||
|
||||
### SAP
|
||||
|
||||
Fachliche Logik:
|
||||
|
||||
- zentrale SAP Service URL in `SourceSystemDefinition.CentralServiceUrl`
|
||||
- Standort kann `SapServiceUrl` als Override pflegen
|
||||
- pro Standort gibt es SAP-Quellen, Joins und Feldmappings
|
||||
|
||||
### Manual Excel
|
||||
|
||||
Fachliche Logik:
|
||||
|
||||
- `Site.ManualImportFilePath` kann sein:
|
||||
- lokaler Windows-Pfad
|
||||
- UNC-Pfad
|
||||
- SharePoint-URL
|
||||
- SharePoint-Pfad unterhalb der konfigurierten Site
|
||||
- Standortdaten werden aus der Excel eingelesen und in `CentralSalesRecords` uebernommen
|
||||
- SharePoint dient hier als Eingangsquelle, nicht nur als Exportziel
|
||||
|
||||
## Transformationen
|
||||
|
||||
Das System unterscheidet:
|
||||
|
||||
- `Value`-Transformationen
|
||||
- `Record`-Transformationen
|
||||
|
||||
Beispiele:
|
||||
|
||||
- `Copy`
|
||||
- `Uppercase`
|
||||
- `Lowercase`
|
||||
- `Prefix`
|
||||
- `Suffix`
|
||||
- `Replace`
|
||||
- `Constant`
|
||||
- `NormalizeCurrencyCode`
|
||||
- `FirstNonEmpty`
|
||||
- `ConvertCurrency`
|
||||
|
||||
Technischer Ablauf:
|
||||
|
||||
- Regeln liegen in `FieldTransformationRules`
|
||||
- `TransformationCatalog` meldet verfuegbare Strategien an die UI
|
||||
- `RecordTransformationService` wendet record-basierte Strategien an
|
||||
|
||||
## Wechselkurse
|
||||
|
||||
Vorhanden:
|
||||
|
||||
- `CurrencyExchangeRates`
|
||||
- `ExchangeRateImportService` fuer ECB-Tageskurse
|
||||
- `NormalizeCurrencyCode`
|
||||
- `ConvertCurrency`
|
||||
- `ManagementCockpitService` kann betragliche Cockpit-Kennzahlen in `EUR` oder `USD` umrechnen
|
||||
|
||||
Wichtig:
|
||||
|
||||
- die Rohsicht im `Management Cockpit` kann jetzt Anzeige-Waehrungen nutzen
|
||||
- `CHF` ist im Cockpit aktuell nicht als direkte Anzeige-Waehrung in der UI angeboten
|
||||
- CHF bleibt weiterhin Teil des allgemeinen Transformationssystems
|
||||
- fachlich ist noch zu klaeren, ob CHF als Standard- oder zusaetzliche Cockpit-Anzeige-Waehrung gebraucht wird
|
||||
|
||||
## SharePoint-Rolle im Gesamtsystem
|
||||
|
||||
`SharePointConfig` enthaelt:
|
||||
|
||||
- `SiteUrl`
|
||||
- `ExportFolder`
|
||||
- `CentralExportFolder`
|
||||
- `TenantId`
|
||||
- `ClientId`
|
||||
- `ClientSecret`
|
||||
|
||||
Verwendung:
|
||||
|
||||
- Upload von Standort-Exporten
|
||||
- Upload der zentralen Datei
|
||||
- Download von manuellen Excel-Dateien fuer `MANUAL_EXCEL`
|
||||
|
||||
Wichtig:
|
||||
|
||||
- die App arbeitet gegen dieselbe SharePoint-Site, die in `Settings` konfiguriert ist
|
||||
- fuer `MANUAL_EXCEL` muessen Referenzen auf derselben Site aufloesbar sein
|
||||
|
||||
## Startinitialisierung / Migrationen
|
||||
|
||||
Kritische Datei:
|
||||
|
||||
- [Services/DatabaseInitializationService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/DatabaseInitializationService.cs)
|
||||
|
||||
Aktuelle Rolle:
|
||||
|
||||
- `EnsureCreated`
|
||||
- Schema-Ergaenzungen per `ALTER TABLE`
|
||||
- Tabellen-Rebuilds bei Legacy-Schemas
|
||||
- FK-Reparaturen
|
||||
- Stammdaten-Seeding
|
||||
- empfohlene Transformationsregeln
|
||||
|
||||
Bekannte Architekturrealitaet:
|
||||
|
||||
- das ist funktional hilfreich, aber kein sauberes Migrationssystem
|
||||
- die Startlogik traegt produktive Schema-Reparaturverantwortung
|
||||
- das ist einer der wichtigsten technischen Risikobloecke
|
||||
|
||||
Bereits gehaertete Fehlerbilder:
|
||||
|
||||
- kaputte FK-Referenzen auf `Sites_old`
|
||||
- kaputte FK-Referenzen auf `HanaServers_repair_old`
|
||||
- Legacy-Credential-Spalten in `ExportSettings`
|
||||
- Legacy-Credential-Spalten in `HanaServers`
|
||||
- verschobene Spalten im `Sites_old -> Sites`-Kopierpfad
|
||||
|
||||
## Authentifizierung / Autorisierung
|
||||
|
||||
Dateien:
|
||||
|
||||
- [Security/SecurityOptions.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Security/SecurityOptions.cs)
|
||||
- [Security/SecurityPolicies.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Security/SecurityPolicies.cs)
|
||||
- [Security/DevelopmentAuthenticationHandler.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Security/DevelopmentAuthenticationHandler.cs)
|
||||
- [Components/Routes.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Routes.razor)
|
||||
- [Components/Layout/NavMenu.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Layout/NavMenu.razor)
|
||||
- [Components/Layout/MainLayout.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Layout/MainLayout.razor)
|
||||
|
||||
Produktives Ziel:
|
||||
|
||||
- Windows Authentication / Active Directory
|
||||
- keine eigene Benutzerverwaltung
|
||||
- Zugriff ueber AD-Gruppen
|
||||
- Adminrechte ueber separate AD-Gruppe
|
||||
|
||||
Konfiguration in `appsettings.json`:
|
||||
|
||||
- `Security:AccessGroups`
|
||||
- `Security:AdminGroups`
|
||||
- `Security:DevelopmentBypass`
|
||||
- `Security:DevelopmentUserIsAdmin`
|
||||
- `Security:DevelopmentUserName`
|
||||
|
||||
Default-Gruppen:
|
||||
|
||||
- `TRAFAG\\TrafagSalesExporter-Users`
|
||||
- `TRAFAG\\TrafagSalesExporter-Admins`
|
||||
|
||||
Development:
|
||||
|
||||
- `appsettings.Development.json` aktiviert einen lokalen Development-Auth-Handler
|
||||
- dieser ist nur fuer lokale Entwicklung gedacht
|
||||
- produktiv darf `ASPNETCORE_ENVIRONMENT` nicht `Development` sein
|
||||
|
||||
IIS-Betrieb:
|
||||
|
||||
- Windows Authentication aktivieren
|
||||
- Anonymous Authentication deaktivieren
|
||||
- AD-Gruppennamen in produktiver Konfiguration setzen
|
||||
|
||||
## Config Import / Export
|
||||
|
||||
Dateien:
|
||||
|
||||
- [Services/ConfigTransferService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ConfigTransferService.cs)
|
||||
- [Models/ConfigTransferPackage.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/ConfigTransferPackage.cs)
|
||||
|
||||
Aktueller Stand:
|
||||
|
||||
- JSON Export/Import fuer Konfiguration
|
||||
- Secrets optional
|
||||
- `SourceSystemDefinitions` im aktuellen Modell enthalten
|
||||
- HANA-Technik ohne HANA-Credentials
|
||||
- Standort-Overrides bleiben erhalten
|
||||
|
||||
Wichtige Punkte:
|
||||
|
||||
- Import laeuft jetzt transaktional
|
||||
- alte `ConnectionKind`-lose Formate bekommen Fallbacks
|
||||
- `CentralSalesRecords` werden nicht mehr blind geloescht
|
||||
- bestehende zentrale Laufzeitdaten werden fuer weiterhin vorhandene Standorte remappt
|
||||
|
||||
## Logging
|
||||
|
||||
Es gibt zwei Log-Ebenen:
|
||||
|
||||
- `ExportLogs` fuer fachliche Exporthistorie
|
||||
- `AppEventLogs` fuer technische und UI-nahe Ereignisse
|
||||
|
||||
Die `Logs`-Seite liest vor allem `AppEventLogs`.
|
||||
|
||||
## Tests
|
||||
|
||||
Testprojekt:
|
||||
|
||||
- [TrafagSalesExporter.Tests](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/TrafagSalesExporter.Tests)
|
||||
|
||||
Aktuell vorhandene Schwerpunkte:
|
||||
|
||||
- Transformationen
|
||||
- Record-Transformationen
|
||||
- TransformationCatalog
|
||||
- CurrencyExchangeRateService
|
||||
- ExchangeRateImportService
|
||||
- ManualExcelImportService
|
||||
- ManagementCockpitService
|
||||
- ConfigTransferService
|
||||
- DatabaseInitializationService
|
||||
|
||||
`ManagementCockpitServiceTests` decken inzwischen auch ab:
|
||||
|
||||
- zentrale Analyse nach Jahr/Monat
|
||||
- Tages-, Monats-, Jahres-, Quellen- und Laenderwerte
|
||||
- waehlbare Summenfelder
|
||||
- Waehrungsumrechnung in EUR
|
||||
- Wechselkurs-Caching
|
||||
- Mengen-Auswertung ohne Waehrungsumrechnung
|
||||
- Zusatz-Summenfelder in Zeitreihen
|
||||
|
||||
`SecurityPolicyFactoryTests` decken inzwischen ab:
|
||||
|
||||
- App-Zugriff fuer User in `AccessGroups`
|
||||
- Ablehnung fuer User ausserhalb der Access-Gruppen
|
||||
- Development-Auth-Zugriff im lokalen Modus
|
||||
- Admin-Zugriff fuer User in `AdminGroups`
|
||||
- Ablehnung normaler User fuer `AdminOnly`
|
||||
- Development-Admin-Claim
|
||||
|
||||
`CentralSalesRecordServiceTests` decken inzwischen ab:
|
||||
|
||||
- Persistenz und Ruecklesen der B1-Belegwaehrungsfelder in `CentralSalesRecords`
|
||||
|
||||
Wichtig:
|
||||
|
||||
- es gibt aktuell keine echten UI-Komponententests mit `bUnit`
|
||||
- es gibt keine Browser-E2E-Tests mit `Playwright`
|
||||
- viele Button-Aktionen sind nur indirekt ueber Services und Persistenz getestet
|
||||
|
||||
## Bekannte offene Architekturfragen
|
||||
|
||||
Fuer andere LLMs wichtig, damit Visualisierungen nicht zu glatt oder zu idealisiert werden:
|
||||
|
||||
1. `DatabaseInitializationService` ist ein produktiver Reparatur-/Migrationslayer, nicht nur Bootstrap.
|
||||
2. `Settings.razor` und `Standorte.razor` enthalten weiterhin relativ viel Anwendungslogik.
|
||||
3. Die Semantik der konsolidierten Datei ist historisch teilweise doppelt angelegt.
|
||||
4. Das `Management Cockpit` ist noch kein voll generalisierter Reporting-Layer.
|
||||
5. SharePoint ist sowohl Exportziel als auch bei `MANUAL_EXCEL` mittlerweile moegliche Eingangsquelle.
|
||||
|
||||
## Empfohlene Diagramme fuer andere LLMs
|
||||
|
||||
### 1. Kontextdiagramm
|
||||
|
||||
Zeige:
|
||||
|
||||
- Benutzer
|
||||
- Blazor App
|
||||
- SQLite
|
||||
- SAP HANA
|
||||
- SAP Gateway
|
||||
- lokale Dateisystempfade
|
||||
- SharePoint
|
||||
|
||||
### 2. Komponenten-/Service-Diagramm
|
||||
|
||||
Gruppiere:
|
||||
|
||||
- UI
|
||||
- Orchestrierung
|
||||
- Quelladapter
|
||||
- Transformation
|
||||
- Persistenz
|
||||
- Reporting
|
||||
|
||||
### 3. Datenflussdiagramm pro Quelltyp
|
||||
|
||||
Je ein separater Flow fuer:
|
||||
|
||||
- HANA
|
||||
- SAP Gateway
|
||||
- Manual Excel lokal
|
||||
- Manual Excel SharePoint
|
||||
|
||||
### 4. ER-Diagramm
|
||||
|
||||
Fokussiere auf:
|
||||
|
||||
- `SourceSystemDefinition`
|
||||
- `HanaServer`
|
||||
- `Site`
|
||||
- `SapSourceDefinition`
|
||||
- `SapJoinDefinition`
|
||||
- `SapFieldMapping`
|
||||
- `CentralSalesRecord`
|
||||
- `FieldTransformationRule`
|
||||
|
||||
### 5. Sequenzdiagramm fuer Export
|
||||
|
||||
Wichtige Stationen:
|
||||
|
||||
- Dashboard
|
||||
- ExportOrchestrationService
|
||||
- SiteExportService
|
||||
- spezifischer Quellservice
|
||||
- Transformation
|
||||
- CentralSalesRecordService
|
||||
- Excel/SharePoint
|
||||
- ExportLog/AppEventLog
|
||||
|
||||
## Prompt-Vorlage fuer ein anderes LLM
|
||||
|
||||
Wenn ein anderes LLM daraus Visualisierungen erzeugen soll, funktioniert diese Anweisung gut:
|
||||
|
||||
> Lies `LLM_SYSTEM_GUIDE.md` als primaeren Systemkontext. Erzeuge daraus ein Architekturdiagramm, ein Datenflussdiagramm fuer HANA/SAP/MANUAL_EXCEL, ein ER-Diagramm der wichtigsten Tabellen und ein Sequenzdiagramm fuer `ExportAsync`. Achte darauf, dass `DatabaseInitializationService` produktive Reparaturlogik enthaelt und dass `MANUAL_EXCEL` sowohl lokal als auch ueber SharePoint gelesen werden kann.
|
||||
|
||||
## Weitere Kontextdateien
|
||||
|
||||
Zusatzkontext fuer Verlauf und Risiken:
|
||||
|
||||
- [HANDOFF_2026-04-15.md](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/HANDOFF_2026-04-15.md)
|
||||
- [NEXT_STEPS_2026-04-15.md](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/NEXT_STEPS_2026-04-15.md)
|
||||
|
||||
Diese beiden Dateien sind wichtig, wenn ein anderes LLM nicht nur Struktur, sondern auch historische Umbauten, Risiken und Prioritaeten verstehen soll.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,66 +1,13 @@
|
||||
# Finance Dashboard Todo
|
||||
|
||||
Stand: 2026-05-20
|
||||
Stand: 2026-05-27
|
||||
|
||||
Hinweis:
|
||||
Historische Todo-Liste, fuer RAG komprimiert.
|
||||
|
||||
Dieses Dokument ist eine historische Todo-Liste vom 2026-05-15 und wurde am 2026-05-20 nachgezogen. Fuer den aktuell fuehrenden Dokumentenstatus siehe:
|
||||
Aktueller Finance-Kontext steht in `docs/rag/FINANCE.md`.
|
||||
|
||||
Volltext bei Bedarf:
|
||||
|
||||
```text
|
||||
docs/MD_DOKUMENTENSTATUS_2026-05-20.md
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
|
||||
Ziel: Aufbau eines modernen, uebersichtlichen Intranet-Dashboards fuer das Group Sales Reporting, zugaenglich fuer alle freigegebenen Benutzer.
|
||||
|
||||
## Todo
|
||||
|
||||
| Prio | Aufgabe | Status |
|
||||
| --- | --- | --- |
|
||||
| 1 | Fuehrendes CFO-Dokument verwenden: `FINANCE_CHEF_SUMMARY_2026-05-15.docx` | Historisch; neue Anwenderdoku `FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx` ergaenzt |
|
||||
| 1 | Offene Finance-Entscheide mit Andreas/Finance durchgehen | Offen |
|
||||
| 1 | Italien-Abweichung klaeren: Berechnungsart, Deduplizierung, Intercompany | Teilweise geklaert; Finance-Leiter bestaetigte Methode, Restdifferenz dokumentiert |
|
||||
| 1 | Italien IC-Diagnose besprechen: Trafag, Magnetic Sense/Magnets Sense und Gesellschaft fuer Sensorik erklaeren einen grossen Teil, aber nicht die ganze Abweichung | Historisch; neue IT-Methode verwendet `CustomerName` Trafag Italia und Dublettenregel |
|
||||
| 1 | Deutschland: finalen Jahresfile 2025 beschaffen | Erledigt technisch; DE Alphaplan ist eingebaut, Fachabgrenzung Kundenlaender bleibt offen |
|
||||
| 2 | UK/England: Jahresvollstaendigkeit und Restdifferenz pruefen | Teilweise erledigt; UK ist Sage/Manual Excel, Mapping korrigiert, Restdifferenz klein/offen |
|
||||
| 2 | CH/AT: Sollzuordnung und Trennung final bestaetigen | Offen |
|
||||
| 2 | Spanien und Oesterreich: kleinere Differenzen klaeren | Offen |
|
||||
| 2 | Intercompany-/2nd-party-Kundenliste final definieren | Offen |
|
||||
| 3 | Budgetkurse je Jahr als Quelle festlegen | Offen |
|
||||
| 3 | Dashboard-Sicht fuer CFO: nur Laender mit Abweichung und Handlungsbedarf anzeigen | In Arbeit; Finance Summary und Soll/Ist Sicht vorhanden |
|
||||
| 3 | Detailansicht je Land mit Berechnungsart und Pruefspur behalten | In Arbeit; Rohdaten-/Diagnosereiter bleibt erhalten |
|
||||
| 3 | Freigabe-/Berechtigungskonzept fuer Intranet-Dashboard klaeren | Offen |
|
||||
|
||||
## Naechster Termin
|
||||
|
||||
Ziel im Termin:
|
||||
- Deutschland und Spanien muss finales Excel schicken (Rohali 2 mal nachgehakt warte auf finales File)
|
||||
- Grundlogik bestaetigen: Hauswaehrung, Nettofakturawert, Buchungsdatum, Berechnung pro Belegposition.
|
||||
- Offene Laenderabweichungen priorisieren.
|
||||
- Pro Land festlegen, welche Datenquelle und Berechnungslogik final gilt.
|
||||
|
||||
## IT / Intercompany Diagnose
|
||||
|
||||
Aktuelle Diagnose fuer Italien:
|
||||
|
||||
| Kennzahl | Wert |
|
||||
| --- | ---: |
|
||||
| IT Ist vor IC-Abzug | 14.704.336,29 EUR |
|
||||
| Rhino/check.xlsx Soll | 7.669.840,00 EUR |
|
||||
| Abweichung vor IC | +7.034.496,29 EUR |
|
||||
| Erkannter IC-/2nd-party-Abzug | 4.397.746,90 EUR |
|
||||
| IT Ist exkl. IC | 10.306.589,39 EUR |
|
||||
| Restabweichung nach IC | +2.636.749,39 EUR |
|
||||
|
||||
Verwendete IC-/2nd-party-Marker:
|
||||
|
||||
- `TRAFAG`
|
||||
- `MAGNETIC SENSE`
|
||||
- `MAGNETS SENSE`
|
||||
- `GESELLSCHAFT FUER SENSORIK`
|
||||
- `GESELLSCHAFT FUR SENSORIK`
|
||||
|
||||
Bewertung:
|
||||
|
||||
- Intercompany/2nd-party erklaert einen grossen Teil der IT-Abweichung.
|
||||
- Die Summe passt dadurch deutlich besser, aber noch nicht vollstaendig.
|
||||
- Restabweichung weiter pruefen: Summenlogik, Beleg/Position-Deduplizierung, Gutschriften/Storno und weitere lokale IC-Kunden oder Schreibweisen.
|
||||
|
||||
@@ -1,36 +1,13 @@
|
||||
# Email an Spanien: Abweichung Net Sales 2025
|
||||
# Finance ES Mail Abweichung
|
||||
|
||||
**Asunto:** Revision diferencia Net Sales 2025 - Espana
|
||||
Stand: 2026-05-27
|
||||
|
||||
Hola,
|
||||
Historischer Mailentwurf, fuer RAG komprimiert.
|
||||
|
||||
En la reconciliacion de Net Sales 2025 para Espana hemos identificado una diferencia pendiente de aclarar contra el valor de referencia de Rhino / `check.xlsx`.
|
||||
Aktueller Spanien-/Finance-Kontext steht in `docs/rag/FINANCE.md`.
|
||||
|
||||
Resumen:
|
||||
Volltext bei Bedarf:
|
||||
|
||||
- Actual Espana: `3.082.320,18 EUR`
|
||||
- Referencia Rhino: `3.102.333,61 EUR`
|
||||
- Diferencia: `-20.013,43 EUR`
|
||||
|
||||
La diferencia no parece muy grande, pero antes de cerrar el dato necesitamos confirmar la causa.
|
||||
|
||||
Por favor, podeis revisar los siguientes puntos?
|
||||
|
||||
1. Periodo incluido en el fichero
|
||||
Confirmar que el fichero `Spain_Sales_2025.csv` contiene todo el ano 2025 completo.
|
||||
|
||||
2. Series incluidas
|
||||
Confirmar que las series `REG`, `LAT`, `PRO` y `REC` deben incluirse en el calculo de Net Sales 2025.
|
||||
|
||||
3. Abonos / Credit Notes
|
||||
Confirmar que los abonos estan incluidos correctamente y con signo negativo.
|
||||
|
||||
4. Criterio de fecha
|
||||
Confirmar que fecha debe utilizarse para la delimitacion del ano 2025: fecha de factura, fecha contable u otra fecha.
|
||||
|
||||
5. Importe correcto
|
||||
Confirmar si el campo utilizado como importe neto de ventas es el correcto para comparar contra Rhino / `check.xlsx`.
|
||||
|
||||
Objetivo: aclarar si la diferencia de `-20.013,43 EUR` se explica por periodo, series, abonos o por el campo de importe utilizado.
|
||||
|
||||
Gracias y saludos,
|
||||
```text
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
|
||||
@@ -1,386 +1,21 @@
|
||||
# Finance Handoff 2026-05-18
|
||||
# Finance Handoff
|
||||
|
||||
Dieses Dokument fasst den aktuellen Stand der Finance-Abstimmung zusammen, damit die Arbeit ohne Wissensverlust fortgesetzt werden kann.
|
||||
Stand: 2026-05-27
|
||||
|
||||
## Aktueller Stand
|
||||
Diese Datei ist fuer tokenarme RAG-Nutzung komprimiert.
|
||||
|
||||
Testprogramm:
|
||||
## Aktueller Kurzstand
|
||||
|
||||
- Fuehrende Finance-Kurzdatei: `docs/rag/FINANCE.md`.
|
||||
- Manual-Import-Kontext: `docs/rag/MANUAL_IMPORT.md`.
|
||||
- Aktuelle Finance-Regeln im Detail: `docs/FINANCE_ENTSCHEIDE.md` und `docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md`.
|
||||
|
||||
## Volltext Bei Bedarf
|
||||
|
||||
Die Detailhistorie liegt hier:
|
||||
|
||||
```text
|
||||
http://127.0.0.1:5099/finance
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
|
||||
Die App laeuft lokal auf `127.0.0.1:5099`. Der letzte Check der Seite ergab HTTP `200`.
|
||||
|
||||
Aktuelle Excel:
|
||||
|
||||
```text
|
||||
docs/FINANCE_AMPEL_LAENDER_2026-05-18_21-27.xlsx
|
||||
```
|
||||
|
||||
Aktuelle Cache-Dateien:
|
||||
|
||||
```text
|
||||
docs/it_cache_2025.csv
|
||||
docs/spain_cache_2025.csv
|
||||
```
|
||||
|
||||
## Nachtrag 2026-05-19
|
||||
|
||||
Nach diesem Handoff wurden noch vier relevante Schritte umgesetzt und committed:
|
||||
|
||||
1. Haupt-App-Finance-Vergleich an FinanceProbe angeglichen.
|
||||
2. Leere Ist-Zeilen ohne belastbaren Ist-Wert aus dem Finance-Vergleich gefiltert.
|
||||
3. Berechnungsformeln je Land dokumentiert.
|
||||
4. Finance Cockpit mit separatem Login technisch geschuetzt; fachliche/produktive Abnahme noch offen.
|
||||
|
||||
Wichtige neue Doku:
|
||||
|
||||
```text
|
||||
docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md
|
||||
```
|
||||
|
||||
Diese Datei beschreibt die aktuell verwendete Soll/Ist-Logik fuer `/finance-cockpit/vergleich` und `/finance`, inklusive Jahresfilter, Kandidatenberechnung, Deduplizierung, bevorzugter Ist-Variante und landesspezifischer Quellen/Formeln.
|
||||
|
||||
Neue Finance-Cockpit-Sperre, Stand technisch:
|
||||
|
||||
- `FinanceCockpitAccessService`
|
||||
- `FinanceCockpitAccessOptions`
|
||||
- `FinanceCockpitUnlockPanel`
|
||||
- Konfiguration in `appsettings.json` unter `FinanceCockpitAccess`
|
||||
- DI-Registrierung in `Program.cs`
|
||||
- Route-/Navigation-Schutz in `Routes.razor` und `NavMenu.razor`
|
||||
|
||||
Wichtig: Der HR-KPI-Login bleibt separat. Die neue Sperre betrifft das Finance Cockpit und laeuft wie HR-KPI ueber Benutzername plus SHA-256-Passwort-Hash. Finance hat ein eigenes Passwort:
|
||||
|
||||
```text
|
||||
Benutzer: finance
|
||||
Passwort: Trafag-Finance-Cockpit-2026!
|
||||
```
|
||||
|
||||
AD-/Rollenpruefung ist fuer den Moment nicht geloescht, sondern in `appsettings.json` mit `Security.Enabled = false` deaktiviert. Die vorhandenen `AccessGroups` und `AdminGroups` bleiben in der Konfiguration stehen und koennen spaeter wieder aktiviert werden. Die Finance-Sperre bleibt davon unabhaengig aktiv.
|
||||
|
||||
### Zentrale Excel fuer CFO-/Finance-Filter
|
||||
|
||||
Die zentrale Datei `Sales_All_yyyy-MM-dd.xlsx` enthaelt am rechten Ende einen zusammengehoerigen Finance-Spaltenblock:
|
||||
|
||||
```text
|
||||
Finance | Year
|
||||
Finance | Country Key
|
||||
Finance | Date
|
||||
Finance | Net Sales Actual
|
||||
Finance | Currency
|
||||
Finance | Include
|
||||
Finance | Source Value Field
|
||||
```
|
||||
|
||||
Zusaetzlich wird nur in der zentralen Datei ein Hilfsblatt erzeugt:
|
||||
|
||||
```text
|
||||
Finance Filter Hilfe
|
||||
```
|
||||
|
||||
Damit soll Finance dieselben Ist-Summen aus Excel filtern koennen wie im Testprogramm bzw. auf `/finance-cockpit/vergleich`.
|
||||
|
||||
Vorgehen im Excel:
|
||||
|
||||
1. `Finance | Year` auf das gewuenschte Jahr filtern, z. B. `2025`.
|
||||
2. `Finance | Country Key` auf Land filtern, z. B. `IT`, `UK`, `ES`, `AT`.
|
||||
3. `Finance | Include = TRUE` filtern.
|
||||
4. `Finance | Net Sales Actual` summieren.
|
||||
|
||||
Gepruefter Vergleich gegen `FinanceReconciliationService` fuer 2025:
|
||||
|
||||
| Key | Finance-Service | Excel-Finance-Spalten | Differenz |
|
||||
| --- | ---: | ---: | ---: |
|
||||
| AT | `3'438'121.37` | `3'438'121.37` | `0.00` |
|
||||
| CH | `43'521'390.82` | `43'521'390.82` | `0.00` |
|
||||
| ES | `3'082'320.18` | `3'082'320.18` | `0.00` |
|
||||
| FR | `1'471'218.44` | `1'471'218.44` | `0.00` |
|
||||
| IN | `750'936'591.38` | `750'936'591.38` | `0.00` |
|
||||
| IT | `7'669'641.47` | `7'669'641.47` | `0.00` |
|
||||
| UK | `3'533'710.09` | `3'533'710.09` | `0.00` |
|
||||
| US | `3'749'865.33` | `3'749'865.33` | `0.00` |
|
||||
|
||||
Hinweis: Fuer AT/CH waehlt der Finance-Service intern `Nettofakturawert Hauswaehrung pro Position`; in den aktuellen Daten ist dieser Wert identisch mit `SalesPriceValue`, daher stimmen die Excel-Finance-Spalten exakt.
|
||||
|
||||
## Aktuelle Soll/Ist-Werte
|
||||
|
||||
| Land | Ist | Soll | Differenz | Waehrung | Status |
|
||||
| --- | ---: | ---: | ---: | --- | --- |
|
||||
| FR | `1'471'218.44` | `1'471'218.00` | `0.44` | EUR | OK |
|
||||
| IN | `750'936'591.38` | `750'936'591.00` | `0.38` | INR | OK |
|
||||
| US | `3'749'865.33` | `3'749'865.00` | `0.33` | USD | OK |
|
||||
| IT | `7'669'641.47` | `7'669'840.00` | `-198.53` | EUR | Fast passend, Filter fachlich bestaetigen |
|
||||
| UK | `3'533'710.09` | `3'538'972.00` | `-5'261.91` | GBP | Kleine Restdifferenz |
|
||||
| AT | `3'438'121.37` | `3'443'863.00` | `-5'741.63` | EUR | Kleine Restdifferenz |
|
||||
| ES | `3'082'320.18` | `3'102'333.61` | `-20'013.43` | EUR | Groesste Restdifferenz |
|
||||
|
||||
Prioritaet fuer Folgearbeit:
|
||||
|
||||
1. ES pruefen: vermutlich Zuschlaege/Fracht/Nebenkosten/Rhino-Auswertungslogik.
|
||||
2. AT und UK Restdifferenzen klaeren.
|
||||
3. IT fachlich bestaetigen, weil der aktuelle Filter noch provisorisch ist.
|
||||
|
||||
## Grundregeln
|
||||
|
||||
- Net Sales Actuals werden in der Hauswaehrung des Landes verglichen.
|
||||
- CHF ist nur Kontroll-/Reporting-Sicht ueber Budgetkurse, nicht Standardvergleich.
|
||||
- Fuehrend ist Netto ohne VAT/MwSt.
|
||||
- Gutschriften/Credit Notes muessen negativ in die Summe laufen.
|
||||
- Standard-Ist bleibt inklusive Intercompany; IC/2nd-party wird separat gezeigt, ausser ein Land hat fachlich bestaetigte Ausschluesse.
|
||||
- Jahresabgrenzung: bevorzugt Buchungsdatum/PostingDate. Wenn Quelle kein PostingDate liefert: InvoiceDate, danach ExtractionDate.
|
||||
|
||||
## Italien
|
||||
|
||||
Quelle:
|
||||
|
||||
- `BI1` / SAP B1 via HANA
|
||||
- TSC `TRIT`
|
||||
- Schema `it01_p`
|
||||
|
||||
Wichtige Erkenntnisse:
|
||||
|
||||
- Italien ist B1, nicht Sage.
|
||||
- Frankreich und Italien kommen beide aus BI1/B1; FR passt mit `SalesPriceValue`.
|
||||
- Screenshot `italien.png` zeigte fuer Italien die relevante B1-/Finance-Sicht auf Konto:
|
||||
|
||||
```text
|
||||
47005 - Ricavi vendite e prestazioni
|
||||
```
|
||||
|
||||
Aktueller technischer Arbeitsfilter in `Services/HanaQueryService.cs` fuer `it01_p`:
|
||||
|
||||
```sql
|
||||
AcctCode LIKE '47005%'
|
||||
AcctCode NOT LIKE '4700504%'
|
||||
CardCode NOT IN (
|
||||
'C_IT01_0022987',
|
||||
'C_IT01_0306928',
|
||||
'C_IT01_0306138',
|
||||
'C_IT01_0309653',
|
||||
'C_IT01_0304885',
|
||||
'C_IT01_0306475'
|
||||
)
|
||||
```
|
||||
|
||||
Aus Cache berechnete Herleitung:
|
||||
|
||||
```text
|
||||
10'603'550.59 - 2'933'909.12 = 7'669'641.47 EUR
|
||||
Soll/Rhino = 7'669'840.00 EUR
|
||||
Differenz = -198.53 EUR
|
||||
```
|
||||
|
||||
Die sechs provisorisch ausgeschlossenen Kunden:
|
||||
|
||||
| Kunde | Betrag |
|
||||
| --- | ---: |
|
||||
| FAIVELEY TRANSPORT ITALIA S.P.A. | `1'689'857.70` |
|
||||
| SYSTEM CERAMICS S.P.A. | `323'409.00` |
|
||||
| WABTEC MZT | `282'647.40` |
|
||||
| FINCANTIERI NEXTECH S.P.A | `268'166.37` |
|
||||
| METAL WORK SERVICE S.R.L. | `203'425.15` |
|
||||
| ELEMASTER S.P.A. | `166'403.50` |
|
||||
|
||||
Wichtig: Dieser IT-Filter ist ein Arbeits-/Prueffilter, noch nicht fachlich final bestaetigt.
|
||||
|
||||
Nachtrag 2026-05-20:
|
||||
|
||||
- Finance-Leiter bestaetigt als fachliche Methode: `Trafag Italia` aus dem externen IT-Finance-Ist ausschliessen.
|
||||
- Identische IT-Zeilen mit leerem `Supplier country` nur einmal zaehlen.
|
||||
- Die alte Kundenausschluss-Kombination bleibt als 2025-Analyse dokumentiert, ist aber nicht die fuehrende Methode fuer Folgejahre.
|
||||
|
||||
Detaildokument:
|
||||
|
||||
```text
|
||||
docs/FINANCE_IT_VORGEHEN_2026-05-18.md
|
||||
```
|
||||
|
||||
## UK
|
||||
|
||||
Quelle:
|
||||
|
||||
- Fachlich Sage, nicht SAP B1.
|
||||
- TSC `TRUK`.
|
||||
- App-Anschluss: `MANUAL_EXCEL`.
|
||||
- SharePoint-Ordner heisst technisch `Import/Finance/UK_B1`, aber das bedeutet nicht B1.
|
||||
|
||||
Aktuelle Berechnung:
|
||||
|
||||
```text
|
||||
SageNetSales([Sales Price/Value], [Quantity], [Document Type], [DocumentType], [Type])
|
||||
```
|
||||
|
||||
Bedeutung:
|
||||
|
||||
- `Sales Price/Value * Quantity`
|
||||
- Credit Notes werden bei erkennbarem Sage-Typ negativ erzwungen.
|
||||
- Waehrung ist GBP.
|
||||
|
||||
Wichtige Korrektur:
|
||||
|
||||
- UK wird gegen Local Currency/GBP geprueft.
|
||||
- Der fruehere `CheckValue 3'749'865.00` war fuer UK falsch und wurde entfernt.
|
||||
- Korrektes Soll fuer UK ist `LocalCurrencyValue = 3'538'972.00 GBP`.
|
||||
|
||||
Aktueller Stand:
|
||||
|
||||
```text
|
||||
Ist = 3'533'710.09 GBP
|
||||
Soll = 3'538'972.00 GBP
|
||||
Differenz = -5'261.91 GBP
|
||||
```
|
||||
|
||||
Detaildokument:
|
||||
|
||||
```text
|
||||
docs/FINANCE_UK_QUELLE_KORREKTUR_2026-05-18.md
|
||||
```
|
||||
|
||||
## Spanien
|
||||
|
||||
Quelle:
|
||||
|
||||
- Sage CSV
|
||||
- TSC `TRES`
|
||||
- Datei: `sageSpain/v2/Spain_Sales_2025.csv`
|
||||
- Cache: `docs/spain_cache_2025.csv`
|
||||
|
||||
Berechnung:
|
||||
|
||||
- `SalesPriceValue` aus `LineasAlbaranCliente.ImporteNeto`
|
||||
- Credit Notes/REC negativ
|
||||
- Datumsbasis: `FechaFactura`
|
||||
- Waehrung: EUR
|
||||
|
||||
Aktuelle Zerlegung:
|
||||
|
||||
```text
|
||||
Zeilen = 4'341
|
||||
Invoice = 3'140'921.50 EUR
|
||||
Credit Notes = -58'601.32 EUR
|
||||
Ist = 3'082'320.18 EUR
|
||||
Soll/Rhino = 3'102'333.61 EUR
|
||||
Differenz = -20'013.43 EUR
|
||||
```
|
||||
|
||||
Nach Serie:
|
||||
|
||||
| Serie | Zeilen | Betrag |
|
||||
| --- | ---: | ---: |
|
||||
| REG | `3'079` | `2'407'451.30` |
|
||||
| LAT | `1'118` | `480'199.20` |
|
||||
| PRO | `43` | `253'271.00` |
|
||||
| REC | `101` | `-58'601.32` |
|
||||
|
||||
Bewertung:
|
||||
|
||||
- Differenz ist ca. `0.65%`.
|
||||
- Gutschriften sind nicht das Problem, sie sind bereits negativ.
|
||||
- Wahrscheinlich fehlen oder unterscheiden sich kleinere Sage-/Rhino-Bestandteile: Fracht, Portes, Zuschlaege, Rundungen, Versicherung, Finanzierung, nicht-artikelbezogene Belegpositionen oder eine andere Sage-Auswertung.
|
||||
- Nicht einfach auf Belegkopf `DocumentNetAmount` wechseln: deduplizierter Belegkopf liegt bei `2'907'901.79` und passt schlechter.
|
||||
|
||||
## Geaenderte Programmteile
|
||||
|
||||
Wichtige Dateien:
|
||||
|
||||
```text
|
||||
Services/HanaQueryService.cs
|
||||
Services/ManualExcelImportService.cs
|
||||
Services/DatabaseSeedService.cs
|
||||
scripts/Export-SageSpainSalesCsv.ps1
|
||||
SageSpainFinalExportPackage/Export-SageSpainSalesCsv.ps1
|
||||
TrafagSalesExporter.Tests/ManualExcelImportServiceTests.cs
|
||||
```
|
||||
|
||||
Wichtige technische Aenderungen:
|
||||
|
||||
- IT: provisorischer B1-Konto-/Kundenausschlussfilter fuer `it01_p`.
|
||||
- UK: `SageNetSales(...)` im Manual-Excel-Importer.
|
||||
- UK: `FinanceReference` nutzt fuer UK nur `LocalCurrencyValue = 3'538'972`, kein `CheckValue`.
|
||||
- ES: Sage-Spain-SQL erzwingt Credit Notes mit `-ABS(...)`.
|
||||
- Test ergaenzt, der positive Credit-Note-Rohbetraege negativ macht.
|
||||
|
||||
## Validierung
|
||||
|
||||
Build:
|
||||
|
||||
```text
|
||||
dotnet build .\TrafagSalesExporter.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_uk_reference\ --verbosity minimal
|
||||
```
|
||||
|
||||
Ergebnis: erfolgreich.
|
||||
|
||||
Tests:
|
||||
|
||||
```text
|
||||
dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore -p:UseAppHost=false --verbosity minimal
|
||||
```
|
||||
|
||||
Ergebnis:
|
||||
|
||||
```text
|
||||
71/71 Tests gruen
|
||||
```
|
||||
|
||||
FinanceProbe:
|
||||
|
||||
```text
|
||||
http://127.0.0.1:5099/finance
|
||||
```
|
||||
|
||||
Ergebnis: HTTP `200`.
|
||||
|
||||
## Commits
|
||||
|
||||
Relevante Commits:
|
||||
|
||||
| Commit | Inhalt |
|
||||
| --- | --- |
|
||||
| `fb85e2e` | Sage-Berechnungen korrigiert, IT/UK-Doku und Ampel ergaenzt |
|
||||
| `3d40d76` | UK auf GBP Local Currency als Referenz umgestellt |
|
||||
| `f721d95` | Aktuelle Excel und Spanien-Cache ergaenzt |
|
||||
| `bc6bfdf` | Finance-Handoff dokumentiert |
|
||||
| `8f1b1b8` | Haupt-Finance-Vergleich an Probe angeglichen |
|
||||
| `f855e06` | Leere Ist-Zeilen im Finance-Vergleich gefiltert |
|
||||
| `5c654ad` | Finance-Berechnungsformeln je Land dokumentiert |
|
||||
| `9c544af` | Finance Cockpit mit Login technisch geschuetzt |
|
||||
| `ebbc5a1` | Finance-Filterspalten in zentrale Excel ergaenzt |
|
||||
| `b23f73e` | Finance-Hilfsblatt in zentrale Excel ergaenzt |
|
||||
|
||||
Dieses Handoff wurde danach als weiterer Commit hinzugefuegt.
|
||||
|
||||
## Nicht aufraeumen ohne Ruecksprache
|
||||
|
||||
Es gibt noch untracked/temporaere Arbeitsdateien und alte Word-/Excel-Backups. Diese wurden bewusst nicht committed, weil sie entweder temporär, defekt, Logdateien oder Zwischenstaende sind.
|
||||
|
||||
Bekannt uncommitted:
|
||||
|
||||
```text
|
||||
.tmp_tools/
|
||||
Tools/FinanceProbe/.tmp_tools/
|
||||
verify_probe_out*/
|
||||
financeprobe.*.log
|
||||
docs/CFO_Kurzbericht_270515.docx
|
||||
docs/CFO_Kurzbericht_270515*.bak.docx
|
||||
docs/CFO_Kurzbericht_270515_NEU*.docx
|
||||
docs/FINANCE_AMPEL_LAENDER_2026-05-18.xlsx
|
||||
docs/FINANCE_AMPEL_LAENDER_2026-05-18_20-32.xlsx
|
||||
docs/FINANCE_AMPEL_LAENDER_2026-05-19.xlsx
|
||||
docs/it_cache_2025.csv
|
||||
italien.png
|
||||
financeprobe.*.log
|
||||
mainapp.*.log
|
||||
```
|
||||
|
||||
Wenn weitergearbeitet wird, zuerst `git status --short` pruefen und keine fremden/alten Dateien blind loeschen.
|
||||
|
||||
## Naechste sinnvolle Schritte
|
||||
|
||||
1. ES: Sage-/Rhino-Unterschied von `20'013.43 EUR` gegen Fracht/Zuschlaege/Nebenkosten pruefen.
|
||||
2. AT: Differenz `-5'741.63 EUR` analysieren.
|
||||
3. UK: Restdifferenz `-5'261.91 GBP` klaeren, aber UK ist jetzt nahe am LC-Soll.
|
||||
4. IT: provisorischen Kundenausschluss fachlich bestaetigen oder durch offizielle B1/Rhino-Filterregel ersetzen.
|
||||
5. AD-/Rollenpruefung spaeter wieder aktivieren, sobald geklaert ist, welche Gruppen produktiv gelten. Dazu `Security.Enabled` wieder auf `true` setzen; Gruppen sind nicht geloescht.
|
||||
6. `/finance-cockpit/vergleich` und `/finance` nebeneinander pruefen, wenn neue Daten geladen wurden; beide sollen dieselbe `FinanceReconciliationService`-Logik nutzen.
|
||||
Nur laden, wenn der Zwischenstand vom 2026-05-18 oder alte Finance-Abweichungen genau nachvollzogen werden muessen.
|
||||
|
||||
@@ -1,39 +1,13 @@
|
||||
# Email an Italien: Abweichung Net Sales 2025
|
||||
# Finance IT Mail Abweichung
|
||||
|
||||
**Oggetto:** Verifica differenza Net Sales 2025 - Italia
|
||||
Stand: 2026-05-27
|
||||
|
||||
Ciao,
|
||||
Historischer Mailentwurf, fuer RAG komprimiert.
|
||||
|
||||
nella riconciliazione dei Net Sales 2025 per l'Italia abbiamo identificato una differenza significativa rispetto al valore di riferimento Rhino / `check.xlsx`.
|
||||
Aktueller Italien-/Finance-Kontext steht in `docs/rag/FINANCE.md`.
|
||||
|
||||
Riepilogo:
|
||||
Volltext bei Bedarf:
|
||||
|
||||
- Actual Italia: `14.704.336,29 EUR`
|
||||
- Riferimento Rhino: `7.669.840,00 EUR`
|
||||
- Differenza: `+7.034.496,29 EUR`
|
||||
|
||||
La differenza e molto rilevante. Prima di chiudere il dato dobbiamo confermare quale logica di calcolo e corretta per l'Italia.
|
||||
|
||||
Potete per favore verificare i seguenti punti?
|
||||
|
||||
1. Base di calcolo corretta
|
||||
Confermare quale valore deve essere usato per i Net Sales 2025: valore netto per riga/posizione, totale documento deduplicato oppure un'altra logica.
|
||||
|
||||
2. Totali documento vs. posizioni
|
||||
Verificare se i totali documento sono ripetuti su piu righe e quindi devono essere conteggiati una sola volta per documento.
|
||||
|
||||
3. Intercompany / 2nd-party
|
||||
Confermare quali clienti o transazioni devono essere esclusi come Intercompany o 2nd-party.
|
||||
|
||||
4. Note di credito / Credit Notes
|
||||
Confermare che le note di credito sono incluse correttamente e con segno negativo.
|
||||
|
||||
5. Criterio data
|
||||
Confermare quale data deve essere utilizzata per delimitare il 2025: data registrazione, data fattura o altra data.
|
||||
|
||||
6. Valuta
|
||||
Confermare che la valuta di confronto per l'Italia e `EUR`.
|
||||
|
||||
Obiettivo: capire se la differenza di `+7.034.496,29 EUR` deriva da doppio conteggio dei documenti, trattamento Intercompany, criteri data o dal campo importo utilizzato.
|
||||
|
||||
Grazie e saluti,
|
||||
```text
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
|
||||
@@ -1,45 +1,13 @@
|
||||
# Email an UK / England: Abweichung Net Sales 2025
|
||||
# Finance UK Mail Abweichung
|
||||
|
||||
**Subject:** Review difference Net Sales 2025 - UK
|
||||
Stand: 2026-05-27
|
||||
|
||||
Hi,
|
||||
Historischer Mailentwurf, fuer RAG komprimiert.
|
||||
|
||||
In the Net Sales 2025 reconciliation for UK / England, we identified a difference against the Rhino / `check.xlsx` reference value.
|
||||
Aktueller UK-/Finance-Kontext steht in `docs/rag/FINANCE.md` und `docs/rag/MANUAL_IMPORT.md`.
|
||||
|
||||
Summary:
|
||||
Volltext bei Bedarf:
|
||||
|
||||
- Actual UK: `3,533,710.09 GBP`
|
||||
- Rhino reference: `3,749,865.00 GBP`
|
||||
- Reference UK LC/GBP: `3,538,972.00 GBP`
|
||||
- Difference: `-5,261.91 GBP`
|
||||
|
||||
The mapping has already been reviewed technically, but we still need to clarify the remaining difference before closing the 2025 value.
|
||||
|
||||
Important clarification: UK / England is treated as a Sage source. The current SharePoint folder name `UK_B1` is only a technical folder/source reference and does not mean that UK is read from SAP Business One.
|
||||
|
||||
Could you please check the following points?
|
||||
|
||||
1. Full-year completeness
|
||||
Confirm that the UK source file/import contains the full year 2025 and not only a partial period.
|
||||
|
||||
2. Period included
|
||||
We currently see data from approximately `03.01.2025` to `22.12.2025`. Please confirm whether this is complete for 2025 or if transactions outside this range are missing.
|
||||
|
||||
3. Credit notes
|
||||
Confirm that credit notes are included correctly and with the correct negative sign.
|
||||
|
||||
4. Net sales field
|
||||
Confirm which column should be used as the net sales amount for comparison with Rhino / `check.xlsx`.
|
||||
|
||||
5. Discounts, freight or additional charges
|
||||
Please check whether discounts, freight, additional charges or other adjustments are included in the Rhino reference but not in the current import value, or vice versa.
|
||||
|
||||
6. 2nd-party / 3rd-party / Intercompany
|
||||
Confirm whether any customers or transactions should be excluded from the Net Sales 2025 value.
|
||||
|
||||
7. Currency
|
||||
Confirm that the correct comparison currency for UK is `GBP`.
|
||||
|
||||
Goal: clarify whether the difference of `-216,154.91 GBP` is caused by an incomplete period, credit notes, a different net sales field, adjustments, or 2nd-party/3rd-party handling.
|
||||
|
||||
Thanks and best regards,
|
||||
```text
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
|
||||
@@ -1,75 +1,14 @@
|
||||
# Finance: Welches Dokument gilt?
|
||||
# Finance: Welches Dokument Gilt?
|
||||
|
||||
Stand: 2026-05-20
|
||||
Stand: 2026-05-27
|
||||
|
||||
## Aktueller Nachtrag 2026-05-20
|
||||
Historische Dokumentgueltigkeitsnotiz, fuer RAG komprimiert.
|
||||
|
||||
Zum alten CFO-/Finance-Termin-Dokument ist eine neue Anwenderdoku fuer das Cockpit hinzugekommen:
|
||||
Aktueller Dokumentrouter: `docs/RAG_ROUTER.md`.
|
||||
Aktueller Dokumentstatus: `docs/MD_DOKUMENTENSTATUS_2026-05-20.md`.
|
||||
|
||||
Volltext bei Bedarf:
|
||||
|
||||
```text
|
||||
docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
|
||||
Diese neue Word-Datei ist die bessere Anleitung fuer Finance-Anwender im Cockpit. Das CFO-Dokument vom 2026-05-15 bleibt historische Termin-/Entscheidgrundlage.
|
||||
|
||||
Technisch/fachlich aktuell fuehrend:
|
||||
|
||||
- `Management Analyse` Reiter `Finance Summary`
|
||||
- zentrale Excel `Finance Summary`
|
||||
- `FinanceRuleEngine`
|
||||
- `docs/FINANCE_ENTSCHEIDE.md`
|
||||
- `docs/MD_DOKUMENTENSTATUS_2026-05-20.md`
|
||||
|
||||
## Fuehrendes Dokument
|
||||
|
||||
Fuer den CFO-/Finance-Termin vom 2026-05-15 galt:
|
||||
|
||||
```text
|
||||
docs/FINANCE_CHEF_SUMMARY_2026-05-15.docx
|
||||
```
|
||||
|
||||
Dieses Dokument ist die aktuellste CFO-Kurzfassung mit Ampel, Laendertabelle, Pruefquellen, Prioritaeten und empfohlenen Massnahmen.
|
||||
|
||||
## Geloeschte alte Fassung
|
||||
|
||||
Die alte Fassung `docs/FINANCE_CHEF_SUMMARY_2026-05-13.docx` wurde entfernt, weil sie durch die Version vom 2026-05-15 ersetzt ist.
|
||||
|
||||
## Entscheidbasis
|
||||
|
||||
Die fachlichen Entscheide stehen separat hier:
|
||||
|
||||
```text
|
||||
entscheide.md
|
||||
docs/FINANCE_ENTSCHEIDE.md
|
||||
```
|
||||
|
||||
Kurzfassung der wichtigsten Entscheide:
|
||||
|
||||
| Thema | Entscheid |
|
||||
| --- | --- |
|
||||
| Fuehrende Waehrung | Hauswaehrung je Land |
|
||||
| CHF-Sicht | Nur separat mit Budgetkursen |
|
||||
| Aggregation | Pro Artikel bzw. Belegposition |
|
||||
| Wertbasis | Nettofakturawert |
|
||||
| Jahresabgrenzung 2025 | Buchungsdatum |
|
||||
| Gutschriften / Storno | Separat ausweisen, positionsbasiert behandeln |
|
||||
| Intercompany / 2nd-party | Separat klassifizieren und als Auswahl/Sicht fuehren |
|
||||
| Indien | INR ist fuehrend |
|
||||
| Italien | Hauswaehrung, Intercompany separat pruefen |
|
||||
|
||||
## Wichtig fuer Rueckfragen
|
||||
|
||||
Falls im Termin gefragt wird, ob die Berechnungslogik schon entschieden ist:
|
||||
|
||||
> Ja. Die Grundlogik ist entschieden: Hauswaehrung, Nettofakturawert, Buchungsdatum und Berechnung pro Belegposition. Offen sind vor allem Datenvollstaendigkeit, Intercompany-Abgrenzung, Budgetkursquelle und die fachliche Freigabe einzelner Laenderabweichungen.
|
||||
|
||||
## Was noch nicht final ist
|
||||
|
||||
| Thema | Status |
|
||||
| --- | --- |
|
||||
| IT | Kritisch; grosse Abweichung, Berechnungsart/IC/Deduplizierung pruefen |
|
||||
| UK / EN | Hoch; Restdifferenz und Jahresvollstaendigkeit pruefen |
|
||||
| DE | Hoch; finaler Jahresfile fehlt, Sample nicht verwenden |
|
||||
| CH / AT | Hoch; Sollzuordnung und Trennung finalisieren |
|
||||
| ES / AT | Mittel; kleinere Differenzen klaeren |
|
||||
| FR / IN / US | Rechnerisch freigabefaehig |
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
Stand: 2026-05-20
|
||||
|
||||
RAG-Hinweis: Fuer tokenarme Kontextauswahl zuerst `docs/RAG_ROUTER.md` laden. Standardmaessig nur die Kurzdateien unter `docs/rag/` laden; diese Datei und andere Original-MDs nur bei Detail-/Auditbedarf.
|
||||
|
||||
Diese Datei ordnet die vorhandenen Markdown-Dateien ein. Ziel ist, alte Arbeitsnotizen nicht mit dem aktuellen Produktstand zu verwechseln.
|
||||
|
||||
## Aktuell fuehrend
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
# RAG Router
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
Zweck: Diese Datei zuerst laden. Danach nur die Dateien aus dem passenden Themenblock laden.
|
||||
|
||||
## Lade-Regel
|
||||
|
||||
1. Immer nur diese Router-Datei zuerst lesen.
|
||||
2. Thema bestimmen.
|
||||
3. Zuerst nur die passende Kurzdatei aus `docs/rag/` laden.
|
||||
4. Rohquellen nur laden, wenn Details, alte Zahlen, Codepfade, Mailtexte oder Audit gefragt sind.
|
||||
|
||||
## Themen
|
||||
|
||||
| Thema | Wann laden | Standard laden |
|
||||
| --- | --- | --- |
|
||||
| Aktueller Stand | Projektstatus, letzte Aenderungen, offene Punkte | `docs/rag/PROJECT.md` |
|
||||
| Finance Cockpit | Soll/Ist, Finance Summary, Regeln, Laenderlogik | `docs/rag/FINANCE.md` |
|
||||
| Finance Spezialfaelle | IT, UK, ES, Abweichungen | `docs/rag/FINANCE.md` |
|
||||
| Manual Import | UK-Deltas, ES/DE Vollfiles, Importprozess | `docs/rag/MANUAL_IMPORT.md` |
|
||||
| HR KPI | HR Dashboard, Formeln, Datenqualitaet, Anwenderstand | `docs/rag/HR_KPI.md` |
|
||||
| Deployment/IIS | Publish, Server, BiDashboard, TLS, lokaler Uebergang | `docs/rag/DEPLOYMENT.md` |
|
||||
| Admin/Startseite | Admin Login, Sessions, Landing Page | `docs/rag/ADMIN.md` |
|
||||
| Architektur | Systemuebersicht, Diagramme, technische Einordnung | `docs/rag/ARCHITECTURE.md` |
|
||||
|
||||
## Rohquellen Nur Bei Bedarf
|
||||
|
||||
| Datei | Nur laden fuer |
|
||||
| --- | --- |
|
||||
| `docs/raw_md_archive/HISTORY_CANONICAL.md.raw` | kanonische Detailhistorie mit Quellenangaben |
|
||||
| `docs/raw_md_archive/original_history_raws.zip` | exakte Originaldateien nur zur Wiederherstellung, nicht fuer RAG laden |
|
||||
| `docs/MD_DOKUMENTENSTATUS_2026-05-20.md` | Einordnung alter Dokumente |
|
||||
| `docs/FINANCE_ENTSCHEIDE.md` | Finance-Entscheide im Detail |
|
||||
| `docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md` | Formeln pro Land |
|
||||
| `docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md` | Manual-Import-Details |
|
||||
| `docs/HR_KPI_NACHDOKU_2026-05-13.md` | HR-KPI-Details |
|
||||
| `docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md` | IIS-/Publish-Details |
|
||||
| `docs/LOCAL_DEV_SERVER_UEBERGANG_2026-05-21.md` | lokaler Server im Detail |
|
||||
| `docs/ADMIN_BEREICH_STARTSEITE_2026-05-21.md` | Admin-/Landing-Details |
|
||||
|
||||
## Suchwoerter
|
||||
|
||||
| Suchwort | Thema |
|
||||
| --- | --- |
|
||||
| `Finance Summary`, `Soll/Ist`, `check.xlsx`, `FinanceRuleEngine` | Finance Cockpit |
|
||||
| `TRUK`, `UK_B1`, `Delta`, `Manual Excel` | Manual Import / Finance Spezialfaelle |
|
||||
| `TRDE`, `Alphaplan`, `NettoPreisGesamtX` | Finance Cockpit / Manual Import |
|
||||
| `TRSE`, `Spain`, `Sage`, `ImporteNeto` | Finance Spezialfaelle |
|
||||
| `HR KPI`, `Rexx`, `Austritte`, `Absenzen` | HR KPI |
|
||||
| `IIS`, `BiDashboard`, `Publish`, `TLS`, `Client certificate` | Deployment/IIS |
|
||||
| `Admin Bereich`, `AdminAccess`, `LandingPage` | Admin/Startseite |
|
||||
@@ -0,0 +1,22 @@
|
||||
# RAG Admin
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
## Kurzstand
|
||||
|
||||
- Admin Bereich ist eigener Hauptmenuepunkt, nicht unter Finance.
|
||||
- Route: `/admin/sessions`.
|
||||
- Schutz: eigener App-interner Admin-Login ueber `AdminAccess`.
|
||||
- Admin-Login ist unabhaengig vom Finance-Cockpit-Passwort.
|
||||
- Admin Bereich darf nicht durch Finance-Cockpit-Login blockiert werden.
|
||||
|
||||
## Startseite
|
||||
|
||||
- Route `/` ist neutral und verlangt keinen Finance-Login.
|
||||
- Landing Page nutzt Trafag-nahe Schrift, Manometer und optionales Strichmaennchen.
|
||||
- Schalter fuer Strichmaennchen liegt im Admin Bereich.
|
||||
|
||||
## Rohquellen Nur Bei Bedarf
|
||||
|
||||
- Detaildoku: `docs/ADMIN_BEREICH_STARTSEITE_2026-05-21.md`
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
# RAG Architecture
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
## Kurzstand
|
||||
|
||||
- App sammelt Daten aus SAP OData, HANA/SAP B1, SharePoint und manuellen Excel-/CSV-Quellen.
|
||||
- Zentrale Persistenz ueber `CentralSalesRecords`.
|
||||
- Finance-Auswertung und zentrale Excel sollen dieselbe Regelengine verwenden.
|
||||
- Diagramme und Anwenderdokus existieren fuer Keyuser-Prozess und technische Architektur.
|
||||
|
||||
## Rohquellen Nur Bei Bedarf
|
||||
|
||||
- Diagramme: `docs/PROGRAMM_DIAGRAMME.md`
|
||||
- technischer Handoff und alter LLM-Systemkontext: `docs/raw_md_archive/HISTORY_CANONICAL.md.raw`
|
||||
@@ -0,0 +1,22 @@
|
||||
# RAG Deployment
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
## Kurzstand
|
||||
|
||||
- `TrafagSalesExporter` wird als ASP.NET/IIS-Webanwendung im bisherigen `BiDashboard`-Schema publiziert.
|
||||
- Lokaler Uebergangsserver: `http://172.16.9.185:5000` im Trafag-Netz, IP kann wechseln.
|
||||
- Lokale URLs bleiben `https://localhost:55415` und `http://localhost:55416`.
|
||||
- Fuer andere PCs nutzt der Uebergang bewusst HTTP auf Port `5000`.
|
||||
|
||||
## Serverproblem
|
||||
|
||||
- IIS/HTTPS blockiert vor der App.
|
||||
- Dokumentierter Befund: TLS fordert Client-Zertifikat.
|
||||
- IT soll IIS SSL Settings pruefen: Client certificates `Ignore` oder hoechstens `Accept`, nicht `Require`.
|
||||
|
||||
## Rohquellen Nur Bei Bedarf
|
||||
|
||||
- IIS-Handoff: `docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md`
|
||||
- lokaler Server: `docs/LOCAL_DEV_SERVER_UEBERGANG_2026-05-21.md`
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
# RAG Finance
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
## Kurzstand
|
||||
|
||||
- Fuehrende Sicht: `Finance Summary`.
|
||||
- `Finance Summary` nutzt dieselbe `FinanceRuleEngine` wie das zentrale Excel.
|
||||
- `Management Analyse` bleibt Diagnose-/Plausibilitaetssicht, nicht fuehrende Finance-Zahl.
|
||||
- Filter fuer Jahr, Land und Waehrung wirken auf das Finance-Endergebnis.
|
||||
- Standard-Ist bleibt inklusive Positionen; Intercompany/2nd-party wird separat ausgewiesen.
|
||||
|
||||
## Wichtige Regeln
|
||||
|
||||
- Hauswaehrung des Landessystems ist fuehrend.
|
||||
- Wertbasis ist Nettofakturawert pro Position.
|
||||
- Jahresabgrenzung ueber `PostingDate`, Fallback `InvoiceDate`, danach `ExtractionDate`.
|
||||
- Gutschriften/Storno laufen als negative Beleg-/Positionszeilen.
|
||||
- Budget-CHF ist Kontroll-/Reporting-Kandidat, nicht Standardabgleich.
|
||||
|
||||
## Offene Fachpunkte
|
||||
|
||||
- DE: Finance/Munir muss bestaetigen, welche Kundenlaender/Filter zum offiziellen DE-Ist gehoeren.
|
||||
- IT: Nach neuem IT-Export pruefen, ob die vollstaendige `Trafag Italia`-Summe sichtbar wird.
|
||||
- ES: Differenz zu Rhino/check.xlsx bleibt fachlich zu klaeren.
|
||||
|
||||
## Land-Kurzindex
|
||||
|
||||
| Land | Kurzregel |
|
||||
| --- | --- |
|
||||
| CH/AT | SAP OData `ZSCHWEIZ`, Trennung ueber Buchungskreis/Reporting-Land |
|
||||
| DE | Alphaplan Excel, `NettoPreisGesamtX`, 2025-Zwang |
|
||||
| ES | Sage CSV, `ImporteNeto`, REC/Credit negativ |
|
||||
| IT | Hauswaehrung, `Trafag Italia` ausgeschlossen, Duplikatlogik fuer leeres Supplier country |
|
||||
| UK | Sage/Manual Excel, GBP, `[Sales Price/Value] * [Quantity]`, Credit Notes negativ |
|
||||
| IN | INR als Hauswaehrung |
|
||||
|
||||
## Rohquellen Nur Bei Bedarf
|
||||
|
||||
- Entscheide: `docs/FINANCE_ENTSCHEIDE.md`, `entscheide.md`
|
||||
- Formeln je Land: `docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md`
|
||||
- IT Detail: `docs/FINANCE_IT_VORGEHEN_2026-05-18.md`
|
||||
- UK Korrektur: `docs/FINANCE_UK_QUELLE_KORREKTUR_2026-05-18.md`
|
||||
- ES Detail: `SAGE_SPAIN_EXPORT_2026-05-05.md`
|
||||
- alter Finance-Handoff: `docs/raw_md_archive/HISTORY_CANONICAL.md.raw`
|
||||
@@ -0,0 +1,21 @@
|
||||
# RAG HR KPI
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
## Kurzstand
|
||||
|
||||
- HR KPI Cockpit wurde um produktive Cockpit-Funktionen erweitert.
|
||||
- Enthalten sind Anleitung, Datenordner, Dateifrische, Datenstatus, Ampeln, Periodenvergleich, Datenqualitaet, Austritte, Absenzen, Managementsicht und Drucken/PDF.
|
||||
- Managementsicht anonymisiert Personennamen in Detailtabellen.
|
||||
|
||||
## Datenquellen
|
||||
|
||||
- Rexx-/SAP-Dateien aus konfiguriertem Datenordner.
|
||||
- Datenordner im Cockpit je Lauf anpassbar und dauerhaft ueber `HrKpi:DataFolder`.
|
||||
|
||||
## Rohquellen Nur Bei Bedarf
|
||||
|
||||
- Nachdoku: `docs/HR_KPI_NACHDOKU_2026-05-13.md`
|
||||
- Fachpruefung: `docs/HR_KPI_PRUEFUNG_SWISS_BEST_PRACTICES.md`
|
||||
- Anwenderdoku: `docs/HR_KPI_ANLEITUNG_HR_2026-05-20.docx`
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# RAG Manual Import
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
## Kurzstand
|
||||
|
||||
- Manual-Importe ersetzen pro Standort den aktuellen Stand in `CentralSalesRecords`.
|
||||
- Delta-Dateien muessen zusammen mit der passenden Basisdatei gelesen werden.
|
||||
- Das ist aktuell nur fuer UK vorgesehen.
|
||||
- ES und DE muessen Vollfiles liefern.
|
||||
|
||||
## Laender
|
||||
|
||||
| Standort | Quelle | Delta | Finance-Wert |
|
||||
| --- | --- | --- | --- |
|
||||
| UK / `TRUK` | SharePoint `Import/Finance/UK_B1`, Sage Excel | ja | `[Sales Price/Value] * [Quantity]`, Credit Notes negativ, GBP |
|
||||
| ES / `TRSE`/`TRES` | Sage CSV | nein | `ImporteNeto`, REC/Credit negativ, EUR |
|
||||
| DE / `TRDE` | Alphaplan Excel | nein | `NettoPreisGesamtX`, GS negativ, Ausschlussregeln |
|
||||
|
||||
## Bedienreihenfolge
|
||||
|
||||
1. Datei oder Delta im richtigen Ordner bereitstellen.
|
||||
2. In `Manuelle Importe` Pfad/Standort pruefen.
|
||||
3. Standortexport ausfuehren.
|
||||
4. Zentrale Datei neu erzeugen.
|
||||
5. `Finance Summary` und `Finance Details` pruefen.
|
||||
|
||||
## Rohquellen Nur Bei Bedarf
|
||||
|
||||
- Detailstand: `docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md`
|
||||
- Workflow-Historie: `NEXT_STEPS_2026-04-15.md`
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# RAG Project
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
## Kurzstand
|
||||
|
||||
- Fuehrende App: `TrafagSalesExporter`, publiziert als `BiDashboard`.
|
||||
- Letzter dokumentierter Stand: Rebase/Push synchron mit `origin/main`, Head `d853f53 Add published HR KPI workflow fixes`.
|
||||
- Validierung laut Doku: Build erfolgreich, Tests zuletzt `78/78` gruen.
|
||||
- Fuer normale Weiterarbeit diese Datei plus den passenden Themen-RAG laden.
|
||||
|
||||
## Aktive Themen
|
||||
|
||||
- Finance Cockpit: `docs/rag/FINANCE.md`
|
||||
- Manual Import: `docs/rag/MANUAL_IMPORT.md`
|
||||
- HR KPI: `docs/rag/HR_KPI.md`
|
||||
- Deployment/IIS: `docs/rag/DEPLOYMENT.md`
|
||||
- Admin/Startseite: `docs/rag/ADMIN.md`
|
||||
|
||||
## Rohquellen Nur Bei Bedarf
|
||||
|
||||
- kanonische Detailhistorie: `docs/raw_md_archive/HISTORY_CANONICAL.md.raw`
|
||||
- exakte Originaldateien zur Wiederherstellung: `docs/raw_md_archive/original_history_raws.zip`
|
||||
- Dokumentstatus: `docs/MD_DOKUMENTENSTATUS_2026-05-20.md`
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+14
-2335
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user