* Added TransactionNumber to have unique values in Dictionary
* Added Saving scanned values
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
@page "/Warehouse/PackList/{WzHeader:guid}"
|
||||
@using OrdersManagement.Models
|
||||
@using Syncfusion.Blazor.Cards
|
||||
@using Syncfusion.Blazor.Grids
|
||||
@using SytelineSaAppEfDataModel.Dtos
|
||||
@@ -17,17 +18,21 @@
|
||||
<SfCard CssClass="shadow" style="width: 100%; max-width: 1200px;">
|
||||
<CardContent>
|
||||
<label for="textBox" class="form-label">Adresy Email do Wysyłki raportu:</label>
|
||||
<SfTextBox ID="textBox" Placeholder="Wprowadź adresy..." @bind-Value="@EmailAddresses" CssClass="e-outline"/>
|
||||
<SfTextBox ID="textBox" Placeholder="Wprowadź adresy..." @bind-Value="@EmailAddresses"
|
||||
CssClass="e-outline"/>
|
||||
</CardContent>
|
||||
</SfCard>
|
||||
<SfCard>
|
||||
<CardContent>
|
||||
<label for="textBox" class="form-label">Wprowadź numer palety:</label>
|
||||
<SfTextBox ID="palletNumber" Type="InputType.Number" @bind-Value="@PalletNumber" CssClass="e-outline"/>
|
||||
<SfTextBox ID="palletNumber" Type="InputType.Number" @bind-Value="@PalletNumber"
|
||||
CssClass="e-outline"/>
|
||||
<label for="textBox" class="form-label">Zeskanowana wartość:</label>
|
||||
<SfTextBox ID="scannedValue" @onkeydown="ScanValue" @bind-Value="ScannedValue" CssClass="e-outline"/>
|
||||
<SfTextBox ID="scannedValue" ValueChange="ScanValue" @bind-Value="ScannedValue"
|
||||
CssClass="e-outline" @ref="_scanner" />
|
||||
<label for="textBox" class="form-label">Zeskanowane wartości:</label>
|
||||
<SfTextBox ID="scannedText" Multiline="true" @bind-Value="@ScannedValues" Readonly="true" CssClass="e-outline"/>
|
||||
<SfTextBox ID="scannedText" Multiline="true" @bind-Value="@ScannedValues" Readonly="true"
|
||||
CssClass="e-outline"/>
|
||||
</CardContent>
|
||||
</SfCard>
|
||||
<SfGrid @ref="_grid"
|
||||
@@ -85,13 +90,14 @@
|
||||
{
|
||||
<p>Packing List został wygenerowany i wysłany!</p>
|
||||
}
|
||||
else if(string.IsNullOrWhiteSpace(EmailAddresses))
|
||||
else if (string.IsNullOrWhiteSpace(EmailAddresses))
|
||||
{
|
||||
<p>Błąd: Proszę wprowadzić przynajmniej jeden <b>ADRES EMAIL</b> do wysyłki raportu!</p>
|
||||
}
|
||||
else if (!_isValid)
|
||||
{
|
||||
<p>Błąd: Nie Wszystkie linie mają wypełniony <b>NUMER PALETY</b>.<br/>Packing List nie zostanie wygenerowany!</p>
|
||||
<p>Błąd: Nie Wszystkie linie mają wypełniony <b>NUMER PALETY</b>.<br/>Packing List nie zostanie
|
||||
wygenerowany!</p>
|
||||
}
|
||||
</Content>
|
||||
</DialogTemplates>
|
||||
@@ -99,7 +105,7 @@
|
||||
<DialogButton Content="OK" IsPrimary="true" OnClick="@HideModal"/>
|
||||
</DialogButtons>
|
||||
</SfDialog>
|
||||
|
||||
|
||||
<CardFooter>
|
||||
<small class="text-muted">FA Krosno Manager © @(DateTime.Now.Year)</small>
|
||||
</CardFooter>
|
||||
@@ -112,6 +118,7 @@
|
||||
private SfGrid<WzRowMeyleDto> _grid;
|
||||
private IEnumerable<WzRowMeyleDto> _wzRowsMeyle { get; set; } = new List<WzRowMeyleDto>();
|
||||
private WzHeaderDto _wzHeader;
|
||||
private SfTextBox _scanner;
|
||||
|
||||
private bool _isValid;
|
||||
|
||||
@@ -121,7 +128,7 @@
|
||||
private string PalletNumber { get; set; } = "0";
|
||||
private string ScannedValues { get; set; } = string.Empty;
|
||||
|
||||
private IDictionary<string, string?> ScannedValuesWithItems { get; set; } = new Dictionary<string, string?>();
|
||||
private IDictionary<RowMeyleModel, string?> ScannedValuesWithItems { get; set; } = new Dictionary<RowMeyleModel, string?>();
|
||||
|
||||
private string LastScannedValue { get; set; } = string.Empty;
|
||||
private string ScannedValue { get; set; } = string.Empty;
|
||||
@@ -137,22 +144,47 @@
|
||||
{
|
||||
_wzHeader = await WarehouseService.GetWzHeaderByIdAsync(WzHeader);
|
||||
_wzRowsMeyle = await WarehouseService.GetWzRowsByWzHeaderId(WzHeader);
|
||||
|
||||
_wzRowsMeyle.ToList().ForEach(x => ScannedValuesWithItems.Add(x.ItemNumber.Replace(" ", ""), null));
|
||||
|
||||
_wzRowsMeyle.ToList().ForEach(x => ScannedValuesWithItems.Add(new RowMeyleModel
|
||||
{
|
||||
ItemNumber = x.ItemNumber.Replace(" ", "").Replace("-", ""),
|
||||
TransactionNumber = x.TransactionNumber,
|
||||
WzNumber = x.WzNumber
|
||||
}, null));
|
||||
|
||||
EmailAddresses = _wzHeader.EmailAddresses;
|
||||
|
||||
await _scanner.FocusAsync();
|
||||
StateHasChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task SaveChanges()
|
||||
{
|
||||
List<WzRowMeyleDto> changedRecords = new List<WzRowMeyleDto>();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(EmailAddresses))
|
||||
{
|
||||
await WarehouseService.AddEmailsToWzHeaderAsync(WzHeader, EmailAddresses);
|
||||
}
|
||||
|
||||
IDictionary<RowMeyleModel, string?> scannedValuesWithNotNullValues = ScannedValuesWithItems.Where(x => x.Value is not null).ToDictionary(x => x.Key, y => y.Value);
|
||||
|
||||
foreach (KeyValuePair<RowMeyleModel, string?> scannedValueWithNotNullValue in scannedValuesWithNotNullValues)
|
||||
{
|
||||
WzRowMeyleDto rowMeyleDto = _wzRowsMeyle.First(r => r.ItemNumber.Replace(" ", "").Replace("-", "").Trim() == scannedValueWithNotNullValue.Key.ItemNumber && r.TransactionNumber == scannedValueWithNotNullValue.Key.TransactionNumber && r.WzNumber == scannedValueWithNotNullValue.Key.WzNumber);
|
||||
|
||||
rowMeyleDto.PalletNumber = int.Parse(PalletNumber);
|
||||
rowMeyleDto.PartNumber = scannedValueWithNotNullValue.Value;
|
||||
|
||||
changedRecords.Add(rowMeyleDto);
|
||||
}
|
||||
|
||||
if (changedRecords.Any())
|
||||
{
|
||||
await UpdateRows(changedRecords);
|
||||
}
|
||||
|
||||
await _grid.EndEditAsync();
|
||||
}
|
||||
|
||||
@@ -163,11 +195,7 @@
|
||||
|
||||
if (!changedRecords.Any()) return;
|
||||
|
||||
await WarehouseService.UpdateWzRowsMeyleAsync(changedRecords);
|
||||
|
||||
_wzRowsMeyle = await WarehouseService.GetWzRowsByWzHeaderId(WzHeader);
|
||||
StateHasChanged();
|
||||
await _grid.Refresh();
|
||||
await UpdateRows(changedRecords);
|
||||
}
|
||||
|
||||
private async Task ExportXls()
|
||||
@@ -186,20 +214,33 @@
|
||||
Visibility = true;
|
||||
}
|
||||
|
||||
private void ScanValue(KeyboardEventArgs obj)
|
||||
private void ScanValue(ChangedEventArgs obj)
|
||||
{
|
||||
if (obj.Key != "Enter") return;
|
||||
if (string.IsNullOrWhiteSpace(obj.Value)) return;
|
||||
|
||||
LastScannedValue = ScannedValue.Trim();
|
||||
|
||||
if (!ScannedValuesWithItems.ContainsKey(ScannedValues.Replace(" ", "").Trim()) && ScannedValuesWithItems.ContainsKey(LastScannedValue.Replace(" ", "").Trim()))
|
||||
ScannedValue = obj.Value.Replace(" ", "").Replace("-", "").Replace("http://qr.meyle.com/", "").Trim();
|
||||
ScannedValue = ScannedValue.Replace("40409100006", "1409100076");
|
||||
if (ScannedValuesWithItems.All(x => x.Key.ItemNumber != ScannedValue.Replace(" ", "").Trim()) && ScannedValuesWithItems.Any(x => x.Key.ItemNumber == LastScannedValue.Replace(" ", "").Trim()))
|
||||
{
|
||||
ScannedValuesWithItems[LastScannedValue] = ScannedValue.Trim();
|
||||
ScannedValues += $"{ScannedValue})\n";
|
||||
RowMeyleModel key = ScannedValuesWithItems.First(x => x.Key.ItemNumber == LastScannedValue).Key;
|
||||
ScannedValuesWithItems[key] = ScannedValue.Trim();
|
||||
ScannedValues += $"{ScannedValue}\n";
|
||||
}
|
||||
else if(!string.IsNullOrWhiteSpace(ScannedValue))
|
||||
else if (!string.IsNullOrWhiteSpace(ScannedValue))
|
||||
{
|
||||
ScannedValues += $"{ScannedValue}: ";
|
||||
}
|
||||
|
||||
LastScannedValue = ScannedValue;
|
||||
ScannedValue = string.Empty;
|
||||
}
|
||||
|
||||
private async Task UpdateRows(IList<WzRowMeyleDto> changedRecords)
|
||||
{
|
||||
await WarehouseService.UpdateWzRowsMeyleAsync(changedRecords);
|
||||
|
||||
_wzRowsMeyle = await WarehouseService.GetWzRowsByWzHeaderId(WzHeader);
|
||||
StateHasChanged();
|
||||
await _grid.Refresh();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user