12 KiB
Finance-Entscheide fuer Net Sales Actuals
Stand: 2026-06-01
Nachtrag 2026-06-01 Finance-Sitzung
Umgesetzt:
- ES-Referenz 2025 ist auf
3'082'320.18 EURkorrigiert; alter Sollwert3'102'333.61 EURwar Referenz-/Excel-Fehler. Management Analyse > Laenderzeigt IC/2nd-party undIst ohne ICals Diagnosewerte.- Wechselkurs-Anwendungsdatum ist in den Settings konfigurierbar und wird in der Rohdaten-Diagnose angezeigt.
- Sparten-Materialabgleich normalisiert fuehrende Nullen; bei >=90% nicht zugeordnet / nicht im TR-AG-Stamm wird ein Warnhinweis angezeigt.
Weiter fachlich zu klaeren:
- Pro Standort bestaetigen, ob Intercompany bereits in der gelieferten Quelle herausgerechnet ist.
- Fuer Wechselkurse final bestaetigen, ob
PostingDate,InvoiceDateoder ein anderes Datum fuehrend ist. - Spartenanalyse fachlich pruefen, falls die ungeklaerte Abdeckung weiterhin extrem hoch bleibt.
Nachtrag 2026-05-20 Finance Summary / Management Analyse
Aktueller Produktstand:
- Das zentrale Excel enthaelt das Blatt
Finance Summary. Management Analysehat einen fuehrenden ReiterFinance Summary.- Dieser Reiter nutzt dieselbe
FinanceRuleEnginewie das zentrale Excel. - Filter fuer Jahr, Land und Waehrung wirken auf das Finance-Endergebnis.
- Die alte Management-/Rohdatenansicht bleibt nur als Diagnose-/Plausibilitaetssicht erhalten.
- DE 2026 zeigt keinen Fehler mehr, sondern wegen DE/Alphaplan-2025-Zwang einen leeren Zustand mit Hinweis.
Anwenderdoku:
docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docxdocs/finance_cockpit_preview.png
Validierung:
dotnet test TrafagSalesExporter.sln --verbosity minimal- Ergebnis:
77/77Tests gruen.
Dieses Dokument haelt die fachlichen Entscheide fuer den Finance-Abgleich fest. Es ist die verbindliche Grundlage fuer das Testprogramm, die zentrale Tabelle und den Soll/Ist-Abgleich gegen check.xlsx.
Grundsatz
Net Sales Actuals werden pro Land aus dem Landessystem gelesen, in der fachlich fuehrenden Hauswaehrung bewertet und gegen die Sollwerte aus check.xlsx verglichen.
Die Logik darf nicht auf einzelne Testzahlen optimiert werden. Sie muss je Jahr gleich funktionieren, sofern Sollwerte und Budgetkurse fuer das jeweilige Jahr gepflegt sind.
Entscheide
| Thema | Entscheid |
|---|---|
| Fuehrende Waehrung | Immer Hauswaehrung des Landessystems. |
| CHF-Umrechnung | Nur als separater Kontroll-/Reporting-Kandidat ueber Budgetkurse. Keine SNB-Tageskurse fuer den Standardabgleich. |
| Aggregation | Pro Artikel bzw. Belegposition rechnen und summieren. |
| Wertbasis | Nettofakturawert. |
| Jahresabgrenzung | Buchungsdatum. |
| Gutschriften/Storno | Separat als eigene Beleg-/Positionszeilen ausweisen. Immer ueber Artikelnummer/Positionslogik behandeln. |
| Intercompany | In einem zweiten Schritt als 2nd-party/IC ausweisen. Nicht still aus dem Standard-Ist entfernen. |
Landesspezifische Praezisierungen
| Land | Entscheid / Regel |
|---|---|
| IN | Immer indische Rupien (INR) als Hauswaehrung. Gemischte Belegwaehrungen duerfen nicht als fachliche Summenwaehrung ausgewiesen werden. |
| IT | Hauswaehrung verwenden. Intercompany separat ausweisen und weiter fachlich abgrenzen. |
| UK | Sage/Manual-Excel. Hauswaehrung GBP verwenden. Netto ohne VAT; Credit Notes muessen negativ in die Summe laufen. |
| CH / AT | SAP-ZSCHWEIZ liefert Schweiz und Oesterreich aus gleichem System; Trennung ueber Buchungskreis bzw. Reporting-Land. |
| DE | Alphaplan-Excel; finaler Jahresfile docs/2025_DataExport_DE.xlsx liegt vor. Provisorisches Mapping nutzt NettoPreisGesamtX als SalesPriceValue. Fachlich offen bleibt, welche Kundenlaender fuer den Sollwert eingeschlossen werden. |
| ES | Sage-CSV. ImporteNeto als Nettozeile ohne VAT verwenden; Credit Notes/REC negativ; Datumsbasis ist FechaFactura, solange Finance nichts anderes vorgibt. |
Intercompany / 2nd Party
Intercompany wird ueber stabile Kundenregeln klassifiziert. Aktuelle fachliche Marker:
TRAFAGMAGNETIC SENSEMAGNETS SENSEGESELLSCHAFT FUER SENSORIKGESELLSCHAFT FUR SENSORIK
Weitere Uebersetzungen, Kundennummern oder lokale Schreibweisen muessen bei Bedarf ergaenzt werden.
Ergebnis im Reporting:
- Standard-Ist bleibt inklusive aller Positionen.
- 2nd-party/IC wird als separater Betrag und als Sicht "ohne 2nd-party" gezeigt.
- Finance entscheidet danach, ob und wo IC fuer offizielle Abgrenzungen ausgeschlossen wird.
Technische Umsetzung im Programm
| Regel | Umsetzung |
|---|---|
| Buchungsdatum | PostingDate in SalesRecord und CentralSalesRecord; Finance-Abgleich filtert nach PostingDate. |
| Fallback Datum | Nur falls Quelle kein Buchungsdatum liefert: InvoiceDate, danach ExtractionDate. |
| Hauswaehrung | Finance-Abgleich weist bekannte Land-Hauswaehrungen aus, z. B. INR fuer Indien und GBP fuer UK. |
| Nettofakturawert | Kandidat Nettofakturawert Hauswaehrung pro Position. |
| B1-Belegkopfwerte | Wiederholte DocTotal - VatSum-Werte werden erkannt, damit Belegkopfwerte nicht pro Position multipliziert werden. |
| Budget-CHF | Budgetkurs-Kandidat wird aus Hauswaehrung pro Position gerechnet. |
| IC | FinanceIntercompanyRules klassifizieren 2nd-party/IC. |
Aktuelle Kontrollpunkte
- UK: Aktuell
3'533'710.09 GBPbei1'880Zeilen gegen Soll LC3'538'972.00 GBP; Differenz-5'261.91 GBP. UK wird gegen Local Currency/GBP geprueft; der fruehereCheckValue 3'749'865.00ist fuer UK entfernt. Mapping ist Sage-Netto:Sales Price/Value * Quantity, Credit Notes werden bei erkennbarem Sage-Typ negativ erzwungen. - IN: Anzeige muss fachlich
INRzeigen, auch wenn Quellzeilen verschiedene Belegwaehrungen enthalten. - IT: IC-Kundenliste final bestaetigen.
- CH / AT: echtes SAP-Buchungsdatum pruefen, falls
ZSCHWEIZaktuell nur Fakturadatum liefert. - DE: finaler Alphaplan-Jahresfile liegt vor und ist technisch mappbar. Rohsumme
NettoPreisGesamtXkomplett ist4'154'690.05 EUR; nurLand Kunde = Deutschlandist3'455'276.64 EUR; Sollwert ist3'635'923.00 EUR. Offene Fachfrage: welche Kundenlaender/Abgrenzungen gehoeren offiziell zu DE? - ES:
3'082'320.18 EURist laut Sitzung fachlich plausibel und entspricht der korrigierten Referenz. CSV nutztImporteNeto; Credit Notes/REC sind negativ. Der fruehere Sollwert3'102'333.61war ein Referenz-/Excel-Fehler.
Pruefstand 2026-05-11
Die Finance-Regeln wurden im Code abgesichert und mit Tests geprueft.
Geprueft:
- Finance-Abgleich nutzt
PostingDatefuer die Jahresabgrenzung. - FinanceProbe-Coverage nutzt ebenfalls
PostingDate. - Indien wird in der Finance-Logik als
INR-Hauswaehrung ausgewiesen, auch wenn die Quellzeilen verschiedene Belegwaehrungen enthalten. - UK wird als
GBP-Hauswaehrung ausgewiesen. - Wiederholte B1-Belegkopfwerte werden erkannt, damit
DocTotal - VatSumnicht pro Position multipliziert wird. - 2nd-party/IC bleibt separat sichtbar.
Testergebnis:
dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore -p:UseAppHost=false --verbosity minimal
Ergebnis:
58/58 Tests gruen
Bekannte Warnungen:
- MudBlazor Analyzer meldet bestehende
Dense-Attribute in einzelnen Razor-Komponenten. - NuGet-Sicherheitsdaten konnten lokal nicht von
api.nuget.orggeladen werden.
UK / England Befund
England/UK ist im System vorhanden und wird im FinanceProbe-Abgleich angezeigt.
Aktueller Befund aus der Probe:
| Kennzahl | Wert |
|---|---|
| Land | UK / England |
| TSC | TRUK |
| Hauswaehrung | GBP |
| Geladene Zeilen | 1'881 |
| Ist-Wert | 395'605.82 GBP |
| Sollwert check.xlsx | 3'749'865.00 |
| Differenz | -3'354'259.18 |
Interpretation:
- Die UK-Zahl ist fachlich nicht plausibel als Jahreswert.
- Wahrscheinlich wurde nur eine Teilmenge bzw. eine Monatsdatei geladen.
- Der SharePoint-Ordner
Import/Finance/UK_B1enthaelt Dateien nach MusterddMMyy_TRUK.xlsx, z. B.010426_TRUK.xlsxund010526_TRUK.xlsx. - Die App soll die neueste passende Datei lesen. Fuer einen Jahresvergleich muss geklaert werden, ob die neueste Datei kumulierte Jahresdaten oder nur Monatsdaten enthaelt.
Naechster fachlicher Check fuer UK:
- Bestaetigen, ob
010526_TRUK.xlsxkumuliert Januar bis Mai oder nur Mai enthaelt. - Falls Monatsdateien geliefert werden, muss Finance entscheiden:
- alle Monatsdateien 2025 aufsummieren, oder
- nur einen kumulierten Jahresfile lesen.
Nachtrag 2026-05-11: UK_B1 Mapping
Der UK-Befund wurde nachtraeglich technisch untersucht.
Wichtige Feststellungen:
- Korrektur 2026-05-18: England / UK ist fachlich Sage, nicht SAP B1.
UK_B1ist im aktuellen Projektstand der SharePoint-Ordner- bzw. Quellreferenzname, aber keine Aussage, dass UK ueber SAP Business One / B1-HANA gelesen wird.- Der Standort ist
England,TSC = TRUK,SourceSystem = MANUAL_EXCEL. - Der korrekte SharePoint-Ordner ist:
https://trafagag.sharepoint.com/sites/WorldwideBIPlatform/Import/Finance/UK_B1
- Lokal war fuer
TRUKkein grafisches Manual-Excel-Mapping vorhanden. - Dadurch hat der Fallback-Importer
Sales Price/Valuedirekt als Positionswert uebernommen. - In der UK-Sage-Datei ist
Sales Price/Valueaber ein Stueckpreis. - Der fachliche Positionswert muss pro Belegposition berechnet werden:
Positionswert = [Sales Price/Value] * [Quantity]
Technische Probe auf den bereits importierten UK-Zeilen:
| Variante | Wert |
|---|---|
Bisherige Summe SalesPriceValue |
395'605.82 GBP |
Rekonstruierte Summe SalesPriceValue * Quantity |
3'533'348.89 GBP |
| Sollwert check.xlsx | 3'749'865.00 GBP |
| Restdifferenz nach Multiplikation | ca. -216'516.11 GBP |
Bewertung:
- Die grosse UK-Abweichung war hauptsaechlich ein Mapping-Fehler.
- Nach korrekter Multiplikation bleibt eine relevante Restdifferenz.
- Diese Restdifferenz muss gegen UK-/Sage-spezifische Netto-/Discount-/Fracht-/Nebenpositionsspalten oder eine andere Abgrenzung im UK-Export geprueft werden.
- Die bisherige Interpretation "nur Monatsfile/Teilmenge" ist nicht mehr die wahrscheinlichste Hauptursache, bleibt aber als Datenvollstaendigkeitscheck offen.
- UK darf nicht mit B1-Belegkopfregeln von FR/IT verwechselt werden.
Ziel-Mapping fuer TRUK:
| Zielfeld | Quelle |
|---|---|
Tsc |
TSC |
Land |
Land |
InvoiceNumber |
Invoice Number |
PositionOnInvoice |
Position on invoice |
Material |
Material |
Name |
Name |
ProductGroup |
Product Group |
Quantity |
Quantity |
CustomerNumber |
Customer number |
CustomerName |
Customer name |
CustomerCountry |
Customer country |
SalesPriceValue |
=[Sales Price/Value]*[Quantity] |
SalesCurrency |
=GBP |
DocumentCurrency |
=GBP |
CompanyCurrency |
=GBP |
PostingDate |
invoice date |
InvoiceDate |
invoice date |
DocumentType |
=Manual Excel |
Code-Stand dazu:
ManualExcelImportServiceunterstuetzt im grafischen Manual-Excel-Mapping einfache Multiplikationsausdruecke mit Excel-Headern:
=[Header A]*[Header B]
- Konstanten wie
=GBPfunktionieren unveraendert. DatabaseSeedServicerepariert den alten/falschen England-Pfad aufUK_B1und seedet dasTRUK-Mapping.- Ein Unit-Test prueft, dass
SalesPriceValue = [Sales Price/Value] * [Quantity]korrekt gelesen wird.
Aktueller Verifikationsstand:
- Die neue UK-Mapping-Logik ist implementiert.
DatabaseSeedServiceseedet das UK-Mapping nur, wennManualExcelColumnMappingssauber aufSitesreferenziert.- Damit blockieren alte SQLite-Reparaturreferenzen wie
Sites_repair_oldden Initialisierungslauf nicht mehr. - Der volle Testlauf ist gruen:
59/59 Tests gruen
Naechster praktischer Schritt:
- App oder FinanceProbe starten, damit die lokale DB den Seed/Repair bekommt.
- Danach UK per
/run/export/TRUKgegen SharePointUK_B1neu laden. - Anschliessend
/financeerneut gegencheck.xlsxpruefen.
Praktischer Nachtrag:
- Lokale DB ist aktualisiert:
TRUKhat denUK_B1-Pfad und18aktive Mapping-Zeilen. - FinanceProbe laeuft auf
http://127.0.0.1:5099und/financeantwortet. - Der neue
/run/export/TRUK-Lauf konnte noch nicht abgeschlossen werden, weil die lokale SharePoint-/Graph-Authentifizierung scheitert:
ClientSecretCredential authentication failed
127.0.0.1:9 connection refused
- Bis dieser Zugriff funktioniert, bleibt
CentralSalesRecordsfuer UK auf dem alten Importstand.