diff --git a/FruitBank.Common/Dtos/ProductDto.cs b/FruitBank.Common/Dtos/ProductDto.cs
index ea441ee..81d857f 100644
--- a/FruitBank.Common/Dtos/ProductDto.cs
+++ b/FruitBank.Common/Dtos/ProductDto.cs
@@ -67,5 +67,8 @@ public class ProductDto : MgProductDto, IProductDto
set => throw new Exception($"ProductDto.IncomingQuantity not set");
}
+ [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
+ public int AvailableQuantity => StockQuantity + IncomingQuantity;
+
public bool HasMeasuringValues() => Id > 0 && NetWeight != 0 && IsMeasurable;
}
\ No newline at end of file
diff --git a/FruitBank.Common/Entities/ShippingItem.cs b/FruitBank.Common/Entities/ShippingItem.cs
index c16a0a8..a628f70 100644
--- a/FruitBank.Common/Entities/ShippingItem.cs
+++ b/FruitBank.Common/Entities/ShippingItem.cs
@@ -9,6 +9,7 @@ using System.ComponentModel.DataAnnotations;
using Nop.Core.Domain.Catalog;
using DataType = LinqToDB.DataType;
using FruitBank.Common.Dtos;
+using Newtonsoft.Json;
namespace FruitBank.Common.Entities;
@@ -21,6 +22,12 @@ public class ShippingItem : MgEntityBase, IShippingItem
public int? ProductId { get; set; }
public string Name { get; set; }
+
+ ///
+ /// get => ProductDto?.Name ?? Name
+ ///
+ [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
+ public string ProductName => ProductDto?.Name ?? Name;
public int PalletsOnDocument { get; set; }
diff --git a/FruitBank.Common/Interfaces/IAvailableQuantity.cs b/FruitBank.Common/Interfaces/IAvailableQuantity.cs
new file mode 100644
index 0000000..e0d4983
--- /dev/null
+++ b/FruitBank.Common/Interfaces/IAvailableQuantity.cs
@@ -0,0 +1,6 @@
+namespace FruitBank.Common.Interfaces;
+
+public interface IAvailableQuantity
+{
+ int AvailableQuantity { get; }
+}
\ No newline at end of file
diff --git a/FruitBank.Common/Interfaces/IProductDto.cs b/FruitBank.Common/Interfaces/IProductDto.cs
index e14be70..301ca27 100644
--- a/FruitBank.Common/Interfaces/IProductDto.cs
+++ b/FruitBank.Common/Interfaces/IProductDto.cs
@@ -2,6 +2,6 @@
namespace FruitBank.Common.Interfaces;
-public interface IProductDto : IMgProductDto, ITare, IIncomingQuantity, IMeasuringAttributeValues
+public interface IProductDto : IMgProductDto, ITare, IIncomingQuantity, IAvailableQuantity, IMeasuringAttributeValues
{
}
\ No newline at end of file
diff --git a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor
index 0e3d5fb..ba13c7e 100644
--- a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor
+++ b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor
@@ -86,7 +86,7 @@
@bind-Value="@SelectedShippingItem"
Text="Select item"
ValueFieldName="@nameof(ShippingItem.Id)"
- TextFieldName="@(nameof(ShippingItem.Name))"
+ TextFieldName="@(nameof(ShippingItem.ProductName))"
CssClass="cw-480"
SearchMode="ListSearchMode.AutoSearch"
SearchFilterCondition="ListSearchFilterCondition.Contains"
@@ -133,7 +133,7 @@
@if (SelectedShippingItem is { ProductId: > 0 })
{
- @SelectedShippingItem.Name
+ @SelectedShippingItem.ProductName
diff --git a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs
index 9027955..5cdd085 100644
--- a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs
+++ b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs
@@ -62,7 +62,7 @@ namespace FruitBankHybrid.Shared.Pages
}
private static List? GetShippingItemsDataSource(Shipping? shipping)
- => shipping?.ShippingDocuments?.SelectMany(sd => sd.ShippingItems!).OrderBy(si => si.Name).ToList() ?? null;
+ => shipping?.ShippingDocuments?.SelectMany(sd => sd.ShippingItems!).OrderBy(si => si.ProductName).ToList() ?? null;
private async Task OnMeasuringDateChanged(DateTime selectedDateTime)
=> await RefreshShippingsFromDb(selectedDateTime);