Clarify audit CSV settings section
This commit is contained in:
@@ -284,18 +284,6 @@
|
|||||||
Schreibt zusätzliche technische Fortschrittsmeldungen für HANA- und SAP-Lesevorgänge ins Dashboard und in die Logs.
|
Schreibt zusätzliche technische Fortschrittsmeldungen für HANA- und SAP-Lesevorgänge ins Dashboard und in die Logs.
|
||||||
</MudText>
|
</MudText>
|
||||||
</MudItem>
|
</MudItem>
|
||||||
<MudItem xs="12" md="4">
|
|
||||||
<MudSwitch @bind-Value="_exportSettings.AuditCsvEnabled" Label="Audit-CSV je Standort schreiben" Color="Color.Primary" />
|
|
||||||
<MudText Typo="Typo.caption">
|
|
||||||
Schreibt nach Mapping und Transformation eine lesbare CSV-Datei je Standort.
|
|
||||||
</MudText>
|
|
||||||
</MudItem>
|
|
||||||
<MudItem xs="12" md="4">
|
|
||||||
<MudSwitch @bind-Value="_exportSettings.UseAuditCsvAsCentralSource" Label="Zentrale Auswertung aus Audit-CSV" Color="Color.Warning" />
|
|
||||||
<MudText Typo="Typo.caption">
|
|
||||||
Zentrale Excel, Finance Summary und Management-Analyse lesen die neuesten Standort-CSV-Dateien statt CentralSalesRecords.
|
|
||||||
</MudText>
|
|
||||||
</MudItem>
|
|
||||||
<MudItem xs="12" md="6">
|
<MudItem xs="12" md="6">
|
||||||
<MudTextField @bind-Value="_exportSettings.LocalSiteExportFolder" Label="Lokaler Standardpfad Standort-Dateien"
|
<MudTextField @bind-Value="_exportSettings.LocalSiteExportFolder" Label="Lokaler Standardpfad Standort-Dateien"
|
||||||
HelperText="Wenn leer, wird ./output unter dem Programmverzeichnis verwendet." />
|
HelperText="Wenn leer, wird ./output unter dem Programmverzeichnis verwendet." />
|
||||||
@@ -304,9 +292,38 @@
|
|||||||
<MudTextField @bind-Value="_exportSettings.LocalConsolidatedExportFolder" Label="Lokaler Pfad Zentrale Datei"
|
<MudTextField @bind-Value="_exportSettings.LocalConsolidatedExportFolder" Label="Lokaler Pfad Zentrale Datei"
|
||||||
HelperText="Optional. Wenn leer, wird der Standardpfad der Standort-Dateien verwendet." />
|
HelperText="Optional. Wenn leer, wird der Standardpfad der Standort-Dateien verwendet." />
|
||||||
</MudItem>
|
</MudItem>
|
||||||
<MudItem xs="12" md="6">
|
<MudItem xs="12">
|
||||||
<MudTextField @bind-Value="_exportSettings.LocalAuditCsvFolder" Label="Lokaler Pfad Audit-CSV"
|
<div class="audit-csv-settings">
|
||||||
HelperText="Optional. Wenn leer, wird der Standardpfad der Standort-Dateien verwendet." />
|
<div class="audit-csv-header">
|
||||||
|
<MudIcon Icon="@Icons.Material.Filled.RuleFolder" Color="Color.Info" Size="Size.Medium" />
|
||||||
|
<div>
|
||||||
|
<MudText Typo="Typo.h6">Audit-CSV / nachvollziehbarer Datenfluss</MudText>
|
||||||
|
<MudText Typo="Typo.body2">
|
||||||
|
Fuer Finance und Wirtschaftspruefung: lesbare Standort-CSV nach Mapping und Konvertierung, optional als Quelle fuer zentrale Auswertungen.
|
||||||
|
</MudText>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<MudGrid Spacing="2">
|
||||||
|
<MudItem xs="12" md="4">
|
||||||
|
<MudSwitch @bind-Value="_exportSettings.AuditCsvEnabled" Label="Audit-CSV je Standort schreiben" Color="Color.Primary" />
|
||||||
|
<MudText Typo="Typo.caption">
|
||||||
|
Schreibt beim Laenderexport je Standort eine Sales_*.csv mit den transformierten Daten.
|
||||||
|
</MudText>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem xs="12" md="4">
|
||||||
|
<MudSwitch @bind-Value="_exportSettings.UseAuditCsvAsCentralSource" Label="Zentrale Auswertung aus Audit-CSV" Color="Color.Warning" />
|
||||||
|
<MudText Typo="Typo.caption">
|
||||||
|
Dashboard, zentrale Excel-Datei und Finance-Auswertungen lesen die neuesten Standort-CSV-Dateien statt CentralSalesRecords.
|
||||||
|
</MudText>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem xs="12" md="4">
|
||||||
|
<MudAlert Severity="Severity.Info" Dense="true" Variant="Variant.Filled">
|
||||||
|
Audit-CSV wird immer im gleichen Ordner wie die lokalen Standort-Dateien abgelegt.
|
||||||
|
Der Pfad wird oben bei <b>Lokaler Standardpfad Standort-Dateien</b> gesetzt.
|
||||||
|
</MudAlert>
|
||||||
|
</MudItem>
|
||||||
|
</MudGrid>
|
||||||
|
</div>
|
||||||
</MudItem>
|
</MudItem>
|
||||||
<MudItem xs="12">
|
<MudItem xs="12">
|
||||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="SaveExportSettings"
|
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="SaveExportSettings"
|
||||||
@@ -329,6 +346,23 @@
|
|||||||
</MudText>
|
</MudText>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.audit-csv-settings {
|
||||||
|
background: #e8f3ff;
|
||||||
|
border: 1px solid #90caf9;
|
||||||
|
border-left: 6px solid #1976d2;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 18px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.audit-csv-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 12px;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private SharePointConfig _spConfig = new();
|
private SharePointConfig _spConfig = new();
|
||||||
private ExportSettings _exportSettings = new();
|
private ExportSettings _exportSettings = new();
|
||||||
|
|||||||
@@ -123,13 +123,13 @@ public sealed class ExportAuditCsvService : IExportAuditCsvService
|
|||||||
|
|
||||||
public string ResolveAuditCsvDirectory(ExportSettings settings, string? fallbackOutputDirectory = null)
|
public string ResolveAuditCsvDirectory(ExportSettings settings, string? fallbackOutputDirectory = null)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrWhiteSpace(settings.LocalAuditCsvFolder))
|
if (!string.IsNullOrWhiteSpace(fallbackOutputDirectory))
|
||||||
return settings.LocalAuditCsvFolder.Trim();
|
return fallbackOutputDirectory.Trim();
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(settings.LocalSiteExportFolder))
|
if (!string.IsNullOrWhiteSpace(settings.LocalSiteExportFolder))
|
||||||
return Path.Combine(settings.LocalSiteExportFolder.Trim(), "audit-csv");
|
return settings.LocalSiteExportFolder.Trim();
|
||||||
|
|
||||||
return Path.Combine(AppContext.BaseDirectory, "output", "audit-csv");
|
return Path.Combine(AppContext.BaseDirectory, "output");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IEnumerable<string> BuildRow(Site site, string sourceSystem, SalesRecord record)
|
private static IEnumerable<string> BuildRow(Site site, string sourceSystem, SalesRecord record)
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ public sealed class ExportAuditCsvServiceTests : IDisposable
|
|||||||
var settings = new ExportSettings
|
var settings = new ExportSettings
|
||||||
{
|
{
|
||||||
AuditCsvEnabled = true,
|
AuditCsvEnabled = true,
|
||||||
LocalAuditCsvFolder = _tempDirectory
|
LocalSiteExportFolder = _tempDirectory,
|
||||||
|
LocalAuditCsvFolder = Path.Combine(_tempDirectory, "ignored")
|
||||||
};
|
};
|
||||||
var site = new Site { TSC = "TRCH", Land = "Schweiz" };
|
var site = new Site { TSC = "TRCH", Land = "Schweiz" };
|
||||||
var record = new SalesRecord
|
var record = new SalesRecord
|
||||||
@@ -65,6 +66,7 @@ public sealed class ExportAuditCsvServiceTests : IDisposable
|
|||||||
var path = await service.WriteSiteAuditCsvAsync(site, settings, "SAP", _tempDirectory, [record]);
|
var path = await service.WriteSiteAuditCsvAsync(site, settings, "SAP", _tempDirectory, [record]);
|
||||||
|
|
||||||
Assert.True(File.Exists(path));
|
Assert.True(File.Exists(path));
|
||||||
|
Assert.Equal(_tempDirectory, Path.GetDirectoryName(path));
|
||||||
var records = await service.ReadLatestSiteAuditCsvRecordsAsync(settings);
|
var records = await service.ReadLatestSiteAuditCsvRecordsAsync(settings);
|
||||||
var roundtrip = Assert.Single(records);
|
var roundtrip = Assert.Single(records);
|
||||||
Assert.Equal("SAP", roundtrip.SourceSystem);
|
Assert.Equal("SAP", roundtrip.SourceSystem);
|
||||||
@@ -84,7 +86,12 @@ public sealed class ExportAuditCsvServiceTests : IDisposable
|
|||||||
var csvService = new ExportAuditCsvService();
|
var csvService = new ExportAuditCsvService();
|
||||||
await csvService.WriteSiteAuditCsvAsync(
|
await csvService.WriteSiteAuditCsvAsync(
|
||||||
new Site { TSC = "TRUK", Land = "England" },
|
new Site { TSC = "TRUK", Land = "England" },
|
||||||
new ExportSettings { AuditCsvEnabled = true, LocalAuditCsvFolder = _tempDirectory },
|
new ExportSettings
|
||||||
|
{
|
||||||
|
AuditCsvEnabled = true,
|
||||||
|
LocalSiteExportFolder = _tempDirectory,
|
||||||
|
LocalAuditCsvFolder = Path.Combine(_tempDirectory, "ignored")
|
||||||
|
},
|
||||||
"MANUAL_EXCEL",
|
"MANUAL_EXCEL",
|
||||||
_tempDirectory,
|
_tempDirectory,
|
||||||
[
|
[
|
||||||
@@ -112,7 +119,8 @@ public sealed class ExportAuditCsvServiceTests : IDisposable
|
|||||||
db.ExportSettings.Add(new ExportSettings
|
db.ExportSettings.Add(new ExportSettings
|
||||||
{
|
{
|
||||||
UseAuditCsvAsCentralSource = true,
|
UseAuditCsvAsCentralSource = true,
|
||||||
LocalAuditCsvFolder = _tempDirectory
|
LocalSiteExportFolder = _tempDirectory,
|
||||||
|
LocalAuditCsvFolder = Path.Combine(_tempDirectory, "ignored")
|
||||||
});
|
});
|
||||||
db.Sites.Add(new Site
|
db.Sites.Add(new Site
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user