14 KiB
Finance Berechnungsformeln pro Land
Stand: 2026-06-01
Nachtrag 2026-06-01:
- ES-Referenz 2025 wurde nach Finance-Sitzung auf
3'082'320.18 EURkorrigiert. Der alte Wert3'102'333.61 EURwar ein Referenz-/Excel-Fehler. - In Management-Analysen ist das Wechselkurs-Anwendungsdatum konfigurierbar:
PostingDate,InvoiceDateoderExtractionDate. - Sparten-Materialabgleich normalisiert fuehrende Nullen und warnt bei >=90% ungeklaerter Abdeckung.
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.
Gemeinsame Vergleichslogik
Die echte Webseite /finance-cockpit/vergleich und das Testprogramm /finance verwenden beide FinanceReconciliationService.
Quelle fuer den Ist-Wert ist immer CentralSalesRecords. Die Jahresabgrenzung ist:
Jahr = Year(PostingDate ?? InvoiceDate ?? ExtractionDate)
Fuer 2025 werden die Zeilen je Land gruppiert. Die Gruppierung laeuft ueber ResolveReferenceKey(Land, Tsc).
Pro Land berechnet das Programm mehrere Kandidaten:
SalesPriceValue
= Sum(CentralSalesRecords.SalesPriceValue)
DocTotalFC - VatSumFC
= Sum(DocumentTotalForeignCurrency - VatSumForeignCurrency)
= pro Beleg dedupliziert
Nettofakturawert Hauswaehrung pro Position
= Sum(DocumentTotalLocalCurrency - VatSumLocalCurrency)
= ueber alle Positionen
Nettofakturawert Hauswaehrung pro Beleg dedupliziert
= Sum(DocumentTotalLocalCurrency - VatSumLocalCurrency)
= pro Beleg nur einmal
Nettofakturawert Hauswaehrung -> CHF Budget 2025
= Sum((DocumentTotalLocalCurrency - VatSumLocalCurrency) * Budgetkurs nach CHF)
Belegschluessel fuer Deduplizierung:
DocumentEntry > 0:
Tsc + DocumentType + DocumentEntry
sonst:
Tsc + DocumentType + InvoiceNumber
Auswahl des Haupt-Ist-Werts:
1. Kandidat mit IsPreferred = true
2. sonst Nettofakturawert Hauswaehrung pro Position
3. sonst Nettofakturawert Hauswaehrung pro Beleg dedupliziert
4. sonst SalesPriceValue
IsPreferred wird so gesetzt:
SalesPriceValue:
bevorzugt, wenn Belegkopfwerte wiederholt aussehen und SalesPriceValue != 0
Nettofakturawert Hauswaehrung pro Position:
bevorzugt, wenn Belegkopfwerte nicht wiederholt aussehen
Nettofakturawert Hauswaehrung pro Beleg dedupliziert:
bevorzugt, wenn Belegkopfwerte wiederholt aussehen und SalesPriceValue == 0
Vergleich gegen Soll:
ReferenceValue = FinanceReference.CheckValue ?? FinanceReference.LocalCurrencyValue
Differenz = IstValue - ReferenceValue
Status OK, wenn Abs(Differenz) <= 1
Intercompany-Abzug ist aktuell nur Diagnose:
ValueExcludingIntercompany = Value - IntercompanyValue
Der IC-Abzug veraendert die Originaldaten und den Haupt-Ist-Wert nicht.
Quellen und Formeln pro Land
| Land | Key | Quelle | Hauswaehrung | Soll/Referenz 2025 | Aktueller Haupt-Ist-Wert |
|---|---|---|---|---|---|
| Schweiz | CH | SAP OData ZSCHWEIZ, falls importiert |
CHF | leer | kein Sollwert im Seed |
| Oesterreich | AT | SAP OData ZSCHWEIZ, falls importiert |
EUR | 3'443'863 | gemeinsame Logik |
| Deutschland | DE | nur falls Daten in CentralSalesRecords vorhanden |
EUR | 3'635'923 | gemeinsame Logik |
| Spanien | ES | Sage SQL CSV / Manual Excel | EUR | 3'082'320.18 | SalesPriceValue aus Sage ImporteNeto |
| Frankreich | FR | SAP B1/HANA Schema fr01_p |
EUR | CheckValue 1'471'218 | SalesPriceValue / B1 Positions-Netto |
| Indien | IN | Sage/HANA TRAFAG_LIVE |
INR | CheckValue 750'936'591 | Hauswaehrung INR |
| Italien | IT | SAP B1/HANA Schema it01_p |
EUR | 7'669'840 | B1 Positions-Netto mit provisorischem Filter |
| UK | UK | Manual Excel aus Sage, Ordnername UK_B1 nur technisch |
GBP | 3'538'972 | SageNetSales in GBP |
| USA | US | SAP B1/HANA Schema us01_p |
USD | CheckValue 3'749'865 | SalesPriceValue / B1 Positions-Netto |
Hinweis: Der Nutzer schrieb frueher teilweise AZ; im Programm ist der Referenz-Key fuer Oesterreich AT.
CH und AT
Aktuelle Quelle:
SourceSystem = SAP
TSC = ZSCHWEIZ
EntitySet = FinanzdataSchweizOeSet
Aktuelles Mapping:
SalesPriceValue = Z.NetwrHc
SalesCurrency = Z.Hwaer
DocumentCurrency = Z.Waerk
DocumentTotalForeignCurrency = Z.NetwrDc
DocumentTotalLocalCurrency = Z.NetwrHc
VatSumForeignCurrency = 0
VatSumLocalCurrency = 0
PostingDate = Z.Fkdat
InvoiceDate = Z.Fkdat
DocumentType = Z.Fkart
Formel:
Ist = Sum(Z.NetwrHc)
Da VatSumLocalCurrency = 0 und DocumentTotalLocalCurrency = SalesPriceValue = Z.NetwrHc, fuehren SalesPriceValue und Nettofakturawert Hauswaehrung auf denselben fachlichen Wert, sofern die SAP-OData-Zeilen positionsbezogen sind.
Offen:
CH hat aktuell keinen FinanceReference-Sollwert.
AT hat Soll 3'443'863 EUR.
Ob FKDAT fuer diese Quelle fachlich Buchungsdatum oder Fakturadatum ist, muss bei Bedarf noch bestaetigt werden.
DE
Aktuelle Quelle:
SourceSystem = MANUAL_EXCEL
Fachlich = Alphaplan Excel
TSC = TRDE
Land = Deutschland
Aktueller Datei-/Teststand = docs/2025_DataExport_DE.xlsx
Aktueller Referenzwert:
FinanceReference.DE.LocalCurrencyValue = 3'635'923
Hauswaehrung = EUR
Provisorisches Import-Mapping:
SalesPriceValue = NettoPreisGesamtX
InvoiceNumber = Belegnummer
PositionOnInvoice = Position
Material = ArtikelNummer
Name = ArtikelBezeichnung
ProductGroup = Warengruppen-Bezeichnung
Quantity = Anz. VE
SupplierNumber = Lieferanten Nummer
SupplierName = Name Lieferant
SupplierCountry = Land Lieferant
CustomerNumber = AdressNummer-Kunde
CustomerName = Name Kunde
CustomerCountry = Land Kunde
CustomerIndustry = Branche
StandardCost = EinstandsPreis
SalesCurrency / DocumentCurrency / CompanyCurrency = Waehrung
Incoterms2020 = Versandbedingung
SalesResponsibleEmployee = AdressNummer_V
PostingDate / InvoiceDate = Belegdatum-Rechnung
OrderDate = BelegDatum Auftrag
DocumentType = Alphaplan Excel
Technischer Ablauf:
DE wird als manueller Excel-Standort vorbereitet.
Nach Upload/Pfad setzen und Aktivieren wird die Alphaplan-Datei beim Standortexport gelesen.
Die gelesenen Zeilen werden in CentralSalesRecords gespeichert.
Die zentrale Excel enthaelt danach DE-Zeilen mit Finance | Country Key = DE.
Erster Befund aus docs/2025_DataExport_DE.xlsx:
Zeilen: 6'198 Datenzeilen
Summe NettoPreisGesamtX komplett: 4'154'690.05 EUR
Nur Land Kunde = Deutschland: 3'455'276.64 EUR
Deutschland + China: 3'647'592.44 EUR
Sollwert DE: 3'635'923.00 EUR
Offen:
- Finance muss bestaetigen, welche Kundenlaender fuer DE zum offiziellen Ist gehoeren.
- Manager-Input nennt Warengruppen-Codes und Versandbedingungs-Codes, im Excel sind aktuell primär Bezeichnungen/Texte sichtbar.
- Falls nach Codes gefiltert werden soll, braucht der Export eigene Code-Spalten oder eine eindeutige Mapping-Tabelle Text -> Code.
ES
Aktuelle Quelle:
SourceSystem = MANUAL_EXCEL / Sage CSV
TSC = TRES
Land = Spanien
Exportskripte:
scripts/Export-SageSpainSalesCsv.ps1
SageSpainExportPackage/SageSpainFinalExportPackage/Export-SageSpainSalesCsv.ps1
Sage-SQL-Formel im Export:
SalesPriceValue = LineasAlbaranCliente.ImporteNeto
wenn c.TipoNuevaFra = 2
oder c.SerieFactura = 'REC'
oder c.StatusAbono <> 0:
SalesPriceValue = -ABS(LineasAlbaranCliente.ImporteNeto)
sonst:
SalesPriceValue = LineasAlbaranCliente.ImporteNeto
SalesCurrency = EUR
DocumentCurrency = EUR
CompanyCurrency = EUR
Formel im Vergleich:
Ist ES = Sum(SalesPriceValue)
Soll ES = 3'082'320.18 EUR
Bekannter Stand:
Ist ca. 3'082'320.18 EUR
Differenz ca. 0.00 EUR
Offen:
Die fruehere Abweichung entstand aus einem falschen Soll-/Referenzwert.
Falls Audit gefragt ist, muss die Herkunft des alten Werts 3'102'333.61 EUR nachvollzogen werden.
FR
Aktuelle Quelle:
SourceSystem = BI1
HANA Schema = fr01_p
SAP B1 Tabellen = OINV/INV1 und ORIN/RIN1
B1-HANA-Formel im Import:
Invoices:
SalesPriceValue = INV1.LineTotal
Quantity = INV1.Quantity
PostingDate = OINV.DocDate
InvoiceDate = OINV.TaxDate
DocumentTotalLC = OINV.DocTotal
VatSumLC = OINV.VatSum
Credit Notes:
SalesPriceValue = RIN1.LineTotal * -1
Quantity = RIN1.Quantity * -1
PostingDate = ORIN.DocDate
InvoiceDate = ORIN.TaxDate
DocumentTotalLC = ORIN.DocTotal * -1
VatSumLC = ORIN.VatSum * -1
Kein landesspezifischer Kontenfilter fuer FR.
Formel im Vergleich:
Ist FR = Sum(SalesPriceValue)
Soll FR = CheckValue 1'471'218 EUR
Bekannter Stand:
Ist ca. 1'471'218.44 EUR
Differenz ca. +0.44 EUR
IN
Aktuelle Quelle:
SourceSystem = SAGE
HANA Schema = TRAFAG_LIVE
TSC = TRIN
Hauswaehrung = INR
Formel im Vergleich:
Ist IN = bevorzugter Kandidat in Hauswaehrung INR
Soll IN = CheckValue 750'936'591 INR
Praktischer Effekt:
Die INR-Hauswaehrung ist fuer den Soll/Ist-Vergleich fuehrend.
CHF-Budgetwert ist nur ein Kandidat, nicht der Hauptvergleich.
Bekannter Stand:
Ist ca. 750'936'591.38 INR
Differenz ca. +0.38 INR
Offen:
Die genaue Sage/HANA-Quelltabellenformel fuer IN ist in dieser Datei nicht separat aufgeschluesselt.
Gegenpruefung sollte in CentralSalesRecords kontrollieren, welcher Kandidat als preferred gewaehlt wird.
IT
Aktuelle Quelle:
SourceSystem = BI1
HANA Schema = it01_p
SAP B1 Tabellen = OINV/INV1 und ORIN/RIN1
B1-HANA-Grundformel wie FR:
Invoices:
SalesPriceValue = INV1.LineTotal
PostingDate = OINV.DocDate
Credit Notes:
SalesPriceValue = RIN1.LineTotal * -1
PostingDate = ORIN.DocDate
Zusaetzlicher provisorischer Filter in HanaQueryService.BuildRevenueAccountFilter:
AND p."AcctCode" LIKE '47005%'
AND p."AcctCode" NOT LIKE '4700504%'
AND h."CardCode" NOT IN (
'C_IT01_0022987',
'C_IT01_0306928',
'C_IT01_0306138',
'C_IT01_0309653',
'C_IT01_0304885',
'C_IT01_0306475'
)
Formel im Vergleich:
Ist IT = Sum(SalesPriceValue) nach obigem B1-Filter und IT-Finance-Abgrenzung
Soll IT = 7'669'840 EUR
Zusaetzliche IT-Finance-Abgrenzung, Stand 2026-05-20:
1. CustomerName enthaelt "Trafag Italia" => aus IT-Finance-Ist ausschliessen.
2. IT-Zeilen mit leerem Supplier country => identische Zeile nur einmal zaehlen.
Diese Methode ist gemaess Finance-Leiter fachlich korrekt. Die alte Kundenausschluss-Kombination traf 2025 zufaellig naeher, ist aber nicht die zukunftssichere Methode.
Bekannter Stand:
Ist ca. 7'669'641.47 EUR
Differenz ca. -198.53 EUR
Wichtiger Pruefhinweis:
Dieser IT-Filter ist noch hart in der HANA-Abfrage codiert.
Er ist ein Arbeitsfilter aus Screenshot/Cache und muss spaeter in eine konfigurierbare Site-/Source-Regel verschoben werden,
wenn Italien die fachliche B1/Rhino-Regel bestaetigt.
UK
Aktuelle Quelle:
SourceSystem = MANUAL_EXCEL
Fachlich = Sage
TSC = TRUK
SharePoint-Ordner = Import/Finance/UK_B1
Wichtig:
Der Ordnername UK_B1 ist nur technisch. UK ist fachlich Sage, nicht SAP B1.
Aktuelles Manual-Excel-Mapping:
SalesPriceValue = SageNetSales([Sales Price/Value], [Quantity], [Document Type], [DocumentType], [Type])
SalesCurrency = GBP
DocumentCurrency = GBP
CompanyCurrency = GBP
PostingDate = invoice date
InvoiceDate = invoice date
SageNetSales(...) im Importer:
netLineAmount = amount * quantity
wenn DocumentType CREDIT, CREDIT NOTE, CREDITNOTE, ABONO, GUTSCHRIFT, CRN oder CN enthaelt:
SalesPriceValue = -ABS(netLineAmount)
sonst:
SalesPriceValue = netLineAmount
Formel im Vergleich:
Ist UK = Sum(SalesPriceValue) in GBP
Soll UK = LocalCurrencyValue 3'538'972 GBP
Bekannter Stand:
Ist ca. 3'533'710.09 GBP
Differenz ca. -5'261.91 GBP
Offen:
UK-Abweichung ueber Sage-Exportvollstaendigkeit, Discounts, Freight/Charges,
Gutschriften und 2nd-party-Abgrenzung pruefen.
US
Aktuelle Quelle:
SourceSystem = BI1
HANA Schema = us01_p
SAP B1 Tabellen = OINV/INV1 und ORIN/RIN1
Hauswaehrung = USD
B1-HANA-Formel wie FR:
Invoices:
SalesPriceValue = INV1.LineTotal
PostingDate = OINV.DocDate
Credit Notes:
SalesPriceValue = RIN1.LineTotal * -1
PostingDate = ORIN.DocDate
Formel im Vergleich:
Ist US = Sum(SalesPriceValue) in USD
Soll US = CheckValue 3'749'865 USD
Bekannter Stand:
Ist ca. 3'749'865.33 USD
Differenz ca. +0.33 USD
Was nicht verwechselt werden darf
Soll/Ist-Vergleich:
FinanceReconciliationService, gleiche Logik in Webseite und Testprogramm.
Import/Transformation:
SiteExportService liest Quelle -> wendet RecordTransformationService.Apply(records, rules) an -> schreibt CentralSalesRecords.
UK/ES Sage-Korrektur:
in bestehendem Import-/Exportpfad umgesetzt, nicht als separate nachtraegliche Vergleichsklasse.
IT:
aktuell noch provisorischer Hardcode in HanaQueryService fuer Schema it01_p.
Code-Stellen fuer Gegenpruefung
Services/FinanceReconciliationService.cs
globale Kandidaten, Auswahl, Soll/Ist-Differenz, Jahrabgrenzung
Services/HanaQueryService.cs
SAP B1/HANA Importformel fuer FR/IT/US und IT-Sonderfilter
Services/ManualExcelImportService.cs
SageNetSales(...) fuer UK Manual Excel Import
Services/DatabaseSeedService.cs
FinanceReference-Sollwerte, UK Mapping, ZSCHWEIZ Mapping, Default-Waehrungen
scripts/Export-SageSpainSalesCsv.ps1
SageSpainExportPackage/SageSpainFinalExportPackage/Export-SageSpainSalesCsv.ps1
Spanien Sage SQL Export und Gutschrift-Logik