diff --git a/OrdersManagement/Components/Pages/Warehouse.razor b/OrdersManagement/Components/Pages/Warehouse.razor
index d858eb3..d76474c 100644
--- a/OrdersManagement/Components/Pages/Warehouse.razor
+++ b/OrdersManagement/Components/Pages/Warehouse.razor
@@ -206,7 +206,8 @@
ItemNumber = item.CustItem,
OrderNumber = customerOrder.CustPo,
WzNumber = materialTransactionDto.MTGroupNum ?? string.Empty,
- FK_Header = wzHeader.ID
+ FK_Header = wzHeader.ID,
+ TransactionNumber = (int?)materialTransactionDto.TransNum ?? 0
});
}
diff --git a/OrdersManagement/Components/Pages/WarehousePackList.razor b/OrdersManagement/Components/Pages/WarehousePackList.razor
index 7c0035d..05d98ef 100644
--- a/OrdersManagement/Components/Pages/WarehousePackList.razor
+++ b/OrdersManagement/Components/Pages/WarehousePackList.razor
@@ -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 @@
-
+
-
+
-
+
-
+
Packing List został wygenerowany i wysłany!
}
- else if(string.IsNullOrWhiteSpace(EmailAddresses))
+ 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!
+ Błąd: Nie Wszystkie linie mają wypełniony NUMER PALETY.
Packing List nie zostanie
+ wygenerowany!
}
@@ -99,7 +105,7 @@
-
+
FA Krosno Manager © @(DateTime.Now.Year)
@@ -112,6 +118,7 @@
private SfGrid _grid;
private IEnumerable _wzRowsMeyle { get; set; } = new List();
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 ScannedValuesWithItems { get; set; } = new Dictionary();
+ private IDictionary ScannedValuesWithItems { get; set; } = new Dictionary();
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 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();
}
@@ -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 changedRecords)
+ {
+ await WarehouseService.UpdateWzRowsMeyleAsync(changedRecords);
+
+ _wzRowsMeyle = await WarehouseService.GetWzRowsByWzHeaderId(WzHeader);
+ StateHasChanged();
+ await _grid.Refresh();
}
}
\ No newline at end of file
diff --git a/OrdersManagement/Models/RowMeyleModel.cs b/OrdersManagement/Models/RowMeyleModel.cs
new file mode 100644
index 0000000..365532f
--- /dev/null
+++ b/OrdersManagement/Models/RowMeyleModel.cs
@@ -0,0 +1,28 @@
+namespace OrdersManagement.Models;
+
+public class RowMeyleModel : IEquatable
+{
+ public string ItemNumber {get; set;} = string.Empty;
+ public string WzNumber { get; set; } = string.Empty;
+ 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;
+ }
+
+ public override bool Equals(object? obj)
+ {
+ if (obj is null) return false;
+ if (ReferenceEquals(this, obj)) return true;
+ if (obj.GetType() != GetType()) return false;
+ return Equals((RowMeyleModel)obj);
+ }
+
+ public override int GetHashCode()
+ {
+ return HashCode.Combine(ItemNumber, WzNumber, TransactionNumber);
+ }
+}
\ No newline at end of file
diff --git a/SytelineSaAppEfDataModel/Dtos/WzRowMeyleDto.cs b/SytelineSaAppEfDataModel/Dtos/WzRowMeyleDto.cs
index c53f11c..53e6f47 100644
--- a/SytelineSaAppEfDataModel/Dtos/WzRowMeyleDto.cs
+++ b/SytelineSaAppEfDataModel/Dtos/WzRowMeyleDto.cs
@@ -10,4 +10,5 @@ public class WzRowMeyleDto
public int? PalletNumber { get; set; }
public string WzNumber { get; set; }
public string? PartNumber { get; set; }
+ public int? TransactionNumber { get; set; }
}
\ No newline at end of file
diff --git a/SytelineSaAppEfDataModel/Entities/WzRowMeyle.cs b/SytelineSaAppEfDataModel/Entities/WzRowMeyle.cs
index dfeaffd..679a4f2 100644
--- a/SytelineSaAppEfDataModel/Entities/WzRowMeyle.cs
+++ b/SytelineSaAppEfDataModel/Entities/WzRowMeyle.cs
@@ -10,6 +10,7 @@ public class WzRowMeyle
public int? PalletNumber { get; set; }
public string WzNumber { get; set; }
public string? PartNumber { get; set; }
+ public int? TransactionNumber { get; set; }
// Navigation property
public WzHeader Header { get; set; }
diff --git a/SytelineSaAppEfDataModel/SytelineSaAppDbContext.cs b/SytelineSaAppEfDataModel/SytelineSaAppDbContext.cs
index da3081d..4397d3a 100644
--- a/SytelineSaAppEfDataModel/SytelineSaAppDbContext.cs
+++ b/SytelineSaAppEfDataModel/SytelineSaAppDbContext.cs
@@ -995,6 +995,11 @@ namespace SytelineSaAppEfDataModel
.HasColumnName("part_number")
.HasMaxLength(100)
.IsRequired(false);
+
+ entity.Property(e => e.TransactionNumber)
+ .HasColumnName("trans_num")
+ .HasColumnType("int")
+ .IsRequired(false);
// Relationship
entity.HasOne(e => e.Header)