* Further improvements of scanning data
This commit is contained in:
@@ -210,7 +210,7 @@
|
|||||||
|
|
||||||
private void OnRowDataBound(RowDataBoundEventArgs<ScheduleOrderDetailDetailDto> args)
|
private void OnRowDataBound(RowDataBoundEventArgs<ScheduleOrderDetailDetailDto> args)
|
||||||
{
|
{
|
||||||
if (args.Data.QtyType == "83" || args.Data.QtyType == "84")
|
if (new[] { "54", "83", "84" }.Any(x => x == args.Data.QtyType))
|
||||||
{
|
{
|
||||||
args.Row.AddClass(["highlight-red"]);
|
args.Row.AddClass(["highlight-red"]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
@page "/Warehouse/PackList/{WzHeader:guid}"
|
@page "/Warehouse/PackList/{WzHeader:guid}"
|
||||||
|
@using System.Diagnostics
|
||||||
@using OrdersManagement.Models
|
@using OrdersManagement.Models
|
||||||
@using Syncfusion.Blazor.Cards
|
@using Syncfusion.Blazor.Cards
|
||||||
@using Syncfusion.Blazor.Grids
|
@using Syncfusion.Blazor.Grids
|
||||||
@@ -6,6 +7,7 @@
|
|||||||
@using Syncfusion.Blazor.Navigations
|
@using Syncfusion.Blazor.Navigations
|
||||||
@using Syncfusion.Blazor.Popups
|
@using Syncfusion.Blazor.Popups
|
||||||
@using Syncfusion.Blazor.Inputs
|
@using Syncfusion.Blazor.Inputs
|
||||||
|
@using Action = System.Action
|
||||||
|
|
||||||
@inject WarehouseService WarehouseService
|
@inject WarehouseService WarehouseService
|
||||||
|
|
||||||
@@ -22,6 +24,12 @@
|
|||||||
CssClass="e-outline"/>
|
CssClass="e-outline"/>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
</SfCard>
|
</SfCard>
|
||||||
|
<SfCard CssClass="shadow" style="width: 100%; max-width: 1200px;">
|
||||||
|
<CardContent>
|
||||||
|
<label for="textBox" class="form-label">Numer WZ:</label>
|
||||||
|
<SfTextBox ID="textBox" @bind-Value=@WzNumber CssClass="e-outline"/>
|
||||||
|
</CardContent>
|
||||||
|
</SfCard>
|
||||||
<SfCard>
|
<SfCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<label for="textBox" class="form-label">Wprowadź numer palety:</label>
|
<label for="textBox" class="form-label">Wprowadź numer palety:</label>
|
||||||
@@ -64,8 +72,6 @@
|
|||||||
HeaderText="Ilość w Dostawie" Width="80"></GridColumn>
|
HeaderText="Ilość w Dostawie" Width="80"></GridColumn>
|
||||||
<GridColumn Field=@nameof(WzRowMeyleDto.PalletNumber) AllowEditing="true"
|
<GridColumn Field=@nameof(WzRowMeyleDto.PalletNumber) AllowEditing="true"
|
||||||
TextAlign="TextAlign.Center" HeaderText="Nr Palety" Width="100"></GridColumn>
|
TextAlign="TextAlign.Center" HeaderText="Nr Palety" Width="100"></GridColumn>
|
||||||
<GridColumn Field=@nameof(WzRowMeyleDto.WzNumber) AllowEditing="false" TextAlign="TextAlign.Center"
|
|
||||||
HeaderText="Nr WZ" Width="100"></GridColumn>
|
|
||||||
<GridColumn Field=@nameof(WzRowMeyleDto.PartNumberSl) AllowEditing="true" TextAlign="TextAlign.Center"
|
<GridColumn Field=@nameof(WzRowMeyleDto.PartNumberSl) AllowEditing="true" TextAlign="TextAlign.Center"
|
||||||
HeaderText="Nr Partii SL" Width="80"></GridColumn>
|
HeaderText="Nr Partii SL" Width="80"></GridColumn>
|
||||||
<GridColumn Field=@nameof(WzRowMeyleDto.PartNumber) AllowEditing="true" TextAlign="TextAlign.Center"
|
<GridColumn Field=@nameof(WzRowMeyleDto.PartNumber) AllowEditing="true" TextAlign="TextAlign.Center"
|
||||||
@@ -112,11 +118,11 @@
|
|||||||
<SfDialog Width="500px" Title="Błąd" IsModal="true" @bind-Visible="VisibilityValidation" AllowPrerender="true">
|
<SfDialog Width="500px" Title="Błąd" IsModal="true" @bind-Visible="VisibilityValidation" AllowPrerender="true">
|
||||||
<DialogTemplates>
|
<DialogTemplates>
|
||||||
<Content>
|
<Content>
|
||||||
<p>Błąd skanowania! Wystąpił jeden z wyjątków:</p>
|
<p>Błąd skanowania! Wystąpił jeden z wyjątków (Zeskanowana wartość '<b>@ScannedValue</b>'):</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><p>Zeskanowano niepoprawny Numer Partii SL (nieistniejący w tabeli)</p></li>
|
<li><p>Zeskanowano niepoprawny Numer Partii SL (nieistniejący w tabeli)</p></li>
|
||||||
<li><p>Zeskanowano niepoprawny numer Partii Meyle (niezaczynający się od <b>@($"{DateTime.Now.Year - 2000}X")</b>)</p></li>
|
<li><p>Zeskanowano niepoprawny numer Partii Meyle (niezaczynający się od <b>@($"{DateTime.Now.Year - 2000}X")</b>)</p></li>
|
||||||
<li><p>Numer Palety nie jest większy niż 0</p></li>
|
<li><p>Numer Palety nie jest większy niż 0 (aktualnie wybrany numer palety: '<b>@PalletNumber</b>')</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
</Content>
|
</Content>
|
||||||
</DialogTemplates>
|
</DialogTemplates>
|
||||||
@@ -156,7 +162,10 @@
|
|||||||
private SfTextBox _scanner;
|
private SfTextBox _scanner;
|
||||||
|
|
||||||
private WzRowMeyleDto? SelectedRow { get; set; }
|
private WzRowMeyleDto? SelectedRow { get; set; }
|
||||||
|
private List<WzRowMeyleDto> SelectedRows { get; set; } = new();
|
||||||
|
|
||||||
|
private string WzNumber { get; set; } = string.Empty;
|
||||||
|
|
||||||
private bool _isValid;
|
private bool _isValid;
|
||||||
|
|
||||||
private bool Visibility { get; set; }
|
private bool Visibility { get; set; }
|
||||||
@@ -178,6 +187,11 @@
|
|||||||
Visibility = false;
|
Visibility = false;
|
||||||
VisibilityValidation = false;
|
VisibilityValidation = false;
|
||||||
VisibilityLineSplitter = false;
|
VisibilityLineSplitter = false;
|
||||||
|
|
||||||
|
LastScannedValue = ScannedValue;
|
||||||
|
ScannedValue = string.Empty;
|
||||||
|
|
||||||
|
_scanner.FocusAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||||
@@ -191,6 +205,8 @@
|
|||||||
|
|
||||||
EmailAddresses = _wzHeader.EmailAddresses;
|
EmailAddresses = _wzHeader.EmailAddresses;
|
||||||
|
|
||||||
|
WzNumber = _wzHeader.WzNumbers ?? string.Empty;
|
||||||
|
|
||||||
await _scanner.FocusAsync();
|
await _scanner.FocusAsync();
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
@@ -237,91 +253,51 @@
|
|||||||
Visibility = true;
|
Visibility = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ScanValue(ChangedEventArgs obj)
|
private void ScanValue(ChangedEventArgs obj)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(obj.Value)) return;
|
if (string.IsNullOrWhiteSpace(obj.Value)) return;
|
||||||
|
if (int.Parse(PalletNumber) <= 0)
|
||||||
|
{
|
||||||
|
ShowValidationMessage();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int palletNumber = int.Parse(PalletNumber);
|
ScannedValue = obj.Value.Trim();
|
||||||
|
|
||||||
|
StateHasChanged();
|
||||||
|
|
||||||
TransactionModelsByPartNumber.TryGetValue(obj.Value.Trim(), out List<TransactionModel>? materialTransactionsByPartNumber);
|
TransactionModelsByPartNumber.TryGetValue(obj.Value.Trim(), out List<TransactionModel>? materialTransactionsByPartNumber);
|
||||||
|
|
||||||
TransactionModel? materialTransactionByPartNumber = materialTransactionsByPartNumber?.FirstOrDefault();
|
TransactionModel? materialTransactionByPartNumber = materialTransactionsByPartNumber?.FirstOrDefault();
|
||||||
|
|
||||||
|
if (materialTransactionByPartNumber == null && IsValidScannedValue(obj.Value))
|
||||||
|
{
|
||||||
|
FillMeylePartNumber(ScannedValue);
|
||||||
|
|
||||||
|
LastScannedValue = ScannedValue;
|
||||||
|
ScannedValue = string.Empty;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (materialTransactionByPartNumber != null)
|
if (materialTransactionByPartNumber != null)
|
||||||
{
|
{
|
||||||
var rowIndex = WzRowsMeyle.FindIndex(x => x.FaIndex == materialTransactionByPartNumber.ItemNumber && x.Quantity == materialTransactionByPartNumber.Quantity);
|
SelectedRows.Clear();
|
||||||
//rowIndex = WzRowsMeyle.FindIndex(x => x.FaIndex == "FA23956.18" && x.Quantity == 130);
|
FillFaPartNumberAndPalletNumber(materialTransactionByPartNumber, obj.Value.Trim());
|
||||||
|
|
||||||
if (rowIndex == -1 || palletNumber <= 0)
|
|
||||||
{
|
|
||||||
VisibilityValidation = true;
|
|
||||||
LastScannedValue = ScannedValue;
|
|
||||||
ScannedValue = string.Empty;
|
|
||||||
|
|
||||||
await _scanner.FocusAsync();
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SelectedRow = WzRowsMeyle[rowIndex];
|
|
||||||
|
|
||||||
SelectedRow.PartNumberSl = ScannedValue;
|
|
||||||
SelectedRow.PalletNumber = palletNumber;
|
|
||||||
|
|
||||||
if (ChangedRecords.All(x => x.TransactionNumber != SelectedRow.TransactionNumber))
|
|
||||||
{
|
|
||||||
ChangedRecords.Add(SelectedRow);
|
|
||||||
}
|
|
||||||
|
|
||||||
await SaveChanges();
|
|
||||||
await InvokeAsync(StateHasChanged);
|
|
||||||
await _grid.Refresh();
|
|
||||||
|
|
||||||
if (_grid.AllowPaging)
|
|
||||||
{
|
|
||||||
int pageSize = _grid.PageSettings.PageSize;
|
|
||||||
int targetPage = (rowIndex / pageSize) + 1;
|
|
||||||
await _grid.GoToPageAsync(targetPage);
|
|
||||||
|
|
||||||
rowIndex %= pageSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
await _grid.SelectRowAsync(rowIndex);
|
|
||||||
await _grid.ScrollIntoViewAsync(rowIndex: rowIndex);
|
|
||||||
await _grid.FocusAsync();
|
|
||||||
|
|
||||||
ChangedRecords.Clear();
|
|
||||||
}
|
}
|
||||||
else if (ValidateScannedValue(obj.Value) && SelectedRow != null)
|
|
||||||
|
if (materialTransactionByPartNumber == null)
|
||||||
{
|
{
|
||||||
SelectedRow.PartNumber = obj.Value.Trim();
|
ShowValidationMessage();
|
||||||
|
return;
|
||||||
if (ChangedRecords.All(x => x.TransactionNumber != SelectedRow.TransactionNumber))
|
|
||||||
{
|
|
||||||
ChangedRecords.Add(SelectedRow);
|
|
||||||
}
|
|
||||||
|
|
||||||
await SaveChanges();
|
|
||||||
await InvokeAsync(StateHasChanged);
|
|
||||||
await _grid.Refresh();
|
|
||||||
|
|
||||||
ChangedRecords.Clear();
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
VisibilityValidation = true;
|
|
||||||
|
|
||||||
ScannedValue = obj.Value.Trim();
|
|
||||||
SelectedRow = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
LastScannedValue = ScannedValue;
|
LastScannedValue = ScannedValue;
|
||||||
ScannedValue = string.Empty;
|
ScannedValue = string.Empty;
|
||||||
|
|
||||||
await _scanner.FocusAsync();
|
_scanner.FocusAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool ValidateScannedValue(string scannedValue)
|
private bool IsValidScannedValue(string scannedValue)
|
||||||
{
|
{
|
||||||
int year = DateTime.Now.Year - 2000;
|
int year = DateTime.Now.Year - 2000;
|
||||||
|
|
||||||
@@ -330,6 +306,104 @@
|
|||||||
return scannedValue.StartsWith(format);
|
return scannedValue.StartsWith(format);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void FillMeylePartNumber(string scannedValue)
|
||||||
|
{
|
||||||
|
if (SelectedRow != null)
|
||||||
|
{
|
||||||
|
SelectedRow.PartNumber = scannedValue;
|
||||||
|
ChangedRecords.Add(SelectedRow);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (WzRowMeyleDto wzRowMeyleDto in SelectedRows)
|
||||||
|
{
|
||||||
|
wzRowMeyleDto.PartNumber = scannedValue;
|
||||||
|
ChangedRecords.Add(wzRowMeyleDto);
|
||||||
|
}
|
||||||
|
|
||||||
|
SaveChanges();
|
||||||
|
InvokeAsync(StateHasChanged);
|
||||||
|
_grid.Refresh();
|
||||||
|
_scanner.FocusAsync();
|
||||||
|
ChangedRecords.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FillFaPartNumberAndPalletNumber(TransactionModel materialTransactionByPartNumber, string scannedValue)
|
||||||
|
{
|
||||||
|
var rowIndex = WzRowsMeyle.FindIndex(x => x.FaIndex == materialTransactionByPartNumber.ItemNumber && x.Quantity == materialTransactionByPartNumber.Quantity);
|
||||||
|
|
||||||
|
switch (rowIndex)
|
||||||
|
{
|
||||||
|
case -1 when int.Parse(PalletNumber) <= 0:
|
||||||
|
ShowValidationMessage();
|
||||||
|
LastScannedValue = ScannedValue;
|
||||||
|
ScannedValue = string.Empty;
|
||||||
|
return;
|
||||||
|
case -1:
|
||||||
|
{
|
||||||
|
SelectedRows = WzRowsMeyle.Where(x => x.FaIndex == materialTransactionByPartNumber.ItemNumber).ToList();
|
||||||
|
|
||||||
|
if (SelectedRows.Count == 0)
|
||||||
|
{
|
||||||
|
ShowValidationMessage();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (WzRowMeyleDto wzRowMeyleDto in SelectedRows)
|
||||||
|
{
|
||||||
|
wzRowMeyleDto.PartNumberSl = scannedValue;
|
||||||
|
ChangedRecords.Add(wzRowMeyleDto);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
SelectedRow = WzRowsMeyle[rowIndex];
|
||||||
|
|
||||||
|
SelectedRow.PartNumberSl = ScannedValue;
|
||||||
|
SelectedRow.PalletNumber = int.Parse(PalletNumber);
|
||||||
|
|
||||||
|
if (ChangedRecords.All(x => x.TransactionNumber != SelectedRow.TransactionNumber))
|
||||||
|
{
|
||||||
|
ChangedRecords.Add(SelectedRow);
|
||||||
|
}
|
||||||
|
|
||||||
|
FocusGridRow(rowIndex);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SaveChanges();
|
||||||
|
InvokeAsync(StateHasChanged);
|
||||||
|
_grid.Refresh();
|
||||||
|
_scanner.FocusAsync();
|
||||||
|
ChangedRecords.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FocusGridRow(int rowIndex)
|
||||||
|
{
|
||||||
|
if (_grid.AllowPaging)
|
||||||
|
{
|
||||||
|
int pageSize = _grid.PageSettings.PageSize;
|
||||||
|
int targetPage = (rowIndex / pageSize) + 1;
|
||||||
|
_grid.GoToPageAsync(targetPage);
|
||||||
|
|
||||||
|
rowIndex %= pageSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
_grid.SelectRowAsync(rowIndex);
|
||||||
|
_grid.ScrollIntoViewAsync(rowIndex: rowIndex);
|
||||||
|
_grid.FocusAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ShowValidationMessage()
|
||||||
|
{
|
||||||
|
VisibilityValidation = true;
|
||||||
|
|
||||||
|
ChangedRecords.Clear();
|
||||||
|
_scanner.FocusAsync();
|
||||||
|
}
|
||||||
|
|
||||||
private async Task<IDictionary<string, List<TransactionModel>>> GetTransactionModels()
|
private async Task<IDictionary<string, List<TransactionModel>>> GetTransactionModels()
|
||||||
{
|
{
|
||||||
return await WarehouseService.GetTransactionsModels();
|
return await WarehouseService.GetTransactionsModels();
|
||||||
@@ -360,7 +434,7 @@
|
|||||||
OrderNumber = SelectedRow.OrderNumber,
|
OrderNumber = SelectedRow.OrderNumber,
|
||||||
PalletNumber = SelectedRow.PalletNumber,
|
PalletNumber = SelectedRow.PalletNumber,
|
||||||
WzNumber = SelectedRow.WzNumber,
|
WzNumber = SelectedRow.WzNumber,
|
||||||
TransactionNumber = SelectedRow.TransactionNumber
|
TransactionNumber = SelectedRow.TransactionNumber += 10000
|
||||||
};
|
};
|
||||||
|
|
||||||
WzRowsMeyle.Add(splitRow);
|
WzRowsMeyle.Add(splitRow);
|
||||||
|
|||||||
Reference in New Issue
Block a user