@page "/Warehouse/PackList/{WzHeader:guid}" @using OrdersManagement.Models @using Syncfusion.Blazor.Cards @using Syncfusion.Blazor.Grids @using SytelineSaAppEfDataModel.Dtos @using Syncfusion.Blazor.Navigations @using Syncfusion.Blazor.Popups @using Syncfusion.Blazor.Inputs @inject WarehouseService WarehouseService

Packing List

@if (_isValid) {

Packing List został wygenerowany i wysłany!

} else if (string.IsNullOrWhiteSpace(EmailAddresses)) {

Błąd: Proszę wprowadzić przynajmniej jeden ADRES EMAIL do wysyłki raportu!

} else if (!_isValid) {

Błąd: Nie Wszystkie linie mają wypełniony NUMER PALETY.
Packing List nie zostanie wygenerowany!

}
FA Krosno Manager © @(DateTime.Now.Year)
@code { [Parameter] public Guid WzHeader { get; set; } private SfGrid _grid; private IEnumerable _wzRowsMeyle { get; set; } = new List(); private WzHeaderDto _wzHeader; private SfTextBox _scanner; private bool _isValid; private bool Visibility { get; set; } private string? EmailAddresses { get; set; } = string.Empty; private string PalletNumber { get; set; } = "0"; private string ScannedValues { get; set; } = string.Empty; private IDictionary ScannedValuesWithItems { get; set; } = new Dictionary(); private string LastScannedValue { get; set; } = string.Empty; private string ScannedValue { get; set; } = string.Empty; private void HideModal() { Visibility = false; } protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { _wzHeader = await WarehouseService.GetWzHeaderByIdAsync(WzHeader); _wzRowsMeyle = await WarehouseService.GetWzRowsByWzHeaderId(WzHeader); _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 changedRecords = new List(); if (!string.IsNullOrWhiteSpace(EmailAddresses)) { await WarehouseService.AddEmailsToWzHeaderAsync(WzHeader, EmailAddresses); } IDictionary scannedValuesWithNotNullValues = ScannedValuesWithItems.Where(x => x.Value is not null).ToDictionary(x => x.Key, y => y.Value); foreach (KeyValuePair 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(); } private async Task OnBatchSave(BeforeBatchSaveArgs obj) { var changes = obj.BatchChanges; var changedRecords = changes.ChangedRecords; if (!changedRecords.Any()) return; await UpdateRows(changedRecords); } private async Task ExportXls() { int count = _wzRowsMeyle.Count(x => x.PalletNumber == null); _isValid = count == 0; _isValid = _isValid && !string.IsNullOrWhiteSpace(EmailAddresses); if (_isValid) { await WarehouseService.AddEmailsToWzHeaderAsync(WzHeader, EmailAddresses); await WarehouseService.GenerateXlsForMeyleAsync(WzHeader); } Visibility = true; } private void 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())) { 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 async Task UpdateRows(IList changedRecords) { await WarehouseService.UpdateWzRowsMeyleAsync(changedRecords); _wzRowsMeyle = await WarehouseService.GetWzRowsByWzHeaderId(WzHeader); StateHasChanged(); await _grid.Refresh(); } }