Implement Tare; Implement OrderItemPallet;, improvements, fixes, etc...

This commit is contained in:
Loretta 2025-10-10 08:00:02 +02:00
parent a74b356e70
commit 0f1ed24631
19 changed files with 274 additions and 135 deletions

View File

@ -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);
/// <summary>
/// Nem lehet nullánál kisebb "Weight" érték és a ShippingId, Quantity nagyobb mint nulla! Megengedőbb mint az IsValidMeasuringValues(bool isMeasurable)...
/// </summary>
/// <returns></returns>
public virtual bool IsValidSafeMeasuringValues()
{
return Quantity > 0 && TareWeight >= 0 && PalletWeight >= 0 && NetWeight >= 0 && GrossWeight >= 0;
}
/// <summary>
/// "Szigorúbb" mint az IsValidSafeMeasuringValues()
/// </summary>
/// <param name="isMeasurable"></param>
/// <returns></returns>
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}]";
}
}

View File

@ -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();
}
/// <summary>
/// "Szigorúbb" mint az IsValidSafeMeasuringValues()
/// </summary>
/// <param name="isMeasurable"></param>
/// <returns></returns>
public override bool IsValidMeasuringValues(bool isMeasurable)
{
return OrderItemId > 0 && base.IsValidMeasuringValues(isMeasurable);
}
}

View File

@ -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; }
/// <summary>
/// Nem lehet nullánál kisebb "Weight" érték és a ShippingId, Quantity nagyobb mint nulla! Megengedőbb mint az IsValidMeasuringValues(bool isMeasurable)...
/// </summary>
/// <returns></returns>
public bool IsValidSafeMeasuringValues()
public override bool IsValidSafeMeasuringValues()
{
return ShippingItemId > 0 && Quantity > 0 && PalletWeight >= 0 && NetWeight >= 0 && GrossWeight >= 0;
return ShippingItemId > 0 && base.IsValidSafeMeasuringValues();
}
/// <summary>
@ -68,19 +30,8 @@ public class ShippingItemPallet : MgEntityBase, IShippingItemPallet
/// </summary>
/// <param name="isMeasurable"></param>
/// <returns></returns>
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);
}
}

View File

@ -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";

View File

@ -0,0 +1,6 @@
namespace FruitBank.Common.Interfaces;
public interface IMeasurable
{
bool IsMeasurable { get; set; }
}

View File

@ -0,0 +1,6 @@
namespace FruitBank.Common.Interfaces;
public interface IMeasured
{
bool IsMeasured { get; set; }
}

View File

@ -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;
}

View File

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

View File

@ -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; }
}

View File

@ -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; }

View File

@ -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; }

View File

@ -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<ShippingItemPallet>? ShippingItemPallets { get; set; }

View File

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

View File

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

View File

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

View File

@ -98,7 +98,8 @@
@if (SelectedShippingItem != null)
{
<h3 style="margin-bottom: 30px;" class="@(SelectedShippingItem.IsMeasured && SelectedShippingItem.ShippingItemPallets!.All(x => x.IsMeasuredAndValid(SelectedShippingItem.IsMeasurable)) ? "text-success" : "")">
@SelectedShippingItem.Name</h3>
@SelectedShippingItem.Name
</h3>
<EditForm Model="@SelectedShippingItem" Context="FrmContext"
OnValidSubmit="@HandleValidSubmit"
@ -140,55 +141,63 @@
</DxFormLayoutItem> *@
<DxFormLayoutItem Context="dfsdf" ColSpanMd="12">
@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];
<DxFormLayout Data="@currentShippingItemPallet" CaptionPosition="CaptionPosition.Vertical" CssClass="w-100" ItemUpdating="@((pair) => OnItemUpdating2(pair.Key, pair.Value, currentShippingItemPallet))">
<DxFormLayoutItem ColSpanMd="3" BeginRow="true">
<text>@(localI). Raklap</text>
<DxFormLayout Data="@currentShippingItemPallet" CaptionPosition="CaptionPosition.Vertical" CssClass="w-100 measuring-form-layout"
ItemUpdating="@((pair) => OnItemUpdating2(pair.Key, pair.Value, currentShippingItemPallet))">
<DxFormLayoutItem ColSpanMd="1" BeginRow="true">
<text>@(localI).mérés</text>
</DxFormLayoutItem>
<DxFormLayoutItem CaptionCssClass="@(GetShippingPalletsCssClassNames(nameof(ShippingItemPallet.PalletWeight), currentShippingItemPallet))"
Field="@nameof(ShippingItemPallet.PalletWeight)"
Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="Rakl.súly(kg)" ColSpanMd="2" />
Field="@nameof(ShippingItemPallet.PalletWeight)"
Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="Rakl.súly(kg)" ColSpanMd="2"/>
<DxFormLayoutItem ColSpanMd="1"/>
<DxFormLayoutItem CaptionCssClass="@(GetShippingPalletsCssClassNames(nameof(ShippingItemPallet.TareWeight), currentShippingItemPallet))"
Field="@nameof(ShippingItemPallet.TareWeight)"
Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="Tára.súly(kg)" ColSpanMd="2"/>
<DxFormLayoutItem ColSpanMd="1" />
<DxFormLayoutItem CaptionCssClass="@(GetShippingPalletsCssClassNames(nameof(ShippingItemPallet.Quantity), currentShippingItemPallet))"
Field="@nameof(ShippingItemPallet.Quantity)"
Enabled="@(SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="Rekesz/csomag" ColSpanMd="2" />
Field="@nameof(ShippingItemPallet.Quantity)"
Enabled="@(SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="Rekesz/csomag" ColSpanMd="2"/>
<DxFormLayoutItem CaptionCssClass="@(GetShippingPalletsCssClassNames(nameof(ShippingItemPallet.GrossWeight), currentShippingItemPallet))"
Field="@nameof(ShippingItemPallet.GrossWeight)"
Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="Br.súly(kg)" ColSpanMd="2">
Field="@nameof(ShippingItemPallet.GrossWeight)"
Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="Br.súly(kg)" ColSpanMd="2">
</DxFormLayoutItem>
<DxFormLayoutItem Caption="Net.súly(kg)" ColSpanMd="2" CaptionCssClass="@(GetShippingPalletsCssClassNames(nameof(ShippingItemPallet.NetWeight), currentShippingItemPallet))">
<DxFormLayoutItem Caption="Net.súly(kg)" ColSpanMd="1" CaptionCssClass="@(GetShippingPalletsCssClassNames(nameof(ShippingItemPallet.NetWeight), currentShippingItemPallet))">
<text>@(currentShippingItemPallet.NetWeight) kg.</text>
</DxFormLayoutItem>
@* <DxFormLayoutItem ColSpanMd="1">
<DxButton Text="@(currentShippingItemPallet.Id == 0 ? "Mentés" : "Módosítás")" Click="() => OnShippingItemPalletSaveClick(currentShippingItemPallet)" CssClass="w-100" />
<DxFormLayoutItem ColSpanMd="1">
<DxButton Text="@(currentShippingItemPallet.Id == 0 ? "Mentés" : "Módosítás")" Click="() => OnShippingItemPalletSaveClick(currentShippingItemPallet)" CssClass="w-100"/>
</DxFormLayoutItem>
*@
</DxFormLayout>
}
</DxFormLayoutItem>
<DxFormLayoutItem Context="vfdfgfd" ColSpanMd="12" BeginRow="true">
<DxFormLayout CssClass="w-100">
<DxFormLayoutItem ColSpanMd="4" BeginRow="false"><strong>TOTAL:</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="1" BeginRow="false"><strong>TOTAL:</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="2" BeginRow="false" />
<DxFormLayoutItem ColSpanMd="1" BeginRow="false" />
<DxFormLayoutItem ColSpanMd="2" BeginRow="false" />
<DxFormLayoutItem ColSpanMd="2" BeginRow="false"><strong>@(SelectedShippingItem.MeasuredQuantity) db</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="2" BeginRow="false"><strong>@(SelectedShippingItem.MeasuredGrossWeight) kg</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="1" BeginRow="false"><strong>@(SelectedShippingItem.MeasuredNetWeight) kg</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="1" BeginRow="false" />
<DxFormLayoutItem ColSpanMd="1" BeginRow="false"><strong>@(SelectedShippingItem.MeasuredQuantity) db.</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="1" BeginRow="false"><strong>@(SelectedShippingItem.MeasuredGrossWeight) kg.</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="1" BeginRow="false"><strong>@(SelectedShippingItem.MeasuredNetWeight) kg.</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="3" BeginRow="false" />
</DxFormLayout>
</DxFormLayoutItem>
@ -196,7 +205,7 @@
<ValidationSummary />
</DxFormLayoutItem>
@if (SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)
@* @if (SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)
{
<DxFormLayoutItem ColSpanMd="12" BeginRow="true">
<DxButton Text="@(SelectedShippingItem.IsMeasured ? "Befejezett mérés módosítása" : "Mérés befejezése")"
@ -208,7 +217,7 @@
{
_errorText = "Nem végezhető el a mérés, nincs megadva a ProductId! Jelezze a vezetőségnek...";
}
*@
@if (!_errorText.IsNullOrWhiteSpace())
{
<DxFormLayoutItem ColSpanMd="12" BeginRow="true">

View File

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

View File

@ -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<IAcLogWriterClientBase> LogWriters { get; set; }
[Inject] public required FruitBankSignalRClient FruitBankSignalRClient { get; set; }
[Inject] public required LoggedInModel LoggedInModel { get; set; }
private ILogger _logger = null!;
}
}

View File

@ -68,4 +68,8 @@ h1:focus {
mask-repeat: no-repeat;
-webkit-mask-image: var(--icon-mask-image);
mask-image: var(--icon-mask-image);
}
}
.measuring-form-layout {
margin-top: 15px;
}