Add manual Excel column mapping
This commit is contained in:
@@ -2,6 +2,108 @@
|
||||
|
||||
Stand: 2026-04-15
|
||||
|
||||
## Nachtrag 2026-04-29 Dashboard-Referenzcheck Net Sales 2025
|
||||
|
||||
Das Dashboard zeigt jetzt oberhalb der Exportaktionen einen Referenzcheck fuer `Net Sales Actuals 2025`.
|
||||
|
||||
Zweck:
|
||||
|
||||
- schnelle Gegenpruefung, ob die gezogenen Werte gegen `check.xlsx` / Power-BI-Referenz plausibel sind
|
||||
- automatische Ermittlung des Summenfelds, das am besten zum Referenzwert passt
|
||||
- sichtbar machen, ob aktuell `SalesPriceValue`, `DocTotalFC - VatSumFC` oder `DocTotal - VatSum` als Vergleichsbasis genutzt wird
|
||||
- `DocumentTotal*` wird nur dedupliziert pro Beleg verwendet, weil es ein Belegkopfwert ist und in der positionsbasierten Datei pro Position wiederholt wird
|
||||
|
||||
Logik:
|
||||
|
||||
- Ist-Wert = bester Kandidat aus:
|
||||
- Summe `CentralSalesRecords.SalesPriceValue`
|
||||
- Summe `DocumentTotalForeignCurrency - VatSumForeignCurrency`
|
||||
- Summe `DocumentTotalLocalCurrency - VatSumLocalCurrency`
|
||||
- Belegkopfwerte werden vor dem Summieren per `TSC` + `DocumentType` + `DocumentEntry` dedupliziert; falls `DocumentEntry` fehlt, per `InvoiceNumber`
|
||||
- Jahr = `InvoiceDate`, falls vorhanden, sonst `ExtractionDate`
|
||||
- Vergleichsjahr = `2025`
|
||||
- Referenzwerte sind aus `check.xlsx` / Power BI Stand 2026-04-29 im Code hinterlegt
|
||||
- wenn ein Power-BI-Referenzwert vorhanden ist, wird dieser als Vergleich verwendet
|
||||
- sonst wird der LC-Referenzwert verwendet
|
||||
|
||||
Angezeigt werden:
|
||||
|
||||
- Firma
|
||||
- Ist 2025
|
||||
- Referenz
|
||||
- Summenfeld
|
||||
- Referenzquelle (`Power BI` oder `LC`)
|
||||
- Differenz
|
||||
- Waehrungen
|
||||
- Zeilen
|
||||
- Status `OK`, `Pruefen` oder `Keine Daten`
|
||||
|
||||
Verifikation:
|
||||
|
||||
- `dotnet build .\TrafagSalesExporter.csproj --verbosity minimal` erfolgreich
|
||||
- `dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --verbosity minimal` erfolgreich
|
||||
- lokaler Dashboard-Start geprueft: `http://localhost:55416` antwortet mit HTTP `200`
|
||||
|
||||
Naechster Bedienablauf, damit die korrekten Summen kommen:
|
||||
|
||||
1. App starten bzw. offen lassen: `http://localhost:55416`
|
||||
2. Im Dashboard neue Daten ziehen:
|
||||
- entweder `Alle exportieren`
|
||||
- oder einzelne Standorte per `Export`
|
||||
3. Danach `Zentrale Datei neu erzeugen` ausfuehren.
|
||||
4. Oben im Dashboard den Block `Net Sales Actuals 2025 Referenz` pruefen.
|
||||
5. Entscheidend ist die Spalte `Summenfeld`:
|
||||
- `Sales Price/Value` = Positionssumme
|
||||
- `DocTotalFC - VatSumFC` = Netto-Belegsumme in Belegwaehrung, dedupliziert pro Beleg
|
||||
- `DocTotal - VatSum` = Netto-Belegsumme in Hauswaehrung, dedupliziert pro Beleg
|
||||
6. `Status = OK` bedeutet: Abweichung zur Referenz maximal 1.
|
||||
7. `Status = Pruefen` bedeutet: Feld, Datenquelle, Zeitraum oder Standortkonfiguration fachlich kontrollieren.
|
||||
|
||||
Wichtig:
|
||||
|
||||
- Mit alten zentralen Daten bleiben die neuen B1-Felder leer bzw. `0`.
|
||||
- Fuer die echte Pruefung von `DocEntry`, `DocTotal*`, `VatSum*`, `DocRate` und `OADM.MainCurncy` muss zuerst neu exportiert werden.
|
||||
- Fuer neue Jahre ist aktuell noch kein dynamischer Referenzjahres-Schalter eingebaut; der harte Referenzcheck ist Stand jetzt auf `2025`, weil `check.xlsx` die 2025-Referenzen enthaelt.
|
||||
|
||||
## Nachtrag 2026-04-29 Export-all-Abbruch / SQLite-FK-Reparatur
|
||||
|
||||
Beim Klick auf `Export all` kam:
|
||||
|
||||
- `An error occurred while saving the entity changes. See the inner exception for details.`
|
||||
|
||||
Ursache:
|
||||
|
||||
- die bestehende SQLite-DB hatte in `ExportLogs`, `AppEventLogs` und `CentralSalesRecords` noch Foreign Keys auf `"Sites_repair_old"`
|
||||
- diese Reparatur-Zwischentabelle existiert nicht mehr
|
||||
- beim Speichern neuer Logs oder zentraler Datensaetze konnte SQLite deshalb nicht mehr korrekt speichern
|
||||
|
||||
Korrektur:
|
||||
|
||||
- `DatabaseSchemaMaintenanceService` erkennt jetzt nicht nur `Sites_old`, sondern auch alte Reparaturtabellen wie `Sites_repair_old`
|
||||
- betroffene Tabellen werden beim App-Start automatisch neu aufgebaut
|
||||
- `AppEventLogService` und `ExportLogService` fangen eigene Log-Speicherfehler ab, damit Logging-Probleme nicht den ganzen Export abbrechen
|
||||
- Dashboard-Fehlerausgaben zeigen jetzt auch die Inner Exception, falls vorhanden
|
||||
|
||||
Verifikation:
|
||||
|
||||
- App neu gestartet
|
||||
- DB-Schema direkt geprueft:
|
||||
- `AppEventLogs` -> `FOREIGN KEY (SiteId) REFERENCES Sites (Id)`
|
||||
- `ExportLogs` -> `FOREIGN KEY (SiteId) REFERENCES Sites (Id)`
|
||||
- `CentralSalesRecords` -> `FOREIGN KEY (SiteId) REFERENCES Sites (Id)`
|
||||
- `dotnet build .\TrafagSalesExporter.csproj --verbosity minimal` erfolgreich
|
||||
- `dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --verbosity minimal` erfolgreich
|
||||
|
||||
Direkt danach beobachtete Exportfehler:
|
||||
|
||||
- Frankreich/Italien/USA: `invalid schema name ... line 40` durch HANA-Query-Quoting
|
||||
- Ursache: Query nutzte `"schema"."Tabelle"`
|
||||
- Korrektur: wieder `schema."Tabelle"` wie im alten funktionierenden Stand
|
||||
- Indien: `authentication failed`
|
||||
- Konfiguration/Credentials pruefen, kein Codefehler aus dieser Aenderung
|
||||
- England/Spanien/Deutschland: `MANUAL_EXCEL`, aber keine manuelle Excel-Datei hinterlegt
|
||||
- entweder Datei hinterlegen oder Standort deaktivieren/Quellsystem korrigieren
|
||||
|
||||
## Nachtrag 2026-04-29 B1-Belegwaehrungsfelder aus HANA
|
||||
|
||||
Der HANA/B1-Export wurde um Beleg- und Hauswaehrungsfelder erweitert.
|
||||
@@ -15,6 +117,7 @@ Grund:
|
||||
|
||||
Neue Felder in `SalesRecord` und `CentralSalesRecord`:
|
||||
|
||||
- `DocumentEntry`
|
||||
- `DocumentCurrency`
|
||||
- `DocumentTotalForeignCurrency`
|
||||
- `DocumentTotalLocalCurrency`
|
||||
@@ -25,6 +128,7 @@ Neue Felder in `SalesRecord` und `CentralSalesRecord`:
|
||||
|
||||
B1-Feldmapping:
|
||||
|
||||
- `DocumentEntry` = `OINV/ORIN.DocEntry`
|
||||
- `DocumentCurrency` = `OINV/ORIN.DocCur`
|
||||
- `DocumentTotalForeignCurrency` = `OINV/ORIN.DocTotalFC`
|
||||
- `DocumentTotalLocalCurrency` = `OINV/ORIN.DocTotal`
|
||||
@@ -52,8 +156,14 @@ Wichtig fuer Power BI:
|
||||
- sie werden in der positionsbasierten Excel pro Positionszeile wiederholt
|
||||
- diese Felder duerfen daher nicht blind positionsweise summiert werden
|
||||
- fuer Belegkopfsummen in Power BI zuerst nach `DocumentType`, `Invoice Number`, `TSC` und ggf. `Land` deduplizieren
|
||||
- besser: nach `TSC` + `DocumentType` + `DocumentEntry` deduplizieren, weil `DocEntry` aus B1 jetzt mitgezogen wird
|
||||
- positionsbasierte Auswertungen sollen weiterhin mit positionsbezogenen Feldern wie `Sales Price/Value`, `Quantity` oder `Standard cost` arbeiten
|
||||
|
||||
Wichtig zum aktuellen Datenbestand:
|
||||
|
||||
- alte zentrale Daten wurden vor der Erweiterung exportiert und haben fuer die neuen B1-Felder noch `0`
|
||||
- nach einem neuen Export/Rebuild der zentralen Daten koennen `DocEntry`, `DocTotal*`, `VatSum*`, `DocRate` und `OADM.MainCurncy` fachlich verglichen werden
|
||||
|
||||
Verifikation:
|
||||
|
||||
- `dotnet build .\TrafagSalesExporter.csproj --verbosity minimal` erfolgreich
|
||||
|
||||
Reference in New Issue
Block a user