Update finance training and dashboard UI
This commit is contained in:
@@ -37,16 +37,26 @@
|
|||||||
}
|
}
|
||||||
</MudText>
|
</MudText>
|
||||||
</MudStack>
|
</MudStack>
|
||||||
<div class="dashboard-manometer" aria-label="Export activity manometer">
|
<div class="dashboard-manometer">
|
||||||
<div class="manometer-arc">
|
<svg class="manometer-svg" viewBox="0 0 210 118" role="img" aria-label="Export activity manometer">
|
||||||
<span class="tick tick-0"></span>
|
<path class="manometer-outer" d="M25 98 A80 80 0 0 1 185 98" />
|
||||||
<span class="tick tick-1"></span>
|
<path class="manometer-inner" d="M47 98 A58 58 0 0 1 163 98" />
|
||||||
<span class="tick tick-2"></span>
|
<line class="manometer-tick" x1="38" y1="98" x2="56" y2="98" />
|
||||||
<span class="tick tick-3"></span>
|
<line class="manometer-tick" x1="61" y1="54" x2="74" y2="67" />
|
||||||
<span class="tick tick-4"></span>
|
<line class="manometer-tick" x1="105" y1="34" x2="105" y2="52" />
|
||||||
<span class="needle"></span>
|
<line class="manometer-tick" x1="149" y1="54" x2="136" y2="67" />
|
||||||
<span class="hub"></span>
|
<line class="manometer-tick" x1="172" y1="98" x2="154" y2="98" />
|
||||||
</div>
|
<text class="manometer-label" x="43" y="89">0</text>
|
||||||
|
<text class="manometer-label" x="67" y="53">25</text>
|
||||||
|
<text class="manometer-label" x="105" y="28">50</text>
|
||||||
|
<text class="manometer-label" x="143" y="53">75</text>
|
||||||
|
<text class="manometer-label" x="167" y="89">100</text>
|
||||||
|
<text class="manometer-caption" x="105" y="113">EXPORT</text>
|
||||||
|
<g class="manometer-needle">
|
||||||
|
<line class="needle-line" x1="105" y1="98" x2="105" y2="38" />
|
||||||
|
</g>
|
||||||
|
<circle class="manometer-hub" cx="105" cy="98" r="11" />
|
||||||
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
@@ -211,87 +221,80 @@
|
|||||||
justify-self: end;
|
justify-self: end;
|
||||||
width: 210px;
|
width: 210px;
|
||||||
height: 118px;
|
height: 118px;
|
||||||
display: flex;
|
|
||||||
align-items: flex-end;
|
|
||||||
justify-content: center;
|
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border: 1px solid #111;
|
border: 1px solid #111;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
padding: 12px 14px 10px;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.manometer-arc {
|
.manometer-svg {
|
||||||
position: relative;
|
display: block;
|
||||||
width: 170px;
|
width: 100%;
|
||||||
height: 86px;
|
height: 100%;
|
||||||
border: 8px solid #111;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-radius: 170px 170px 0 0;
|
|
||||||
background: #fff;
|
|
||||||
overflow: visible;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.manometer-arc::before {
|
.manometer-outer,
|
||||||
content: "";
|
.manometer-inner {
|
||||||
position: absolute;
|
fill: none;
|
||||||
left: 14px;
|
stroke: #111;
|
||||||
right: 14px;
|
stroke-linecap: square;
|
||||||
bottom: -1px;
|
|
||||||
height: 70px;
|
|
||||||
border: 2px solid #111;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-radius: 140px 140px 0 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tick {
|
.manometer-outer {
|
||||||
position: absolute;
|
stroke-width: 8;
|
||||||
left: 50%;
|
|
||||||
bottom: 0;
|
|
||||||
width: 3px;
|
|
||||||
height: 16px;
|
|
||||||
background: #111;
|
|
||||||
transform-origin: 50% 78px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tick-0 { transform: translateX(-50%) rotate(-70deg); }
|
.manometer-inner {
|
||||||
.tick-1 { transform: translateX(-50%) rotate(-35deg); }
|
stroke-width: 2;
|
||||||
.tick-2 { transform: translateX(-50%) rotate(0deg); }
|
}
|
||||||
.tick-3 { transform: translateX(-50%) rotate(35deg); }
|
|
||||||
.tick-4 { transform: translateX(-50%) rotate(70deg); }
|
|
||||||
|
|
||||||
.needle {
|
.manometer-tick,
|
||||||
position: absolute;
|
.needle-line {
|
||||||
left: 50%;
|
stroke: #111;
|
||||||
bottom: 0;
|
stroke-width: 3;
|
||||||
width: 4px;
|
stroke-linecap: square;
|
||||||
height: 72px;
|
}
|
||||||
background: #111;
|
|
||||||
border-radius: 4px;
|
.manometer-needle {
|
||||||
transform-origin: 50% 100%;
|
transform-box: view-box;
|
||||||
|
transform-origin: 105px 98px;
|
||||||
animation: manometer-sweep 5.8s infinite cubic-bezier(.45, 0, .25, 1);
|
animation: manometer-sweep 5.8s infinite cubic-bezier(.45, 0, .25, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.hub {
|
.manometer-hub {
|
||||||
position: absolute;
|
fill: #111;
|
||||||
left: 50%;
|
}
|
||||||
bottom: -8px;
|
|
||||||
width: 22px;
|
.manometer-label,
|
||||||
height: 22px;
|
.manometer-caption {
|
||||||
border-radius: 50%;
|
fill: #111;
|
||||||
background: #111;
|
font-family: Arial, sans-serif;
|
||||||
transform: translateX(-50%);
|
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 {
|
@@keyframes manometer-sweep {
|
||||||
0% { transform: translateX(-50%) rotate(-52deg); }
|
0% { transform: rotate(-52deg); }
|
||||||
11% { transform: translateX(-50%) rotate(18deg); }
|
11% { transform: rotate(18deg); }
|
||||||
19% { transform: translateX(-50%) rotate(-8deg); }
|
19% { transform: rotate(-8deg); }
|
||||||
33% { transform: translateX(-50%) rotate(63deg); }
|
33% { transform: rotate(63deg); }
|
||||||
48% { transform: translateX(-50%) rotate(4deg); }
|
48% { transform: rotate(4deg); }
|
||||||
61% { transform: translateX(-50%) rotate(38deg); }
|
61% { transform: rotate(38deg); }
|
||||||
74% { transform: translateX(-50%) rotate(-41deg); }
|
74% { transform: rotate(-41deg); }
|
||||||
88% { transform: translateX(-50%) rotate(55deg); }
|
88% { transform: rotate(55deg); }
|
||||||
100% { transform: translateX(-50%) rotate(-52deg); }
|
100% { transform: rotate(-52deg); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@media (max-width: 900px) {
|
@@media (max-width: 900px) {
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
@if (_financeResult is not null)
|
@if (_financeResult is not null)
|
||||||
{
|
{
|
||||||
<MudTabs Elevation="1" Rounded="false" PanelClass="pt-4" @bind-ActivePanelIndex="_activeOverviewTabIndex">
|
<MudTabs Class="management-side-nav-tabs" Elevation="0" Rounded="false" PanelClass="pt-0" @bind-ActivePanelIndex="_activeOverviewTabIndex">
|
||||||
<MudTabPanel Text="@T("Schnelluebersicht", "Quick overview")" Icon="@Icons.Material.Filled.Speed">
|
<MudTabPanel Text="@T("Schnelluebersicht", "Quick overview")" Icon="@Icons.Material.Filled.Speed">
|
||||||
<MudGrid Class="mb-4">
|
<MudGrid Class="mb-4">
|
||||||
<MudItem xs="12" sm="6" md="3">
|
<MudItem xs="12" sm="6" md="3">
|
||||||
@@ -84,9 +84,7 @@
|
|||||||
</MudItem>
|
</MudItem>
|
||||||
</MudGrid>
|
</MudGrid>
|
||||||
|
|
||||||
<MudTabs Elevation="0" Rounded="false" PanelClass="pt-4">
|
<MudPaper Class="pa-4 mb-4" Elevation="1">
|
||||||
<MudTabPanel Text="@T("Freigabe", "Approval")" Icon="@Icons.Material.Filled.FactCheck">
|
|
||||||
<MudPaper Class="pa-4" Elevation="1">
|
|
||||||
<MudText Typo="Typo.h6" Class="mb-2">@T("Finance-Freigabe je Land", "Finance approval by country")</MudText>
|
<MudText Typo="Typo.h6" Class="mb-2">@T("Finance-Freigabe je Land", "Finance approval by country")</MudText>
|
||||||
<MudTable Items="_financeResult.CountryRows" Dense Hover Striped>
|
<MudTable Items="_financeResult.CountryRows" Dense Hover Striped>
|
||||||
<HeaderContent>
|
<HeaderContent>
|
||||||
@@ -109,9 +107,7 @@
|
|||||||
</RowTemplate>
|
</RowTemplate>
|
||||||
</MudTable>
|
</MudTable>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
</MudTabPanel>
|
<MudPaper Class="pa-4 mb-4" Elevation="1">
|
||||||
<MudTabPanel Text="@T("Datenstand", "Data status")" Icon="@Icons.Material.Filled.Storage">
|
|
||||||
<MudPaper Class="pa-4" Elevation="1">
|
|
||||||
<MudText Typo="Typo.h6" Class="mb-2">@T("Letzter Datenstand je Standort", "Latest data status by site")</MudText>
|
<MudText Typo="Typo.h6" Class="mb-2">@T("Letzter Datenstand je Standort", "Latest data status by site")</MudText>
|
||||||
<MudTable Items="_financeResult.DataStatusRows" Dense Hover Striped>
|
<MudTable Items="_financeResult.DataStatusRows" Dense Hover Striped>
|
||||||
<HeaderContent>
|
<HeaderContent>
|
||||||
@@ -139,8 +135,6 @@
|
|||||||
</RowTemplate>
|
</RowTemplate>
|
||||||
</MudTable>
|
</MudTable>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
</MudTabPanel>
|
|
||||||
<MudTabPanel Text="@T("Sparten", "Divisions")" Icon="@Icons.Material.Filled.AccountTree">
|
|
||||||
<MudPaper Class="pa-4" Elevation="1">
|
<MudPaper Class="pa-4" Elevation="1">
|
||||||
<MudText Typo="Typo.h6" Class="mb-2">@T("Sparten-Abdeckung nach Land", "Division coverage by country")</MudText>
|
<MudText Typo="Typo.h6" Class="mb-2">@T("Sparten-Abdeckung nach Land", "Division coverage by country")</MudText>
|
||||||
<MudTable Items="_financeResult.ProductFinanceCountryRows" Dense Hover Striped>
|
<MudTable Items="_financeResult.ProductFinanceCountryRows" Dense Hover Striped>
|
||||||
@@ -162,12 +156,10 @@
|
|||||||
</RowTemplate>
|
</RowTemplate>
|
||||||
</MudTable>
|
</MudTable>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
</MudTabPanel>
|
|
||||||
</MudTabs>
|
|
||||||
</MudTabPanel>
|
</MudTabPanel>
|
||||||
|
|
||||||
<MudTabPanel Text="@T("Experten", "Experts")" Icon="@Icons.Material.Filled.Tune">
|
<MudTabPanel Text="@T("Experten", "Experts")" Icon="@Icons.Material.Filled.Tune">
|
||||||
<MudTabs Elevation="0" Rounded="false" PanelClass="pt-4" @bind-ActivePanelIndex="_activeFinanceTabIndex">
|
<MudTabs Class="management-side-nav-tabs" Elevation="0" Rounded="false" PanelClass="pt-0" @bind-ActivePanelIndex="_activeFinanceTabIndex">
|
||||||
<MudTabPanel Text="@T("Finance Summary", "Finance summary")" Icon="@Icons.Material.Filled.Dashboard">
|
<MudTabPanel Text="@T("Finance Summary", "Finance summary")" Icon="@Icons.Material.Filled.Dashboard">
|
||||||
<MudGrid Class="mb-4">
|
<MudGrid Class="mb-4">
|
||||||
<MudItem xs="12" sm="6" md="3">
|
<MudItem xs="12" sm="6" md="3">
|
||||||
@@ -409,7 +401,7 @@
|
|||||||
</MudPaper>
|
</MudPaper>
|
||||||
</MudTabPanel>
|
</MudTabPanel>
|
||||||
<MudTabPanel Text="@T("Spartenanalyse", "Division analysis")" Icon="@Icons.Material.Filled.AccountTree">
|
<MudTabPanel Text="@T("Spartenanalyse", "Division analysis")" Icon="@Icons.Material.Filled.AccountTree">
|
||||||
<MudTabs Elevation="0" Rounded="false" PanelClass="pt-4" @bind-ActivePanelIndex="_activeDivisionTabIndex">
|
<MudTabs Class="management-side-nav-tabs" Elevation="0" Rounded="false" PanelClass="pt-0" @bind-ActivePanelIndex="_activeDivisionTabIndex">
|
||||||
<MudTabPanel Text="@T("Finanzanalyse", "Finance analysis")" Icon="@Icons.Material.Filled.PieChart">
|
<MudTabPanel Text="@T("Finanzanalyse", "Finance analysis")" Icon="@Icons.Material.Filled.PieChart">
|
||||||
<MudGrid Class="mb-4">
|
<MudGrid Class="mb-4">
|
||||||
<MudItem xs="12" sm="6" md="3">
|
<MudItem xs="12" sm="6" md="3">
|
||||||
@@ -1108,6 +1100,12 @@
|
|||||||
</MudTabs>
|
</MudTabs>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.management-side-nav-tabs .mud-tabs-toolbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
[Parameter]
|
[Parameter]
|
||||||
[SupplyParameterFromQuery(Name = "section")]
|
[SupplyParameterFromQuery(Name = "section")]
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="1180" height="680" viewBox="0 0 1180 680" role="img" aria-labelledby="title desc">
|
||||||
|
<title id="title">Umschaltung zentrale Finance-Auswertungsquelle</title>
|
||||||
|
<desc id="desc">Zeigt, wie Finance-Auswertungen entweder aus CentralSalesRecords oder aus verarbeiteten Audit-CSV je Standort lesen.</desc>
|
||||||
|
<defs>
|
||||||
|
<marker id="arrow" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
|
||||||
|
<path d="M 0 0 L 10 5 L 0 10 z" fill="#334155" />
|
||||||
|
</marker>
|
||||||
|
<style>
|
||||||
|
.title { font: 700 29px Arial, sans-serif; fill: #0f172a; }
|
||||||
|
.subtitle { font: 400 16px Arial, sans-serif; fill: #475569; }
|
||||||
|
.box-title { font: 700 16px Arial, sans-serif; fill: #0f172a; }
|
||||||
|
.box-text { font: 400 13px Arial, sans-serif; fill: #334155; }
|
||||||
|
.small { font: 400 12px Arial, sans-serif; fill: #64748b; }
|
||||||
|
.line { stroke: #334155; stroke-width: 2.2; fill: none; marker-end: url(#arrow); }
|
||||||
|
.muted-line { stroke: #94a3b8; stroke-width: 1.5; fill: none; marker-end: url(#arrow); }
|
||||||
|
.settings { fill: #e0f2fe; stroke: #0284c7; }
|
||||||
|
.db { fill: #eef2ff; stroke: #4f46e5; }
|
||||||
|
.csv { fill: #ecfdf5; stroke: #059669; }
|
||||||
|
.output { fill: #fff7ed; stroke: #ea580c; }
|
||||||
|
.guard { fill: #fef2f2; stroke: #dc2626; }
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<rect x="0" y="0" width="1180" height="680" fill="#ffffff" />
|
||||||
|
<text x="48" y="54" class="title">Zentrale Auswertungsquelle: DB oder verarbeitete Audit-CSV</text>
|
||||||
|
<text x="48" y="82" class="subtitle">Der Schalter liegt unter Einstellungen > Export Einstellungen > Audit-CSV / nachvollziehbarer Datenfluss.</text>
|
||||||
|
|
||||||
|
<rect x="60" y="132" width="270" height="150" rx="8" class="settings" />
|
||||||
|
<text x="84" y="166" class="box-title">Settings</text>
|
||||||
|
<text x="84" y="195" class="box-text">Audit-CSV je Standort schreiben</text>
|
||||||
|
<text x="84" y="220" class="box-text">Zentrale Auswertung aus Audit-CSV</text>
|
||||||
|
<text x="84" y="249" class="small">Pfad: Lokaler Standardpfad Standort-Dateien</text>
|
||||||
|
|
||||||
|
<line x1="330" y1="207" x2="406" y2="207" class="line" />
|
||||||
|
|
||||||
|
<rect x="414" y="86" width="270" height="140" rx="8" class="db" />
|
||||||
|
<text x="438" y="120" class="box-title">Standard-Modus</text>
|
||||||
|
<text x="438" y="149" class="box-text">UseAuditCsvAsCentralSource = false</text>
|
||||||
|
<text x="438" y="177" class="box-text">Auswertung liest CentralSalesRecords.</text>
|
||||||
|
<text x="438" y="202" class="small">Schnell und operativ</text>
|
||||||
|
|
||||||
|
<rect x="414" y="292" width="270" height="160" rx="8" class="csv" />
|
||||||
|
<text x="438" y="326" class="box-title">Audit-Modus</text>
|
||||||
|
<text x="438" y="355" class="box-text">UseAuditCsvAsCentralSource = true</text>
|
||||||
|
<text x="438" y="383" class="box-text">Je TSC wird die neueste</text>
|
||||||
|
<text x="438" y="404" class="box-text">Sales_ProcessedMergeInput_*.csv gelesen.</text>
|
||||||
|
<text x="438" y="431" class="small">Lesbar fuer Finance und Revision</text>
|
||||||
|
|
||||||
|
<line x1="684" y1="156" x2="760" y2="238" class="line" />
|
||||||
|
<line x1="684" y1="372" x2="760" y2="302" class="line" />
|
||||||
|
|
||||||
|
<rect x="768" y="214" width="300" height="136" rx="8" class="output" />
|
||||||
|
<text x="792" y="248" class="box-title">Gleiche Finance-Logik</text>
|
||||||
|
<text x="792" y="277" class="box-text">FinanceRuleEngine</text>
|
||||||
|
<text x="792" y="300" class="box-text">Spartenanalyse</text>
|
||||||
|
<text x="792" y="323" class="box-text">Waehrungsanalyse bei Zielwaehrung</text>
|
||||||
|
|
||||||
|
<line x1="918" y1="350" x2="918" y2="416" class="line" />
|
||||||
|
|
||||||
|
<rect x="730" y="424" width="376" height="124" rx="8" class="output" />
|
||||||
|
<text x="754" y="458" class="box-title">Ausgaben</text>
|
||||||
|
<text x="754" y="487" class="box-text">Dashboard / Management Analyse</text>
|
||||||
|
<text x="754" y="510" class="box-text">Soll/Ist-Vergleich</text>
|
||||||
|
<text x="754" y="533" class="box-text">Zentrale Excel Sales_All_<Datum>.xlsx</text>
|
||||||
|
|
||||||
|
<rect x="60" y="486" width="560" height="110" rx="8" class="guard" />
|
||||||
|
<text x="84" y="520" class="box-title">Pruefregel im Audit-Modus</text>
|
||||||
|
<text x="84" y="549" class="box-text">Fuer alle relevanten TSC muessen aktuelle Sales_ProcessedMergeInput_*.csv vorhanden sein.</text>
|
||||||
|
<text x="84" y="574" class="small">Fehlt die CSV, kann die zentrale Auswertung keine belastbare CSV-Sicht bilden.</text>
|
||||||
|
|
||||||
|
<line x1="195" y1="282" x2="195" y2="478" class="muted-line" />
|
||||||
|
<line x1="620" y1="541" x2="722" y2="501" class="muted-line" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.3 KiB |
@@ -1,12 +1,13 @@
|
|||||||
# Finance Berechnungsformeln pro Land
|
# 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.
|
- 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`.
|
- In Management-Analysen ist das Wechselkurs-Anwendungsdatum konfigurierbar: `PostingDate`, `InvoiceDate` oder `ExtractionDate`.
|
||||||
- Sparten-Materialabgleich normalisiert fuehrende Nullen und warnt bei >=90% ungeklaerter Abdeckung.
|
- 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.
|
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`.
|
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
|
```text
|
||||||
Jahr = Year(PostingDate ?? InvoiceDate ?? ExtractionDate)
|
Jahr = Year(PostingDate ?? InvoiceDate ?? ExtractionDate)
|
||||||
@@ -26,7 +32,7 @@ Pro Land berechnet das Programm mehrere Kandidaten:
|
|||||||
|
|
||||||
```text
|
```text
|
||||||
SalesPriceValue
|
SalesPriceValue
|
||||||
= Sum(CentralSalesRecords.SalesPriceValue)
|
= Sum(SalesPriceValue aus zentraler Auswertungsquelle)
|
||||||
|
|
||||||
DocTotalFC - VatSumFC
|
DocTotalFC - VatSumFC
|
||||||
= Sum(DocumentTotalForeignCurrency - VatSumForeignCurrency)
|
= Sum(DocumentTotalForeignCurrency - VatSumForeignCurrency)
|
||||||
|
|||||||
Binary file not shown.
@@ -1,18 +1,28 @@
|
|||||||
# Finance Datenfluss fuer Andreas
|
# 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.
|
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`.
|
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`
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## Kurzfazit
|
## Kurzfazit
|
||||||
|
|
||||||
- Finance Summary, Management Analyse und Spartenanalyse lesen nicht aus dem SharePoint-Excel, sondern direkt aus der App-Datenbank `CentralSalesRecords`.
|
- 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.
|
||||||
- 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.
|
- 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_<TSC>_<yyyy-MM-dd>.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.
|
- 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.
|
- 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.
|
- 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.
|
- 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.
|
- `ManualExcelDataSourceAdapter` fuer Excel/CSV/SharePoint-Dateien.
|
||||||
3. Rohdaten werden als `SalesRecord`-Liste aufgebaut.
|
3. Rohdaten werden als `SalesRecord`-Liste aufgebaut.
|
||||||
4. Aktive `FieldTransformationRules` fuer das Quellsystem werden angewendet.
|
4. Aktive `FieldTransformationRules` fuer das Quellsystem werden angewendet.
|
||||||
5. Eine lokale Standort-Excel `Sales_<TSC>_<Datum>.xlsx` wird erzeugt.
|
5. Falls `Audit-CSV je Standort schreiben` aktiv ist, wird eine verarbeitete CSV geschrieben:
|
||||||
6. `CentralSalesRecords` wird fuer diesen Standort ersetzt:
|
- Datei: `Sales_ProcessedMergeInput_<TSC>_<Datum>.csv`.
|
||||||
|
- Ordner: gleicher lokaler Ordner wie die Standort-Excel.
|
||||||
|
- Inhalt: Daten nach Mapping und Transformation.
|
||||||
|
6. Eine lokale Standort-Excel `Sales_<TSC>_<Datum>.xlsx` wird erzeugt.
|
||||||
|
7. `CentralSalesRecords` wird fuer diesen Standort ersetzt:
|
||||||
- alte Saetze mit `SiteId = Standort` loeschen.
|
- alte Saetze mit `SiteId = Standort` loeschen.
|
||||||
- neue Saetze einfuegen.
|
- 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
|
## Datenquellen pro Quelltyp
|
||||||
|
|
||||||
@@ -315,7 +345,9 @@ Ausloeser:
|
|||||||
|
|
||||||
Ablauf:
|
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_<Datum>.xlsx`.
|
2. `ExcelExportService.CreateConsolidatedExcelFile(...)` erzeugt `Sales_All_<Datum>.xlsx`.
|
||||||
3. Die Datei wird lokal geschrieben.
|
3. Die Datei wird lokal geschrieben.
|
||||||
4. Falls SharePoint konfiguriert ist, wird sie hochgeladen.
|
4. Falls SharePoint konfiguriert ist, wird sie hochgeladen.
|
||||||
@@ -342,14 +374,16 @@ Wichtig:
|
|||||||
|
|
||||||
- `Finance Summary` im Excel wird beim Schreiben aus den Records berechnet.
|
- `Finance Summary` im Excel wird beim Schreiben aus den Records berechnet.
|
||||||
- Es liest nicht aus einem vorherigen SharePoint-Excel.
|
- 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.
|
- Wechselkurs-Zielwaehrung aus der UI wird dabei nicht angewendet.
|
||||||
|
|
||||||
## Finance Summary und Spartenanalyse in der App
|
## Finance Summary und Spartenanalyse in der App
|
||||||
|
|
||||||
Die App-Anzeigen lesen direkt aus:
|
Die App-Anzeigen lesen direkt aus der zentralen Auswertungsquelle:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
CentralSalesRecords
|
Standard: CentralSalesRecords
|
||||||
|
Audit-Modus: neueste Sales_ProcessedMergeInput_*.csv je TSC
|
||||||
```
|
```
|
||||||
|
|
||||||
Nicht aus:
|
Nicht aus:
|
||||||
@@ -360,9 +394,9 @@ SharePoint Sales_All_*.xlsx
|
|||||||
|
|
||||||
Das bedeutet:
|
Das bedeutet:
|
||||||
|
|
||||||
- Lokal zeigt die App lokale DB-Daten.
|
- Lokal zeigt die App lokale DB-Daten oder lokale Audit-CSV, je nach Setting.
|
||||||
- Publizierter Server zeigt Server-DB-Daten.
|
- Publizierter Server zeigt Server-DB-Daten oder Server-Audit-CSV, je nach Setting.
|
||||||
- Wenn lokale und Server-DB gleich sind, sehen beide gleich aus.
|
- Wenn lokale und Server-Auswertungsquelle gleich sind, sehen beide gleich aus.
|
||||||
- Ein SharePoint-Upload veraendert die App-Anzeige nicht.
|
- Ein SharePoint-Upload veraendert die App-Anzeige nicht.
|
||||||
|
|
||||||
## Spartenanalyse: genaue Logik
|
## Spartenanalyse: genaue Logik
|
||||||
@@ -433,21 +467,26 @@ SalesRecord-Liste
|
|||||||
+-- FieldTransformationRules anwenden
|
+-- FieldTransformationRules anwenden
|
||||||
| -> optional Feldkopien, FirstNonEmpty, ConvertCurrency
|
| -> optional Feldkopien, FirstNonEmpty, ConvertCurrency
|
||||||
|
|
|
|
||||||
|
+-- optional Audit-CSV Sales_ProcessedMergeInput_<TSC>_<Datum>.csv schreiben
|
||||||
|
| -> verarbeitete Daten fuer Finance/Revision
|
||||||
|
|
|
||||||
+-- Standort-Excel Sales_<TSC>_<Datum>.xlsx lokal schreiben
|
+-- Standort-Excel Sales_<TSC>_<Datum>.xlsx lokal schreiben
|
||||||
|
|
|
|
||||||
+-- CentralSalesRecords fuer SiteId ersetzen
|
+-- CentralSalesRecords fuer SiteId ersetzen
|
||||||
|
|
|
|
||||||
+-- Standort-Excel optional nach SharePoint hochladen
|
+-- Standort-Excel und Audit-CSV optional nach SharePoint hochladen
|
||||||
|
|
||||||
Finance Summary / Spartenanalyse
|
Finance Summary / Spartenanalyse
|
||||||
|
|
|
|
||||||
+-- liest CentralSalesRecords
|
+-- liest zentrale Auswertungsquelle
|
||||||
|
| -> Standard: CentralSalesRecords
|
||||||
|
| -> optional: neueste Sales_ProcessedMergeInput_*.csv je TSC
|
||||||
+-- FinanceRuleEngine rechnet Include/Exclude/Net Sales Actual
|
+-- 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
|
Zentrale Excel
|
||||||
|
|
|
|
||||||
+-- liest CentralSalesRecords
|
+-- liest zentrale Auswertungsquelle
|
||||||
+-- erzeugt Sales_All_<Datum>.xlsx lokal
|
+-- erzeugt Sales_All_<Datum>.xlsx lokal
|
||||||
+-- erzeugt Finance Summary / Finance Details im Excel
|
+-- erzeugt Finance Summary / Finance Details im Excel
|
||||||
+-- laedt Datei optional nach SharePoint
|
+-- laedt Datei optional nach SharePoint
|
||||||
@@ -456,10 +495,10 @@ Zentrale Excel
|
|||||||
## Wichtige Klarstellungen fuer Finance
|
## Wichtige Klarstellungen fuer Finance
|
||||||
|
|
||||||
1. SharePoint ist Ablage und Quelle fuer manuelle Dateien, aber nicht Live-Quelle der Finance Summary.
|
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.
|
3. Sparten kommen fachlich aus TR-AG/SAP `ProductDivisionRefSet`, nicht aus lokalen ERP-Sparten.
|
||||||
4. CH/AT bekommen Spartenfelder direkt beim ZSCHWEIZ-Export.
|
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.
|
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.
|
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.
|
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.
|
||||||
|
|||||||
@@ -1,17 +1,22 @@
|
|||||||
# Finance Kurs-Workflow
|
# 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.
|
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`
|
Visualisierung: `docs/FINANCE_KURS_WORKFLOW_2026-06-09.svg`
|
||||||
|
Aktuelle Kurs-/Waehrungsgrafik: `docs/FINANCE_WAEHRUNG_KURSFLUSS_2026-06-11.svg`
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## Kurzfazit
|
## Kurzfazit
|
||||||
|
|
||||||
- Der Standortimport rechnet Werte normalerweise nicht ueber die App-Kurstabelle um.
|
- 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.
|
- `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.
|
- `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.
|
- 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.
|
- 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`. |
|
| App-Kurstabelle | Tabelle `CurrencyExchangeRates` mit `FromCurrency`, `ToCurrency`, `Rate`, `ValidFrom`, `ValidTo`, `Notes`, `IsActive`. |
|
||||||
| Anzeige-Waehrung | Zielwaehrung in Analyse-Sichten, aktuell `NATIVE`, `CHF`, `EUR`, `USD`. |
|
| Anzeige-Waehrung | Zielwaehrung in Analyse-Sichten, aktuell `NATIVE`, `CHF`, `EUR`, `USD`. |
|
||||||
| Budgetkurs | Kurs mit `Notes = Budget <Jahr>`, z. B. `Budget 2025`, fuer separaten CHF-Kontrollkandidaten. |
|
| Budgetkurs | Kurs mit `Notes = Budget <Jahr>`, z. B. `Budget 2025`, fuer separaten CHF-Kontrollkandidaten. |
|
||||||
|
| Audit-CSV | Verarbeitete Standort-CSV `Sales_ProcessedMergeInput_<TSC>_<Datum>.csv`; optional zentrale Quelle fuer Dashboard und zentrale Excel. |
|
||||||
|
|
||||||
## Gesamtfluss
|
## Gesamtfluss
|
||||||
|
|
||||||
@@ -45,8 +51,15 @@ Land / Quellsystem
|
|||||||
|
|
|
|
||||||
+-- Standort-Excel schreiben
|
+-- Standort-Excel schreiben
|
||||||
|
|
|
|
||||||
|
+-- optional Audit-CSV schreiben
|
||||||
|
| Sales_ProcessedMergeInput_<TSC>_<Datum>.csv
|
||||||
|
|
|
||||||
+-- CentralSalesRecords fuer Standort ersetzen
|
+-- CentralSalesRecords fuer Standort ersetzen
|
||||||
|
|
|
|
||||||
|
+-- zentrale Auswertungsquelle
|
||||||
|
| Standard: CentralSalesRecords
|
||||||
|
| optional: neueste Audit-CSV je TSC
|
||||||
|
|
|
||||||
+-- zentrale Excel / Finance Summary
|
+-- zentrale Excel / Finance Summary
|
||||||
| Hauswaehrung, keine stille App-Kursumrechnung
|
| Hauswaehrung, keine stille App-Kursumrechnung
|
||||||
|
|
|
|
||||||
@@ -111,6 +124,7 @@ Beim normalen Standortexport gilt:
|
|||||||
```text
|
```text
|
||||||
Daten holen
|
Daten holen
|
||||||
-> Transformationen anwenden
|
-> Transformationen anwenden
|
||||||
|
-> optional Audit-CSV Sales_ProcessedMergeInput_*.csv schreiben
|
||||||
-> Standort-Excel schreiben
|
-> Standort-Excel schreiben
|
||||||
-> CentralSalesRecords fuer diesen Standort ersetzen
|
-> CentralSalesRecords fuer diesen Standort ersetzen
|
||||||
-> optional SharePoint Upload
|
-> 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.
|
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
|
## 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.
|
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:
|
Logik:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
CentralSalesRecords
|
zentrale Auswertungsquelle
|
||||||
|
Standard: CentralSalesRecords
|
||||||
|
optional: Sales_ProcessedMergeInput_*.csv
|
||||||
-> FinanceRuleEngine
|
-> FinanceRuleEngine
|
||||||
-> Finance | Net Sales Actual
|
-> Finance | Net Sales Actual
|
||||||
-> Gruppierung nach Jahr, Land, Finance-Waehrung
|
-> Gruppierung nach Jahr, Land, Finance-Waehrung
|
||||||
@@ -166,7 +184,7 @@ Die Kursanwendung fuer einen zentralen Dashboard-Wert passiert in der Management
|
|||||||
|
|
||||||
Eingaben:
|
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`.
|
- Summenfeld: z. B. `SalesPriceValue`, `StandardCost`, `StandardCostTotal`, `Quantity`.
|
||||||
- Anzeige-Waehrung: `NATIVE`, `CHF`, `EUR` oder `USD`.
|
- Anzeige-Waehrung: `NATIVE`, `CHF`, `EUR` oder `USD`.
|
||||||
- Zeitraum/Filter: Jahr, Monat, Land, TSC.
|
- Zeitraum/Filter: Jahr, Monat, Land, TSC.
|
||||||
@@ -296,6 +314,8 @@ ORDER BY FromCurrency, ToCurrency, ValidFrom DESC;
|
|||||||
| ECB-Import | `Services/ExchangeRateImportService.cs` |
|
| ECB-Import | `Services/ExchangeRateImportService.cs` |
|
||||||
| Settings/Kurspflege | `Services/SettingsPageService.cs`, `Components/Pages/Settings.razor` |
|
| Settings/Kurspflege | `Services/SettingsPageService.cs`, `Components/Pages/Settings.razor` |
|
||||||
| Standortexport-Reihenfolge | `Services/SiteExportService.cs` |
|
| 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 Speicherung | `Services/CentralSalesRecordService.cs` |
|
||||||
| zentrale Analyse mit Zielwaehrung | `Services/ManagementCockpitService.cs` |
|
| zentrale Analyse mit Zielwaehrung | `Services/ManagementCockpitService.cs` |
|
||||||
| Finance Summary ohne stille Umrechnung | `Services/ManagementCockpitService.cs`, `Services/ExcelExportService.cs` |
|
| Finance Summary ohne stille Umrechnung | `Services/ManagementCockpitService.cs`, `Services/ExcelExportService.cs` |
|
||||||
|
|||||||
@@ -0,0 +1,106 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="760" viewBox="0 0 1280 760" role="img" aria-labelledby="title desc">
|
||||||
|
<title id="title">Finance Prozessfluss vom Export bis Dashboard</title>
|
||||||
|
<desc id="desc">Uebersicht: Standortdaten werden gelesen, gemappt, transformiert, optional als Audit-CSV geschrieben und danach fuer Dashboard, Soll/Ist und zentrale Excel verwendet.</desc>
|
||||||
|
<defs>
|
||||||
|
<marker id="arrow" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
|
||||||
|
<path d="M 0 0 L 10 5 L 0 10 z" fill="#334155" />
|
||||||
|
</marker>
|
||||||
|
<style>
|
||||||
|
.title { font: 700 30px Arial, sans-serif; fill: #0f172a; }
|
||||||
|
.subtitle { font: 400 16px Arial, sans-serif; fill: #475569; }
|
||||||
|
.lane-title { font: 700 15px Arial, sans-serif; fill: #334155; }
|
||||||
|
.box-title { font: 700 16px Arial, sans-serif; fill: #0f172a; }
|
||||||
|
.box-text { font: 400 13px Arial, sans-serif; fill: #334155; }
|
||||||
|
.small { font: 400 12px Arial, sans-serif; fill: #475569; }
|
||||||
|
.note { font: 700 13px Arial, sans-serif; fill: #7c2d12; }
|
||||||
|
.line { stroke: #334155; stroke-width: 2.2; fill: none; marker-end: url(#arrow); }
|
||||||
|
.thin { stroke: #94a3b8; stroke-width: 1.4; fill: none; marker-end: url(#arrow); }
|
||||||
|
.source { fill: #e0f2fe; stroke: #0284c7; }
|
||||||
|
.process { fill: #f1f5f9; stroke: #64748b; }
|
||||||
|
.audit { fill: #ecfdf5; stroke: #059669; }
|
||||||
|
.db { fill: #eef2ff; stroke: #4f46e5; }
|
||||||
|
.out { fill: #fff7ed; stroke: #ea580c; }
|
||||||
|
.sp { fill: #f8fafc; stroke: #94a3b8; stroke-dasharray: 7 5; }
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<rect x="0" y="0" width="1280" height="760" fill="#ffffff" />
|
||||||
|
<text x="48" y="54" class="title">Finance Prozessfluss: Export Dashboard bis zentrale Auswertung</text>
|
||||||
|
<text x="48" y="82" class="subtitle">Stand 2026-06-11: Audit-CSV ist das verarbeitete Merge-Eingangsfile und kann optional die zentrale Quelle sein.</text>
|
||||||
|
|
||||||
|
<text x="50" y="142" class="lane-title">1. Quelle lesen</text>
|
||||||
|
<rect x="48" y="158" width="190" height="118" rx="8" class="source" />
|
||||||
|
<text x="68" y="188" class="box-title">Quellsystem</text>
|
||||||
|
<text x="68" y="214" class="box-text">HANA / SAP B1</text>
|
||||||
|
<text x="68" y="235" class="box-text">SAP Gateway / OData</text>
|
||||||
|
<text x="68" y="256" class="box-text">Excel / CSV / SharePoint</text>
|
||||||
|
|
||||||
|
<line x1="238" y1="217" x2="294" y2="217" class="line" />
|
||||||
|
|
||||||
|
<text x="300" y="142" class="lane-title">2. Vereinheitlichen</text>
|
||||||
|
<rect x="300" y="158" width="210" height="118" rx="8" class="process" />
|
||||||
|
<text x="322" y="188" class="box-title">Mapping</text>
|
||||||
|
<text x="322" y="214" class="box-text">Spalten und ERP-Felder</text>
|
||||||
|
<text x="322" y="235" class="box-text">werden SalesRecord</text>
|
||||||
|
<text x="322" y="256" class="box-text">zugeordnet.</text>
|
||||||
|
|
||||||
|
<line x1="510" y1="217" x2="566" y2="217" class="line" />
|
||||||
|
|
||||||
|
<rect x="572" y="158" width="210" height="118" rx="8" class="process" />
|
||||||
|
<text x="594" y="188" class="box-title">Transformation</text>
|
||||||
|
<text x="594" y="214" class="box-text">Finance-Regeln noch nicht</text>
|
||||||
|
<text x="594" y="235" class="box-text">final summiert; Felder</text>
|
||||||
|
<text x="594" y="256" class="box-text">werden vorbereitet.</text>
|
||||||
|
|
||||||
|
<line x1="677" y1="276" x2="677" y2="332" class="line" />
|
||||||
|
|
||||||
|
<text x="300" y="337" class="lane-title">3. Nachvollziehbare Standortartefakte</text>
|
||||||
|
<rect x="300" y="354" width="230" height="128" rx="8" class="audit" />
|
||||||
|
<text x="322" y="384" class="box-title">Audit-CSV</text>
|
||||||
|
<text x="322" y="410" class="box-text">Sales_ProcessedMergeInput</text>
|
||||||
|
<text x="322" y="431" class="box-text">_<TSC>_<Datum>.csv</text>
|
||||||
|
<text x="322" y="456" class="small">Nach Mapping + Transformation</text>
|
||||||
|
|
||||||
|
<line x1="530" y1="418" x2="586" y2="418" class="line" />
|
||||||
|
|
||||||
|
<rect x="592" y="354" width="210" height="128" rx="8" class="out" />
|
||||||
|
<text x="614" y="384" class="box-title">Standort-Excel</text>
|
||||||
|
<text x="614" y="410" class="box-text">Sales_<TSC>_<Datum>.xlsx</text>
|
||||||
|
<text x="614" y="435" class="small">Ablage und manuelle Pruefung</text>
|
||||||
|
|
||||||
|
<line x1="782" y1="217" x2="850" y2="217" class="line" />
|
||||||
|
<line x1="415" y1="482" x2="415" y2="548" class="thin" />
|
||||||
|
<line x1="697" y1="482" x2="697" y2="548" class="thin" />
|
||||||
|
|
||||||
|
<text x="856" y="142" class="lane-title">4. Operative Datenbasis</text>
|
||||||
|
<rect x="856" y="158" width="220" height="118" rx="8" class="db" />
|
||||||
|
<text x="878" y="188" class="box-title">CentralSalesRecords</text>
|
||||||
|
<text x="878" y="214" class="box-text">Standort wird ersetzt</text>
|
||||||
|
<text x="878" y="235" class="box-text">und zentral gespeichert.</text>
|
||||||
|
<text x="878" y="256" class="small">Standard-Auswertungsquelle</text>
|
||||||
|
|
||||||
|
<line x1="966" y1="276" x2="966" y2="332" class="line" />
|
||||||
|
|
||||||
|
<rect x="856" y="354" width="220" height="128" rx="8" class="db" />
|
||||||
|
<text x="878" y="384" class="box-title">Zentrale Quelle</text>
|
||||||
|
<text x="878" y="410" class="box-text">Schalter in Settings:</text>
|
||||||
|
<text x="878" y="431" class="box-text">DB oder Audit-CSV</text>
|
||||||
|
<text x="878" y="456" class="small">je TSC neueste CSV</text>
|
||||||
|
|
||||||
|
<line x1="1076" y1="418" x2="1132" y2="418" class="line" />
|
||||||
|
|
||||||
|
<text x="1138" y="337" class="lane-title">5. Finance-Ergebnis</text>
|
||||||
|
<rect x="1138" y="354" width="96" height="128" rx="8" class="out" />
|
||||||
|
<text x="1154" y="384" class="box-title">Output</text>
|
||||||
|
<text x="1154" y="410" class="box-text">Dashboard</text>
|
||||||
|
<text x="1154" y="431" class="box-text">Soll/Ist</text>
|
||||||
|
<text x="1154" y="452" class="box-text">Sales_All</text>
|
||||||
|
|
||||||
|
<rect x="326" y="548" width="504" height="110" rx="8" class="sp" />
|
||||||
|
<text x="350" y="580" class="box-title">SharePoint-Ablage</text>
|
||||||
|
<text x="350" y="606" class="box-text">Standort-Excel und Audit-CSV werden in denselben Landesordner hochgeladen.</text>
|
||||||
|
<text x="350" y="630" class="note">SharePoint-Dateien sind Ablage/Pruefspur, nicht automatisch die Live-Quelle.</text>
|
||||||
|
|
||||||
|
<line x1="802" y1="418" x2="850" y2="418" class="thin" />
|
||||||
|
<line x1="830" y1="603" x2="966" y2="482" class="thin" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.9 KiB |
@@ -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:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 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_<TSC>_<yyyy-MM-dd>.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_<TSC>_<Datum>.csv
|
||||||
|
|
|
||||||
|
+-- Standort-Excel schreiben
|
||||||
|
| Sales_<TSC>_<Datum>.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_<Datum>.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_<TSC>_<yyyy-MM-dd>.xlsx` | Standort-Excel fuer Menschen und Ablage. |
|
||||||
|
| `Sales_ProcessedMergeInput_<TSC>_<yyyy-MM-dd>.csv` | Verarbeitetes Standortfile nach Mapping und Transformation; Eingang fuer Merge/zentrale Auswertung, auditierbar. |
|
||||||
|
| `Sales_All_<yyyy-MM-dd>.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 <Jahr>` | nutzt Kurse mit `Notes = Budget <Jahr>` 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_<TSC>_<Datum>.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_<TSC>_<Datum>.xlsx`
|
||||||
|
- `Sales_ProcessedMergeInput_<TSC>_<Datum>.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_<TSC>_<Datum>.csv`.
|
||||||
|
- Die Wechselkurstabelle wird nicht still fuer Standard-Finance-Soll/Ist angewendet.
|
||||||
|
- Die aktuellen Management-Reiter sind links erreichbar; doppelte obere Reiterbaender wurden reduziert.
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="1180" height="720" viewBox="0 0 1180 720" role="img" aria-labelledby="title desc">
|
||||||
|
<title id="title">Finance Waehrungs- und Kursfluss</title>
|
||||||
|
<desc id="desc">Zeigt, wo die App-Kurstabelle verwendet wird und wo keine stille Umrechnung stattfindet.</desc>
|
||||||
|
<defs>
|
||||||
|
<marker id="arrow" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
|
||||||
|
<path d="M 0 0 L 10 5 L 0 10 z" fill="#334155" />
|
||||||
|
</marker>
|
||||||
|
<style>
|
||||||
|
.title { font: 700 29px Arial, sans-serif; fill: #0f172a; }
|
||||||
|
.subtitle { font: 400 16px Arial, sans-serif; fill: #475569; }
|
||||||
|
.box-title { font: 700 16px Arial, sans-serif; fill: #0f172a; }
|
||||||
|
.box-text { font: 400 13px Arial, sans-serif; fill: #334155; }
|
||||||
|
.small { font: 400 12px Arial, sans-serif; fill: #64748b; }
|
||||||
|
.warn { font: 700 13px Arial, sans-serif; fill: #991b1b; }
|
||||||
|
.line { stroke: #334155; stroke-width: 2.2; fill: none; marker-end: url(#arrow); }
|
||||||
|
.muted-line { stroke: #94a3b8; stroke-width: 1.5; fill: none; marker-end: url(#arrow); }
|
||||||
|
.source { fill: #e0f2fe; stroke: #0284c7; }
|
||||||
|
.standard { fill: #f1f5f9; stroke: #64748b; }
|
||||||
|
.rate { fill: #fef3c7; stroke: #d97706; }
|
||||||
|
.convert { fill: #ecfdf5; stroke: #059669; }
|
||||||
|
.budget { fill: #eef2ff; stroke: #4f46e5; }
|
||||||
|
.stop { fill: #fef2f2; stroke: #dc2626; }
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<rect x="0" y="0" width="1180" height="720" fill="#ffffff" />
|
||||||
|
<text x="48" y="54" class="title">Waehrungsumrechnung: wann wirkt die Kurstabelle?</text>
|
||||||
|
<text x="48" y="82" class="subtitle">Standard-Soll/Ist bleibt in Hauswaehrung. Die App-Kurstabelle wirkt nur in expliziten Pfaden.</text>
|
||||||
|
|
||||||
|
<rect x="56" y="128" width="260" height="140" rx="8" class="source" />
|
||||||
|
<text x="80" y="162" class="box-title">Quelle liefert Werte</text>
|
||||||
|
<text x="80" y="191" class="box-text">SalesPriceValue</text>
|
||||||
|
<text x="80" y="214" class="box-text">SalesCurrency / CompanyCurrency</text>
|
||||||
|
<text x="80" y="237" class="box-text">DocumentRate als Quellinfo</text>
|
||||||
|
|
||||||
|
<line x1="316" y1="198" x2="392" y2="198" class="line" />
|
||||||
|
|
||||||
|
<rect x="400" y="128" width="280" height="140" rx="8" class="standard" />
|
||||||
|
<text x="424" y="162" class="box-title">Standard Finance</text>
|
||||||
|
<text x="424" y="191" class="box-text">Finance Summary / Sales_All</text>
|
||||||
|
<text x="424" y="214" class="box-text">nutzt Hauswaehrung je Land.</text>
|
||||||
|
<text x="424" y="242" class="warn">Keine stille App-Kursumrechnung</text>
|
||||||
|
|
||||||
|
<line x1="540" y1="268" x2="540" y2="344" class="muted-line" />
|
||||||
|
|
||||||
|
<rect x="400" y="352" width="280" height="132" rx="8" class="stop" />
|
||||||
|
<text x="424" y="386" class="box-title">Nicht verwechseln</text>
|
||||||
|
<text x="424" y="415" class="box-text">DocumentRate kommt aus ERP.</text>
|
||||||
|
<text x="424" y="438" class="box-text">CurrencyExchangeRates ist</text>
|
||||||
|
<text x="424" y="461" class="box-text">die App-Kurstabelle.</text>
|
||||||
|
|
||||||
|
<rect x="772" y="92" width="308" height="160" rx="8" class="rate" />
|
||||||
|
<text x="796" y="126" class="box-title">CurrencyExchangeRates</text>
|
||||||
|
<text x="796" y="155" class="box-text">1. gleiche Waehrung = Faktor 1</text>
|
||||||
|
<text x="796" y="178" class="box-text">2. direkter Kurs</text>
|
||||||
|
<text x="796" y="201" class="box-text">3. inverser Kurs</text>
|
||||||
|
<text x="796" y="224" class="box-text">4. Kreuzkurs ueber EUR</text>
|
||||||
|
|
||||||
|
<line x1="926" y1="252" x2="926" y2="316" class="line" />
|
||||||
|
|
||||||
|
<rect x="760" y="324" width="332" height="120" rx="8" class="convert" />
|
||||||
|
<text x="784" y="358" class="box-title">Pfad A: Management Analyse</text>
|
||||||
|
<text x="784" y="387" class="box-text">Zielwaehrung CHF / EUR / USD</text>
|
||||||
|
<text x="784" y="410" class="box-text">Anzeige-Wert = Quellwert * Kurs</text>
|
||||||
|
|
||||||
|
<line x1="926" y1="444" x2="926" y2="494" class="line" />
|
||||||
|
|
||||||
|
<rect x="760" y="502" width="332" height="118" rx="8" class="convert" />
|
||||||
|
<text x="784" y="536" class="box-title">Pfad B: ConvertCurrency</text>
|
||||||
|
<text x="784" y="565" class="box-text">Transformation beim Standortexport</text>
|
||||||
|
<text x="784" y="588" class="box-text">schreibt Zielfeld dauerhaft um.</text>
|
||||||
|
|
||||||
|
<rect x="56" y="438" width="260" height="132" rx="8" class="budget" />
|
||||||
|
<text x="80" y="472" class="box-title">Pfad C: Budget-CHF</text>
|
||||||
|
<text x="80" y="501" class="box-text">separater Soll/Ist-Kandidat</text>
|
||||||
|
<text x="80" y="524" class="box-text">Notes = Budget <Jahr></text>
|
||||||
|
<text x="80" y="547" class="small">Kontrollsicht, nicht Standard-Ist</text>
|
||||||
|
|
||||||
|
<line x1="316" y1="504" x2="392" y2="438" class="muted-line" />
|
||||||
|
<line x1="680" y1="198" x2="764" y2="172" class="muted-line" />
|
||||||
|
<line x1="680" y1="418" x2="752" y2="384" class="muted-line" />
|
||||||
|
|
||||||
|
<rect x="56" y="612" width="1036" height="62" rx="8" fill="#f8fafc" stroke="#cbd5e1" />
|
||||||
|
<text x="80" y="649" class="box-title">Kursdatum: Settings > Export Einstellungen > Wechselkurse anwenden auf = PostingDate, InvoiceDate oder ExtractionDate</text>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.8 KiB |
@@ -1,6 +1,6 @@
|
|||||||
# Manual-Import und Delta-Stand
|
# 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.
|
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 |
|
| Auswahl | Jahresdatei zuerst, danach alle spaeteren Delta-Dateien im gleichen Jahr |
|
||||||
| Import | App liest alle ausgewaehlten Dateien in einem Lauf zusammen |
|
| Import | App liest alle ausgewaehlten Dateien in einem Lauf zusammen |
|
||||||
| Persistenz | `CentralSalesRecords` fuer `TRUK` werden ersetzt, nicht blind additiv angehaengt |
|
| Persistenz | `CentralSalesRecords` fuer `TRUK` werden ersetzt, nicht blind additiv angehaengt |
|
||||||
|
| Audit-CSV | optional `Sales_ProcessedMergeInput_TRUK_<Datum>.csv` nach Mapping/Transformation |
|
||||||
| Nach Delta-Lieferung | Delta-Datei in den Ordner legen, `TRUK` exportieren, danach zentrale Excel neu erzeugen |
|
| Nach Delta-Lieferung | Delta-Datei in den Ordner legen, `TRUK` exportieren, danach zentrale Excel neu erzeugen |
|
||||||
|
|
||||||
Wichtig:
|
Wichtig:
|
||||||
@@ -51,6 +52,7 @@ Aktueller Implementierungsstand:
|
|||||||
- primaer ueber `SourceLineId`.
|
- primaer ueber `SourceLineId`.
|
||||||
- Fallback ueber `TSC + InvoiceNumber + PositionOnInvoice + Material`.
|
- 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.
|
- 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_<TSC>_<Datum>.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.
|
- 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:
|
Finance-Logik:
|
||||||
@@ -92,11 +94,18 @@ Offen:
|
|||||||
1. Neue Datei oder Delta-Datei im richtigen Ordner bereitstellen.
|
1. Neue Datei oder Delta-Datei im richtigen Ordner bereitstellen.
|
||||||
2. In `Manuelle Importe` Pfad pruefen bzw. Standort aktiv lassen.
|
2. In `Manuelle Importe` Pfad pruefen bzw. Standort aktiv lassen.
|
||||||
3. Standortexport fuer das betroffene Land ausfuehren.
|
3. Standortexport fuer das betroffene Land ausfuehren.
|
||||||
4. Danach `Zentrale Datei neu erzeugen` starten.
|
4. Falls Audit-CSV fuer Finance/Revision gebraucht wird, im Exportordner `Sales_ProcessedMergeInput_<TSC>_<Datum>.csv` pruefen.
|
||||||
5. Im zentralen Excel `Finance Summary` und `Finance Details` 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
|
## 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.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Markdown-Dokumentenstatus
|
# 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.
|
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 |
|
| `docs/FINANCE_ENTSCHEIDE.md` | Finance-Regeln und Kontrollpunkte | Aktuell fuehrend fuer Finance-Logik |
|
||||||
| `entscheide.md` | Kurzfassung der Finance-Fachentscheide | Aktuell als Kurzfassung |
|
| `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_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/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/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 |
|
| `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 |
|
| Datei | Rolle | Status |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| `docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md` | Detailregeln je Land | Behalten |
|
| `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_IT_VORGEHEN_2026-05-18.md` | Italien-Pruefpfad | Behalten |
|
||||||
| `docs/FINANCE_UK_QUELLE_KORREKTUR_2026-05-18.md` | UK-Quellkorrektur | Behalten |
|
| `docs/FINANCE_UK_QUELLE_KORREKTUR_2026-05-18.md` | UK-Quellkorrektur | Behalten |
|
||||||
| `docs/SAGE_SPAIN_RCLONE_UPLOAD_GUIDE_2026-06-03.md` | Aktueller Spanien-rclone-All-in-one-Workflow | Ersetzt alte deutsche Anleitung vom 2026-06-03 |
|
| `docs/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/hr_kpi_cockpit_preview.png` | neutrale HR-Cockpit-Vorschaugrafik fuer DOCX |
|
||||||
| `docs/finance_cockpit_preview.png` | neutrale Finance-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
|
||||||
|
|
||||||
Bereinigung 2026-06-09:
|
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 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.
|
- 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-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:
|
Weiterhin gilt:
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,19 @@
|
|||||||
# Programm-Diagramme
|
# 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
|
## 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
|
- beschreibt Quelle, Mapping, Hauswaehrung, Nettofakturawert, Buchungsdatum, IC-Ausweis und Sollvergleich
|
||||||
- macht sichtbar, dass der Algorithmus regelbasiert ist und nicht auf einzelne Testzahlen frisiert wurde
|
- 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
|
## Abgleich gegen Quellcode
|
||||||
|
|
||||||
Die Diagramme wurden gegen folgende Codebereiche abgeglichen:
|
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/DataSources/*`: HANA, SAP Gateway und Manual Excel/CSV Adapter
|
||||||
- `Services/SiteExportService.cs`: Standortexport, Transformation, Excel-Erzeugung, zentrale Speicherung, SharePoint-Upload
|
- `Services/SiteExportService.cs`: Standortexport, Transformation, Excel-Erzeugung, zentrale Speicherung, SharePoint-Upload
|
||||||
- `Services/ExportOrchestrationService.cs`: Export aller aktiven Standorte und anschliessender konsolidierter Export
|
- `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/MappedSalesRecordComposer.cs`: gemeinsame Mapping-Engine fuer SAP OData und generisches HANA-Mapping
|
||||||
- `Services/FinanceReconciliationService.cs`: Soll/Ist-Kandidaten, Budgetkurse, IC-Regeln und Ampelstatus
|
- `Services/FinanceReconciliationService.cs`: Soll/Ist-Kandidaten, Budgetkurse, IC-Regeln und Ampelstatus
|
||||||
- `Services/DatabaseSeedService.cs`: Seed fuer Quellsysteme, ZSCHWEIZ, Finance-Referenzen, Budgetkurse und IC-Regeln
|
- `Services/DatabaseSeedService.cs`: Seed fuer Quellsysteme, ZSCHWEIZ, Finance-Referenzen, Budgetkurse und IC-Regeln
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# RAG Router
|
# RAG Router
|
||||||
|
|
||||||
Stand: 2026-06-10
|
Stand: 2026-06-11
|
||||||
|
|
||||||
Zweck: Diese Datei zuerst laden. Danach nur die Dateien aus dem passenden Themenblock laden.
|
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` |
|
| Aktueller Stand | Projektstatus, letzte Aenderungen, offene Punkte | `docs/rag/PROJECT.md` |
|
||||||
| Finance Cockpit | Soll/Ist, Finance Summary, Regeln, Laenderlogik | `docs/rag/FINANCE.md` |
|
| Finance Cockpit | Soll/Ist, Finance Summary, Regeln, Laenderlogik | `docs/rag/FINANCE.md` |
|
||||||
| Finance Spezialfaelle | IT, UK, ES, Abweichungen | `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` |
|
| HR KPI | HR Dashboard, Formeln, Datenqualitaet, Anwenderstand | `docs/rag/HR_KPI.md` |
|
||||||
| Deployment/IIS | Publish, Server, BiDashboard, TLS, lokaler Uebergang | `docs/rag/DEPLOYMENT.md` |
|
| Deployment/IIS | Publish, Server, BiDashboard, TLS, lokaler Uebergang | `docs/rag/DEPLOYMENT.md` |
|
||||||
| Admin/Startseite | Admin Login, Sessions, Landing Page | `docs/rag/ADMIN.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/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/MD_DOKUMENTENSTATUS_2026-05-20.md` | Einordnung alter Dokumente |
|
||||||
| `docs/FINANCE_ENTSCHEIDE.md` | Finance-Entscheide im Detail |
|
| `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_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/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/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md` | Manual-Import-Details |
|
||||||
| `docs/HR_KPI_NACHDOKU_2026-05-13.md` | HR-KPI-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 |
|
| Suchwort | Thema |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `Finance Summary`, `Soll/Ist`, `check.xlsx`, `FinanceRuleEngine` | Finance Cockpit |
|
| `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` |
|
| `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 |
|
| `TRUK`, `UK_B1`, `Delta`, `Manual Excel` | Manual Import / Finance Spezialfaelle |
|
||||||
| `TRDE`, `Alphaplan`, `NettoPreisGesamtX` | Finance Cockpit / Manual Import |
|
| `TRDE`, `Alphaplan`, `NettoPreisGesamtX` | Finance Cockpit / Manual Import |
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
# RAG Finance
|
# RAG Finance
|
||||||
|
|
||||||
Stand: 2026-06-10
|
Stand: 2026-06-11
|
||||||
|
|
||||||
## Kurzstand
|
## Kurzstand
|
||||||
|
|
||||||
- Fuehrende Sicht: `Finance Summary`.
|
- 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_<TSC>_<yyyy-MM-dd>.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.
|
- `Finance Summary` nutzt dieselbe `FinanceRuleEngine` wie das zentrale Excel.
|
||||||
- `Management Analyse` bleibt Diagnose-/Plausibilitaetssicht, nicht fuehrende Finance-Zahl.
|
- `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.
|
- 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.
|
- Gutschriften/Storno laufen als negative Beleg-/Positionszeilen.
|
||||||
- Budget-CHF ist Kontroll-/Reporting-Kandidat, nicht Standardabgleich.
|
- 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.
|
- `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
|
## Offene Fachpunkte
|
||||||
|
|
||||||
@@ -53,7 +56,15 @@ Stand: 2026-06-10
|
|||||||
- `Datenqualitaet`: fehlende Materialnummern, ProductGroup, Waehrung, Kunde, Datum, Nullwerte und ausgeschlossene Zeilen.
|
- `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 > 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.
|
- `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
|
## Experten / 3D Datenanalyse
|
||||||
|
|
||||||
@@ -98,6 +109,7 @@ Stand: 2026-06-10
|
|||||||
## Rohquellen Nur Bei Bedarf
|
## Rohquellen Nur Bei Bedarf
|
||||||
|
|
||||||
- Entscheide: `docs/FINANCE_ENTSCHEIDE.md`, `entscheide.md`
|
- 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`
|
- Formeln je Land: `docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md`
|
||||||
- Isolierter Kurs-Workflow: `docs/FINANCE_KURS_WORKFLOW_2026-06-09.md`
|
- Isolierter Kurs-Workflow: `docs/FINANCE_KURS_WORKFLOW_2026-06-09.md`
|
||||||
- IT Detail: `docs/FINANCE_IT_VORGEHEN_2026-05-18.md`
|
- IT Detail: `docs/FINANCE_IT_VORGEHEN_2026-05-18.md`
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# RAG Manual Import
|
# RAG Manual Import
|
||||||
|
|
||||||
Stand: 2026-06-05
|
Stand: 2026-06-11
|
||||||
|
|
||||||
## Kurzstand
|
## 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`.
|
- 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.
|
- Spanien-Deltas werden vor dem Speichern dedupliziert: zuerst `SourceLineId`, sonst Invoice/Position/Material.
|
||||||
- DE muss weiterhin Vollfiles liefern.
|
- DE muss weiterhin Vollfiles liefern.
|
||||||
|
- Wenn Audit-CSV aktiv ist, schreibt der Standortexport nach Mapping/Transformation zusaetzlich `Sales_ProcessedMergeInput_<TSC>_<Datum>.csv` in den Standort-Exportordner.
|
||||||
|
- Zentrale Auswertungen koennen per Setting aus den neuesten Audit-CSV je TSC statt direkt aus `CentralSalesRecords` lesen.
|
||||||
|
|
||||||
## Laender
|
## Laender
|
||||||
|
|
||||||
@@ -24,8 +26,10 @@ Stand: 2026-06-05
|
|||||||
1. Datei oder Delta im richtigen Ordner bereitstellen.
|
1. Datei oder Delta im richtigen Ordner bereitstellen.
|
||||||
2. In `Manuelle Importe` Pfad/Standort pruefen.
|
2. In `Manuelle Importe` Pfad/Standort pruefen.
|
||||||
3. Standortexport ausfuehren.
|
3. Standortexport ausfuehren.
|
||||||
4. Zentrale Datei neu erzeugen.
|
4. Optional Audit-CSV im Standort-Exportordner pruefen.
|
||||||
5. `Finance Summary` und `Finance Details` 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
|
## Spanien Delta-Sync
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
# RAG Project
|
# RAG Project
|
||||||
|
|
||||||
Stand: 2026-06-10
|
Stand: 2026-06-11
|
||||||
|
|
||||||
## Kurzstand
|
## Kurzstand
|
||||||
|
|
||||||
- Fuehrende App: `TrafagSalesExporter`, publiziert als `BiDashboard`.
|
- 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_<TSC>_<Datum>.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.
|
- 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.
|
- 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$\`.
|
- Letzter dokumentierter Deploy: 2026-06-10 auf `\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\`.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Last Change
|
# Last Change
|
||||||
|
|
||||||
Stand: 2026-06-10
|
Stand: 2026-06-11
|
||||||
|
|
||||||
Diese Datei ist fuer tokenarme RAG-Nutzung komprimiert.
|
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`.
|
- Fuehrender Kurzkontext: `docs/rag/PROJECT.md`.
|
||||||
- Themenrouter: `docs/RAG_ROUTER.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.
|
- 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.
|
- 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.
|
- Letzte dokumentierte Validierung: `dotnet test TrafagSalesExporter.sln --verbosity minimal` mit `87/87` Tests gruen.
|
||||||
|
|||||||
Reference in New Issue
Block a user