diff --git a/TrafagSalesExporter/Components/Pages/ExportDashboard.razor b/TrafagSalesExporter/Components/Pages/ExportDashboard.razor index bb7e4da..9b2d9b9 100644 --- a/TrafagSalesExporter/Components/Pages/ExportDashboard.razor +++ b/TrafagSalesExporter/Components/Pages/ExportDashboard.razor @@ -37,16 +37,26 @@ } -
-
- - - - - - - -
+
+ + + + + + + + + 0 + 25 + 50 + 75 + 100 + EXPORT + + + + +
@@ -211,87 +221,80 @@ justify-self: end; width: 210px; height: 118px; - display: flex; - align-items: flex-end; - justify-content: center; background: #fff; border: 1px solid #111; border-radius: 6px; - padding: 12px 14px 10px; + overflow: hidden; } - .manometer-arc { - position: relative; - width: 170px; - height: 86px; - border: 8px solid #111; - border-bottom: 0; - border-radius: 170px 170px 0 0; - background: #fff; - overflow: visible; + .manometer-svg { + display: block; + width: 100%; + height: 100%; } - .manometer-arc::before { - content: ""; - position: absolute; - left: 14px; - right: 14px; - bottom: -1px; - height: 70px; - border: 2px solid #111; - border-bottom: 0; - border-radius: 140px 140px 0 0; + .manometer-outer, + .manometer-inner { + fill: none; + stroke: #111; + stroke-linecap: square; } - .tick { - position: absolute; - left: 50%; - bottom: 0; - width: 3px; - height: 16px; - background: #111; - transform-origin: 50% 78px; + .manometer-outer { + stroke-width: 8; } - .tick-0 { transform: translateX(-50%) rotate(-70deg); } - .tick-1 { transform: translateX(-50%) rotate(-35deg); } - .tick-2 { transform: translateX(-50%) rotate(0deg); } - .tick-3 { transform: translateX(-50%) rotate(35deg); } - .tick-4 { transform: translateX(-50%) rotate(70deg); } + .manometer-inner { + stroke-width: 2; + } - .needle { - position: absolute; - left: 50%; - bottom: 0; - width: 4px; - height: 72px; - background: #111; - border-radius: 4px; - transform-origin: 50% 100%; + .manometer-tick, + .needle-line { + stroke: #111; + stroke-width: 3; + stroke-linecap: square; + } + + .manometer-needle { + transform-box: view-box; + transform-origin: 105px 98px; animation: manometer-sweep 5.8s infinite cubic-bezier(.45, 0, .25, 1); } - .hub { - position: absolute; - left: 50%; - bottom: -8px; - width: 22px; - height: 22px; - border-radius: 50%; - background: #111; - transform: translateX(-50%); + .manometer-hub { + fill: #111; + } + + .manometer-label, + .manometer-caption { + fill: #111; + font-family: Arial, sans-serif; + text-anchor: middle; + dominant-baseline: middle; + user-select: none; + } + + .manometer-label { + font-size: 10px; + font-weight: 600; + } + + .manometer-caption { + font-size: 9px; + font-weight: 700; + letter-spacing: 0; } @@keyframes manometer-sweep { - 0% { transform: translateX(-50%) rotate(-52deg); } - 11% { transform: translateX(-50%) rotate(18deg); } - 19% { transform: translateX(-50%) rotate(-8deg); } - 33% { transform: translateX(-50%) rotate(63deg); } - 48% { transform: translateX(-50%) rotate(4deg); } - 61% { transform: translateX(-50%) rotate(38deg); } - 74% { transform: translateX(-50%) rotate(-41deg); } - 88% { transform: translateX(-50%) rotate(55deg); } - 100% { transform: translateX(-50%) rotate(-52deg); } + 0% { transform: rotate(-52deg); } + 11% { transform: rotate(18deg); } + 19% { transform: rotate(-8deg); } + 33% { transform: rotate(63deg); } + 48% { transform: rotate(4deg); } + 61% { transform: rotate(38deg); } + 74% { transform: rotate(-41deg); } + 88% { transform: rotate(55deg); } + 100% { transform: rotate(-52deg); } } @@media (max-width: 900px) { diff --git a/TrafagSalesExporter/Components/Pages/ManagementCockpit.razor b/TrafagSalesExporter/Components/Pages/ManagementCockpit.razor index 071eb97..800df5e 100644 --- a/TrafagSalesExporter/Components/Pages/ManagementCockpit.razor +++ b/TrafagSalesExporter/Components/Pages/ManagementCockpit.razor @@ -51,7 +51,7 @@ @if (_financeResult is not null) { - + @@ -84,9 +84,7 @@ - - - + @T("Finance-Freigabe je Land", "Finance approval by country") @@ -109,9 +107,7 @@ - - - + @T("Letzter Datenstand je Standort", "Latest data status by site") @@ -139,8 +135,6 @@ - - @T("Sparten-Abdeckung nach Land", "Division coverage by country") @@ -162,12 +156,10 @@ - - - + @@ -409,7 +401,7 @@ - + @@ -1108,6 +1100,12 @@ } + + @code { [Parameter] [SupplyParameterFromQuery(Name = "section")] diff --git a/TrafagSalesExporter/docs/FINANCE_AUDIT_CSV_QUELLE_2026-06-11.svg b/TrafagSalesExporter/docs/FINANCE_AUDIT_CSV_QUELLE_2026-06-11.svg new file mode 100644 index 0000000..9beecd6 --- /dev/null +++ b/TrafagSalesExporter/docs/FINANCE_AUDIT_CSV_QUELLE_2026-06-11.svg @@ -0,0 +1,73 @@ + + Umschaltung zentrale Finance-Auswertungsquelle + Zeigt, wie Finance-Auswertungen entweder aus CentralSalesRecords oder aus verarbeiteten Audit-CSV je Standort lesen. + + + + + + + + + Zentrale Auswertungsquelle: DB oder verarbeitete Audit-CSV + Der Schalter liegt unter Einstellungen > Export Einstellungen > Audit-CSV / nachvollziehbarer Datenfluss. + + + Settings + Audit-CSV je Standort schreiben + Zentrale Auswertung aus Audit-CSV + Pfad: Lokaler Standardpfad Standort-Dateien + + + + + Standard-Modus + UseAuditCsvAsCentralSource = false + Auswertung liest CentralSalesRecords. + Schnell und operativ + + + Audit-Modus + UseAuditCsvAsCentralSource = true + Je TSC wird die neueste + Sales_ProcessedMergeInput_*.csv gelesen. + Lesbar fuer Finance und Revision + + + + + + Gleiche Finance-Logik + FinanceRuleEngine + Spartenanalyse + Waehrungsanalyse bei Zielwaehrung + + + + + Ausgaben + Dashboard / Management Analyse + Soll/Ist-Vergleich + Zentrale Excel Sales_All_<Datum>.xlsx + + + Pruefregel im Audit-Modus + Fuer alle relevanten TSC muessen aktuelle Sales_ProcessedMergeInput_*.csv vorhanden sein. + Fehlt die CSV, kann die zentrale Auswertung keine belastbare CSV-Sicht bilden. + + + + diff --git a/TrafagSalesExporter/docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md b/TrafagSalesExporter/docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md index c44e373..b874bfe 100644 --- a/TrafagSalesExporter/docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md +++ b/TrafagSalesExporter/docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md @@ -1,12 +1,13 @@ # Finance Berechnungsformeln pro Land -Stand: 2026-06-01 +Stand: 2026-06-11 -Nachtrag 2026-06-01: +Nachtrag 2026-06-11: - ES-Referenz 2025 wurde nach Finance-Sitzung auf `3'082'320.18 EUR` korrigiert. Der alte Wert `3'102'333.61 EUR` war ein Referenz-/Excel-Fehler. - In Management-Analysen ist das Wechselkurs-Anwendungsdatum konfigurierbar: `PostingDate`, `InvoiceDate` oder `ExtractionDate`. - Sparten-Materialabgleich normalisiert fuehrende Nullen und warnt bei >=90% ungeklaerter Abdeckung. +- Zentrale Finance-Auswertungen koennen optional aus den neuesten `Sales_ProcessedMergeInput_*.csv` je TSC statt aus `CentralSalesRecords` lesen. Die Formel bleibt gleich; nur die Datenquelle wird per Setting umgeschaltet. Zweck: Dieses Dokument beschreibt die aktuell im Programm verwendeten Formeln fuer den Soll/Ist-Vergleich 2025. Es ist fuer eine zweite KI oder eine fachliche Gegenpruefung geschrieben. @@ -14,7 +15,12 @@ Zweck: Dieses Dokument beschreibt die aktuell im Programm verwendeten Formeln fu Die echte Webseite `/finance-cockpit/vergleich` und das Testprogramm `/finance` verwenden beide `FinanceReconciliationService`. -Quelle fuer den Ist-Wert ist immer `CentralSalesRecords`. Die Jahresabgrenzung ist: +Quelle fuer den Ist-Wert ist die zentrale Auswertungsquelle: + +- Standard: `CentralSalesRecords`. +- Audit-Modus: neueste `Sales_ProcessedMergeInput_*.csv` je TSC. + +Die Jahresabgrenzung ist: ```text Jahr = Year(PostingDate ?? InvoiceDate ?? ExtractionDate) @@ -26,7 +32,7 @@ Pro Land berechnet das Programm mehrere Kandidaten: ```text SalesPriceValue - = Sum(CentralSalesRecords.SalesPriceValue) + = Sum(SalesPriceValue aus zentraler Auswertungsquelle) DocTotalFC - VatSumFC = Sum(DocumentTotalForeignCurrency - VatSumForeignCurrency) diff --git a/TrafagSalesExporter/docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx b/TrafagSalesExporter/docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx index a328a2c..bb83cf2 100644 Binary files a/TrafagSalesExporter/docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx and b/TrafagSalesExporter/docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx differ diff --git a/TrafagSalesExporter/docs/FINANCE_DATENFLUSS_ANDREAS_2026-06-08.md b/TrafagSalesExporter/docs/FINANCE_DATENFLUSS_ANDREAS_2026-06-08.md index a8f23dd..a3f2fb6 100644 --- a/TrafagSalesExporter/docs/FINANCE_DATENFLUSS_ANDREAS_2026-06-08.md +++ b/TrafagSalesExporter/docs/FINANCE_DATENFLUSS_ANDREAS_2026-06-08.md @@ -1,18 +1,28 @@ # Finance Datenfluss fuer Andreas -Stand: 2026-06-08 +Stand: 2026-06-11 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`. +Aktuelle Finance-Schulung: `docs/FINANCE_SCHULUNG_FINANZ_2026-06-11.md`. +Prozessgrafiken: + +- `docs/FINANCE_PROZESS_EXPORT_DASHBOARD_2026-06-11.svg` +- `docs/FINANCE_AUDIT_CSV_QUELLE_2026-06-11.svg` + +![Finance Prozessfluss](FINANCE_PROZESS_EXPORT_DASHBOARD_2026-06-11.svg) + +![Audit-CSV als zentrale Auswertungsquelle](FINANCE_AUDIT_CSV_QUELLE_2026-06-11.svg) ## Kurzfazit -- Finance Summary, Management Analyse und Spartenanalyse lesen nicht aus dem SharePoint-Excel, sondern direkt aus der App-Datenbank `CentralSalesRecords`. -- Nachtrag 2026-06-11: Fuer Finance/Revision gibt es lokal einen Audit-CSV-Modus. Standortexporte koennen nach Mapping und Transformation je Standort eine CSV schreiben; per Setting koennen zentrale Excel, Finance Summary und Management-Analyse aus den neuesten Audit-CSV statt aus `CentralSalesRecords` lesen. +- Finance Summary, Management Analyse und Spartenanalyse lesen nicht aus dem SharePoint-Excel. Sie lesen entweder aus `CentralSalesRecords` oder, wenn aktiviert, aus den neuesten verarbeiteten Audit-CSV je Standort. +- Fuer Finance/Revision gibt es einen Audit-CSV-Modus. Standortexporte koennen nach Mapping und Transformation je Standort eine CSV schreiben; per Setting koennen zentrale Excel, Finance Summary, Soll/Ist und Management-Analyse aus diesen CSV statt aus `CentralSalesRecords` lesen. +- Die Audit-CSV heisst `Sales_ProcessedMergeInput__.csv`. Der Name markiert bewusst, dass es das verarbeitete Merge-Eingangsfile ist, nicht die originale Standortdatei. - Das SharePoint-Excel `Sales_All_*.xlsx` ist ein Export-/Ablageergebnis, nicht die Live-Quelle der Cockpit-Anzeige. - Jeder Standortexport ersetzt in `CentralSalesRecords` nur die Daten dieses Standorts. -- Die zentrale Excel wird danach aus dem aktuellen Stand von `CentralSalesRecords` erzeugt. +- Die zentrale Excel wird danach aus der aktuell gewaehlten zentralen Auswertungsquelle erzeugt: Standard `CentralSalesRecords`, optional Audit-CSV. - Wechselkurse veraendern den Standortexport und `CentralSalesRecords` normalerweise nicht. Sie wirken in Analyse-/Anzeige-Sichten, wenn eine Zielwaehrung wie CHF/EUR/USD ausgewaehlt ist, oder in explizit konfigurierten Transformationen. - Sparteninformationen kommen fuehrend aus SAP/TR-AG `ProductDivisionRefSet`. Aktuell werden sie beim ZSCHWEIZ-/CH-/AT-Export direkt mitgeladen. Andere Laender werden in der Analyse ueber ihre Materialnummer gegen diese TR-AG-Referenz gematcht. @@ -33,13 +43,33 @@ Ablauf pro Standort: - `ManualExcelDataSourceAdapter` fuer Excel/CSV/SharePoint-Dateien. 3. Rohdaten werden als `SalesRecord`-Liste aufgebaut. 4. Aktive `FieldTransformationRules` fuer das Quellsystem werden angewendet. -5. Eine lokale Standort-Excel `Sales__.xlsx` wird erzeugt. -6. `CentralSalesRecords` wird fuer diesen Standort ersetzt: +5. Falls `Audit-CSV je Standort schreiben` aktiv ist, wird eine verarbeitete CSV geschrieben: + - Datei: `Sales_ProcessedMergeInput__.csv`. + - Ordner: gleicher lokaler Ordner wie die Standort-Excel. + - Inhalt: Daten nach Mapping und Transformation. +6. Eine lokale Standort-Excel `Sales__.xlsx` wird erzeugt. +7. `CentralSalesRecords` wird fuer diesen Standort ersetzt: - alte Saetze mit `SiteId = Standort` loeschen. - neue Saetze einfuegen. -7. Falls SharePoint komplett konfiguriert ist, wird die Standort-Excel nach SharePoint hochgeladen. +8. Falls SharePoint komplett konfiguriert ist, werden Standort-Excel und Audit-CSV in den Landesordner hochgeladen. -Wichtig: Die Reihenfolge ist zuerst Daten holen, dann Transformationen, dann lokale Excel, dann zentrale Tabelle, dann SharePoint-Upload. Der SharePoint-Upload entscheidet nicht, was in der Cockpit-Anzeige erscheint. +Wichtig: Die Reihenfolge ist zuerst Daten holen, dann Transformationen, dann Audit-CSV, dann lokale Excel, dann zentrale Tabelle, dann SharePoint-Upload. Der SharePoint-Upload entscheidet nicht, was in der Cockpit-Anzeige erscheint. + +## Zentrale Auswertungsquelle + +Der Schalter liegt in der App unter: + +```text +Einstellungen > Export Einstellungen > Audit-CSV / nachvollziehbarer Datenfluss +``` + +| Schalter | Wirkung | +| --- | --- | +| `Audit-CSV je Standort schreiben` | Standortexport schreibt `Sales_ProcessedMergeInput_*.csv` nach Mapping und Transformation. | +| `Zentrale Auswertung aus Audit-CSV` | Finance Summary, Management Analyse, Soll/Ist und zentrale Excel lesen die neuesten Audit-CSV je TSC statt `CentralSalesRecords`. | +| `Lokaler Standardpfad Standort-Dateien` | Ordner fuer Standort-Excel und Audit-CSV. | + +Wenn `Zentrale Auswertung aus Audit-CSV` aktiv ist, sucht die App im Standort-Exportordner je TSC die neueste passende CSV. Wenn keine `Sales_ProcessedMergeInput_*.csv` vorhanden ist, ist der Audit-Modus nicht auswertbar. ## Datenquellen pro Quelltyp @@ -315,7 +345,9 @@ Ausloeser: Ablauf: -1. `ConsolidatedExportService` liest alle Saetze aus `CentralSalesRecords`. +1. `ConsolidatedExportService` liest alle Saetze aus der zentralen Auswertungsquelle: + - Standard: `CentralSalesRecords`. + - Audit-Modus: neueste `Sales_ProcessedMergeInput_*.csv` je TSC. 2. `ExcelExportService.CreateConsolidatedExcelFile(...)` erzeugt `Sales_All_.xlsx`. 3. Die Datei wird lokal geschrieben. 4. Falls SharePoint konfiguriert ist, wird sie hochgeladen. @@ -342,14 +374,16 @@ Wichtig: - `Finance Summary` im Excel wird beim Schreiben aus den Records berechnet. - Es liest nicht aus einem vorherigen SharePoint-Excel. +- Je nach Setting sind diese Records entweder DB-Eintraege oder die neuesten verarbeiteten Audit-CSV. - Wechselkurs-Zielwaehrung aus der UI wird dabei nicht angewendet. ## Finance Summary und Spartenanalyse in der App -Die App-Anzeigen lesen direkt aus: +Die App-Anzeigen lesen direkt aus der zentralen Auswertungsquelle: ```text -CentralSalesRecords +Standard: CentralSalesRecords +Audit-Modus: neueste Sales_ProcessedMergeInput_*.csv je TSC ``` Nicht aus: @@ -360,9 +394,9 @@ SharePoint Sales_All_*.xlsx Das bedeutet: -- Lokal zeigt die App lokale DB-Daten. -- Publizierter Server zeigt Server-DB-Daten. -- Wenn lokale und Server-DB gleich sind, sehen beide gleich aus. +- Lokal zeigt die App lokale DB-Daten oder lokale Audit-CSV, je nach Setting. +- Publizierter Server zeigt Server-DB-Daten oder Server-Audit-CSV, je nach Setting. +- Wenn lokale und Server-Auswertungsquelle gleich sind, sehen beide gleich aus. - Ein SharePoint-Upload veraendert die App-Anzeige nicht. ## Spartenanalyse: genaue Logik @@ -433,21 +467,26 @@ SalesRecord-Liste +-- FieldTransformationRules anwenden | -> optional Feldkopien, FirstNonEmpty, ConvertCurrency | + +-- optional Audit-CSV Sales_ProcessedMergeInput__.csv schreiben + | -> verarbeitete Daten fuer Finance/Revision + | +-- Standort-Excel Sales__.xlsx lokal schreiben | +-- CentralSalesRecords fuer SiteId ersetzen | - +-- Standort-Excel optional nach SharePoint hochladen + +-- Standort-Excel und Audit-CSV optional nach SharePoint hochladen Finance Summary / Spartenanalyse | - +-- liest CentralSalesRecords + +-- liest zentrale Auswertungsquelle + | -> Standard: CentralSalesRecords + | -> optional: neueste Sales_ProcessedMergeInput_*.csv je TSC +-- FinanceRuleEngine rechnet Include/Exclude/Net Sales Actual - +-- Spartenanalyse matched lokale Materialien gegen TR-AG-Referenz aus CentralSalesRecords + +-- Spartenanalyse matched lokale Materialien gegen TR-AG-Referenz aus den Records Zentrale Excel | - +-- liest CentralSalesRecords + +-- liest zentrale Auswertungsquelle +-- erzeugt Sales_All_.xlsx lokal +-- erzeugt Finance Summary / Finance Details im Excel +-- laedt Datei optional nach SharePoint @@ -456,10 +495,10 @@ Zentrale Excel ## Wichtige Klarstellungen fuer Finance 1. SharePoint ist Ablage und Quelle fuer manuelle Dateien, aber nicht Live-Quelle der Finance Summary. -2. `CentralSalesRecords` ist der operative zentrale Datenbestand der App. +2. `CentralSalesRecords` ist der operative zentrale Datenbestand der App, solange nicht Audit-CSV als zentrale Auswertungsquelle aktiv ist. 3. Sparten kommen fachlich aus TR-AG/SAP `ProductDivisionRefSet`, nicht aus lokalen ERP-Sparten. 4. CH/AT bekommen Spartenfelder direkt beim ZSCHWEIZ-Export. 5. Andere Laender bekommen Sparten in der Analyse nur, wenn ihre Materialnummern zur TR-AG-Referenz matchen. 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. +8. Die zentrale Excel wird nach den Standortexporten aus der gewaehlten zentralen Auswertungsquelle erstellt. Sie ist Ergebnis, nicht Eingang. diff --git a/TrafagSalesExporter/docs/FINANCE_KURS_WORKFLOW_2026-06-09.md b/TrafagSalesExporter/docs/FINANCE_KURS_WORKFLOW_2026-06-09.md index 559bdf6..51abc6c 100644 --- a/TrafagSalesExporter/docs/FINANCE_KURS_WORKFLOW_2026-06-09.md +++ b/TrafagSalesExporter/docs/FINANCE_KURS_WORKFLOW_2026-06-09.md @@ -1,17 +1,22 @@ # Finance Kurs-Workflow -Stand: 2026-06-09 +Stand: 2026-06-11 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. +Aktuelle Finance-Schulung: `docs/FINANCE_SCHULUNG_FINANZ_2026-06-11.md`. Visualisierung: `docs/FINANCE_KURS_WORKFLOW_2026-06-09.svg` +Aktuelle Kurs-/Waehrungsgrafik: `docs/FINANCE_WAEHRUNG_KURSFLUSS_2026-06-11.svg` ![Finance Kurs-Workflow](FINANCE_KURS_WORKFLOW_2026-06-09.svg) +![Finance Waehrungs- und Kursfluss](FINANCE_WAEHRUNG_KURSFLUSS_2026-06-11.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. +- Wenn Audit-CSV als zentrale Auswertungsquelle aktiv ist, enthalten die `Sales_ProcessedMergeInput_*.csv` dieselben verarbeiteten Werte nach Mapping und Transformation. - `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. @@ -29,6 +34,7 @@ Visualisierung: `docs/FINANCE_KURS_WORKFLOW_2026-06-09.svg` | 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 `, z. B. `Budget 2025`, fuer separaten CHF-Kontrollkandidaten. | +| Audit-CSV | Verarbeitete Standort-CSV `Sales_ProcessedMergeInput__.csv`; optional zentrale Quelle fuer Dashboard und zentrale Excel. | ## Gesamtfluss @@ -45,8 +51,15 @@ Land / Quellsystem | +-- Standort-Excel schreiben | + +-- optional Audit-CSV schreiben + | Sales_ProcessedMergeInput__.csv + | +-- CentralSalesRecords fuer Standort ersetzen | + +-- zentrale Auswertungsquelle + | Standard: CentralSalesRecords + | optional: neueste Audit-CSV je TSC + | +-- zentrale Excel / Finance Summary | Hauswaehrung, keine stille App-Kursumrechnung | @@ -111,6 +124,7 @@ Beim normalen Standortexport gilt: ```text Daten holen -> Transformationen anwenden + -> optional Audit-CSV Sales_ProcessedMergeInput_*.csv schreiben -> Standort-Excel schreiben -> CentralSalesRecords fuer diesen Standort ersetzen -> optional SharePoint Upload @@ -125,6 +139,8 @@ Ohne aktive `ConvertCurrency`-Transformation passiert keine App-Kursumrechnung. Damit bleibt nachvollziehbar, ob ein Wert bereits vom Landessystem als Hauswaehrungswert geliefert wurde oder ob er spaeter nur in der Anzeige umgerechnet wurde. +Die Audit-CSV wird an derselben Stelle im Ablauf geschrieben: nach Mapping/Transformation und vor der zentralen Auswertung. Sie ist deshalb fuer Finance/Revision das lesbare Abbild des verarbeiteten Merge-Eingangs, nicht das originale Standortfile. + ## 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. @@ -132,7 +148,9 @@ Die fuehrende Finance Summary im Dashboard und das zentrale Excel-Blatt `Finance Logik: ```text -CentralSalesRecords +zentrale Auswertungsquelle + Standard: CentralSalesRecords + optional: Sales_ProcessedMergeInput_*.csv -> FinanceRuleEngine -> Finance | Net Sales Actual -> Gruppierung nach Jahr, Land, Finance-Waehrung @@ -166,7 +184,7 @@ Die Kursanwendung fuer einen zentralen Dashboard-Wert passiert in der Management Eingaben: -- Datenbasis: `CentralSalesRecords`. +- Datenbasis: zentrale Auswertungsquelle, also `CentralSalesRecords` oder bei aktivem Audit-Modus die neuesten `Sales_ProcessedMergeInput_*.csv` je TSC. - Summenfeld: z. B. `SalesPriceValue`, `StandardCost`, `StandardCostTotal`, `Quantity`. - Anzeige-Waehrung: `NATIVE`, `CHF`, `EUR` oder `USD`. - Zeitraum/Filter: Jahr, Monat, Land, TSC. @@ -296,6 +314,8 @@ ORDER BY FromCurrency, ToCurrency, ValidFrom DESC; | ECB-Import | `Services/ExchangeRateImportService.cs` | | Settings/Kurspflege | `Services/SettingsPageService.cs`, `Components/Pages/Settings.razor` | | Standortexport-Reihenfolge | `Services/SiteExportService.cs` | +| Audit-CSV schreiben/lesen | `Services/ExportAuditCsvService.cs` | +| zentrale Quelle DB oder CSV | `Services/CentralSalesDataProvider.cs` | | zentrale Speicherung | `Services/CentralSalesRecordService.cs` | | zentrale Analyse mit Zielwaehrung | `Services/ManagementCockpitService.cs` | | Finance Summary ohne stille Umrechnung | `Services/ManagementCockpitService.cs`, `Services/ExcelExportService.cs` | diff --git a/TrafagSalesExporter/docs/FINANCE_PROZESS_EXPORT_DASHBOARD_2026-06-11.svg b/TrafagSalesExporter/docs/FINANCE_PROZESS_EXPORT_DASHBOARD_2026-06-11.svg new file mode 100644 index 0000000..0b21ffb --- /dev/null +++ b/TrafagSalesExporter/docs/FINANCE_PROZESS_EXPORT_DASHBOARD_2026-06-11.svg @@ -0,0 +1,106 @@ + + Finance Prozessfluss vom Export bis Dashboard + Uebersicht: Standortdaten werden gelesen, gemappt, transformiert, optional als Audit-CSV geschrieben und danach fuer Dashboard, Soll/Ist und zentrale Excel verwendet. + + + + + + + + + Finance Prozessfluss: Export Dashboard bis zentrale Auswertung + Stand 2026-06-11: Audit-CSV ist das verarbeitete Merge-Eingangsfile und kann optional die zentrale Quelle sein. + + 1. Quelle lesen + + Quellsystem + HANA / SAP B1 + SAP Gateway / OData + Excel / CSV / SharePoint + + + + 2. Vereinheitlichen + + Mapping + Spalten und ERP-Felder + werden SalesRecord + zugeordnet. + + + + + Transformation + Finance-Regeln noch nicht + final summiert; Felder + werden vorbereitet. + + + + 3. Nachvollziehbare Standortartefakte + + Audit-CSV + Sales_ProcessedMergeInput + _<TSC>_<Datum>.csv + Nach Mapping + Transformation + + + + + Standort-Excel + Sales_<TSC>_<Datum>.xlsx + Ablage und manuelle Pruefung + + + + + + 4. Operative Datenbasis + + CentralSalesRecords + Standort wird ersetzt + und zentral gespeichert. + Standard-Auswertungsquelle + + + + + Zentrale Quelle + Schalter in Settings: + DB oder Audit-CSV + je TSC neueste CSV + + + + 5. Finance-Ergebnis + + Output + Dashboard + Soll/Ist + Sales_All + + + SharePoint-Ablage + Standort-Excel und Audit-CSV werden in denselben Landesordner hochgeladen. + SharePoint-Dateien sind Ablage/Pruefspur, nicht automatisch die Live-Quelle. + + + + diff --git a/TrafagSalesExporter/docs/FINANCE_SCHULUNG_FINANZ_2026-06-11.md b/TrafagSalesExporter/docs/FINANCE_SCHULUNG_FINANZ_2026-06-11.md new file mode 100644 index 0000000..79c3568 --- /dev/null +++ b/TrafagSalesExporter/docs/FINANCE_SCHULUNG_FINANZ_2026-06-11.md @@ -0,0 +1,410 @@ +# Finance Schulung fuer Finance-Anwender + +Stand: 2026-06-11 + +Zweck: Diese Schulungsunterlage beschreibt den aktuellen Finance-Prozess vom Standortexport bis zu Dashboard, zentraler Excel und Soll/Ist-Vergleich. Sie ist fuer Finance, Finance Keyuser und Wirtschaftspruefung gedacht. + +## Prozessgrafiken + +Die folgenden Grafiken zeigen die wichtigsten Zusammenhaenge vor den Detailkapiteln: + +![Finance Prozessfluss](FINANCE_PROZESS_EXPORT_DASHBOARD_2026-06-11.svg) + +![Audit-CSV als zentrale Auswertungsquelle](FINANCE_AUDIT_CSV_QUELLE_2026-06-11.svg) + +![Waehrungs- und Kursfluss](FINANCE_WAEHRUNG_KURSFLUSS_2026-06-11.svg) + +## Kurzfazit + +- Fuehrende Sicht fuer Soll/Ist ist `Finance Summary` bzw. der Soll/Ist-Vergleich. +- Das zentrale Excel ist ein Ergebnis des aktuellen Datenbestands, nicht die Live-Quelle des Dashboards. +- Standortexporte schreiben optional eine nachvollziehbare Audit-CSV nach Mapping und Transformation. +- Die Audit-CSV heisst `Sales_ProcessedMergeInput__.csv` und ist das verarbeitete Merge-Eingangsfile, nicht das originale Standortfile. +- Per Einstellung kann die zentrale Auswertung von `CentralSalesRecords` auf die neuesten Audit-CSV je Standort umgeschaltet werden. +- Waehrungsumrechnung passiert nicht still im Standard-Ist. Sie passiert nur in klaren Analyse-/Transformationsfaellen. + +## Rollen + +| Rolle | Aufgabe | +| --- | --- | +| Finance Anwender | Finance Summary, zentrale Excel und Soll/Ist pruefen | +| Finance Keyuser | Standortexporte starten, Audit-CSV kontrollieren, Freigabe vorbereiten | +| Wirtschaftspruefung | Datenfluss ueber verarbeitete CSV, zentrale Excel und Detailzeilen nachvollziehen | +| Admin / IT | Standorte, Quellen, Mappings, Kurse, SharePoint und Regeln pflegen | + +## Prozessfluss: Export bis Dashboard + +```text +Quellsystem oder Standortdatei + | + +-- Export Dashboard: Standort exportieren + | + +-- Adapter liest Daten + | HANA/B1, SAP Gateway/OData oder Manual Excel/CSV/SharePoint + | + +-- Mapping ins SalesRecord-Modell + | + +-- Transformationen anwenden + | z. B. Feldkopien, FirstNonEmpty, optional ConvertCurrency + | + +-- Audit-CSV schreiben, falls aktiv + | Sales_ProcessedMergeInput__.csv + | + +-- Standort-Excel schreiben + | Sales__.xlsx + | + +-- CentralSalesRecords fuer diesen Standort ersetzen + | + +-- Standort-Excel und Audit-CSV nach SharePoint hochladen, falls konfiguriert + +Zentrale Auswertungsquelle + | + +-- Standard: CentralSalesRecords + | + +-- Optional: neueste Sales_ProcessedMergeInput_*.csv je TSC + | + +-- Finance Summary / Management Analyse + +-- Soll/Ist-Vergleich + +-- Zentrale Excel Sales_All_.xlsx +``` + +Wichtig fuer Finance: Der Standortexport schreibt zuerst die verarbeiteten Daten. Danach entscheidet die Einstellung `Zentrale Auswertung aus Audit-CSV`, ob Dashboard und zentrale Excel aus der internen DB oder aus den neuesten verarbeiteten CSV-Dateien lesen. + +## Schalter in der App + +Die Schalter liegen unter: + +```text +Einstellungen > Export Einstellungen > Audit-CSV / nachvollziehbarer Datenfluss +``` + +| Feld | Wirkung | +| --- | --- | +| `Lokaler Standardpfad Standort-Dateien` | Ordner fuer Standort-Excel und Audit-CSV. Wenn leer, wird `output` im App-Verzeichnis verwendet. | +| `Audit-CSV je Standort schreiben` | Schreibt beim Laenderexport je Standort eine verarbeitete CSV. | +| `Zentrale Auswertung aus Audit-CSV` | Dashboard, zentrale Excel und Finance-Auswertungen lesen die neuesten Audit-CSV statt der internen DB. | +| `Wechselkurse anwenden auf` | Datumsfeld fuer Kursgueltigkeit in Management-Analysen: `PostingDate`, `InvoiceDate` oder `ExtractionDate`. | + +Es gibt keinen separaten sichtbaren Audit-CSV-Pfad. Die Audit-CSV liegt bewusst im gleichen Ordner wie die lokalen Standortdateien und wird beim Standortexport in den gleichen SharePoint-Landesordner hochgeladen. + +## Dateinamen und Bedeutung + +| Datei | Bedeutung | +| --- | --- | +| `Sales__.xlsx` | Standort-Excel fuer Menschen und Ablage. | +| `Sales_ProcessedMergeInput__.csv` | Verarbeitetes Standortfile nach Mapping und Transformation; Eingang fuer Merge/zentrale Auswertung, auditierbar. | +| `Sales_All_.xlsx` | Zentrale Excel mit Finance Summary, Finance Details und Sales-Blatt. | + +Die Audit-CSV ist nicht das originale Standortfile aus Sage, Alphaplan, HANA oder SAP. Sie ist das bereits verarbeitete File, das fachlich erklaert, welche Zeilen in den zentralen Merge gehen. + +## Zentrale Auswertungsquelle + +### Standard: interne DB + +Im Standard liest die App aus `CentralSalesRecords`. + +```text +Standortexport + -> CentralSalesRecords fuer Standort ersetzen + -> Dashboard und zentrale Excel lesen CentralSalesRecords +``` + +Das ist die schnellste operative Variante. + +### Audit-Modus: CSV als zentrale Quelle + +Wenn `Zentrale Auswertung aus Audit-CSV` aktiv ist: + +```text +Ordner mit Sales_ProcessedMergeInput_*.csv + -> je TSC die neueste Datei suchen + -> CSV lesen + -> Dashboard, zentrale Excel und Soll/Ist daraus bilden +``` + +Das ist die nachvollziehbare Variante fuer Finance/Revision. Finance kann die CSV-Dateien oeffnen, summieren und gegen die zentrale Excel pruefen. + +Kontrollregel: Wenn der Audit-Modus aktiv ist, muessen fuer alle relevanten Standorte aktuelle `Sales_ProcessedMergeInput_*.csv` im Standort-Exportordner vorhanden sein. + +## Waehrungsumrechnung + +Die Kurstabelle liegt in der App unter: + +```text +Einstellungen > Wechselkurse +``` + +Technisch ist das die Tabelle `CurrencyExchangeRates` mit: + +| Feld | Bedeutung | +| --- | --- | +| `FromCurrency` | Quellwaehrung | +| `ToCurrency` | Zielwaehrung | +| `Rate` | Faktor: Betrag * Rate | +| `ValidFrom` / `ValidTo` | Gueltigkeitszeitraum | +| `Notes` | z. B. `Budget 2025`, `Budget 2026`, `ECB daily reference rate` | +| `IsActive` | nur aktive Kurse werden verwendet | + +Die App sucht Kurse so: + +1. gleiche Waehrung ergibt Faktor `1`. +2. direkter Kurs `Quelle -> Ziel`. +3. falls fehlt: inverser Kurs `Ziel -> Quelle`, gerechnet als `1 / Rate`. +4. falls fehlt: Kreuzkurs ueber `EUR`. +5. falls weiterhin fehlt: keine Umrechnung; die Anzeige zaehlt fehlende Kurse. + +## Wo Kurse wirken + +| Bereich | Kurswirkung | +| --- | --- | +| Standard `Finance Summary` | keine stille Umrechnung; Hauswaehrung je Land bleibt fuehrend | +| Zentrale Excel `Finance Summary` / `Finance Details` | keine stille globale Zielwaehrung | +| Management Analyse mit Zielwaehrung `CHF`, `EUR`, `USD` | App rechnet zur Anzeige ueber `CurrencyExchangeRates` um | +| Transformation `ConvertCurrency` | schreibt beim Standortexport dauerhaft ein Zielfeld um | +| Soll/Ist-Kandidat `Nettofakturawert Hauswaehrung -> CHF Budget ` | nutzt Kurse mit `Notes = Budget ` als separate Kontrollsicht | +| ERP-Feld `DocumentRate` | gespeicherte Quellinformation, nicht automatisch die App-Umrechnung | + +Die Standardfreigabe erfolgt zuerst in lokaler Hauswaehrung. Eine CHF- oder EUR-Sicht ist eine separate Reporting-/Analysefrage. + +## Datumsfeld fuer Kurse + +In `Einstellungen > Export Einstellungen` bestimmt `Wechselkurse anwenden auf`, welches Datum fuer die Kursgueltigkeit verwendet wird: + +| Einstellung | Kursdatum | +| --- | --- | +| `PostingDate` | `PostingDate`, sonst `InvoiceDate`, sonst `ExtractionDate` | +| `InvoiceDate` | `InvoiceDate`, sonst `PostingDate`, sonst `ExtractionDate` | +| `ExtractionDate` | `ExtractionDate` | + +Diese Einstellung betrifft Management-Analysen mit Zielwaehrung. Sie aendert nicht die Rohdaten und nicht die normalen Standort-Exporte. + +## Zentrale Excel + +Die zentrale Excel wird ueber das Export Dashboard erzeugt: + +```text +Export Dashboard > Zentrale Datei neu erzeugen +``` + +Sie enthaelt typischerweise: + +| Blatt | Zweck | +| --- | --- | +| `Finance Summary` | Summen nach Jahr, Land und Waehrung | +| `Finance Details` | Detailzeilen, die in die Finance Summary eingehen | +| `Sales` | vollstaendige verarbeitete Exportdaten | +| `Finance Filter Hilfe` | Hinweise fuer Excel-Filter | + +Wenn die zentrale Auswertungsquelle auf Audit-CSV steht, wird die zentrale Excel aus den neuesten Audit-CSV gebildet. Wenn die Auswertungsquelle auf DB steht, wird sie aus `CentralSalesRecords` gebildet. + +## Soll/Ist-Vergleich + +Der Soll/Ist-Vergleich nutzt dieselbe Finance-Logik wie Finance Summary und zentrale Excel. + +| Feld | Bedeutung | +| --- | --- | +| `Ist` | aktueller Finance-Istwert | +| `Referenz` | Soll-/check.xlsx-Wert bzw. FinanceReference | +| `Differenz` | Ist minus Referenz | +| `Varianten` | alternative technische Berechnungskandidaten | +| `IC` | Intercompany-/2nd-party-Diagnose, nicht stiller Abzug | + +Wenn im Expertenmodus Varianten angezeigt werden, muss der Sollwert weiterhin sichtbar bleiben, weil Finance die Differenz nur mit Referenzwert beurteilen kann. + +## Laenderlogik kurz + +| Land | Quelle / Logik | +| --- | --- | +| CH / AT | SAP Gateway/OData `ZSCHWEIZ`, `NetwrHc`, Spartenreferenz aus `ProductDivisionRefSet` | +| DE | Alphaplan Excel, `NettoPreisGesamtX`, Finance-Regeln fuer Ausschluesse und GS negativ | +| ES | Sage CSV, Basis plus Range-/Delta-Dateien, `ImporteNeto`, REC/Abono/Credit negativ | +| FR | SAP B1/HANA, Rechnungen und Gutschriften als Positions-Netto | +| IN | SAGE/HANA `TRIN`, Hauswaehrung INR | +| IT | SAP B1/HANA, IT-Abgrenzung mit `Trafag Italia` und Blank-Supplier-Deduplizierung | +| UK | Sage/Manual Excel, Jahresdatei plus Delta-Dateien, `[Sales Price/Value] * [Quantity]`, Credit Notes negativ | +| US | SAP B1/HANA, Positions-Netto in USD | + +## Schulungsbeispiele: 4 Zeilen je Land + +Die folgenden Zahlen sind bewusst kleine Schulungssamples, keine produktiven Ist-Werte. Sie zeigen den Fluss: + +```text +Quellzeile + -> Mapping / Transformation beim Standortexport + -> Sales_ProcessedMergeInput__.csv oder CentralSalesRecords + -> FinanceRuleEngine + -> Finance Summary / Finance Details im zentralen Excel + -> Dashboard / Soll-Ist +``` + +### Wo die Transformation wirkt + +Transformationen wirken beim Standortexport, nachdem die Quelle gelesen und bevor Audit-CSV, Standort-Excel und zentrale Datenbasis geschrieben werden. + +```text +Quelle lesen + -> Mapping in SalesRecord + -> FieldTransformationRules anwenden + -> Audit-CSV schreiben + -> Standort-Excel schreiben + -> CentralSalesRecords ersetzen +``` + +Wenn `Zentrale Auswertung aus Audit-CSV` aktiv ist, liest das Dashboard spaeter die bereits transformierten `Sales_ProcessedMergeInput_*.csv`. Wenn der Schalter aus ist, liest es die transformierten DB-Eintraege aus `CentralSalesRecords`. Die Summenlogik ist danach dieselbe. + +### CH / Schweiz, TSC CH + +| Sample | Quellwert | Mapping / Transformation | Wert fuer Merge | Finance-Beitrag | +| --- | ---: | --- | ---: | ---: | +| CH-1 Rechnung | `NetwrHc = 1'000 CHF` | `Z.NetwrHc -> SalesPriceValue`, `Z.Hwaer -> SalesCurrency` | `1'000 CHF` | `1'000 CHF` | +| CH-2 Rechnung | `NetwrHc = 250 CHF` | Spartenfelder aus `ProductDivisionRefSet` angehaengt | `250 CHF` | `250 CHF` | +| CH-3 Gutschrift | `NetwrHc = -80 CHF` | Vorzeichen kommt aus Quelle/Beleglogik | `-80 CHF` | `-80 CHF` | +| CH-4 Service | `NetwrHc = 30 CHF` | Service bleibt normale Finance-Zeile | `30 CHF` | `30 CHF` | + +Summe CH im zentralen Excel: `1'200 CHF`. + +### AT / Oesterreich, TSC AT + +| Sample | Quellwert | Mapping / Transformation | Wert fuer Merge | Finance-Beitrag | +| --- | ---: | --- | ---: | ---: | +| AT-1 Rechnung | `NetwrHc = 800 EUR` | `Z.NetwrHc -> SalesPriceValue`, `Z.Hwaer -> SalesCurrency` | `800 EUR` | `800 EUR` | +| AT-2 Rechnung | `NetwrHc = 120 EUR` | Material wird gegen TR-AG-Referenz gemappt | `120 EUR` | `120 EUR` | +| AT-3 Gutschrift | `NetwrHc = -50 EUR` | negative Belegzeile bleibt negativ | `-50 EUR` | `-50 EUR` | +| AT-4 Rechnung | `NetwrHc = 40 EUR` | keine Kursumrechnung im Standard-Ist | `40 EUR` | `40 EUR` | + +Summe AT im zentralen Excel: `910 EUR`. + +### DE / Deutschland, TSC TRDE + +| Sample | Quellwert | Mapping / Transformation | Wert fuer Merge | Finance-Beitrag | +| --- | ---: | --- | ---: | ---: | +| DE-1 Rechnung | `NettoPreisGesamtX = 1'500 EUR` | Alphaplan-Spalte -> `SalesPriceValue` | `1'500 EUR` | `1'500 EUR` | +| DE-2 GS-Gutschrift | `NettoPreisGesamtX = 200 EUR`, `InvoiceNumber = GS...` | Finance-Regel rechnet GS negativ | `200 EUR` | `-200 EUR` | +| DE-3 Trafag AG | `500 EUR`, Kunde `Trafag AG` | Finance-Regel schliesst aus | `500 EUR` | `0 EUR` | +| DE-4 Magnetic Sense | `120 EUR`, Kunde enthaelt `Magnetic Sense` | Finance-Regel schliesst aus | `120 EUR` | `0 EUR` | + +Summe DE im zentralen Excel: `1'300 EUR`. + +### ES / Spanien, TSC TRSE/TRES + +| Sample | Quellwert | Mapping / Transformation | Wert fuer Merge | Finance-Beitrag | +| --- | ---: | --- | ---: | ---: | +| ES-1 Basisrechnung | `ImporteNeto = 700 EUR` | Sage `ImporteNeto -> SalesPriceValue` | `700 EUR` | `700 EUR` | +| ES-2 Range-Rechnung | `ImporteNeto = 180 EUR` | Range-Datei wird mit Basis zusammengesetzt | `180 EUR` | `180 EUR` | +| ES-3 REC/Abono | `ImporteNeto = 60 EUR`, Typ REC | Credit-/REC-Logik setzt negativ | `-60 EUR` | `-60 EUR` | +| ES-4 Duplikat | gleiche `SourceLineId` wie ES-2 | Dedupe entfernt zweite Zeile | `0 EUR` | `0 EUR` | + +Summe ES im zentralen Excel: `820 EUR`. + +### FR / Frankreich, TSC TRFR + +| Sample | Quellwert | Mapping / Transformation | Wert fuer Merge | Finance-Beitrag | +| --- | ---: | --- | ---: | ---: | +| FR-1 Rechnung | `INV1.LineTotal = 900 EUR` | B1-Positionswert -> `SalesPriceValue` | `900 EUR` | `900 EUR` | +| FR-2 Rechnung | `INV1.LineTotal = 100 EUR` | `OADM.MainCurncy -> SalesCurrency` | `100 EUR` | `100 EUR` | +| FR-3 Credit Note | `RIN1.LineTotal = 40 EUR` | HANA-Abfrage setzt Credit Note negativ | `-40 EUR` | `-40 EUR` | +| FR-4 Storno | `CANCELED = Y` | HANA-Filter laesst Storno weg | `0 EUR` | `0 EUR` | + +Summe FR im zentralen Excel: `960 EUR`. + +### IN / Indien, TSC TRIN + +| Sample | Quellwert | Mapping / Transformation | Wert fuer Merge | Finance-Beitrag | +| --- | ---: | --- | ---: | ---: | +| IN-1 Rechnung | `SalesValue = 90'000 INR` | SAGE/HANA-Wert -> `SalesPriceValue` | `90'000 INR` | `90'000 INR` | +| IN-2 Rechnung | `SalesValue = 10'000 INR` | Hauswaehrung INR bleibt fuehrend | `10'000 INR` | `10'000 INR` | +| IN-3 Gutschrift | `SalesValue = 5'000 INR` | Credit-Logik setzt negativ | `-5'000 INR` | `-5'000 INR` | +| IN-4 fehlende Sparte | `SalesValue = 2'000 INR` | Umsatz bleibt drin, Spartenstatus separat pruefen | `2'000 INR` | `2'000 INR` | + +Summe IN im zentralen Excel: `97'000 INR`. + +### IT / Italien, TSC TRIT + +| Sample | Quellwert | Mapping / Transformation | Wert fuer Merge | Finance-Beitrag | +| --- | ---: | --- | ---: | ---: | +| IT-1 Rechnung | `INV1.LineTotal = 1'100 EUR` | B1-Positionswert -> `SalesPriceValue` | `1'100 EUR` | `1'100 EUR` | +| IT-2 Trafag Italia | `300 EUR`, Kunde enthaelt `Trafag Italia` | IT-Finance-Regel schliesst aus | `300 EUR` | `0 EUR` | +| IT-3 Blank-Supplier-Duplikat | `150 EUR` | IT-Dedupe zaehlt Position nur einmal | `150 EUR` | `150 EUR` | +| IT-4 Credit Note | `RIN1.LineTotal = 70 EUR` | Credit Note negativ | `-70 EUR` | `-70 EUR` | + +Summe IT im zentralen Excel: `1'180 EUR`. + +### UK / England, TSC TRUK + +| Sample | Quellwert | Mapping / Transformation | Wert fuer Merge | Finance-Beitrag | +| --- | ---: | --- | ---: | ---: | +| UK-1 Rechnung | `Sales Price/Value = 100 GBP`, `Quantity = 5` | `SageNetSales = 100 * 5` | `500 GBP` | `500 GBP` | +| UK-2 Rechnung | `Sales Price/Value = 80 GBP`, `Quantity = 2` | Quantity-Multiplikation | `160 GBP` | `160 GBP` | +| UK-3 Credit Note | `50 GBP`, `Quantity = 1`, Credit Type | Credit Notes negativ | `-50 GBP` | `-50 GBP` | +| UK-4 Delta | neue Datei `ddMMyy_TRUK.xlsx` | Basis + Delta zusammen gelesen | `40 GBP` | `40 GBP` | + +Summe UK im zentralen Excel: `650 GBP`. + +### US / USA, TSC TRUS + +| Sample | Quellwert | Mapping / Transformation | Wert fuer Merge | Finance-Beitrag | +| --- | ---: | --- | ---: | ---: | +| US-1 Rechnung | `INV1.LineTotal = 2'000 USD` | B1-Positionswert -> `SalesPriceValue` | `2'000 USD` | `2'000 USD` | +| US-2 Rechnung | `INV1.LineTotal = 350 USD` | Hauswaehrung USD bleibt fuehrend | `350 USD` | `350 USD` | +| US-3 Credit Note | `RIN1.LineTotal = 100 USD` | Credit Note negativ | `-100 USD` | `-100 USD` | +| US-4 Storno | `CANCELED = Y` | HANA-Filter laesst Storno weg | `0 USD` | `0 USD` | + +Summe US im zentralen Excel: `2'250 USD`. + +### Was im Dashboard sichtbar wird + +| Schritt | Sichtbares Ergebnis | +| --- | --- | +| Standortexport | pro Land entsteht ein verarbeiteter Stand in Audit-CSV und/oder `CentralSalesRecords` | +| `Zentrale Datei neu erzeugen` | `Finance Summary` summiert die Finance-Beitraege je Jahr, Land und Waehrung | +| `Finance Details` | zeigt die einzelnen eingeschlossenen Detailzeilen hinter der Summe | +| Dashboard `Finance Summary` | zeigt dieselben Summen wie das zentrale Excel | +| Soll/Ist | vergleicht die Summe gegen `FinanceReference` / `check.xlsx` | +| Management Analyse mit Zielwaehrung | rechnet nur fuer die Anzeige ueber `CurrencyExchangeRates` um | + +## Pruefung fuer Finance/Revision + +1. In `Einstellungen` pruefen, ob `Audit-CSV je Standort schreiben` aktiv ist. +2. Fuer jedes relevante Land den Standortexport starten. +3. Im Standortordner pruefen: + - `Sales__.xlsx` + - `Sales_ProcessedMergeInput__.csv` +4. Optional `Zentrale Auswertung aus Audit-CSV` aktivieren. +5. `Zentrale Datei neu erzeugen`. +6. In der zentralen Excel `Finance Summary` und `Finance Details` pruefen. +7. Soll/Ist-Vergleich gegen Referenzwerte pruefen. +8. Bei Abweichungen zuerst Audit-CSV und Finance Details nach TSC, Land, Jahr, Waehrung und Belegnummer filtern. + +## Typische Fehlerbilder + +| Symptom | Wahrscheinliche Ursache | Pruefung | +| --- | --- | --- | +| Audit-Modus aktiv, aber Dashboard leer/Fehler | keine `Sales_ProcessedMergeInput_*.csv` im Exportordner | Standortexport erneut starten, Pfad pruefen | +| CSV fehlt im SharePoint-Landesordner | Standortexport lief vor Audit-CSV-Upload-Stand oder SharePoint-Upload fehlgeschlagen | aktuellen Export erneut starten, Log pruefen | +| zentrale Excel wirkt alt | nach Standortexport nicht neu erzeugt oder falsche zentrale Quelle aktiv | Export Dashboard und Settings pruefen | +| `Mixed` bei Waehrung | mehrere native Waehrungen im Filter | Land/Waehrung filtern oder Zielwaehrung in Analyse waehlen | +| fehlende Kurse | kein aktiver gueltiger Kurs in `CurrencyExchangeRates` | Kurs, Gueltigkeit und `Wechselkurse anwenden auf` pruefen | + +## Freigabe-Checkliste + +| Nr. | Checkpunkt | +| --- | --- | +| 1 | Alle relevanten Standorte exportiert | +| 2 | Audit-CSV je Standort vorhanden, falls Revision/Finance den CSV-Fluss prueft | +| 3 | Zentrale Auswertungsquelle bewusst gewaehlt: DB oder Audit-CSV | +| 4 | Zentrale Excel nach den Standortexporten neu erzeugt | +| 5 | `Finance Summary` und `Finance Details` stimmen je Jahr/Land/Waehrung zusammen | +| 6 | Soll/Ist zeigt keine unerwarteten Abweichungen | +| 7 | Wechselkursfragen getrennt vom lokalen Hauswaehrungsvergleich beurteilt | +| 8 | offene Laenderpunkte dokumentiert | + +## Abgleich gegen alte Schulungsaussagen + +Diese Punkte waren in aelteren Schulungsunterlagen veraltet und sind mit Stand 2026-06-11 korrigiert: + +- Spanien ist nicht mehr pauschal nur Vollfile; Basis plus Range-/Delta-Dateien sind unterstuetzt. +- Nach einem Standortexport kann zusaetzlich eine Audit-CSV entstehen und nach SharePoint hochgeladen werden. +- Dashboard und zentrale Excel koennen optional aus Audit-CSV lesen; frueher war nur `CentralSalesRecords` beschrieben. +- Die Audit-CSV hat den neuen Namen `Sales_ProcessedMergeInput__.csv`. +- Die Wechselkurstabelle wird nicht still fuer Standard-Finance-Soll/Ist angewendet. +- Die aktuellen Management-Reiter sind links erreichbar; doppelte obere Reiterbaender wurden reduziert. diff --git a/TrafagSalesExporter/docs/FINANCE_WAEHRUNG_KURSFLUSS_2026-06-11.svg b/TrafagSalesExporter/docs/FINANCE_WAEHRUNG_KURSFLUSS_2026-06-11.svg new file mode 100644 index 0000000..3373000 --- /dev/null +++ b/TrafagSalesExporter/docs/FINANCE_WAEHRUNG_KURSFLUSS_2026-06-11.svg @@ -0,0 +1,85 @@ + + Finance Waehrungs- und Kursfluss + Zeigt, wo die App-Kurstabelle verwendet wird und wo keine stille Umrechnung stattfindet. + + + + + + + + + Waehrungsumrechnung: wann wirkt die Kurstabelle? + Standard-Soll/Ist bleibt in Hauswaehrung. Die App-Kurstabelle wirkt nur in expliziten Pfaden. + + + Quelle liefert Werte + SalesPriceValue + SalesCurrency / CompanyCurrency + DocumentRate als Quellinfo + + + + + Standard Finance + Finance Summary / Sales_All + nutzt Hauswaehrung je Land. + Keine stille App-Kursumrechnung + + + + + Nicht verwechseln + DocumentRate kommt aus ERP. + CurrencyExchangeRates ist + die App-Kurstabelle. + + + CurrencyExchangeRates + 1. gleiche Waehrung = Faktor 1 + 2. direkter Kurs + 3. inverser Kurs + 4. Kreuzkurs ueber EUR + + + + + Pfad A: Management Analyse + Zielwaehrung CHF / EUR / USD + Anzeige-Wert = Quellwert * Kurs + + + + + Pfad B: ConvertCurrency + Transformation beim Standortexport + schreibt Zielfeld dauerhaft um. + + + Pfad C: Budget-CHF + separater Soll/Ist-Kandidat + Notes = Budget <Jahr> + Kontrollsicht, nicht Standard-Ist + + + + + + + Kursdatum: Settings > Export Einstellungen > Wechselkurse anwenden auf = PostingDate, InvoiceDate oder ExtractionDate + diff --git a/TrafagSalesExporter/docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md b/TrafagSalesExporter/docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md index 030439f..da25b31 100644 --- a/TrafagSalesExporter/docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md +++ b/TrafagSalesExporter/docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md @@ -1,6 +1,6 @@ # Manual-Import und Delta-Stand -Stand: 2026-06-05 +Stand: 2026-06-11 Diese Datei beschreibt, wie manuelle Excel-/CSV-Importe aktuell behandelt werden und wie neue Eintraege bzw. Delta-Dateien verarbeitet werden. @@ -28,6 +28,7 @@ UK ist aktuell am besten fuer laufende Delta-Lieferungen vorbereitet. | Auswahl | Jahresdatei zuerst, danach alle spaeteren Delta-Dateien im gleichen Jahr | | Import | App liest alle ausgewaehlten Dateien in einem Lauf zusammen | | Persistenz | `CentralSalesRecords` fuer `TRUK` werden ersetzt, nicht blind additiv angehaengt | +| Audit-CSV | optional `Sales_ProcessedMergeInput_TRUK_.csv` nach Mapping/Transformation | | Nach Delta-Lieferung | Delta-Datei in den Ordner legen, `TRUK` exportieren, danach zentrale Excel neu erzeugen | Wichtig: @@ -51,6 +52,7 @@ Aktueller Implementierungsstand: - primaer ueber `SourceLineId`. - Fallback ueber `TSC + InvoiceNumber + PositionOnInvoice + Material`. - Beim Standortexport ersetzt die App weiterhin den bisherigen Spanien-Stand in `CentralSalesRecords`, aber mit dem zuvor zusammengesetzten und deduplizierten Gesamtstand. +- Falls Audit-CSV aktiv ist, schreibt der Export zusaetzlich `Sales_ProcessedMergeInput__.csv` in den Standort-Exportordner und laedt sie in denselben SharePoint-Landesordner wie die Standort-Excel. - Wenn nur eine einzelne Delta-Datei direkt als Dateipfad hinterlegt wird, kann weiterhin nur dieses Delta gelesen werden. Fuer Delta-Sync muss deshalb der Ordner hinterlegt sein. Finance-Logik: @@ -92,11 +94,18 @@ Offen: 1. Neue Datei oder Delta-Datei im richtigen Ordner bereitstellen. 2. In `Manuelle Importe` Pfad pruefen bzw. Standort aktiv lassen. 3. Standortexport fuer das betroffene Land ausfuehren. -4. Danach `Zentrale Datei neu erzeugen` starten. -5. Im zentralen Excel `Finance Summary` und `Finance Details` pruefen. +4. Falls Audit-CSV fuer Finance/Revision gebraucht wird, im Exportordner `Sales_ProcessedMergeInput__.csv` pruefen. +5. Falls die zentrale Auswertung aus CSV erfolgen soll, in `Einstellungen > Export Einstellungen` den Schalter `Zentrale Auswertung aus Audit-CSV` setzen. +6. Danach `Zentrale Datei neu erzeugen` starten. +7. Im zentralen Excel `Finance Summary` und `Finance Details` pruefen. ## Merksatz -Manual-Importe ersetzen pro Standort den aktuellen Stand in `CentralSalesRecords`. Delta-Dateien muessen daher beim Import zusammen mit der passenden Basisdatei gelesen werden. Das ist aktuell nur fuer UK vorgesehen. Spanien und Deutschland muessen immer Vollfiles liefern. +Manual-Importe ersetzen pro Standort den aktuellen Stand in `CentralSalesRecords`. Delta-Dateien muessen daher beim Import zusammen mit der passenden Basisdatei gelesen werden. -Wichtig: Fuer Spanien und Deutschland ist das fachlich/prozessual so vorgesehen und durch den Ersetzungsmechanismus praktisch erforderlich. Eine technische Validierung, die Delta-Dateien fuer ES/DE aktiv blockiert, ist aktuell noch nicht eingebaut. +Aktueller Stand: + +- UK: Basis plus Delta-Dateien. +- Spanien: Basis plus `Spain_Sales_range_*.csv`, wenn ein Ordner hinterlegt ist. +- Deutschland: weiterhin Vollfile/Jahresfile, keine Delta-Logik. +- Audit-CSV ist ein zusaetzliches verarbeitetes Prueffile; es ersetzt nicht die originalen Standortdateien. diff --git a/TrafagSalesExporter/docs/MD_DOKUMENTENSTATUS_2026-05-20.md b/TrafagSalesExporter/docs/MD_DOKUMENTENSTATUS_2026-05-20.md index b24fbab..0ff4092 100644 --- a/TrafagSalesExporter/docs/MD_DOKUMENTENSTATUS_2026-05-20.md +++ b/TrafagSalesExporter/docs/MD_DOKUMENTENSTATUS_2026-05-20.md @@ -1,6 +1,6 @@ # Markdown-Dokumentenstatus -Stand: 2026-06-10 +Stand: 2026-06-11 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. @@ -18,6 +18,7 @@ Diese Datei ordnet die vorhandenen Markdown-Dateien ein. Ziel ist, alte Arbeitsn | `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/FINANCE_SCHULUNG_FINANZ_2026-06-11.md` | Aktuelle Finance-Schulung fuer Anwender, Keyuser und Revision | Fuehrend fuer Schulung; ersetzt den alten Word-Inhalt fachlich | | `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 | @@ -27,7 +28,7 @@ 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_KURS_WORKFLOW_2026-06-09.md` | Isolierter Workflow fuer Kurs-/Waehrungsanwendung vom Land bis Dashboard | Aktuell fuer Kursfragen; SVG daneben | +| `docs/FINANCE_KURS_WORKFLOW_2026-06-09.md` | Isolierter Workflow fuer Kurs-/Waehrungsanwendung vom Land bis Dashboard | Aktuell fuer Kursfragen; SVGs 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 | @@ -59,6 +60,14 @@ Diese Dateien wurden am 2026-06-09 aus der aktiven Markdown-Struktur entfernt, w | `docs/hr_kpi_cockpit_preview.png` | neutrale HR-Cockpit-Vorschaugrafik fuer DOCX | | `docs/finance_cockpit_preview.png` | neutrale Finance-Cockpit-Vorschaugrafik fuer DOCX | +## Neue Finance-Schulungsgrafiken seit 2026-06-11 + +| Datei | Zweck | +| --- | --- | +| `docs/FINANCE_PROZESS_EXPORT_DASHBOARD_2026-06-11.svg` | End-to-end-Prozess vom Standortexport bis Dashboard/zentrale Excel | +| `docs/FINANCE_AUDIT_CSV_QUELLE_2026-06-11.svg` | Umschaltung zentrale Quelle: DB oder verarbeitete Audit-CSV | +| `docs/FINANCE_WAEHRUNG_KURSFLUSS_2026-06-11.svg` | Wo die App-Kurstabelle wirkt und wo nicht | + ## Bereinigung Bereinigung 2026-06-09: @@ -67,6 +76,7 @@ Bereinigung 2026-06-09: - 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: Produktsparten-Fallback `ProductDivisionMapSet`, India/SAGE-HANA-Deploy und Server-DB-Seeds wurden in `docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md`, `spartenlogic/UEBERGABE_PRODUKTSPARTEN_ZUORDNUNG.md`, `docs/rag/DEPLOYMENT.md`, `docs/rag/PROJECT.md` und `lastchange.md` nachdokumentiert. +- Delta 2026-06-11: Finance-Schulung, Audit-CSV-Prozessfluss, zentrale Auswertungsquelle und Kursfluss wurden in `docs/FINANCE_SCHULUNG_FINANZ_2026-06-11.md` und den neuen SVG-Grafiken dokumentiert. Weiterhin gilt: diff --git a/TrafagSalesExporter/docs/PROGRAMM_DIAGRAMME.md b/TrafagSalesExporter/docs/PROGRAMM_DIAGRAMME.md index 75ffb5f..58c3a0c 100644 --- a/TrafagSalesExporter/docs/PROGRAMM_DIAGRAMME.md +++ b/TrafagSalesExporter/docs/PROGRAMM_DIAGRAMME.md @@ -1,6 +1,19 @@ # Programm-Diagramme -Stand: 2026-05-20 +Stand: 2026-06-11 + +## Nachtrag Finance-Schulung 2026-06-11 + +Die aktuelle Finance-Schulung nutzt drei neue Prozessgrafiken: + +- `docs/FINANCE_PROZESS_EXPORT_DASHBOARD_2026-06-11.svg` + - zeigt den End-to-end-Fluss von Quellsystem ueber Mapping, Transformation, Audit-CSV, Standort-Excel, DB/CSV-Auswertungsquelle bis Dashboard und zentraler Excel. +- `docs/FINANCE_AUDIT_CSV_QUELLE_2026-06-11.svg` + - zeigt den Schalter zwischen Standard-Auswertung aus `CentralSalesRecords` und Audit-Auswertung aus den neuesten `Sales_ProcessedMergeInput_*.csv` je TSC. +- `docs/FINANCE_WAEHRUNG_KURSFLUSS_2026-06-11.svg` + - zeigt, dass Standard-Soll/Ist in Hauswaehrung bleibt und die App-Kurstabelle nur in expliziten Analyse-/Transformationspfaden wirkt. + +Die Markdown-Schulung dazu ist `docs/FINANCE_SCHULUNG_FINANZ_2026-06-11.md`. ## Nachtrag Anwenderdokus 2026-05-20 @@ -42,6 +55,15 @@ Fuer das Programm bieten sich zwei Diagrammarten an: - beschreibt Quelle, Mapping, Hauswaehrung, Nettofakturawert, Buchungsdatum, IC-Ausweis und Sollvergleich - macht sichtbar, dass der Algorithmus regelbasiert ist und nicht auf einzelne Testzahlen frisiert wurde +- `docs/FINANCE_PROZESS_EXPORT_DASHBOARD_2026-06-11.svg` + - aktuelle Schulungsgrafik fuer Export Dashboard bis Finance-Ausgabe + +- `docs/FINANCE_AUDIT_CSV_QUELLE_2026-06-11.svg` + - aktuelle Schulungsgrafik fuer DB-/Audit-CSV-Auswertungsquelle + +- `docs/FINANCE_WAEHRUNG_KURSFLUSS_2026-06-11.svg` + - aktuelle Schulungsgrafik fuer Wechselkurs- und Waehrungspfad + ## Abgleich gegen Quellcode Die Diagramme wurden gegen folgende Codebereiche abgeglichen: @@ -50,7 +72,9 @@ Die Diagramme wurden gegen folgende Codebereiche abgeglichen: - `Services/DataSources/*`: HANA, SAP Gateway und Manual Excel/CSV Adapter - `Services/SiteExportService.cs`: Standortexport, Transformation, Excel-Erzeugung, zentrale Speicherung, SharePoint-Upload - `Services/ExportOrchestrationService.cs`: Export aller aktiven Standorte und anschliessender konsolidierter Export -- `Services/ConsolidatedExportService.cs`: zentrale Datei aus `CentralSalesRecords` +- `Services/ConsolidatedExportService.cs`: zentrale Datei aus der zentralen Auswertungsquelle +- `Services/CentralSalesDataProvider.cs`: Umschaltung zwischen `CentralSalesRecords` und Audit-CSV +- `Services/ExportAuditCsvService.cs`: Schreiben/Lesen von `Sales_ProcessedMergeInput_*.csv` - `Services/MappedSalesRecordComposer.cs`: gemeinsame Mapping-Engine fuer SAP OData und generisches HANA-Mapping - `Services/FinanceReconciliationService.cs`: Soll/Ist-Kandidaten, Budgetkurse, IC-Regeln und Ampelstatus - `Services/DatabaseSeedService.cs`: Seed fuer Quellsysteme, ZSCHWEIZ, Finance-Referenzen, Budgetkurse und IC-Regeln diff --git a/TrafagSalesExporter/docs/RAG_ROUTER.md b/TrafagSalesExporter/docs/RAG_ROUTER.md index 83c12eb..63d10df 100644 --- a/TrafagSalesExporter/docs/RAG_ROUTER.md +++ b/TrafagSalesExporter/docs/RAG_ROUTER.md @@ -1,6 +1,6 @@ # RAG Router -Stand: 2026-06-10 +Stand: 2026-06-11 Zweck: Diese Datei zuerst laden. Danach nur die Dateien aus dem passenden Themenblock laden. @@ -18,7 +18,7 @@ Zweck: Diese Datei zuerst laden. Danach nur die Dateien aus dem passenden Themen | 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` | +| Manual Import | UK-Deltas, Spanien Basis+Range, DE Vollfile, 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` | @@ -33,7 +33,9 @@ Zweck: Diese Datei zuerst laden. Danach nur die Dateien aus dem passenden Themen | `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_SCHULUNG_FINANZ_2026-06-11.md` | aktuelle Finance-Schulung, Prozessgrafiken, Audit-CSV und Waehrungsfluss | | `docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md` | Formeln pro Land | +| `docs/FINANCE_DATENFLUSS_ANDREAS_2026-06-08.md` | technischer Finance-Datenfluss inklusive Audit-CSV | | `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 | @@ -47,6 +49,7 @@ Zweck: Diese Datei zuerst laden. Danach nur die Dateien aus dem passenden Themen | Suchwort | Thema | | --- | --- | | `Finance Summary`, `Soll/Ist`, `check.xlsx`, `FinanceRuleEngine` | Finance Cockpit | +| `Schulung`, `Training`, `Audit-CSV`, `Sales_ProcessedMergeInput`, `Auswertungsquelle`, `Wirtschaftspruefung` | `docs/FINANCE_SCHULUNG_FINANZ_2026-06-11.md` | | `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 | diff --git a/TrafagSalesExporter/docs/rag/FINANCE.md b/TrafagSalesExporter/docs/rag/FINANCE.md index 28b0233..9112e21 100644 --- a/TrafagSalesExporter/docs/rag/FINANCE.md +++ b/TrafagSalesExporter/docs/rag/FINANCE.md @@ -1,11 +1,13 @@ # RAG Finance -Stand: 2026-06-10 +Stand: 2026-06-11 ## Kurzstand - Fuehrende Sicht: `Finance Summary`. -- Neu lokal: `Finance Summary`, zentrale Excel und Management-Analyse koennen wahlweise aus Audit-CSV statt direkt aus `CentralSalesRecords` lesen. Die Audit-CSV werden nach Mapping und Transformation geschrieben und dienen der Nachvollziehbarkeit fuer Finance/Revision. +- Aktuelle Schulung: `docs/FINANCE_SCHULUNG_FINANZ_2026-06-11.md`. +- `Finance Summary`, zentrale Excel, Soll/Ist und Management-Analyse koennen wahlweise aus Audit-CSV statt direkt aus `CentralSalesRecords` lesen. Die Audit-CSV werden nach Mapping und Transformation geschrieben und dienen der Nachvollziehbarkeit fuer Finance/Revision. +- Audit-CSV-Dateiname: `Sales_ProcessedMergeInput__.csv`; liegt im gleichen Ordner wie das Standort-Excel und wird beim Standortexport in denselben SharePoint-Landesordner hochgeladen. - `Finance Summary` nutzt dieselbe `FinanceRuleEngine` wie das zentrale Excel. - `Management Analyse` bleibt Diagnose-/Plausibilitaetssicht, nicht fuehrende Finance-Zahl. - Nach UX-Vereinfachung gibt es links eine schnellere Finance-Uebersicht; tiefe Diagnosefunktionen sind unter `Experten` gebuendelt. @@ -35,6 +37,7 @@ Stand: 2026-06-10 - 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. +- Schalter fuer Finance/Revision: `Einstellungen > Export Einstellungen > Audit-CSV / nachvollziehbarer Datenfluss`. ## Offene Fachpunkte @@ -53,7 +56,15 @@ Stand: 2026-06-10 - `Datenqualitaet`: fehlende Materialnummern, ProductGroup, Waehrung, Kunde, Datum, Nullwerte und ausgeschlossene Zeilen. - `Spartenanalyse > Finanzanalyse`: Umsatzabdeckung und Umsatz nach Produktsparte/Familie/PAPH1 auf Basis der TR-AG-Referenz. - `Spartenanalyse > Zentrale Zuordnung`: Materialnummern aller Laender gegen TR-AG-Stamm pruefen. -- `Rohdaten Diagnose`: direkte Plausibilitaets-/Rohdatensicht auf `CentralSalesRecords`. +- `Rohdaten Diagnose`: direkte Plausibilitaets-/Rohdatensicht auf die zentrale Auswertungsquelle. + +## Audit-CSV / Auswertungsquelle + +- `Audit-CSV je Standort schreiben`: schreibt beim Laenderexport eine verarbeitete CSV nach Mapping und Transformation. +- `Zentrale Auswertung aus Audit-CSV`: zentrale Auswertungen lesen je TSC die neueste `Sales_ProcessedMergeInput_*.csv`. +- Der Pfad ist der `Lokaler Standardpfad Standort-Dateien`; ein separater sichtbarer Audit-Pfad wird nicht verwendet. +- Standard ohne CSV-Schalter: zentrale Auswertungen lesen `CentralSalesRecords`. +- Wenn der CSV-Schalter aktiv ist und keine passenden CSV vorhanden sind, ist die zentrale Auswertung nicht ausfuehrbar. ## Experten / 3D Datenanalyse @@ -98,6 +109,7 @@ Stand: 2026-06-10 ## Rohquellen Nur Bei Bedarf - Entscheide: `docs/FINANCE_ENTSCHEIDE.md`, `entscheide.md` +- Finance-Schulung: `docs/FINANCE_SCHULUNG_FINANZ_2026-06-11.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` diff --git a/TrafagSalesExporter/docs/rag/MANUAL_IMPORT.md b/TrafagSalesExporter/docs/rag/MANUAL_IMPORT.md index 6a39803..3bca51f 100644 --- a/TrafagSalesExporter/docs/rag/MANUAL_IMPORT.md +++ b/TrafagSalesExporter/docs/rag/MANUAL_IMPORT.md @@ -1,6 +1,6 @@ # RAG Manual Import -Stand: 2026-06-05 +Stand: 2026-06-11 ## Kurzstand @@ -10,6 +10,8 @@ Stand: 2026-06-05 - ES/Spanien liest im Ordner alle `Spain_Sales*.csv`, also Basisdatei plus taegliche `Spain_Sales_range_YYYYMMDD_to_YYYYMMDD.csv`. - Spanien-Deltas werden vor dem Speichern dedupliziert: zuerst `SourceLineId`, sonst Invoice/Position/Material. - DE muss weiterhin Vollfiles liefern. +- Wenn Audit-CSV aktiv ist, schreibt der Standortexport nach Mapping/Transformation zusaetzlich `Sales_ProcessedMergeInput__.csv` in den Standort-Exportordner. +- Zentrale Auswertungen koennen per Setting aus den neuesten Audit-CSV je TSC statt direkt aus `CentralSalesRecords` lesen. ## Laender @@ -24,8 +26,10 @@ Stand: 2026-06-05 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. +4. Optional Audit-CSV im Standort-Exportordner pruefen. +5. Zentrale Auswertungsquelle bewusst setzen: DB oder Audit-CSV. +6. Zentrale Datei neu erzeugen. +7. `Finance Summary` und `Finance Details` pruefen. ## Spanien Delta-Sync diff --git a/TrafagSalesExporter/docs/rag/PROJECT.md b/TrafagSalesExporter/docs/rag/PROJECT.md index 2d2c1cf..cb8136e 100644 --- a/TrafagSalesExporter/docs/rag/PROJECT.md +++ b/TrafagSalesExporter/docs/rag/PROJECT.md @@ -1,11 +1,12 @@ # RAG Project -Stand: 2026-06-10 +Stand: 2026-06-11 ## Kurzstand - Fuehrende App: `TrafagSalesExporter`, publiziert als `BiDashboard`. -- Neu lokal: Audit-CSV-Modus fuer Finance/Revision. Standortexporte schreiben optional nach Mapping/Transformation je Standort eine lesbare CSV; zentrale Excel, Finance Summary und Management-Analyse koennen per Setting aus den neuesten Standort-CSV statt aus der internen DB lesen. +- Neu lokal: Audit-CSV-Modus fuer Finance/Revision. Standortexporte schreiben optional nach Mapping/Transformation je Standort `Sales_ProcessedMergeInput__.csv`; zentrale Excel, Finance Summary, Soll/Ist und Management-Analyse koennen per Setting aus den neuesten Standort-CSV statt aus der internen DB lesen. +- Aktuelle Finance-Schulung: `docs/FINANCE_SCHULUNG_FINANZ_2026-06-11.md` mit Prozessgrafiken fuer Exportfluss, Audit-CSV-Auswertungsquelle und Waehrungsumrechnung. - Letzter dokumentierter Stand: CH/AT-Produktsparten-Fallback ueber `ProductDivisionMapSet` deployed; India/TRIN SAGE-HANA-Fix und Spanien-SharePoint-Pfad bleiben abgesichert. - Validierung laut Doku: `87/87` Tests gruen fuer den Produktsparten-Fallback; fruehere UI-/Deploy-Schritte wurden einzeln umgesetzt und deployed. - Letzter dokumentierter Deploy: 2026-06-10 auf `\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\`. diff --git a/TrafagSalesExporter/lastchange.md b/TrafagSalesExporter/lastchange.md index 2f5f1df..0495de1 100644 --- a/TrafagSalesExporter/lastchange.md +++ b/TrafagSalesExporter/lastchange.md @@ -1,6 +1,6 @@ # Last Change -Stand: 2026-06-10 +Stand: 2026-06-11 Diese Datei ist fuer tokenarme RAG-Nutzung komprimiert. @@ -8,6 +8,8 @@ Diese Datei ist fuer tokenarme RAG-Nutzung komprimiert. - Fuehrender Kurzkontext: `docs/rag/PROJECT.md`. - Themenrouter: `docs/RAG_ROUTER.md`. +- Neu lokal dokumentiert: aktuelle Finance-Schulung `docs/FINANCE_SCHULUNG_FINANZ_2026-06-11.md` mit Prozessgrafiken fuer Export Dashboard, Audit-CSV-Auswertungsquelle und Waehrungs-/Kursfluss. +- Neue Schulungsgrafiken: `docs/FINANCE_PROZESS_EXPORT_DASHBOARD_2026-06-11.svg`, `docs/FINANCE_AUDIT_CSV_QUELLE_2026-06-11.svg`, `docs/FINANCE_WAEHRUNG_KURSFLUSS_2026-06-11.svg`. - Neu lokal umgesetzt: Standortexporte koennen nach Mapping und Transformation eine lesbare Audit-CSV je Standort schreiben; zentrale Excel, Finance Summary und Management-Analyse koennen per Setting wahlweise aus den neuesten Audit-CSV statt aus `CentralSalesRecords` lesen. - Letzter dokumentierter Code-Stand: CH/AT-Produktsparten-Fallback ueber `ProductDivisionMapSet` deployed; India/TRIN HANA-Route und Spanien-SharePoint-Pfad bleiben im Seed abgesichert. - Letzte dokumentierte Validierung: `dotnet test TrafagSalesExporter.sln --verbosity minimal` mit `87/87` Tests gruen.