* Added Lot table and service
* Changed behaviour of scanning to scan first PartNumber, select specific record and then scan MeylePartNumber
This commit is contained in:
@@ -207,7 +207,9 @@
|
||||
OrderNumber = customerOrder.CustPo,
|
||||
WzNumber = materialTransactionDto.MTGroupNum ?? string.Empty,
|
||||
FK_Header = wzHeader.ID,
|
||||
TransactionNumber = (int?)materialTransactionDto.TransNum ?? 0
|
||||
TransactionNumber = (int?)materialTransactionDto.TransNum ?? 0,
|
||||
PartNumberSl = materialTransactionDto.NR_KARTY_KONTROLNEJ,
|
||||
FaIndex = item.Item
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
AllowSorting="true"
|
||||
AllowSelection="true"
|
||||
TValue="WzRowMeyleDto"
|
||||
DataSource="@_wzRowsMeyle"
|
||||
DataSource="@WzRowsMeyle"
|
||||
EnableAdaptiveUI="true">
|
||||
<SfToolbar>
|
||||
<ToolbarItems>
|
||||
@@ -57,16 +57,20 @@
|
||||
<GridColumn Field=@nameof(WzRowMeyleDto.OrderNumber) AllowEditing="false"
|
||||
TextAlign="TextAlign.Center" HeaderText="Numer Zamówienia Meyle"
|
||||
Width="70"></GridColumn>
|
||||
<GridColumn Field=@nameof(WzRowMeyleDto.FaIndex) AllowEditing="false"
|
||||
TextAlign="TextAlign.Center" HeaderText="Numer Indeksu FA" Width="100"></GridColumn>
|
||||
<GridColumn Field=@nameof(WzRowMeyleDto.ItemNumber) AllowEditing="false"
|
||||
TextAlign="TextAlign.Center" HeaderText="Meyle Numer" Width="100"></GridColumn>
|
||||
TextAlign="TextAlign.Center" HeaderText="Numer Indeksu Meyle" Width="100"></GridColumn>
|
||||
<GridColumn Field=@nameof(WzRowMeyleDto.Quantity) AllowEditing="false" TextAlign="TextAlign.Center"
|
||||
HeaderText="Ilość w Dostawie" Width="80"></GridColumn>
|
||||
<GridColumn Field=@nameof(WzRowMeyleDto.PalletNumber) AllowEditing="true"
|
||||
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"
|
||||
HeaderText="Nr Partii SL" Width="80"></GridColumn>
|
||||
<GridColumn Field=@nameof(WzRowMeyleDto.PartNumber) AllowEditing="true" TextAlign="TextAlign.Center"
|
||||
HeaderText="Nr Partii" Width="80"></GridColumn>
|
||||
HeaderText="Nr Partii Meyle" Width="80"></GridColumn>
|
||||
</GridColumns>
|
||||
<GridEditSettings AllowDeleting="false"
|
||||
AllowAdding="false"
|
||||
@@ -116,10 +120,12 @@
|
||||
[Parameter] public Guid WzHeader { get; set; }
|
||||
|
||||
private SfGrid<WzRowMeyleDto> _grid;
|
||||
private IEnumerable<WzRowMeyleDto> _wzRowsMeyle { get; set; } = new List<WzRowMeyleDto>();
|
||||
private List<WzRowMeyleDto> WzRowsMeyle { get; set; } = new List<WzRowMeyleDto>();
|
||||
private WzHeaderDto _wzHeader;
|
||||
private SfTextBox _scanner;
|
||||
|
||||
private WzRowMeyleDto? SelectedRow { get; set; }
|
||||
|
||||
private bool _isValid;
|
||||
|
||||
private bool Visibility { get; set; }
|
||||
@@ -143,11 +149,12 @@
|
||||
if (firstRender)
|
||||
{
|
||||
_wzHeader = await WarehouseService.GetWzHeaderByIdAsync(WzHeader);
|
||||
_wzRowsMeyle = await WarehouseService.GetWzRowsByWzHeaderId(WzHeader);
|
||||
WzRowsMeyle = (await WarehouseService.GetWzRowsByWzHeaderId(WzHeader)).ToList();
|
||||
|
||||
_wzRowsMeyle.ToList().ForEach(x => ScannedValuesWithItems.Add(new RowMeyleModel
|
||||
WzRowsMeyle.ToList().ForEach(x => ScannedValuesWithItems.Add(new RowMeyleModel
|
||||
{
|
||||
ItemNumber = x.ItemNumber.Replace(" ", "").Replace("-", ""),
|
||||
PartNumberSl = x.PartNumberSl,
|
||||
TransactionNumber = x.TransactionNumber,
|
||||
WzNumber = x.WzNumber
|
||||
}, null));
|
||||
@@ -172,7 +179,7 @@
|
||||
|
||||
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);
|
||||
WzRowMeyleDto rowMeyleDto = WzRowsMeyle.First(r => r.ItemNumber.Replace(" ", "").Replace("-", "").Trim() == scannedValueWithNotNullValue.Key.ItemNumber && r.PartNumberSl == scannedValueWithNotNullValue.Key.PartNumberSl && r.WzNumber == scannedValueWithNotNullValue.Key.WzNumber);
|
||||
|
||||
rowMeyleDto.PalletNumber = int.Parse(PalletNumber);
|
||||
rowMeyleDto.PartNumber = scannedValueWithNotNullValue.Value;
|
||||
@@ -191,7 +198,7 @@
|
||||
private async Task OnBatchSave(BeforeBatchSaveArgs<WzRowMeyleDto> obj)
|
||||
{
|
||||
var changes = obj.BatchChanges;
|
||||
var changedRecords = changes.ChangedRecords;
|
||||
List<WzRowMeyleDto> changedRecords = changes.ChangedRecords;
|
||||
|
||||
if (!changedRecords.Any()) return;
|
||||
|
||||
@@ -200,7 +207,7 @@
|
||||
|
||||
private async Task ExportXls()
|
||||
{
|
||||
int count = _wzRowsMeyle.Count(x => x.PalletNumber == null);
|
||||
int count = WzRowsMeyle.Count(x => x.PalletNumber == null);
|
||||
|
||||
_isValid = count == 0;
|
||||
_isValid = _isValid && !string.IsNullOrWhiteSpace(EmailAddresses);
|
||||
@@ -214,32 +221,80 @@
|
||||
Visibility = true;
|
||||
}
|
||||
|
||||
private void ScanValue(ChangedEventArgs obj)
|
||||
private async Task ScanValue(ChangedEventArgs obj)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(obj.Value)) return;
|
||||
|
||||
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()))
|
||||
MaterialTransactionDto? materialTransactionByPartNumber = await GetMaterialTransactionByPartNumber(ScannedValue).ConfigureAwait(false);
|
||||
|
||||
if (materialTransactionByPartNumber != null)
|
||||
{
|
||||
RowMeyleModel key = ScannedValuesWithItems.First(x => x.Key.ItemNumber == LastScannedValue).Key;
|
||||
ScannedValuesWithItems[key] = ScannedValue.Trim();
|
||||
ScannedValues += $"{ScannedValue}\n";
|
||||
var rowIndex = WzRowsMeyle.FindIndex(x => x.FaIndex == materialTransactionByPartNumber.Item && x.Quantity == materialTransactionByPartNumber.Qty);
|
||||
rowIndex = WzRowsMeyle.FindIndex(x => x.FaIndex == "FA24278.18" && x.Quantity == 70);
|
||||
|
||||
if (_grid.AllowPaging)
|
||||
{
|
||||
int pageSize = _grid.PageSettings.PageSize;
|
||||
int targetPage = (rowIndex / pageSize) + 1;
|
||||
await _grid.GoToPageAsync(targetPage).ConfigureAwait(false);
|
||||
|
||||
rowIndex %= pageSize;
|
||||
}
|
||||
|
||||
await _grid.SelectRowAsync(rowIndex).ConfigureAwait(false);
|
||||
await _grid.ScrollIntoViewAsync(rowIndex: rowIndex).ConfigureAwait(false);
|
||||
await _grid.FocusAsync().ConfigureAwait(false);
|
||||
|
||||
SelectedRow = WzRowsMeyle[rowIndex];
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(ScannedValue))
|
||||
else if (ValidateScannedValue(obj.Value) && SelectedRow != null)
|
||||
{
|
||||
ScannedValues += $"{ScannedValue}: ";
|
||||
SelectedRow.PartNumber = obj.Value.Trim();
|
||||
await InvokeAsync(StateHasChanged).ConfigureAwait(false);
|
||||
await _grid.Refresh().ConfigureAwait(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ScannedValue = obj.Value.Trim();
|
||||
SelectedRow = null;
|
||||
}
|
||||
|
||||
// if (ScannedValuesWithItems.All(x => x.Key.ItemNumber != ScannedValue.Replace(" ", "").Trim()) && ScannedValuesWithItems.Any(x => x.Key.ItemNumber == LastScannedValue.Replace(" ", "").Trim()))
|
||||
// {
|
||||
// RowMeyleModel key = ScannedValuesWithItems.First(x => x.Key.ItemNumber == LastScannedValue).Key;
|
||||
// ScannedValuesWithItems[key] = ScannedValue.Trim();
|
||||
// ScannedValues += $"{ScannedValue}\n";
|
||||
// }
|
||||
// else if (!string.IsNullOrWhiteSpace(ScannedValue))
|
||||
// {
|
||||
// ScannedValues += $"{ScannedValue}: ";
|
||||
// }
|
||||
|
||||
LastScannedValue = ScannedValue;
|
||||
ScannedValue = string.Empty;
|
||||
}
|
||||
|
||||
private bool ValidateScannedValue(string scannedValue)
|
||||
{
|
||||
int year = DateTime.Now.Year - 2000;
|
||||
|
||||
string format = $"{year}X";
|
||||
|
||||
return scannedValue.StartsWith(format);
|
||||
}
|
||||
|
||||
private async Task<MaterialTransactionDto?> GetMaterialTransactionByPartNumber(string partNumber)
|
||||
{
|
||||
MaterialTransactionDto? materialTransaction = await WarehouseService.GetMaterialTransactionByPartNumberAsync(partNumber).ConfigureAwait(false);
|
||||
|
||||
return materialTransaction;
|
||||
}
|
||||
|
||||
private async Task UpdateRows(IList<WzRowMeyleDto> changedRecords)
|
||||
{
|
||||
await WarehouseService.UpdateWzRowsMeyleAsync(changedRecords);
|
||||
|
||||
_wzRowsMeyle = await WarehouseService.GetWzRowsByWzHeaderId(WzHeader);
|
||||
WzRowsMeyle = (await WarehouseService.GetWzRowsByWzHeaderId(WzHeader)).ToList();
|
||||
StateHasChanged();
|
||||
await _grid.Refresh();
|
||||
}
|
||||
|
||||
@@ -4,13 +4,14 @@ public class RowMeyleModel : IEquatable<RowMeyleModel>
|
||||
{
|
||||
public string ItemNumber {get; set;} = string.Empty;
|
||||
public string WzNumber { get; set; } = string.Empty;
|
||||
public string? PartNumberSl { get; set; }
|
||||
public int? TransactionNumber { get; set; }
|
||||
|
||||
public bool Equals(RowMeyleModel? other)
|
||||
{
|
||||
if (other is null) return false;
|
||||
if (ReferenceEquals(this, other)) return true;
|
||||
return ItemNumber == other.ItemNumber && WzNumber == other.WzNumber && TransactionNumber == other.TransactionNumber;
|
||||
return ItemNumber == other.ItemNumber && WzNumber == other.WzNumber && PartNumberSl == other.PartNumberSl && TransactionNumber == other.TransactionNumber;
|
||||
}
|
||||
|
||||
public override bool Equals(object? obj)
|
||||
@@ -23,6 +24,6 @@ public class RowMeyleModel : IEquatable<RowMeyleModel>
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(ItemNumber, WzNumber, TransactionNumber);
|
||||
return HashCode.Combine(ItemNumber, WzNumber, PartNumberSl, TransactionNumber);
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
using System.Net;
|
||||
using System.Web;
|
||||
using SytelineSaAppEfDataModel.Dtos;
|
||||
|
||||
namespace OrdersManagement.Services;
|
||||
@@ -28,6 +30,20 @@ public class WarehouseService(IHttpClientFactory httpClientFactory)
|
||||
return await response.Content.ReadFromJsonAsync<IEnumerable<MaterialTransactionDto>>();
|
||||
}
|
||||
|
||||
public async Task<MaterialTransactionDto?> GetMaterialTransactionByPartNumberAsync(string partNumber)
|
||||
{
|
||||
string encodedPartNumber = HttpUtility.UrlEncode(partNumber);
|
||||
var response = await _httpClient.GetAsync(
|
||||
$"api/WzRowMeyle/by-part-number?partNumber={encodedPartNumber}").ConfigureAwait(false);;
|
||||
|
||||
if (response.StatusCode == HttpStatusCode.NoContent)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return await response.Content.ReadFromJsonAsync<MaterialTransactionDto>().ConfigureAwait(false);;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<WzHeaderDto>> GetAllClientWzHeadersAsync(string customerNumber, int customerSequence)
|
||||
{
|
||||
var response = await _httpClient.GetAsync(
|
||||
@@ -85,7 +101,7 @@ public class WarehouseService(IHttpClientFactory httpClientFactory)
|
||||
return await response.Content.ReadFromJsonAsync<IEnumerable<WzRowMeyleDto>>();
|
||||
}
|
||||
|
||||
public async Task UpdateWzRowsMeyleAsync(IEnumerable<WzRowMeyleDto> wzRowsMeyle)
|
||||
public async Task UpdateWzRowsMeyleAsync(IEnumerable<WzRowMeyleDto?> wzRowsMeyle)
|
||||
{
|
||||
if (wzRowsMeyle == null || !wzRowsMeyle.Any())
|
||||
{
|
||||
@@ -106,7 +122,7 @@ public class WarehouseService(IHttpClientFactory httpClientFactory)
|
||||
}
|
||||
}
|
||||
|
||||
public async Task AddEmailsToWzHeaderAsync(Guid wzHeaderId, string emailAddresses)
|
||||
public async Task AddEmailsToWzHeaderAsync(Guid wzHeaderId, string? emailAddresses)
|
||||
{
|
||||
var response = await _httpClient.PostAsJsonAsync(
|
||||
$"api/WzHeader/add-emails?id={wzHeaderId}",
|
||||
|
||||
Reference in New Issue
Block a user