From 0f1ed24631c9c8da1db374ac9e006acef3bbfccd Mon Sep 17 00:00:00 2001 From: Loretta Date: Fri, 10 Oct 2025 08:00:02 +0200 Subject: [PATCH] Implement Tare; Implement OrderItemPallet;, improvements, fixes, etc... --- .../Entities/MeasuringItemPalletBase.cs | 83 +++++++++++++++++++ FruitBank.Common/Entities/OrderItemPallet.cs | 36 ++++++++ .../Entities/ShippingItemPallet.cs | 69 +++------------ FruitBank.Common/FruitBankConstClient.cs | 3 + FruitBank.Common/Interfaces/IMeasurable.cs | 6 ++ FruitBank.Common/Interfaces/IMeasured.cs | 6 ++ .../Interfaces/IMeasuringAttributeValues.cs | 4 +- .../Interfaces/IMeasuringItemPalletBase.cs | 19 +++++ .../Interfaces/IOrderItemPallet.cs | 10 +++ FruitBank.Common/Interfaces/IShipping.cs | 2 +- .../Interfaces/IShippingDocument.cs | 2 +- FruitBank.Common/Interfaces/IShippingItem.cs | 5 +- .../Interfaces/IShippingItemPallet.cs | 15 +--- FruitBank.Common/SignalRs/SignalRTags.cs | 3 +- .../FruitBankClientTests.cs | 62 ++++++++------ .../Pages/MeasuringIn.razor | 61 ++++++++------ .../Pages/MeasuringIn.razor.cs | 8 ++ .../Pages/MeasuringOut.razor.cs | 9 +- FruitBankHybrid.Shared/wwwroot/app.css | 6 +- 19 files changed, 274 insertions(+), 135 deletions(-) create mode 100644 FruitBank.Common/Entities/MeasuringItemPalletBase.cs create mode 100644 FruitBank.Common/Entities/OrderItemPallet.cs create mode 100644 FruitBank.Common/Interfaces/IMeasurable.cs create mode 100644 FruitBank.Common/Interfaces/IMeasured.cs create mode 100644 FruitBank.Common/Interfaces/IMeasuringItemPalletBase.cs create mode 100644 FruitBank.Common/Interfaces/IOrderItemPallet.cs diff --git a/FruitBank.Common/Entities/MeasuringItemPalletBase.cs b/FruitBank.Common/Entities/MeasuringItemPalletBase.cs new file mode 100644 index 0000000..354ed95 --- /dev/null +++ b/FruitBank.Common/Entities/MeasuringItemPalletBase.cs @@ -0,0 +1,83 @@ +using FruitBank.Common.Interfaces; +using LinqToDB; +using LinqToDB.Mapping; +using Mango.Nop.Core.Entities; + +namespace FruitBank.Common.Entities; + +public abstract class MeasuringItemPalletBase : MgEntityBase, IMeasuringItemPalletBase +{ + private double _palletWeight; + private double _grossWeight; + private double _tareWeight; + + [NotColumn] + protected int ForeignItemId; + + public int Quantity { get; set; } + + [Column(DataType = DataType.DecFloat)] + public double TareWeight + { + get => _tareWeight; + set => _tareWeight = double.Round(value, 1); + } + + [Column(DataType = DataType.DecFloat)] + public double PalletWeight + { + get => _palletWeight; + set => _palletWeight = double.Round(value, 1); + } + + [NotColumn] public double NetWeight => CalculateNetWeight(); + + [Column(DataType = DataType.DecFloat, CanBeNull = false)] + public double GrossWeight + { + get => _grossWeight; + set => _grossWeight = double.Round(value, 1); + } + + public bool IsMeasured { get; set; } + + [SkipValuesOnUpdate] + public int? CreatorId { get; set; } + public int? ModifierId { get; set; } + + [SkipValuesOnUpdate] + public DateTime Created { get; set; } + public DateTime Modified { get; set; } + + public virtual double CalculateNetWeight() => double.Round(GrossWeight - PalletWeight - (TareWeight * Quantity), 1); + + /// + /// Nem lehet nullánál kisebb "Weight" érték és a ShippingId, Quantity nagyobb mint nulla! Megengedőbb mint az IsValidMeasuringValues(bool isMeasurable)... + /// + /// + public virtual bool IsValidSafeMeasuringValues() + { + return Quantity > 0 && TareWeight >= 0 && PalletWeight >= 0 && NetWeight >= 0 && GrossWeight >= 0; + } + + /// + /// "Szigorúbb" mint az IsValidSafeMeasuringValues() + /// + /// + /// + public virtual bool IsValidMeasuringValues(bool isMeasurable) + { + return Quantity > 0 && ((!isMeasurable && NetWeight == 0 && GrossWeight == 0 && PalletWeight == 0 && TareWeight == 0) + || (isMeasurable && NetWeight > 0 && GrossWeight > 0 && PalletWeight >= 0 && TareWeight >= 0)); + } + + public bool IsMeasuredAndValid(bool isMeasurable) + { + return Id > 0 && IsMeasured && IsValidMeasuringValues(isMeasurable); + } + + public override string ToString() + { + return $"{base.ToString()} [ForeignItemId: {ForeignItemId}; IsMeasured: {IsMeasured}; PalletWeight: {PalletWeight}; TareWeight: {TareWeight}; Quantity: {Quantity}; NetWeight: {NetWeight}; GrossWeight: {GrossWeight}]"; + } +} \ No newline at end of file diff --git a/FruitBank.Common/Entities/OrderItemPallet.cs b/FruitBank.Common/Entities/OrderItemPallet.cs new file mode 100644 index 0000000..44ba3ca --- /dev/null +++ b/FruitBank.Common/Entities/OrderItemPallet.cs @@ -0,0 +1,36 @@ +using FruitBank.Common.Interfaces; +using LinqToDB.Mapping; +using Nop.Core.Domain.Orders; + +namespace FruitBank.Common.Entities; + +[Table(Name = FruitBankConstClient.OrderItemPalletDbTableName)] +[System.ComponentModel.DataAnnotations.Schema.Table(FruitBankConstClient.OrderItemPalletDbTableName)] +public class OrderItemPallet : MeasuringItemPalletBase, IOrderItemPallet +{ + public int OrderItemId + { + get => ForeignItemId; + set => ForeignItemId = value; + } + + [LinqToDB.Mapping.Association(ThisKey = nameof(OrderItemId), OtherKey = nameof(OrderItem.Id), CanBeNull = true)] + public OrderItem? OrderItem { get; set; } + + public override double CalculateNetWeight() => base.CalculateNetWeight(); + + public override bool IsValidSafeMeasuringValues() + { + return OrderItemId > 0 && base.IsValidSafeMeasuringValues(); + } + + /// + /// "Szigorúbb" mint az IsValidSafeMeasuringValues() + /// + /// + /// + public override bool IsValidMeasuringValues(bool isMeasurable) + { + return OrderItemId > 0 && base.IsValidMeasuringValues(isMeasurable); + } +} \ No newline at end of file diff --git a/FruitBank.Common/Entities/ShippingItemPallet.cs b/FruitBank.Common/Entities/ShippingItemPallet.cs index 213b33d..25a5642 100644 --- a/FruitBank.Common/Entities/ShippingItemPallet.cs +++ b/FruitBank.Common/Entities/ShippingItemPallet.cs @@ -1,66 +1,28 @@ using System.ComponentModel.DataAnnotations; +using System.Security.Cryptography.X509Certificates; using FruitBank.Common.Interfaces; using LinqToDB.Mapping; -using Mango.Nop.Core.Entities; -using DataType = LinqToDB.DataType; namespace FruitBank.Common.Entities; [Table(Name = FruitBankConstClient.ShippingItemPalletDbTableName)] [System.ComponentModel.DataAnnotations.Schema.Table(FruitBankConstClient.ShippingItemPalletDbTableName)] -public class ShippingItemPallet : MgEntityBase, IShippingItemPallet +public class ShippingItemPallet : MeasuringItemPalletBase, IShippingItemPallet { - private double _palletWeight; - private double _grossWeight; - - public int ShippingItemId { get; set; } - - [Column(DataType = DataType.DecFloat)] - public double PalletWeight + public int ShippingItemId { - get => _palletWeight; - set => _palletWeight = double.Round(value, 1); + get => ForeignItemId; + set => ForeignItemId = value; } - //[Nullable] - //[Column(CanBeNull = true)] - [Range(1, 100000, ErrorMessage = "The Quantity value should be a number between 1 and 100,000.")] - public int Quantity { get; set; } - - [NotColumn] - //[Column(DataType = DataType.DecFloat, CanBeNull = false)] - //[Range(1, 100000, ErrorMessage = "The NetWeight value should be a number between 1 and 100,000.")] - public double NetWeight => double.Round(GrossWeight - PalletWeight, 1); - - //[Nullable] - [Column(DataType = DataType.DecFloat, CanBeNull = false)] - [Range(1, 100000, ErrorMessage = "The GrossWeight value should be a number between 1 and 100,000.")] - public double GrossWeight - { - get => _grossWeight; - set => _grossWeight = double.Round(value, 1); - } - - public bool IsMeasured { get; set; } - [LinqToDB.Mapping.Association(ThisKey = nameof(ShippingItemId), OtherKey = nameof(ShippingItem.Id), CanBeNull = true)] public ShippingItem? ShippingItem { get; set; } - [SkipValuesOnUpdate] - public int? CreatorId { get; set; } - public int? ModifierId { get; set; } + public override double CalculateNetWeight() => base.CalculateNetWeight(); - [SkipValuesOnUpdate] - public DateTime Created { get; set; } - public DateTime Modified { get; set; } - - /// - /// Nem lehet nullánál kisebb "Weight" érték és a ShippingId, Quantity nagyobb mint nulla! Megengedőbb mint az IsValidMeasuringValues(bool isMeasurable)... - /// - /// - public bool IsValidSafeMeasuringValues() + public override bool IsValidSafeMeasuringValues() { - return ShippingItemId > 0 && Quantity > 0 && PalletWeight >= 0 && NetWeight >= 0 && GrossWeight >= 0; + return ShippingItemId > 0 && base.IsValidSafeMeasuringValues(); } /// @@ -68,19 +30,8 @@ public class ShippingItemPallet : MgEntityBase, IShippingItemPallet /// /// /// - public bool IsValidMeasuringValues(bool isMeasurable) + public override bool IsValidMeasuringValues(bool isMeasurable) { - return ShippingItemId > 0 && Quantity > 0 && - ((!isMeasurable && NetWeight == 0 && GrossWeight == 0 && PalletWeight == 0) || (isMeasurable && NetWeight > 0 && GrossWeight > 0 && PalletWeight >= 0)); - } - - public bool IsMeasuredAndValid(bool isMeasurable) - { - return Id > 0 && IsMeasured && IsValidMeasuringValues(isMeasurable); - } - - public override string ToString() - { - return $"{base.ToString()} [ShippingItemId: {ShippingItemId}; IsMeasured: {IsMeasured}; PalletWeight: {PalletWeight}; Quantity: {Quantity}; NetWeight: {NetWeight}; GrossWeight: {GrossWeight}]"; + return ShippingItemId > 0 && base.IsValidMeasuringValues(isMeasurable); } } \ No newline at end of file diff --git a/FruitBank.Common/FruitBankConstClient.cs b/FruitBank.Common/FruitBankConstClient.cs index 3095ec2..2d5124f 100644 --- a/FruitBank.Common/FruitBankConstClient.cs +++ b/FruitBank.Common/FruitBankConstClient.cs @@ -18,6 +18,9 @@ public static class FruitBankConstClient public const string PalletDbTableName = "fbPallet"; public const string FilesDbTableName = "fbFiles"; public const string PartnerDbTableName = "fbPartner"; + + public const string OrderItemPalletDbTableName = "fbOrderItemPallet"; + public const string ShippingDbTableName = "fbShipping"; public const string ShippingItemDbTableName = "fbShippingItem"; public const string ShippingItemPalletDbTableName = "fbShippingItemPallet"; diff --git a/FruitBank.Common/Interfaces/IMeasurable.cs b/FruitBank.Common/Interfaces/IMeasurable.cs new file mode 100644 index 0000000..d1cb598 --- /dev/null +++ b/FruitBank.Common/Interfaces/IMeasurable.cs @@ -0,0 +1,6 @@ +namespace FruitBank.Common.Interfaces; + +public interface IMeasurable +{ + bool IsMeasurable { get; set; } +} \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IMeasured.cs b/FruitBank.Common/Interfaces/IMeasured.cs new file mode 100644 index 0000000..b87db81 --- /dev/null +++ b/FruitBank.Common/Interfaces/IMeasured.cs @@ -0,0 +1,6 @@ +namespace FruitBank.Common.Interfaces; + +public interface IMeasured +{ + bool IsMeasured { get; set; } +} \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IMeasuringAttributeValues.cs b/FruitBank.Common/Interfaces/IMeasuringAttributeValues.cs index 0a7185c..64aa088 100644 --- a/FruitBank.Common/Interfaces/IMeasuringAttributeValues.cs +++ b/FruitBank.Common/Interfaces/IMeasuringAttributeValues.cs @@ -2,9 +2,7 @@ namespace FruitBank.Common.Interfaces; -public interface IMeasuringAttributeValues : IMeasuringWeights, IEntityInt +public interface IMeasuringAttributeValues : IEntityInt, IMeasuringWeights, IMeasurable { - bool IsMeasurable { get; set; } - bool HasMeasuringValues(); //=> Id > 0 && NetWeight != null && GrossWeight != null && IsMeasurable != null; } \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IMeasuringItemPalletBase.cs b/FruitBank.Common/Interfaces/IMeasuringItemPalletBase.cs new file mode 100644 index 0000000..d52911e --- /dev/null +++ b/FruitBank.Common/Interfaces/IMeasuringItemPalletBase.cs @@ -0,0 +1,19 @@ +using AyCode.Interfaces.Entities; +using AyCode.Interfaces.TimeStampInfo; +using FruitBank.Common.Entities; + +namespace FruitBank.Common.Interfaces; + +public interface IMeasuringItemPalletBase : IEntityInt, IMeasuringQuantity, IMeasuringGrossWeight, IMeasured, ITimeStampInfo +{ + public double TareWeight { get; set; } + public double PalletWeight { get; set; } + + public int? CreatorId { get; set; } + public int? ModifierId { get; set; } + + public double CalculateNetWeight(); + + public bool IsValidSafeMeasuringValues(); + public bool IsValidMeasuringValues(bool isMeasurable); +} \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IOrderItemPallet.cs b/FruitBank.Common/Interfaces/IOrderItemPallet.cs new file mode 100644 index 0000000..42e50ed --- /dev/null +++ b/FruitBank.Common/Interfaces/IOrderItemPallet.cs @@ -0,0 +1,10 @@ +using FruitBank.Common.Entities; +using Nop.Core.Domain.Orders; + +namespace FruitBank.Common.Interfaces; + +public interface IOrderItemPallet : IMeasuringItemPalletBase +{ + int OrderItemId { get; set; } + public OrderItem? OrderItem { get; set; } +} \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IShipping.cs b/FruitBank.Common/Interfaces/IShipping.cs index 1448be9..25b1c56 100644 --- a/FruitBank.Common/Interfaces/IShipping.cs +++ b/FruitBank.Common/Interfaces/IShipping.cs @@ -4,7 +4,7 @@ using FruitBank.Common.Entities; namespace FruitBank.Common.Interfaces; -public interface IShipping : IEntityInt, ITimeStampInfo +public interface IShipping : IEntityInt, ITimeStampInfo//, IMeasured { DateTime ShippingDate { get; set; } string LicencePlate { get; set; } diff --git a/FruitBank.Common/Interfaces/IShippingDocument.cs b/FruitBank.Common/Interfaces/IShippingDocument.cs index 01cefa3..c1f26b7 100644 --- a/FruitBank.Common/Interfaces/IShippingDocument.cs +++ b/FruitBank.Common/Interfaces/IShippingDocument.cs @@ -4,7 +4,7 @@ using FruitBank.Common.Entities; namespace FruitBank.Common.Interfaces; -public interface IShippingDocument: IEntityInt, ITimeStampInfo +public interface IShippingDocument: IEntityInt, ITimeStampInfo//, IMeasured { public int PartnerId { get; set; } public int? ShippingId { get; set; } diff --git a/FruitBank.Common/Interfaces/IShippingItem.cs b/FruitBank.Common/Interfaces/IShippingItem.cs index 8910a63..c1a633e 100644 --- a/FruitBank.Common/Interfaces/IShippingItem.cs +++ b/FruitBank.Common/Interfaces/IShippingItem.cs @@ -5,7 +5,7 @@ using Nop.Core.Domain.Catalog; namespace FruitBank.Common.Interfaces; -public interface IShippingItem : IEntityInt, ITimeStampInfo +public interface IShippingItem : IEntityInt, ITimeStampInfo, IMeasurable, IMeasured { int ShippingDocumentId { get; set; } int? PalletId { get; set; } @@ -24,9 +24,6 @@ public interface IShippingItem : IEntityInt, ITimeStampInfo double MeasuredNetWeight { get; set; } double MeasuredGrossWeight { get; set; } - bool IsMeasurable { get; set; } - bool IsMeasured { get; set; } - public Product? Product { get; set; } public ShippingDocument? ShippingDocument { get; set; } public List? ShippingItemPallets { get; set; } diff --git a/FruitBank.Common/Interfaces/IShippingItemPallet.cs b/FruitBank.Common/Interfaces/IShippingItemPallet.cs index 2baf0c9..ebbdae9 100644 --- a/FruitBank.Common/Interfaces/IShippingItemPallet.cs +++ b/FruitBank.Common/Interfaces/IShippingItemPallet.cs @@ -1,20 +1,9 @@ -using AyCode.Interfaces.Entities; -using AyCode.Interfaces.TimeStampInfo; -using FruitBank.Common.Entities; +using FruitBank.Common.Entities; namespace FruitBank.Common.Interfaces; -public interface IShippingItemPallet : IEntityInt, IMeasuringGrossWeight, IMeasuringQuantity, ITimeStampInfo +public interface IShippingItemPallet : IMeasuringItemPalletBase { int ShippingItemId { get; set; } - - public double PalletWeight { get; set; } - public bool IsMeasured { get; set; } - public ShippingItem? ShippingItem { get; set; } - - public int? CreatorId { get; set; } - public int? ModifierId { get; set; } - - public bool IsValidMeasuringValues(bool isMeasurable); } \ No newline at end of file diff --git a/FruitBank.Common/SignalRs/SignalRTags.cs b/FruitBank.Common/SignalRs/SignalRTags.cs index 92284a4..45e63dc 100644 --- a/FruitBank.Common/SignalRs/SignalRTags.cs +++ b/FruitBank.Common/SignalRs/SignalRTags.cs @@ -42,7 +42,8 @@ public class SignalRTags : AcSignalRTags public const int AddShippingItemPallet = 95; public const int UpdateShippingItemPallet = 96; - public const int AddOrUpdateMeasuredShippingItemPallets = 97; + public const int AddOrUpdateMeasuredShippingItemPallet = 97; + public const int AddOrUpdateMeasuredShippingItemPallets = 98; public const int AuthenticateUser = 160; public const int RefreshToken = 200; diff --git a/FruitBankHybrid.Shared.Tests/FruitBankClientTests.cs b/FruitBankHybrid.Shared.Tests/FruitBankClientTests.cs index fe692f0..c9d1a4a 100644 --- a/FruitBankHybrid.Shared.Tests/FruitBankClientTests.cs +++ b/FruitBankHybrid.Shared.Tests/FruitBankClientTests.cs @@ -207,17 +207,17 @@ namespace FruitBankHybrid.Shared.Tests } [DataTestMethod] - [DataRow(1, -1, -2.137563300001, -333.75238200001)] - [DataRow(1, 1, 2.137563300001, 3.75238200001)] - [DataRow(1, 1, 20.137563300001, 3.75238200001)] - [DataRow(2, -1, -20.137563300001, 3.75238200001)] - [DataRow(2, -1, 20.137563300001, 3.75238200001)] - [DataRow(3, 1, 2.137563300001, 1.75238200001)] - [DataRow(3, 1, 2.137563300001, 3.75238200001)] - [DataRow(4, 13, 2.137563300001, 3.75238200001)] - [DataRow(5, 1, 2.137563300001, 3.75238200001)] - [DataRow(5, -1, 2.137563300001, 3.75238200001)] - public async Task UpdateShippingItemTest(int shippingItemId, int incQuantity, double incPalletWeight, double incGrossWeight) + [DataRow(1, -1, -2.137563300001, -333.75238200001, 2.12545)] + [DataRow(1, 1, 2.137563300001, 3.75238200001, 2.12545)] + [DataRow(1, 1, 20.137563300001, 3.75238200001, 2.12545)] + [DataRow(2, -1, -20.137563300001, 3.75238200001, 2.12545)] + [DataRow(2, -1, 20.137563300001, 3.75238200001, 2.12545)] + [DataRow(3, 1, 2.137563300001, 1.75238200001, 2.12545)] + [DataRow(3, 1, 2.137563300001, 3.75238200001, 2.12545)] + [DataRow(4, 13, 2.137563300001, 3.75238200001, 2.12545)] + [DataRow(5, 1, 2.137563300001, 3.75238200001, 2.12545)] + [DataRow(5, -1, 2.137563300001, 3.75238200001, 2.12545)] + public async Task UpdateShippingItemTest(int shippingItemId, int incQuantity, double incPalletWeight, double incGrossWeight, double incTare) { var originalShippingItem = await GetShippingItemByIdAsync(shippingItemId); var originalMeasuringProductDto = await GetMeasuringProductDtoByIdAsync(originalShippingItem.ProductId!.Value, originalShippingItem.IsMeasurable); @@ -226,46 +226,58 @@ namespace FruitBankHybrid.Shared.Tests var shippingItem = await GetShippingItemByIdAsync(shippingItemId); - var shippingItemPallet = shippingItem.ShippingItemPallets!.FirstOrDefault(); + var originalShippingItemPallet = shippingItem.ShippingItemPallets!.FirstOrDefault(); - if (shippingItemPallet == null) + if (originalShippingItemPallet == null) { - shippingItemPallet = new ShippingItemPallet { ShippingItemId = shippingItem.Id, PalletWeight = shippingItem.Pallet?.Weight ?? 0 }; - shippingItem.ShippingItemPallets!.Add(shippingItemPallet); + originalShippingItemPallet = new ShippingItemPallet { ShippingItemId = shippingItem.Id, PalletWeight = shippingItem.Pallet?.Weight ?? 0 }; + shippingItem.ShippingItemPallets!.Add(originalShippingItemPallet); } - Assert.IsNotNull(shippingItemPallet); + Assert.IsNotNull(originalShippingItemPallet); var nullResultIsValid = shippingItem.IsMeasured && !shippingItem.IsValidMeasuringValues(); nullResultIsValid = nullResultIsValid || shippingItem.ShippingItemPallets!.Any(x => !x.IsValidMeasuringValues(originalMeasuringProductDto.IsMeasurable)); nullResultIsValid = nullResultIsValid || shippingItem.ShippingItemPallets!.Any(x => !x.IsValidSafeMeasuringValues()); - shippingItemPallet.Quantity += incQuantity; - shippingItemPallet.GrossWeight += incGrossWeight; - shippingItemPallet.PalletWeight += incPalletWeight; + originalShippingItemPallet.Quantity += incQuantity; + originalShippingItemPallet.GrossWeight += incGrossWeight; + originalShippingItemPallet.PalletWeight += incPalletWeight; + originalShippingItemPallet.TareWeight += incTare; - shippingItem = await _signalRClient.UpdateShippingItem(shippingItem); + //shippingItem = await _signalRClient.UpdateShippingItem(shippingItem); + var shippingItemPallet = await _signalRClient.UpdateShippingItemPallet(originalShippingItemPallet); //A szerver oldal 0-ra állítja a shippingItemPallet weight-eket, ha nem mérhető! - J. if (!originalMeasuringProductDto.IsMeasurable) { - shippingItemPallet.GrossWeight = 0; - shippingItemPallet.PalletWeight = 0; + originalShippingItemPallet.GrossWeight = 0; + originalShippingItemPallet.PalletWeight = 0; + originalShippingItemPallet.TareWeight = 0; } - if (nullResultIsValid || !shippingItemPallet.IsValidSafeMeasuringValues()) + if (nullResultIsValid || !originalShippingItemPallet.IsValidSafeMeasuringValues()) { - Assert.IsNull(shippingItem); + Assert.IsNull(shippingItemPallet); return; } + Assert.IsNotNull(shippingItemPallet); + Assert.IsTrue(shippingItemPallet.TareWeight == originalShippingItemPallet.TareWeight); + Assert.IsTrue(shippingItemPallet.Quantity == originalShippingItemPallet.Quantity); + Assert.IsTrue(shippingItemPallet.GrossWeight == originalShippingItemPallet.GrossWeight); + Assert.IsTrue(shippingItemPallet.PalletWeight == originalShippingItemPallet.PalletWeight); + Assert.IsTrue(shippingItemPallet.ShippingItemId == originalShippingItemPallet.ShippingItemId); + + shippingItem = await _signalRClient.GetShippingItemById(shippingItemPallet.ShippingItemId); + Assert.IsNotNull(shippingItem); Assert.IsNotNull(shippingItem.Product); Assert.IsNotNull(shippingItem.ShippingItemPallets); Assert.IsTrue(shippingItem.IsMeasurable == originalMeasuringProductDto.IsMeasurable); incGrossWeight = originalMeasuringProductDto.IsMeasurable ? double.Round(incGrossWeight, 1) : 0; - var incNetWeight = originalMeasuringProductDto.IsMeasurable ? double.Round(incGrossWeight - incPalletWeight, 1) : 0; + var incNetWeight = originalMeasuringProductDto.IsMeasurable ? double.Round((incGrossWeight - incPalletWeight) - (incQuantity * incTare), 1) : 0; var isMeasuredPalletsCount = shippingItem.ShippingItemPallets!.Count(x => x.IsMeasured); diff --git a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor index 3e24c3a..cc0a790 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor +++ b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor @@ -98,7 +98,8 @@ @if (SelectedShippingItem != null) {

- @SelectedShippingItem.Name

+ @SelectedShippingItem.Name + *@ - @for (var index = 0; index < SelectedShippingItem.ShippingItemPallets!.Count; index++) + @for (var index = 0; index < SelectedShippingItem.ShippingItemPallets!.Count; index++) { var localI = index + 1; var currentShippingItemPallet = SelectedShippingItem.ShippingItemPallets![index]; - - - @(localI). Raklap + + + + @(localI).mérés + Field="@nameof(ShippingItemPallet.PalletWeight)" + Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)" + Caption="Rakl.súly(kg)" ColSpanMd="2"/> + + + - + Field="@nameof(ShippingItemPallet.Quantity)" + Enabled="@(SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)" + Caption="Rekesz/csomag" ColSpanMd="2"/> + Field="@nameof(ShippingItemPallet.GrossWeight)" + Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)" + Caption="Br.súly(kg)" ColSpanMd="2"> - + @(currentShippingItemPallet.NetWeight) kg. - @* - + + - *@ + } - TOTAL: + TOTAL: + + + @(SelectedShippingItem.MeasuredQuantity) db + @(SelectedShippingItem.MeasuredGrossWeight) kg + @(SelectedShippingItem.MeasuredNetWeight) kg - @(SelectedShippingItem.MeasuredQuantity) db. - @(SelectedShippingItem.MeasuredGrossWeight) kg. - @(SelectedShippingItem.MeasuredNetWeight) kg. - @@ -196,7 +205,7 @@ - @if (SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0) +@* @if (SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0) { diff --git a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs index e965e7b..409a591 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs +++ b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs @@ -94,6 +94,10 @@ namespace FruitBankHybrid.Shared.Pages switch (fieldName) { + case nameof(ShippingItemPallet.TareWeight): + return IsShippingitemPalletMeasuredAndValid(shippingItemPallet) ? "text-success" : + (shippingItemPallet.TareWeight < 0 || shippingItemPallet.NetWeight < 0 ? "text-danger" : ""); + break; case nameof(ShippingItemPallet.PalletWeight): return IsShippingitemPalletMeasuredAndValid(shippingItemPallet) ? "text-success" : (shippingItemPallet.PalletWeight < 0 || shippingItemPallet.NetWeight < 0 ? "text-danger" : ""); @@ -274,6 +278,10 @@ namespace FruitBankHybrid.Shared.Pages shippingItemPallet.PalletWeight = (double)newValue; break; + case nameof(ShippingItemPallet.TareWeight): + shippingItemPallet.TareWeight = (double)newValue; + break; + case nameof(ShippingItemPallet.Quantity): shippingItemPallet.Quantity = (int)newValue; break; diff --git a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs index 54a82e9..c992158 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs +++ b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs @@ -1,4 +1,7 @@ -using FruitBank.Common.Models; +using AyCode.Core.Loggers; +using FruitBank.Common.Models; +using FruitBankHybrid.Shared.Services.SignalRs; +using Mango.Nop.Core.Loggers; using Microsoft.AspNetCore.Components; using System; using System.Collections.Generic; @@ -10,6 +13,10 @@ namespace FruitBankHybrid.Shared.Pages { public partial class MeasuringOut : ComponentBase { + [Inject] public required IEnumerable LogWriters { get; set; } + [Inject] public required FruitBankSignalRClient FruitBankSignalRClient { get; set; } [Inject] public required LoggedInModel LoggedInModel { get; set; } + + private ILogger _logger = null!; } } diff --git a/FruitBankHybrid.Shared/wwwroot/app.css b/FruitBankHybrid.Shared/wwwroot/app.css index dc61a7a..c4a780f 100644 --- a/FruitBankHybrid.Shared/wwwroot/app.css +++ b/FruitBankHybrid.Shared/wwwroot/app.css @@ -68,4 +68,8 @@ h1:focus { mask-repeat: no-repeat; -webkit-mask-image: var(--icon-mask-image); mask-image: var(--icon-mask-image); -} \ No newline at end of file +} + +.measuring-form-layout { + margin-top: 15px; +}