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);