Document workflow deltas and clean up docs
This commit is contained in:
@@ -1,6 +1,67 @@
|
||||
# Deployment / IIS Handoff 2026-05-19
|
||||
|
||||
Letzter Nachtrag: 2026-05-29
|
||||
Letzter Nachtrag: 2026-06-10
|
||||
|
||||
## Nachtrag 2026-06-10 Deploy India / SAGE HANA Mapping
|
||||
|
||||
Durchgefuehrt:
|
||||
|
||||
- Release-Publish aus `TrafagSalesExporter` nach:
|
||||
|
||||
```text
|
||||
\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\
|
||||
```
|
||||
|
||||
- Befehl:
|
||||
|
||||
```powershell
|
||||
dotnet publish .\TrafagSalesExporter.csproj -c Release --no-restore /p:PublishProfile=FolderProfile --verbosity minimal
|
||||
```
|
||||
|
||||
- App wurde fuer Publish und DB-Seed kurz per `app_offline.htm` gestoppt und danach wieder online geschaltet.
|
||||
|
||||
Deploy-Inhalt:
|
||||
|
||||
- Seed-Reparatur fuer India/TRIN:
|
||||
- Standort `TRIN` / `Indien`
|
||||
- `SourceSystem = SAGE`
|
||||
- Schema `TRAFAG_LIVE`
|
||||
- zentraler SAGE-HANA-Server `20.197.20.60:30015`
|
||||
- Vorhandene Standort-Credentials bleiben erhalten; der produktive TRIN-Override nutzt `TRAFAGCONTROLS`.
|
||||
- Regressionstest fuer die alte Drift-Konfiguration: TRIN auf BI1, India-Server ohne SourceSystem, leerer SAGE-Server.
|
||||
|
||||
Share-/DB-Pruefung:
|
||||
|
||||
- `BiDashboard.dll` Zeitstempel nach Deploy: `10.06.2026 08:20:25`.
|
||||
- `app_offline.htm` wurde entfernt.
|
||||
- Server-DB-Backup vor Seed:
|
||||
|
||||
```text
|
||||
\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\trafag_exporter.db.before-india-sage-20260610-0825.bak
|
||||
```
|
||||
|
||||
- Server-DB nach Seed:
|
||||
- `TRIN -> SAGE -> 20.197.20.60:30015`
|
||||
- Schema `TRAFAG_LIVE`
|
||||
- User-Override `TRAFAGCONTROLS`
|
||||
- Passwort-Override vorhanden
|
||||
|
||||
Validierung:
|
||||
|
||||
```powershell
|
||||
dotnet test TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --verbosity minimal
|
||||
```
|
||||
|
||||
Ergebnis:
|
||||
|
||||
```text
|
||||
84/84 Tests gruen
|
||||
```
|
||||
|
||||
Einschraenkung:
|
||||
|
||||
- Kein echter India-HANA-Verbindungstest von der Entwicklungsmaschine aus.
|
||||
- Lokaler `Invoke-WebRequest` gegen `https://trch-webapp-bidashboard.trafagch.local/BiDashboard/` scheitert weiterhin am bekannten lokalen TLS-/Empfangsproblem; Publish und Share-/DB-Pruefung waren erfolgreich.
|
||||
|
||||
## Nachtrag 2026-05-29 Deploy Sparten-Finanzanalyse
|
||||
|
||||
|
||||
@@ -232,7 +232,7 @@ Exportskripte:
|
||||
|
||||
```text
|
||||
scripts/Export-SageSpainSalesCsv.ps1
|
||||
SageSpainFinalExportPackage/Export-SageSpainSalesCsv.ps1
|
||||
SageSpainExportPackage/SageSpainFinalExportPackage/Export-SageSpainSalesCsv.ps1
|
||||
```
|
||||
|
||||
Sage-SQL-Formel im Export:
|
||||
@@ -555,6 +555,6 @@ Services/DatabaseSeedService.cs
|
||||
FinanceReference-Sollwerte, UK Mapping, ZSCHWEIZ Mapping, Default-Waehrungen
|
||||
|
||||
scripts/Export-SageSpainSalesCsv.ps1
|
||||
SageSpainFinalExportPackage/Export-SageSpainSalesCsv.ps1
|
||||
SageSpainExportPackage/SageSpainFinalExportPackage/Export-SageSpainSalesCsv.ps1
|
||||
Spanien Sage SQL Export und Gutschrift-Logik
|
||||
```
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
# Finance Dashboard Todo
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
Historische Todo-Liste, fuer RAG komprimiert.
|
||||
|
||||
Aktueller Finance-Kontext steht in `docs/rag/FINANCE.md`.
|
||||
|
||||
Volltext bei Bedarf:
|
||||
|
||||
```text
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
@@ -4,6 +4,8 @@ Stand: 2026-06-08
|
||||
|
||||
Zweck: Diese Notiz beschreibt den tatsaechlichen technischen Datenfluss im Finance Cockpit: wo Daten geholt werden, wann Felder veraendert werden, wann Wechselkurse wirken, wie die zentrale Excel entsteht und welche Quelle die Sparteninformationen liefert.
|
||||
|
||||
Fokus nur Wechselkurs/Kursanwendung: `docs/FINANCE_KURS_WORKFLOW_2026-06-09.md`.
|
||||
|
||||
## Kurzfazit
|
||||
|
||||
- Finance Summary, Management Analyse und Spartenanalyse lesen nicht aus dem SharePoint-Excel, sondern direkt aus der App-Datenbank `CentralSalesRecords`.
|
||||
@@ -213,6 +215,8 @@ INSERT neue Records fuer diesen Standort
|
||||
|
||||
Es gibt drei getrennte Faelle.
|
||||
|
||||
Detail nur zum Kursfluss vom Land bis zur zentralen Dashboard-Analyse: `docs/FINANCE_KURS_WORKFLOW_2026-06-09.md`.
|
||||
|
||||
### 1. Standard-Finance-Soll/Ist und Finance Summary
|
||||
|
||||
Kein allgemeiner Wechselkurs wird angewendet.
|
||||
@@ -458,4 +462,3 @@ Zentrale Excel
|
||||
6. Wechselkurse sind keine stille Vorverarbeitung fuer den Standard-Soll/Ist-Abgleich.
|
||||
7. `Mixed` bedeutet: mehrere Waehrungen im Filter. Prozentwerte auf `Mixed` sind nur eingeschraenkt interpretierbar; fuer belastbare Spartenanteile nach Wert muss Land oder Waehrung gefiltert werden.
|
||||
8. Die zentrale Excel wird nach den Standortexporten aus `CentralSalesRecords` erstellt. Sie ist Ergebnis, nicht Eingang.
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
# Finance ES Mail Abweichung
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
Historischer Mailentwurf, fuer RAG komprimiert.
|
||||
|
||||
Aktueller Spanien-/Finance-Kontext steht in `docs/rag/FINANCE.md`.
|
||||
|
||||
Volltext bei Bedarf:
|
||||
|
||||
```text
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
@@ -1,21 +0,0 @@
|
||||
# Finance Handoff
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
Diese Datei ist fuer tokenarme RAG-Nutzung komprimiert.
|
||||
|
||||
## 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
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
|
||||
Nur laden, wenn der Zwischenstand vom 2026-05-18 oder alte Finance-Abweichungen genau nachvollzogen werden muessen.
|
||||
@@ -1,13 +0,0 @@
|
||||
# Finance IT Mail Abweichung
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
Historischer Mailentwurf, fuer RAG komprimiert.
|
||||
|
||||
Aktueller Italien-/Finance-Kontext steht in `docs/rag/FINANCE.md`.
|
||||
|
||||
Volltext bei Bedarf:
|
||||
|
||||
```text
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
@@ -0,0 +1,313 @@
|
||||
# Finance Kurs-Workflow
|
||||
|
||||
Stand: 2026-06-09
|
||||
|
||||
Zweck: Diese Doku beschreibt isoliert den Weg eines Umrechnungskurses vom einzelnen Land bis zur Analyse eines zentralen Dashboard-Wertes. Sie ersetzt nicht die allgemeine Finance-Datenflussdoku, sondern schneidet nur das Thema Kurs/Waehrung heraus.
|
||||
|
||||
Visualisierung: `docs/FINANCE_KURS_WORKFLOW_2026-06-09.svg`
|
||||
|
||||

|
||||
|
||||
## Kurzfazit
|
||||
|
||||
- Der Standortimport rechnet Werte normalerweise nicht ueber die App-Kurstabelle um.
|
||||
- `CentralSalesRecords` speichert die Werte und Waehrungen so, wie sie nach Import und optionalen Transformationen vorliegen.
|
||||
- `DocumentRate` ist ein Quellfeld aus SAP/B1/OData, kein automatisch angewendeter App-Kurs.
|
||||
- Die fuehrende `Finance Summary` und das zentrale Excel nutzen Hauswaehrung je Land. Die App-Kurstabelle wird dort nicht still angewendet.
|
||||
- Eine echte App-Umrechnung passiert nur in Analyse-/Anzeige-Sichten mit Zielwaehrung, in einer expliziten `ConvertCurrency`-Transformation oder im separaten Budget-CHF-Kandidaten.
|
||||
- Wenn in einer Zielwaehrung kein Kurs gefunden wird, fliesst diese Zeile mit `0` in die Anzeige-Summe ein und wird als fehlender Kurs gezaehlt.
|
||||
|
||||
## Begriffe
|
||||
|
||||
| Begriff | Bedeutung |
|
||||
| --- | --- |
|
||||
| Hauswaehrung | Fuehrende Finance-Waehrung des Landes, z. B. `EUR`, `CHF`, `GBP`, `USD`, `INR`. |
|
||||
| `SalesCurrency` | Waehrung von `SalesPriceValue`; fuer Dashboard-Umrechnung die wichtigste Quellwaehrung. |
|
||||
| `CompanyCurrency` | lokale Firmen-/Hauswaehrung aus dem Quellsystem, soweit vorhanden. |
|
||||
| `DocumentCurrency` | Belegwaehrung, z. B. Fremdwaehrung eines einzelnen Kundenbelegs. |
|
||||
| `DocumentRate` | Belegkurs aus dem ERP-Quellsystem. Wird gespeichert, aber nicht automatisch fuer Dashboard-Umrechnung verwendet. |
|
||||
| App-Kurstabelle | Tabelle `CurrencyExchangeRates` mit `FromCurrency`, `ToCurrency`, `Rate`, `ValidFrom`, `ValidTo`, `Notes`, `IsActive`. |
|
||||
| Anzeige-Waehrung | Zielwaehrung in Analyse-Sichten, aktuell `NATIVE`, `CHF`, `EUR`, `USD`. |
|
||||
| Budgetkurs | Kurs mit `Notes = Budget <Jahr>`, z. B. `Budget 2025`, fuer separaten CHF-Kontrollkandidaten. |
|
||||
|
||||
## Gesamtfluss
|
||||
|
||||
```text
|
||||
Land / Quellsystem
|
||||
|
|
||||
+-- Werte und Waehrungen lesen
|
||||
| SalesPriceValue, SalesCurrency, CompanyCurrency,
|
||||
| DocumentCurrency, DocumentTotal FC/LC, DocumentRate
|
||||
|
|
||||
+-- optionale FieldTransformationRules
|
||||
| normal: keine Kursumrechnung
|
||||
| Ausnahme: ConvertCurrency schreibt dauerhaft ein Zielfeld
|
||||
|
|
||||
+-- Standort-Excel schreiben
|
||||
|
|
||||
+-- CentralSalesRecords fuer Standort ersetzen
|
||||
|
|
||||
+-- zentrale Excel / Finance Summary
|
||||
| Hauswaehrung, keine stille App-Kursumrechnung
|
||||
|
|
||||
+-- Management Analyse / Rohdaten-Diagnose mit Zielwaehrung
|
||||
Kurstabelle suchen -> Betrag * Kurs -> zentrale Anzeige-Summe
|
||||
```
|
||||
|
||||
## Schritt 1: Land liefert Betrag und Waehrung
|
||||
|
||||
Jedes Land liefert zuerst einen Nettowert und die dazugehoerige Waehrungsinformation. Der Kurs selbst wird dabei nur als Quellinformation uebernommen, nicht automatisch angewendet.
|
||||
|
||||
| Land / TSC | Quelle | Fuehrender Importwert | Waehrungsfelder | Kursfeld aus Quelle |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| CH / AT `ZSCHWEIZ` | SAP OData | `Z.NetwrHc` -> `SalesPriceValue` | `Z.Hwaer` -> `SalesCurrency` / `CompanyCurrency`, `Z.Waerk` -> `DocumentCurrency` | `Z.Kurrf` -> `DocumentRate` |
|
||||
| FR `TRFR` | SAP B1/HANA | `INV1.LineTotal`, Credit Notes negativ | `OADM.MainCurncy`, `OINV.DocCur` | `OINV.DocRate` / `ORIN.DocRate` |
|
||||
| IT `TRIT` | SAP B1/HANA | `INV1.LineTotal`, Credit Notes negativ, mit IT-Filter | `OADM.MainCurncy`, `DocCur` | `DocRate` |
|
||||
| US `TRUS` | SAP B1/HANA | `INV1.LineTotal`, Credit Notes negativ | `OADM.MainCurncy`, `DocCur` | `DocRate` |
|
||||
| IN `TRIN` | HANA/Sage-Quelle | Hauswaehrungswert in INR | Finance-Hauswaehrung `INR` | ggf. Quellkurs, nicht fuehrend fuer Soll/Ist |
|
||||
| UK `TRUK` | Sage/Manual Excel | `[Sales Price/Value] * [Quantity]` | `GBP` | kein App-Kurs beim Import |
|
||||
| ES `TRES` | Sage CSV | `ImporteNeto`, REC/Credit negativ | `EUR` | kein App-Kurs beim Import |
|
||||
| DE `TRDE` | Alphaplan Excel | `NettoPreisGesamtX` | `Waehrung` / aktuell fachlich `EUR` | kein App-Kurs beim Import |
|
||||
|
||||
Wichtig: Ein vorhandener ERP-Belegkurs erklaert die Beziehung zwischen Belegwaehrung und lokaler Hauswaehrung im Quellsystem. Die App nutzt fuer die zentrale Anzeigeumrechnung trotzdem die eigene Kurstabelle, sobald eine Zielwaehrung gewaehlt wird.
|
||||
|
||||
## Schritt 2: Kurstabelle pflegen
|
||||
|
||||
Die App-Kurse liegen in `CurrencyExchangeRates`.
|
||||
|
||||
Pflegeorte:
|
||||
|
||||
- `Settings > Wechselkurse`: Kurse manuell erfassen, aktivieren/deaktivieren und speichern.
|
||||
- `Refresh Kurse`: importiert ECB-Tageskurse als `EUR -> <Waehrung>` mit Notiz `ECB daily reference rate`.
|
||||
- Seed beim App-Start: Budgetkurse fuer `Budget 2025` und `Budget 2026`, jeweils zur Umrechnung in `CHF`.
|
||||
- Konfigurationsexport/-import: Kurse sind Teil des Config-Transferpakets.
|
||||
|
||||
Technische Regeln beim Speichern:
|
||||
|
||||
- Waehrungscodes werden getrimmt und in Grossbuchstaben gespeichert.
|
||||
- Leere Waehrungen und Kurse `<= 0` werden verworfen.
|
||||
- `ValidFrom` und `ValidTo` werden auf Datum ohne Uhrzeit normalisiert.
|
||||
|
||||
## Schritt 3: Kurs aufloesen
|
||||
|
||||
Die zentrale Kursaufloesung laeuft ueber `CurrencyExchangeRateService.ResolveRate(from, to, date)`.
|
||||
|
||||
Reihenfolge:
|
||||
|
||||
1. Waehrungscodes normalisieren, z. B. `$` -> `USD`, `SFR` -> `CHF`, `RS` -> `INR`.
|
||||
2. Gleiche Waehrung ergibt Kurs `1`.
|
||||
3. Wirksames Datum bestimmen. Ohne Datum wird das heutige UTC-Datum verwendet.
|
||||
4. Direkten aktiven Kurs suchen: `FromCurrency = Quelle`, `ToCurrency = Ziel`, Datum innerhalb `ValidFrom`/`ValidTo`.
|
||||
5. Wenn kein direkter Kurs existiert: inversen Kurs suchen und `1 / Rate` rechnen.
|
||||
6. Wenn weiterhin kein Kurs existiert: Kreuzkurs ueber `EUR` suchen.
|
||||
7. Wenn nichts passt: Ergebnis `null`.
|
||||
|
||||
Bei mehreren gueltigen Kursen gewinnt der mit dem neuesten `ValidFrom`.
|
||||
|
||||
## Schritt 4: Standortexport und zentrale Tabelle
|
||||
|
||||
Beim normalen Standortexport gilt:
|
||||
|
||||
```text
|
||||
Daten holen
|
||||
-> Transformationen anwenden
|
||||
-> Standort-Excel schreiben
|
||||
-> CentralSalesRecords fuer diesen Standort ersetzen
|
||||
-> optional SharePoint Upload
|
||||
```
|
||||
|
||||
Ohne aktive `ConvertCurrency`-Transformation passiert keine App-Kursumrechnung. `CentralSalesRecords` erhaelt:
|
||||
|
||||
- den Importwert `SalesPriceValue`,
|
||||
- die zugehoerige `SalesCurrency`,
|
||||
- Belegfelder wie `DocumentCurrency`, `DocumentTotalForeignCurrency`, `DocumentTotalLocalCurrency`, `DocumentRate`,
|
||||
- die Datumsfelder `PostingDate`, `InvoiceDate`, `ExtractionDate`.
|
||||
|
||||
Damit bleibt nachvollziehbar, ob ein Wert bereits vom Landessystem als Hauswaehrungswert geliefert wurde oder ob er spaeter nur in der Anzeige umgerechnet wurde.
|
||||
|
||||
## Schritt 5: Fuehrende Finance Summary
|
||||
|
||||
Die fuehrende Finance Summary im Dashboard und das zentrale Excel-Blatt `Finance Summary` rechnen nicht automatisch in eine globale Zielwaehrung um.
|
||||
|
||||
Logik:
|
||||
|
||||
```text
|
||||
CentralSalesRecords
|
||||
-> FinanceRuleEngine
|
||||
-> Finance | Net Sales Actual
|
||||
-> Gruppierung nach Jahr, Land, Finance-Waehrung
|
||||
```
|
||||
|
||||
Die Finance-Waehrung ist je Land fest bzw. aus dem Hauswaehrungskontext bestimmt:
|
||||
|
||||
| Land | Finance-Waehrung |
|
||||
| --- | --- |
|
||||
| CH | CHF |
|
||||
| AT | EUR |
|
||||
| DE | EUR |
|
||||
| ES | EUR |
|
||||
| FR | EUR |
|
||||
| IN | INR |
|
||||
| IT | EUR |
|
||||
| UK | GBP |
|
||||
| US | USD |
|
||||
|
||||
Der Waehrungsfilter in `Finance Summary` ist deshalb ein Filter auf diese vorhandene Finance-Waehrung. Er ist keine Umrechnung.
|
||||
|
||||
Konsequenz:
|
||||
|
||||
- `Finance Summary` mit Filter `GBP` zeigt UK-Werte in GBP.
|
||||
- `Finance Summary` mit mehreren Laendern kann `Mixed` anzeigen.
|
||||
- Es wird dabei kein EUR/GBP/CHF-Kurs aus `CurrencyExchangeRates` angewendet.
|
||||
|
||||
## Schritt 6: Zentrale Analyse mit Anzeige-Waehrung
|
||||
|
||||
Die Kursanwendung fuer einen zentralen Dashboard-Wert passiert in der Management-Analyse der zentralen Rohdaten, wenn eine Anzeige-Waehrung gewaehlt ist.
|
||||
|
||||
Eingaben:
|
||||
|
||||
- Datenbasis: `CentralSalesRecords`.
|
||||
- Summenfeld: z. B. `SalesPriceValue`, `StandardCost`, `StandardCostTotal`, `Quantity`.
|
||||
- Anzeige-Waehrung: `NATIVE`, `CHF`, `EUR` oder `USD`.
|
||||
- Zeitraum/Filter: Jahr, Monat, Land, TSC.
|
||||
|
||||
Waehrungsquelle je Summenfeld:
|
||||
|
||||
| Summenfeld | Waehrung fuer Kurs |
|
||||
| --- | --- |
|
||||
| `SalesPriceValue` | `SalesCurrency` |
|
||||
| `StandardCost` | `StandardCostCurrency` |
|
||||
| `StandardCostTotal` | `StandardCostCurrency` |
|
||||
| `Quantity` | keine Waehrung; Anzeige-Waehrung wird ignoriert |
|
||||
|
||||
Datumswahl fuer zentrale Analyse:
|
||||
|
||||
| Setting `ExchangeRateDateField` | Kursdatum |
|
||||
| --- | --- |
|
||||
| `PostingDate` | `PostingDate`, sonst `InvoiceDate`, sonst `ExtractionDate` |
|
||||
| `InvoiceDate` | `InvoiceDate`, sonst `PostingDate`, sonst `ExtractionDate` |
|
||||
| `ExtractionDate` | `ExtractionDate` |
|
||||
|
||||
Formel bei Zielwaehrung:
|
||||
|
||||
```text
|
||||
Anzeige-Wert je Zeile = Quellwert * ResolveRate(Quellwaehrung, Zielwaehrung, Kursdatum)
|
||||
Zentraler Dashboard-Wert = Summe aller Anzeige-Werte im Filter
|
||||
```
|
||||
|
||||
Sonderfaelle:
|
||||
|
||||
- Zielwaehrung `NATIVE`: keine Umrechnung; Werte bleiben in ihrer Quellwaehrung.
|
||||
- Quellwaehrung gleich Zielwaehrung: Faktor `1`.
|
||||
- Kurs fehlt: Anzeige-Wert dieser Zeile wird `0`, `MissingExchangeRateCount` steigt.
|
||||
- Mehrere native Waehrungen im Ergebnis: Anzeige `Mixed`.
|
||||
|
||||
Diese Umrechnung ist eine Laufzeit-Anzeige. Sie aendert `CentralSalesRecords`, Standort-Excel und zentrales Excel nicht.
|
||||
|
||||
## Schritt 7: Explizite Transformation `ConvertCurrency`
|
||||
|
||||
Nur wenn eine aktive `FieldTransformationRule` mit `TransformationType = ConvertCurrency` existiert, wird beim Standortexport dauerhaft ein Feld umgerechnet.
|
||||
|
||||
Beispielargument:
|
||||
|
||||
```text
|
||||
amountField=SalesPriceValue;
|
||||
currencyField=SalesCurrency;
|
||||
targetCurrency=EUR;
|
||||
dateField=InvoiceDate;
|
||||
targetCurrencyField=SalesCurrency;
|
||||
round=2
|
||||
```
|
||||
|
||||
Wirkung:
|
||||
|
||||
- Quelle und Ziel werden ueber die App-Kurstabelle aufgeloest.
|
||||
- `TargetField` erhaelt den umgerechneten Betrag.
|
||||
- Optional wird ein Ziel-Waehrungsfeld gesetzt.
|
||||
- Diese Veraenderung liegt danach in Standort-Excel und `CentralSalesRecords`.
|
||||
|
||||
Fallback-Datum in `ConvertCurrency`:
|
||||
|
||||
```text
|
||||
konfiguriertes dateField
|
||||
sonst InvoiceDate
|
||||
sonst OrderDate
|
||||
sonst ExtractionDate
|
||||
```
|
||||
|
||||
Damit ist `ConvertCurrency` ein anderer Pfad als die Anzeige-Waehrung in der zentralen Analyse.
|
||||
|
||||
## Schritt 8: Budget-CHF-Kandidat
|
||||
|
||||
Im Soll/Ist-Vergleich gibt es einen separaten Kandidaten:
|
||||
|
||||
```text
|
||||
Nettofakturawert Hauswaehrung -> CHF Budget <Jahr>
|
||||
```
|
||||
|
||||
Dieser Kandidat nutzt nur Kurse mit:
|
||||
|
||||
```text
|
||||
Notes = Budget 2025
|
||||
Notes = Budget 2026
|
||||
```
|
||||
|
||||
Er ist eine Kontroll-/Reporting-Sicht. Er ersetzt nicht den Standardabgleich in Hauswaehrung.
|
||||
|
||||
## Analysepfad fuer eine konkrete Kursfrage
|
||||
|
||||
Wenn ein zentraler Wert im Dashboard wegen Kursen geprueft werden soll:
|
||||
|
||||
1. Land/TSC und Quellwert pruefen: `SalesPriceValue`, `SalesCurrency`, `CompanyCurrency`, `DocumentCurrency`, `DocumentRate`.
|
||||
2. Klaeren, welche Dashboard-Sicht gemeint ist:
|
||||
- `Finance Summary`: keine App-Kursumrechnung, nur Waehrungsfilter.
|
||||
- zentrale Rohdaten-/Management-Analyse mit Anzeige-Waehrung: App-Kursumrechnung.
|
||||
- `ConvertCurrency`: dauerhafte Transformation beim Export.
|
||||
3. In den Settings das Kursdatum pruefen: `PostingDate`, `InvoiceDate` oder `ExtractionDate`.
|
||||
4. In `CurrencyExchangeRates` den gueltigen Kurs zum Datum suchen.
|
||||
5. Direkte, inverse und EUR-Kreuzkurslogik beachten.
|
||||
6. Im Dashboard `Nicht umgerechnet` / `MissingExchangeRateCount` kontrollieren.
|
||||
7. Falls `Mixed` angezeigt wird, wurde nicht in eine einheitliche Zielwaehrung gerechnet.
|
||||
|
||||
Hilfsabfragen fuer SQLite:
|
||||
|
||||
```sql
|
||||
SELECT Land, Tsc, SalesCurrency, CompanyCurrency, DocumentCurrency,
|
||||
COUNT(*) AS Rows,
|
||||
SUM(SalesPriceValue) AS SalesValue
|
||||
FROM CentralSalesRecords
|
||||
GROUP BY Land, Tsc, SalesCurrency, CompanyCurrency, DocumentCurrency
|
||||
ORDER BY Land, Tsc;
|
||||
```
|
||||
|
||||
```sql
|
||||
SELECT FromCurrency, ToCurrency, Rate, ValidFrom, ValidTo, Notes, IsActive
|
||||
FROM CurrencyExchangeRates
|
||||
WHERE IsActive = 1
|
||||
ORDER BY FromCurrency, ToCurrency, ValidFrom DESC;
|
||||
```
|
||||
|
||||
## Code-Stellen
|
||||
|
||||
| Thema | Code |
|
||||
| --- | --- |
|
||||
| Kursmodell | `Models/CurrencyExchangeRate.cs` |
|
||||
| Kursaufloesung | `Services/CurrencyExchangeRateService.cs` |
|
||||
| ECB-Import | `Services/ExchangeRateImportService.cs` |
|
||||
| Settings/Kurspflege | `Services/SettingsPageService.cs`, `Components/Pages/Settings.razor` |
|
||||
| Standortexport-Reihenfolge | `Services/SiteExportService.cs` |
|
||||
| zentrale Speicherung | `Services/CentralSalesRecordService.cs` |
|
||||
| zentrale Analyse mit Zielwaehrung | `Services/ManagementCockpitService.cs` |
|
||||
| Finance Summary ohne stille Umrechnung | `Services/ManagementCockpitService.cs`, `Services/ExcelExportService.cs` |
|
||||
| Budget-CHF-Kandidat | `Services/FinanceReconciliationService.cs` |
|
||||
| ConvertCurrency | `Services/TransformationStrategies.cs` |
|
||||
|
||||
## Nicht verwechseln
|
||||
|
||||
| Nicht verwechseln | Klarstellung |
|
||||
| --- | --- |
|
||||
| `DocumentRate` vs. App-Kurstabelle | `DocumentRate` kommt aus dem Landessystem; App-Umrechnung nutzt `CurrencyExchangeRates`. |
|
||||
| Finance-Waehrungsfilter vs. Anzeige-Waehrung | Finance-Waehrungsfilter filtert vorhandene Hauswaehrungen; Anzeige-Waehrung rechnet Werte um. |
|
||||
| Zentrale Excel vs. Dashboard-Livewert | Die App-Anzeige liest `CentralSalesRecords`; SharePoint-Excel ist Ergebnis/Ablage. |
|
||||
| Budget-CHF vs. Tageskurs | Budgetkurse sind eigene Kontrollkurse, nicht automatisch der Standard-Ist. |
|
||||
| Native/Mixed vs. konvertiert | `NATIVE` summiert je Quellwaehrung; `Mixed` heisst mehrere Waehrungen im Ergebnis. |
|
||||
@@ -0,0 +1,194 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1500" height="1050" viewBox="0 0 1500 1050" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Finance Kurs-Workflow</title>
|
||||
<desc id="desc">Visualisierung des Kursflusses vom Land ueber CentralSalesRecords bis zur zentralen Dashboard-Analyse.</desc>
|
||||
<defs>
|
||||
<marker id="arrow-blue" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto" markerUnits="strokeWidth">
|
||||
<path d="M 0 0 L 12 6 L 0 12 z" fill="#2457a6" />
|
||||
</marker>
|
||||
<marker id="arrow-green" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto" markerUnits="strokeWidth">
|
||||
<path d="M 0 0 L 12 6 L 0 12 z" fill="#2f7d4f" />
|
||||
</marker>
|
||||
<marker id="arrow-orange" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto" markerUnits="strokeWidth">
|
||||
<path d="M 0 0 L 12 6 L 0 12 z" fill="#b35c00" />
|
||||
</marker>
|
||||
<style>
|
||||
.page { fill: #f7f8fb; }
|
||||
.title { font: 700 32px Arial, sans-serif; fill: #172033; }
|
||||
.subtitle { font: 400 16px Arial, sans-serif; fill: #4a5568; }
|
||||
.box-title { font: 700 17px Arial, sans-serif; fill: #172033; }
|
||||
.box-text { font: 400 14px Arial, sans-serif; fill: #253044; }
|
||||
.small { font: 400 12px Arial, sans-serif; fill: #4a5568; }
|
||||
.label { font: 700 13px Arial, sans-serif; fill: #172033; }
|
||||
.box { fill: #ffffff; stroke: #c7d2e3; stroke-width: 2; rx: 8; }
|
||||
.source { fill: #eef5ff; stroke: #8fb2e6; }
|
||||
.store { fill: #f1f7f3; stroke: #8abf9d; }
|
||||
.finance { fill: #eef8f0; stroke: #6fa87d; }
|
||||
.analysis { fill: #fff5e6; stroke: #e0a349; }
|
||||
.warning { fill: #fff1f0; stroke: #d96863; }
|
||||
.table { fill: #f6f0ff; stroke: #ad94d6; }
|
||||
.muted { fill: #f3f5f8; stroke: #b8c2cf; }
|
||||
.line-blue { fill: none; stroke: #2457a6; stroke-width: 3; marker-end: url(#arrow-blue); }
|
||||
.line-green { fill: none; stroke: #2f7d4f; stroke-width: 3; marker-end: url(#arrow-green); }
|
||||
.line-orange { fill: none; stroke: #b35c00; stroke-width: 3; marker-end: url(#arrow-orange); }
|
||||
.line-dashed { stroke-dasharray: 8 7; }
|
||||
</style>
|
||||
</defs>
|
||||
|
||||
<rect class="page" x="0" y="0" width="1500" height="1050" />
|
||||
|
||||
<text class="title" x="60" y="58">Finance Kurs-Workflow</text>
|
||||
<text class="subtitle" x="60" y="86">Vom einzelnen Land ueber CentralSalesRecords bis zur Analyse eines zentralen Dashboard-Wertes</text>
|
||||
|
||||
<g transform="translate(60 112)">
|
||||
<rect class="source" x="0" y="0" width="260" height="165" rx="8" />
|
||||
<text class="box-title" x="18" y="30">1. Land / Quellsystem</text>
|
||||
<text class="box-text" x="18" y="62">
|
||||
<tspan x="18" dy="0">SAP OData: CH / AT</tspan>
|
||||
<tspan x="18" dy="24">SAP B1/HANA: FR / IT / US</tspan>
|
||||
<tspan x="18" dy="24">HANA/Sage: IN</tspan>
|
||||
<tspan x="18" dy="24">Sage/Excel/Alphaplan: UK / ES / DE</tspan>
|
||||
</text>
|
||||
<text class="small" x="18" y="145">Quelle liefert Wert, Waehrung und ggf. ERP-Belegkurs.</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(370 112)">
|
||||
<rect class="source" x="0" y="0" width="285" height="165" rx="8" />
|
||||
<text class="box-title" x="18" y="30">2. Importwert</text>
|
||||
<text class="box-text" x="18" y="62">
|
||||
<tspan x="18" dy="0">SalesPriceValue</tspan>
|
||||
<tspan x="18" dy="24">SalesCurrency / CompanyCurrency</tspan>
|
||||
<tspan x="18" dy="24">DocumentCurrency</tspan>
|
||||
<tspan x="18" dy="24">DocumentTotal FC / LC</tspan>
|
||||
<tspan x="18" dy="24">DocumentRate als Quellinfo</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(705 112)">
|
||||
<rect class="muted" x="0" y="0" width="285" height="165" rx="8" />
|
||||
<text class="box-title" x="18" y="30">3. Transformationen</text>
|
||||
<text class="box-text" x="18" y="62">
|
||||
<tspan x="18" dy="0">Normalfall: keine Kursumrechnung</tspan>
|
||||
<tspan x="18" dy="26">Feldregeln koennen Werte kopieren,</tspan>
|
||||
<tspan x="18" dy="22">normalisieren oder konstant setzen.</tspan>
|
||||
<tspan x="18" dy="30">Ausnahme: ConvertCurrency</tspan>
|
||||
<tspan x="18" dy="22">schreibt dauerhaft ein Zielfeld.</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(1040 112)">
|
||||
<rect class="store" x="0" y="0" width="285" height="165" rx="8" />
|
||||
<text class="box-title" x="18" y="30">4. CentralSalesRecords</text>
|
||||
<text class="box-text" x="18" y="62">
|
||||
<tspan x="18" dy="0">Zentraler operativer Datenbestand</tspan>
|
||||
<tspan x="18" dy="26">pro Standort komplett ersetzt</tspan>
|
||||
<tspan x="18" dy="26">enthaelt Werte nach Import und</tspan>
|
||||
<tspan x="18" dy="22">optionalen Transformationen</tspan>
|
||||
</text>
|
||||
<text class="small" x="18" y="143">SharePoint-Excel ist Ablage, nicht Live-Quelle.</text>
|
||||
</g>
|
||||
|
||||
<path class="line-blue" d="M 320 195 L 360 195" />
|
||||
<path class="line-blue" d="M 655 195 L 695 195" />
|
||||
<path class="line-blue" d="M 990 195 L 1030 195" />
|
||||
|
||||
<g transform="translate(105 345)">
|
||||
<rect class="finance" x="0" y="0" width="385" height="175" rx="8" />
|
||||
<text class="box-title" x="18" y="30">5A. Finance Summary / zentrales Excel</text>
|
||||
<text class="box-text" x="18" y="63">
|
||||
<tspan x="18" dy="0">FinanceRuleEngine bildet Net Sales Actual.</tspan>
|
||||
<tspan x="18" dy="26">Fuehrend ist die Hauswaehrung je Land:</tspan>
|
||||
<tspan x="18" dy="24">CH CHF, AT/DE/ES/FR/IT EUR,</tspan>
|
||||
<tspan x="18" dy="24">IN INR, UK GBP, US USD.</tspan>
|
||||
</text>
|
||||
<text class="small" x="18" y="153">Waehrungsfilter = Filter, keine Umrechnung.</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(560 345)">
|
||||
<rect class="warning" x="0" y="0" width="335" height="175" rx="8" />
|
||||
<text class="box-title" x="18" y="30">Nicht still umrechnen</text>
|
||||
<text class="box-text" x="18" y="63">
|
||||
<tspan x="18" dy="0">DocumentRate bleibt Quellfeld.</tspan>
|
||||
<tspan x="18" dy="26">CurrencyExchangeRates werden hier</tspan>
|
||||
<tspan x="18" dy="24">nicht automatisch angewendet.</tspan>
|
||||
<tspan x="18" dy="30">Mixed bedeutet: mehrere Waehrungen</tspan>
|
||||
<tspan x="18" dy="22">im aktuellen Filter.</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<path class="line-green" d="M 1180 285 C 1180 325, 360 300, 315 340" />
|
||||
<path class="line-green" d="M 490 432 L 550 432" />
|
||||
|
||||
<g transform="translate(105 625)">
|
||||
<rect class="analysis" x="0" y="0" width="390" height="205" rx="8" />
|
||||
<text class="box-title" x="18" y="30">5B. Zentrale Analyse mit Zielwaehrung</text>
|
||||
<text class="box-text" x="18" y="63">
|
||||
<tspan x="18" dy="0">Anzeige-Waehrung: NATIVE, CHF, EUR, USD</tspan>
|
||||
<tspan x="18" dy="28">Summenfeld:</tspan>
|
||||
<tspan x="38" dy="24">SalesPriceValue -> SalesCurrency</tspan>
|
||||
<tspan x="38" dy="24">StandardCost -> StandardCostCurrency</tspan>
|
||||
<tspan x="38" dy="24">Quantity -> keine Waehrung</tspan>
|
||||
</text>
|
||||
<text class="small" x="18" y="183">Diese Umrechnung ist nur Anzeige/Laufzeit.</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(560 625)">
|
||||
<rect class="table" x="0" y="0" width="340" height="205" rx="8" />
|
||||
<text class="box-title" x="18" y="30">CurrencyExchangeRates</text>
|
||||
<text class="box-text" x="18" y="63">
|
||||
<tspan x="18" dy="0">FromCurrency / ToCurrency / Rate</tspan>
|
||||
<tspan x="18" dy="26">ValidFrom / ValidTo / IsActive</tspan>
|
||||
<tspan x="18" dy="32">ResolveRate-Reihenfolge:</tspan>
|
||||
<tspan x="38" dy="24">1. direkt</tspan>
|
||||
<tspan x="38" dy="24">2. invers</tspan>
|
||||
<tspan x="38" dy="24">3. EUR-Kreuzkurs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(965 625)">
|
||||
<rect class="analysis" x="0" y="0" width="390" height="205" rx="8" />
|
||||
<text class="box-title" x="18" y="30">6. Zentraler Dashboard-Wert</text>
|
||||
<text class="box-text" x="18" y="63">
|
||||
<tspan x="18" dy="0">Anzeige-Wert je Zeile = Wert * Kurs</tspan>
|
||||
<tspan x="18" dy="30">Summe = alle Anzeige-Werte im Filter</tspan>
|
||||
<tspan x="18" dy="30">Kurs fehlt:</tspan>
|
||||
<tspan x="38" dy="24">Zeile zaehlt mit 0</tspan>
|
||||
<tspan x="38" dy="24">MissingExchangeRateCount steigt</tspan>
|
||||
</text>
|
||||
<text class="small" x="18" y="183">CentralSalesRecords bleiben unveraendert.</text>
|
||||
</g>
|
||||
|
||||
<path class="line-orange" d="M 1180 285 C 1180 560, 280 555, 280 615" />
|
||||
<path class="line-orange" d="M 500 727 L 550 727" />
|
||||
<path class="line-orange" d="M 900 727 L 955 727" />
|
||||
|
||||
<g transform="translate(705 890)">
|
||||
<rect class="muted" x="0" y="0" width="300" height="110" rx="8" />
|
||||
<text class="box-title" x="18" y="30">ConvertCurrency</text>
|
||||
<text class="box-text" x="18" y="62">
|
||||
<tspan x="18" dy="0">aktive Transformation beim Export</tspan>
|
||||
<tspan x="18" dy="24">schreibt dauerhaft ein Zielfeld</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(1045 890)">
|
||||
<rect class="muted" x="0" y="0" width="300" height="110" rx="8" />
|
||||
<text class="box-title" x="18" y="30">Budget-CHF-Kandidat</text>
|
||||
<text class="box-text" x="18" y="62">
|
||||
<tspan x="18" dy="0">Notes = Budget 2025 / 2026</tspan>
|
||||
<tspan x="18" dy="24">Kontrollsicht, nicht Standard-Ist</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<path class="line-orange line-dashed" d="M 835 885 C 835 850, 770 850, 740 835" />
|
||||
<path class="line-orange line-dashed" d="M 1195 885 C 1195 850, 815 850, 790 835" />
|
||||
|
||||
<g transform="translate(60 930)">
|
||||
<text class="label" x="0" y="0">Legende</text>
|
||||
<rect x="0" y="18" width="24" height="10" fill="#2457a6" />
|
||||
<text class="small" x="34" y="29">Datenfluss Import / Speicherung</text>
|
||||
<rect x="245" y="18" width="24" height="10" fill="#2f7d4f" />
|
||||
<text class="small" x="279" y="29">Finance-Hauswaehrung ohne stille App-Kursumrechnung</text>
|
||||
<rect x="620" y="18" width="24" height="10" fill="#b35c00" />
|
||||
<text class="small" x="654" y="29">Anzeige-/Analyseumrechnung ueber App-Kurstabelle</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.5 KiB |
@@ -1,13 +0,0 @@
|
||||
# Finance UK Mail Abweichung
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
Historischer Mailentwurf, fuer RAG komprimiert.
|
||||
|
||||
Aktueller UK-/Finance-Kontext steht in `docs/rag/FINANCE.md` und `docs/rag/MANUAL_IMPORT.md`.
|
||||
|
||||
Volltext bei Bedarf:
|
||||
|
||||
```text
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
@@ -1,14 +0,0 @@
|
||||
# Finance: Welches Dokument Gilt?
|
||||
|
||||
Stand: 2026-05-27
|
||||
|
||||
Historische Dokumentgueltigkeitsnotiz, fuer RAG komprimiert.
|
||||
|
||||
Aktueller Dokumentrouter: `docs/RAG_ROUTER.md`.
|
||||
Aktueller Dokumentstatus: `docs/MD_DOKUMENTENSTATUS_2026-05-20.md`.
|
||||
|
||||
Volltext bei Bedarf:
|
||||
|
||||
```text
|
||||
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||
```
|
||||
@@ -1,6 +1,6 @@
|
||||
# Markdown-Dokumentenstatus
|
||||
|
||||
Stand: 2026-05-20
|
||||
Stand: 2026-06-10
|
||||
|
||||
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.
|
||||
|
||||
@@ -17,6 +17,7 @@ Diese Datei ordnet die vorhandenen Markdown-Dateien ein. Ziel ist, alte Arbeitsn
|
||||
| `docs/LOCAL_DEV_SERVER_UEBERGANG_2026-05-21.md` | Lokaler Uebergangsserver auf Entwicklungs-PC | Aktuell bis IIS-Fix |
|
||||
| `docs/FINANCE_ENTSCHEIDE.md` | Finance-Regeln und Kontrollpunkte | Aktuell fuehrend fuer Finance-Logik |
|
||||
| `entscheide.md` | Kurzfassung der Finance-Fachentscheide | Aktuell als Kurzfassung |
|
||||
| `docs/FINANCE_DATENFLUSS_ANDREAS_2026-06-08.md` | Technischer Finance-Datenfluss | Aktuell fuer End-to-end-Datenfluss |
|
||||
| `docs/PRODUCT_SPARTEN_MAPPING_2026-05-27.md` | Produktsparten-Mapping fuer Group Sales Report | Aktuell fuehrend fuer neues Produktmapping-Thema |
|
||||
| `docs/HR_KPI_NACHDOKU_2026-05-13.md` | HR-KPI technische/fachliche Nachdoku | Aktualisiert um 2026-05-20 Erweiterungen |
|
||||
| `docs/PROGRAMM_DIAGRAMME.md` | Uebersicht Diagramme und technische Einordnung | Aktualisiert um neue Anwenderdokus |
|
||||
@@ -26,25 +27,28 @@ Diese Datei ordnet die vorhandenen Markdown-Dateien ein. Ziel ist, alte Arbeitsn
|
||||
| Datei | Rolle | Status |
|
||||
| --- | --- | --- |
|
||||
| `docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md` | Detailregeln je Land | Behalten |
|
||||
| `docs/FINANCE_HANDOFF_2026-05-18.md` | Finance-Handoff vor den 20.05.-Aenderungen | Behalten, mit neueren Nachtraegen lesen |
|
||||
| `docs/FINANCE_KURS_WORKFLOW_2026-06-09.md` | Isolierter Workflow fuer Kurs-/Waehrungsanwendung vom Land bis Dashboard | Aktuell fuer Kursfragen; SVG daneben |
|
||||
| `docs/FINANCE_IT_VORGEHEN_2026-05-18.md` | Italien-Pruefpfad | Behalten |
|
||||
| `docs/FINANCE_UK_QUELLE_KORREKTUR_2026-05-18.md` | UK-Quellkorrektur | Behalten |
|
||||
| `docs/SAGE_SPAIN_RCLONE_UPLOAD_GUIDE_2026-06-03.md` | Aktueller Spanien-rclone-All-in-one-Workflow | Ersetzt alte deutsche Anleitung vom 2026-06-03 |
|
||||
| `docs/HR_KPI_PRUEFUNG_SWISS_BEST_PRACTICES.md` | HR-KPI Formel-/Best-Practice-Pruefung | Behalten |
|
||||
| `SAGE_SPAIN_EXPORT_2026-05-05.md` | Sage Spanien Export | Behalten |
|
||||
| `LLM_SYSTEM_GUIDE.md` | Arbeits-/Systemkontext fuer LLM | Behalten |
|
||||
| `persona.md` | Nutzer-/Projektkontext | Behalten |
|
||||
|
||||
## Historisch / nicht mehr fuehrend
|
||||
## Archiviert / aus aktiver Doku entfernt
|
||||
|
||||
Diese Dateien bleiben aus Nachvollziehbarkeitsgruenden erhalten, sind aber nicht mehr als aktueller Stand zu lesen:
|
||||
Diese Dateien wurden am 2026-06-09 aus der aktiven Markdown-Struktur entfernt, weil sie nur noch historische Stubs oder durch neuere Dokus ersetzt waren. Fachinhalt bleibt erhalten:
|
||||
|
||||
| Datei | Grund |
|
||||
| Entfernte Datei | Grund |
|
||||
| --- | --- |
|
||||
| `docs/FINANCE_DASHBOARD_TODO_2026-05-15.md` | Urspruengliche Todo-Liste; Status wurde am 2026-05-20 aktualisiert |
|
||||
| `docs/FINANCE_WELCHES_DOKUMENT_GILT_2026-05-15.md` | CFO-Dokumentenstand vom 15.05.; Anwenderdoku vom 20.05. ist hinzugekommen |
|
||||
| `docs/FINANCE_ES_MAIL_ABWEICHUNG_2026-05-15.md` | Mail-/Abweichungsnotiz |
|
||||
| `docs/FINANCE_IT_MAIL_ABWEICHUNG_2026-05-15.md` | Mail-/Abweichungsnotiz |
|
||||
| `docs/FINANCE_UK_MAIL_ABWEICHUNG_2026-05-15.md` | Mail-/Abweichungsnotiz |
|
||||
| `FINANCE_HANDOFF_2026-05-18.md` | Volltext liegt in `docs/raw_md_archive/HISTORY_CANONICAL.md.raw`; aktueller Kurzkontext steht in `docs/rag/FINANCE.md`. |
|
||||
| `FINANCE_DASHBOARD_TODO_2026-05-15.md` | Volltext liegt in `docs/raw_md_archive/HISTORY_CANONICAL.md.raw`; aktueller Finance-Kontext steht in `docs/rag/FINANCE.md`. |
|
||||
| `FINANCE_WELCHES_DOKUMENT_GILT_2026-05-15.md` | Volltext liegt in `docs/raw_md_archive/HISTORY_CANONICAL.md.raw`; aktueller Router ist `docs/RAG_ROUTER.md`. |
|
||||
| `FINANCE_ES_MAIL_ABWEICHUNG_2026-05-15.md` | Volltext liegt in `docs/raw_md_archive/HISTORY_CANONICAL.md.raw`; aktueller ES-Kontext steht in `docs/rag/FINANCE.md` und `SAGE_SPAIN_EXPORT_2026-05-05.md`. |
|
||||
| `FINANCE_IT_MAIL_ABWEICHUNG_2026-05-15.md` | Volltext liegt in `docs/raw_md_archive/HISTORY_CANONICAL.md.raw`; aktueller IT-Kontext steht in `docs/FINANCE_IT_VORGEHEN_2026-05-18.md`. |
|
||||
| `FINANCE_UK_MAIL_ABWEICHUNG_2026-05-15.md` | Volltext liegt in `docs/raw_md_archive/HISTORY_CANONICAL.md.raw`; aktueller UK-Kontext steht in `docs/FINANCE_UK_QUELLE_KORREKTUR_2026-05-18.md`. |
|
||||
| `SAGE_SPAIN_RCLONE_UPLOAD_ANLEITUNG_2026-06-03.md` | Veralteter zweiscriptiger Spanien-rclone-Workflow; aktueller Stand ist `docs/SAGE_SPAIN_RCLONE_UPLOAD_GUIDE_2026-06-03.md`. |
|
||||
|
||||
## Neue Word-/Bilddokumente seit 2026-05-20
|
||||
|
||||
@@ -57,10 +61,15 @@ Diese Dateien bleiben aus Nachvollziehbarkeitsgruenden erhalten, sind aber nicht
|
||||
|
||||
## Bereinigung
|
||||
|
||||
Es wurden keine alten Markdown-Dateien geloescht. Grund: Viele enthalten historische Pruefwerte, Zwischenentscheide und konkrete Pfade, die fuer Rueckfragen oder Audits noch relevant sein koennen.
|
||||
Bereinigung 2026-06-09:
|
||||
|
||||
Stattdessen gilt:
|
||||
- Historische Finance-Stubs und der alte Finance-Handoff wurden aus der aktiven Doku entfernt, weil der Volltext im Raw-Archiv liegt.
|
||||
- Die alte deutsche Spanien-rclone-Anleitung wurde entfernt, weil der aktuelle All-in-one-Workflow im Guide vom 2026-06-05 dokumentiert ist.
|
||||
- Die Alphaplan-Konzept- und Anleitungsdateien vom 2026-06-08 wurden bewusst nicht veraendert.
|
||||
- Delta 2026-06-10: India/SAGE-HANA-Deploy und Server-DB-Seed wurden in `docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md` und `lastchange.md` nachdokumentiert.
|
||||
|
||||
Weiterhin gilt:
|
||||
|
||||
- Aktuelle operative Orientierung ueber diese Statusdatei, `NEXT_STEPS_2026-04-15.md`, `HANDOFF_2026-04-15.md` und `lastchange.md`.
|
||||
- Historische Mail-/Terminnotizen nur als Beleg lesen, nicht als aktuellen Produktstand.
|
||||
- Historische Mail-/Terminnotizen nur im Raw-Archiv als Beleg lesen, nicht als aktuellen Produktstand.
|
||||
- Alte offene Punkte wurden dort aktualisiert, wo sie durch Finance Summary, HR KPI Cockpit oder die Word-Anleitungen ueberholt sind.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# RAG Router
|
||||
|
||||
Stand: 2026-06-05
|
||||
Stand: 2026-06-10
|
||||
|
||||
Zweck: Diese Datei zuerst laden. Danach nur die Dateien aus dem passenden Themenblock laden.
|
||||
|
||||
@@ -34,6 +34,7 @@ Zweck: Diese Datei zuerst laden. Danach nur die Dateien aus dem passenden Themen
|
||||
| `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/FINANCE_KURS_WORKFLOW_2026-06-09.md` | isolierter Kurs-/Umrechnungsworkflow vom Land bis Dashboard |
|
||||
| `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 |
|
||||
@@ -46,9 +47,11 @@ Zweck: Diese Datei zuerst laden. Danach nur die Dateien aus dem passenden Themen
|
||||
| Suchwort | Thema |
|
||||
| --- | --- |
|
||||
| `Finance Summary`, `Soll/Ist`, `check.xlsx`, `FinanceRuleEngine` | Finance Cockpit |
|
||||
| `Wechselkurs`, `Umrechnungskurs`, `CurrencyExchangeRates`, `DocumentRate`, `ConvertCurrency`, `Anzeige-Waehrung` | `docs/FINANCE_KURS_WORKFLOW_2026-06-09.md` |
|
||||
| `TRUK`, `UK_B1`, `Delta`, `Manual Excel` | Manual Import / Finance Spezialfaelle |
|
||||
| `TRDE`, `Alphaplan`, `NettoPreisGesamtX` | Finance Cockpit / Manual Import |
|
||||
| `TRSE`, `Spain`, `Sage`, `ImporteNeto` | Finance Spezialfaelle |
|
||||
| `TRIN`, `Indien`, `India`, `SAGE`, `20.197.20.60`, `TRAFAGCONTROLS` | Deployment/IIS oder Finance Spezialfaelle |
|
||||
| `Spain rclone`, `Spanien SharePoint`, `Run-SpainRangeExportAndUpload-AllInOne`, `trafag-bi` | `docs/SAGE_SPAIN_RCLONE_UPLOAD_GUIDE_2026-06-03.md` |
|
||||
| `3D Datenanalyse`, `Experten`, `Schnelluebersicht`, `Simulation`, `Wechselkurs-Schieberegler` | Finance Cockpit |
|
||||
| `HR KPI`, `Rexx`, `Austritte`, `Absenzen` | HR KPI |
|
||||
|
||||
@@ -1,258 +0,0 @@
|
||||
# Sage Spanien Rclone Upload Anleitung
|
||||
|
||||
Stand: 2026-06-03
|
||||
|
||||
Ziel: Der Sage-Server in Spanien erzeugt die Sales-CSV lokal und lädt die Datei danach automatisch in den SharePoint-Ordner fuer den Dashboard-Import.
|
||||
|
||||
## Zielordner
|
||||
|
||||
SharePoint URL:
|
||||
|
||||
```text
|
||||
https://trafagag.sharepoint.com/sites/WorldwideBIPlatform/Shared%20Documents/Import/Finance/Spanien
|
||||
```
|
||||
|
||||
Technischer Ordner:
|
||||
|
||||
```text
|
||||
Shared Documents/Import/Finance/Spanien
|
||||
```
|
||||
|
||||
Empfohlener rclone-Zielpfad:
|
||||
|
||||
```text
|
||||
trafag-bi:Import/Finance/Spanien
|
||||
```
|
||||
|
||||
Dabei zeigt `trafag-bi` auf die Dokumentbibliothek `Shared Documents` der SharePoint-Site:
|
||||
|
||||
```text
|
||||
https://trafagag.sharepoint.com/sites/WorldwideBIPlatform
|
||||
```
|
||||
|
||||
## Benötigte Dateien Auf Dem Spanien-Server
|
||||
|
||||
Empfohlener Ordner:
|
||||
|
||||
```text
|
||||
C:\Trafag\SageSpain
|
||||
```
|
||||
|
||||
Dateien:
|
||||
|
||||
```text
|
||||
Export-SageSpainSalesCsv.ps1
|
||||
Run-SpainExportAndUpload.ps1
|
||||
```
|
||||
|
||||
Die Dateien liegen im Paket:
|
||||
|
||||
```text
|
||||
SageSpainFinalExportPackage.zip
|
||||
```
|
||||
|
||||
## rclone Installieren
|
||||
|
||||
Falls `winget` vorhanden ist:
|
||||
|
||||
```powershell
|
||||
winget install Rclone.Rclone
|
||||
```
|
||||
|
||||
Alternativ rclone ZIP manuell installieren, z.B. nach:
|
||||
|
||||
```text
|
||||
C:\Tools\rclone\rclone.exe
|
||||
```
|
||||
|
||||
Danach testen:
|
||||
|
||||
```powershell
|
||||
rclone version
|
||||
```
|
||||
|
||||
Falls `rclone` nicht im PATH ist, später den vollständigen Pfad verwenden:
|
||||
|
||||
```powershell
|
||||
C:\Tools\rclone\rclone.exe version
|
||||
```
|
||||
|
||||
## rclone Remote Einrichten
|
||||
|
||||
Auf dem Spanien-Server:
|
||||
|
||||
```powershell
|
||||
rclone config
|
||||
```
|
||||
|
||||
Empfohlene Eingaben:
|
||||
|
||||
```text
|
||||
n
|
||||
name> trafag-bi
|
||||
Storage> onedrive
|
||||
```
|
||||
|
||||
Danach Microsoft Login durchführen.
|
||||
|
||||
Wichtig:
|
||||
|
||||
- Site: `WorldwideBIPlatform`
|
||||
- Dokumentbibliothek: `Shared Documents`
|
||||
- Der rclone-Remote `trafag-bi` soll auf die Dokumentbibliothek `Shared Documents` zeigen.
|
||||
|
||||
## rclone Testen
|
||||
|
||||
```powershell
|
||||
rclone lsd trafag-bi:
|
||||
rclone lsd trafag-bi:"Import"
|
||||
rclone lsd trafag-bi:"Import/Finance"
|
||||
rclone lsd trafag-bi:"Import/Finance/Spanien"
|
||||
```
|
||||
|
||||
Wenn der letzte Befehl den Ordner ohne Fehler zeigt, ist der Zielpfad korrekt.
|
||||
|
||||
## Manueller Export Ohne Upload
|
||||
|
||||
Full Export 2025:
|
||||
|
||||
```powershell
|
||||
Set-ExecutionPolicy -Scope Process Bypass
|
||||
cd C:\Trafag\SageSpain
|
||||
.\Export-SageSpainSalesCsv.ps1 -ExportMode Full -Year 2025 -OutputDirectory C:\Trafag\SageSpain\out
|
||||
```
|
||||
|
||||
Delta/Range Export:
|
||||
|
||||
```powershell
|
||||
Set-ExecutionPolicy -Scope Process Bypass
|
||||
cd C:\Trafag\SageSpain
|
||||
.\Export-SageSpainSalesCsv.ps1 -ExportMode Range -DateFilter LineRegistrationDate -FromDate "2026-06-02" -ToDate "2026-06-03" -OutputDirectory C:\Trafag\SageSpain\out
|
||||
```
|
||||
|
||||
Hinweis:
|
||||
|
||||
- `ToDate` ist exklusiv.
|
||||
- Der Zeitraum `"2026-06-02"` bis `"2026-06-03"` exportiert den 2. Juni.
|
||||
- Für tägliche Deltas ist `LineRegistrationDate` sinnvoll, weil neue oder geänderte Zeilen nach Registrierungsdatum kommen.
|
||||
|
||||
## Export Und Upload Zusammen Starten
|
||||
|
||||
Standard: täglicher Delta-Lauf, gestern bis heute:
|
||||
|
||||
```powershell
|
||||
Set-ExecutionPolicy -Scope Process Bypass
|
||||
cd C:\Trafag\SageSpain
|
||||
.\Run-SpainExportAndUpload.ps1
|
||||
```
|
||||
|
||||
Expliziter Zeitraum:
|
||||
|
||||
```powershell
|
||||
.\Run-SpainExportAndUpload.ps1 -ExportMode Range -DateFilter LineRegistrationDate -FromDate "2026-06-02" -ToDate "2026-06-03"
|
||||
```
|
||||
|
||||
Full Export mit Upload:
|
||||
|
||||
```powershell
|
||||
.\Run-SpainExportAndUpload.ps1 -ExportMode Full -Year 2025
|
||||
```
|
||||
|
||||
Wenn rclone nicht im PATH ist:
|
||||
|
||||
```powershell
|
||||
.\Run-SpainExportAndUpload.ps1 -RcloneExe "C:\Tools\rclone\rclone.exe"
|
||||
```
|
||||
|
||||
Wenn der rclone-Remote anders heisst:
|
||||
|
||||
```powershell
|
||||
.\Run-SpainExportAndUpload.ps1 -RcloneRemote "MEIN_REMOTE_NAME"
|
||||
```
|
||||
|
||||
## Was Wird Hochgeladen?
|
||||
|
||||
Das Wrapper-Script lädt aus dem neuesten Exportordner:
|
||||
|
||||
```text
|
||||
*.csv
|
||||
*_summary.txt
|
||||
```
|
||||
|
||||
Ziel:
|
||||
|
||||
```text
|
||||
trafag-bi:Import/Finance/Spanien
|
||||
```
|
||||
|
||||
Das Script ändert keine Daten in Sage und keine Daten in SQL Server.
|
||||
|
||||
## Windows Task Scheduler
|
||||
|
||||
Empfohlener täglicher Lauf, z.B. 02:00 Uhr:
|
||||
|
||||
```powershell
|
||||
$action = New-ScheduledTaskAction `
|
||||
-Execute "powershell.exe" `
|
||||
-Argument "-NoProfile -ExecutionPolicy Bypass -File C:\Trafag\SageSpain\Run-SpainExportAndUpload.ps1"
|
||||
|
||||
$trigger = New-ScheduledTaskTrigger -Daily -At 02:00
|
||||
|
||||
Register-ScheduledTask `
|
||||
-TaskName "Trafag Spain Sage Export Upload" `
|
||||
-Action $action `
|
||||
-Trigger $trigger `
|
||||
-Description "Exports Sage Spain sales CSV and uploads it to SharePoint via rclone"
|
||||
```
|
||||
|
||||
Wenn rclone nicht im PATH ist:
|
||||
|
||||
```powershell
|
||||
$action = New-ScheduledTaskAction `
|
||||
-Execute "powershell.exe" `
|
||||
-Argument "-NoProfile -ExecutionPolicy Bypass -File C:\Trafag\SageSpain\Run-SpainExportAndUpload.ps1 -RcloneExe C:\Tools\rclone\rclone.exe"
|
||||
```
|
||||
|
||||
## Kontrolle Nach Dem Lauf
|
||||
|
||||
Lokal:
|
||||
|
||||
```powershell
|
||||
Get-ChildItem C:\Trafag\SageSpain\out -Directory | Sort-Object LastWriteTime -Descending | Select-Object -First 1
|
||||
Get-ChildItem C:\Trafag\SageSpain\logs
|
||||
```
|
||||
|
||||
SharePoint:
|
||||
|
||||
```powershell
|
||||
rclone ls trafag-bi:"Import/Finance/Spanien"
|
||||
```
|
||||
|
||||
Im Browser prüfen:
|
||||
|
||||
```text
|
||||
https://trafagag.sharepoint.com/sites/WorldwideBIPlatform/Shared%20Documents/Import/Finance/Spanien
|
||||
```
|
||||
|
||||
## Fehlerbilder
|
||||
|
||||
`rclone: command not found`
|
||||
|
||||
- rclone ist nicht im PATH.
|
||||
- Lösung: `-RcloneExe "C:\Tools\rclone\rclone.exe"` verwenden.
|
||||
|
||||
`directory not found`
|
||||
|
||||
- Remote zeigt nicht auf `Shared Documents` oder Zielordner ist anders.
|
||||
- Mit `rclone lsd trafag-bi:` und `rclone lsd trafag-bi:"Import/Finance"` prüfen.
|
||||
|
||||
`Access denied`
|
||||
|
||||
- Microsoft Login oder SharePoint-Berechtigung fehlt.
|
||||
- Der Windows-User des geplanten Tasks muss Zugriff auf rclone-Konfiguration und SharePoint haben.
|
||||
|
||||
Leere Delta-Datei:
|
||||
|
||||
- Zeitraum prüfen.
|
||||
- `ToDate` ist exklusiv.
|
||||
- Bei täglichem Lauf für gestern bis heute ist das korrekt.
|
||||
@@ -1,18 +1,23 @@
|
||||
# RAG Deployment
|
||||
|
||||
Stand: 2026-05-27
|
||||
Stand: 2026-06-10
|
||||
|
||||
## Kurzstand
|
||||
|
||||
- `TrafagSalesExporter` wird als ASP.NET/IIS-Webanwendung im bisherigen `BiDashboard`-Schema publiziert.
|
||||
- Letzter dokumentierter Deploy: 2026-06-10 India/SAGE-HANA-Fix.
|
||||
- Publish-Ziel: `\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\`.
|
||||
- Letzter Deploy-Zeitstempel: `BiDashboard.dll` am `10.06.2026 08:20:25`.
|
||||
- Produktive India-DB-Konfiguration nach Seed: `TRIN -> SAGE -> 20.197.20.60:30015`, Schema `TRAFAG_LIVE`, User-Override `TRAFAGCONTROLS`.
|
||||
- DB-Backup vor India-Seed: `\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\trafag_exporter.db.before-india-sage-20260610-0825.bak`.
|
||||
- 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.
|
||||
- Lokaler HTTPS-Smoke-Test per `Invoke-WebRequest` scheitert weiterhin mit Empfangs-/TLS-Fehler; Publish und Share-/DB-Pruefungen sind davon getrennt.
|
||||
- Aelterer dokumentierter Befund: TLS fordert Client-Zertifikat.
|
||||
- IT soll IIS SSL Settings pruefen: Client certificates `Ignore` oder hoechstens `Accept`, nicht `Require`.
|
||||
|
||||
## Upgreat Firewall
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# RAG Finance
|
||||
|
||||
Stand: 2026-06-05
|
||||
Stand: 2026-06-10
|
||||
|
||||
## Kurzstand
|
||||
|
||||
@@ -22,6 +22,8 @@ Stand: 2026-06-05
|
||||
- Wechselkurs-Anwendungsdatum ist in Settings konfigurierbar und wird in der Rohdaten-Diagnose angezeigt.
|
||||
- Spartenanalyse war mit >90% nicht zugeordnet fachlich unplausibel; Materialabgleich normalisiert fuehrende Nullen und warnt bei >=90% ungeklaerter Abdeckung.
|
||||
- Budgetkurse wurden als Finance-Kurse behandelt; CHF-Sicht bleibt getrennte Reporting-/Kontrollsicht, nicht stiller Ersatz fuer Hauswaehrungsabgleich.
|
||||
- Fokusdoku zum isolierten Kursfluss: `docs/FINANCE_KURS_WORKFLOW_2026-06-09.md`.
|
||||
- India/TRIN: produktive Route nach Fix/Deploy 2026-06-10 ist `SAGE -> 20.197.20.60:30015`, Schema `TRAFAG_LIVE`; Standort-Override nutzt `TRAFAGCONTROLS`.
|
||||
- Browser-Hinweis: 3D-Ansicht wurde in Chrome als korrekt bestaetigt; Firefox zeigte auf dem Client Interaktions-/Zoomprobleme.
|
||||
|
||||
## Wichtige Regeln
|
||||
@@ -31,6 +33,7 @@ Stand: 2026-06-05
|
||||
- Jahresabgrenzung ueber `PostingDate`, Fallback `InvoiceDate`, danach `ExtractionDate`.
|
||||
- Gutschriften/Storno laufen als negative Beleg-/Positionszeilen.
|
||||
- Budget-CHF ist Kontroll-/Reporting-Kandidat, nicht Standardabgleich.
|
||||
- `DocumentRate` aus dem ERP ist ein gespeichertes Quellfeld; die App-Kurstabelle wird nur bei Anzeige-Waehrung, expliziter `ConvertCurrency`-Transformation oder Budget-CHF-Kandidat verwendet.
|
||||
|
||||
## Offene Fachpunkte
|
||||
|
||||
@@ -89,12 +92,13 @@ Stand: 2026-06-05
|
||||
| ES | Sage CSV, `ImporteNeto`, REC/Credit negativ; Referenz 2025 korrigiert auf `3'082'320.18 EUR` |
|
||||
| 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 |
|
||||
| IN | SAGE/HANA `TRIN`, Schema `TRAFAG_LIVE`, 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`
|
||||
- Isolierter Kurs-Workflow: `docs/FINANCE_KURS_WORKFLOW_2026-06-09.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`
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
# RAG Project
|
||||
|
||||
Stand: 2026-06-05
|
||||
Stand: 2026-06-10
|
||||
|
||||
## Kurzstand
|
||||
|
||||
- Fuehrende App: `TrafagSalesExporter`, publiziert als `BiDashboard`.
|
||||
- Letzter dokumentierter Stand: Finance-Schnelluebersicht, Expertenbereich, 3D-Datenanalyse und Spanien-Sage-All-in-one-rclone-Upload.
|
||||
- Validierung laut Doku: Finance-Sitzungsstand `82/82` Tests gruen; spaetere UI-/Deploy-Schritte wurden einzeln umgesetzt und deployed.
|
||||
- Letzter dokumentierter Finance-Deploy: 2026-06-05 auf `\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\`.
|
||||
- Letzter dokumentierter Stand: India/TRIN SAGE-HANA-Fix deployed, Finance-Kursworkflow dokumentiert, aktive Markdown-Doku bereinigt.
|
||||
- Validierung laut Doku: `84/84` Tests gruen fuer den India-Fix; fruehere UI-/Deploy-Schritte wurden einzeln umgesetzt und deployed.
|
||||
- Letzter dokumentierter Deploy: 2026-06-10 auf `\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\`.
|
||||
- India/TRIN: produktive Server-DB steht auf `TRIN -> SAGE -> 20.197.20.60:30015`, Schema `TRAFAG_LIVE`, User-Override `TRAFAGCONTROLS`.
|
||||
- Doku-Delta: `docs/FINANCE_KURS_WORKFLOW_2026-06-09.md` plus SVG; alte Finance-Stubs aus aktiver Markdown-Struktur entfernt, Volltexte bleiben im Raw-Archiv.
|
||||
- Neu im Finance/Management-Cockpit: einfache Schnelluebersicht links sichtbar; tiefere Funktionen bleiben unter `Experten`.
|
||||
- Neu in der Navigation: Menuebaum wird aus `NavigationMenuItems` gerendert; Admins koennen bestehende Punkte unter `Admin > Menuestruktur` umhaengen, sortieren und aus-/einblenden.
|
||||
- Neu als Hauptbereich: `Einkauf` mit Einkaufswagen-Icon und erweitertem `Einkauf Dashboard`.
|
||||
|
||||
Reference in New Issue
Block a user