Merge branch '4.80' of https://git.aycode.com/Adam/Mango.Nop.Plugins into 4.80
This commit is contained in:
commit
244181bebd
|
|
@ -167,6 +167,24 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
|
|||
return await ctx.UpdateShippingItemPalletAsync(shippingItemPallet);
|
||||
}
|
||||
|
||||
[SignalR(SignalRTags.AddOrUpdateMeasuredShippingItemPallets)]
|
||||
public async Task<ShippingItem> AddOrUpdateMeasuredShippingItemPallets(List<ShippingItemPallet> shippingItemPallets)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(shippingItemPallets);
|
||||
|
||||
_logger.Detail($"AddOrUpdateMeasuredShippingItemPallets invoked; count: {shippingItemPallets.Count}");
|
||||
|
||||
if (shippingItemPallets.Count == 0) return null;
|
||||
|
||||
var shippingItemId = shippingItemPallets.FirstOrDefault()!.ShippingItemId;
|
||||
if (shippingItemId <= 0 || shippingItemPallets.Any(x => x.ShippingItemId != shippingItemId)) return null;
|
||||
|
||||
var shippingItem = await ctx.ShippingItems.GetByIdAsync(shippingItemId, false);
|
||||
shippingItem.ShippingItemPallets = shippingItemPallets.Where(sip => sip.IsValidMeasuringValues(shippingItem.IsMeasurable)).ToList();
|
||||
|
||||
return await UpdateMeasuredShippingItem(shippingItem);
|
||||
}
|
||||
|
||||
[SignalR(SignalRTags.GetShippingDocuments)]
|
||||
public async Task<List<ShippingDocument>> GetShippingDocuments()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -161,8 +161,7 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
|
||||
public Task<bool> UpdateMeasuredShippingItemSafeAsync(ShippingItem shippingItem)
|
||||
{
|
||||
if (shippingItem.IsValidMeasuringValues() && shippingItem.ShippingItemPallets?.Count == shippingItem.PalletsOnDocument)
|
||||
return UpdateShippingItemSafeAsync(shippingItem);
|
||||
if (shippingItem.IsValidMeasuringValues()) return UpdateShippingItemSafeAsync(shippingItem);
|
||||
|
||||
Logger.Error("shippingItem.IsMeasurable && !shippingItem.IsValidMeasuringValues()");
|
||||
return Task.FromResult(false);
|
||||
|
|
@ -198,6 +197,7 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
shippingItem.IsMeasurable = productIsMeasurable;
|
||||
|
||||
if (shippingItem.ShippingItemPallets is { Count: > 0 }) await AddOrUpdateShippingItemPalletAsync(shippingItem);
|
||||
//await AddOrUpdateShippingItemPalletAsync(shippingItem.ShippingItemPallets.Where(x => x.IsValidMeasuringValues(shippingItem.IsMeasurable)), shippingItem);
|
||||
|
||||
//Nem tudhatjuk, h minden Pallet-et tartalmaz-e a shippingItem paraméter! A Biztonság kedvéért lekérjük db-ből! - J.
|
||||
shippingItem.ShippingItemPallets = await ShippingItemPallets.GetAllByShippingItemIdAsync(shippingItem.Id, false).ToListAsync();
|
||||
|
|
@ -207,7 +207,7 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
if (dbShippingItem == null) throw new Exception($"dbShippingItem == null; shippingItem.Id: {shippingItem.Id}");
|
||||
|
||||
var isMeasuredPrerequisite = product != null && shippingItem.PalletsOnDocument == shippingItem.ShippingItemPallets.Count
|
||||
&& shippingItem.ShippingItemPallets.All(x => x.IsMeasured && x.IsValidMeasuringValues(shippingItem.IsMeasurable));
|
||||
&& shippingItem.ShippingItemPallets.All(x => x.IsMeasuredAndValid(shippingItem.IsMeasurable));
|
||||
|
||||
SetupShippingItemMeasuringValues(shippingItem, isMeasuredPrerequisite);
|
||||
shippingItem.IsMeasured = isMeasuredPrerequisite && shippingItem.IsValidMeasuringValues();
|
||||
|
|
@ -289,6 +289,9 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
shippingItem.MeasuredGrossWeight += shippingItemPallet.GrossWeight;
|
||||
}
|
||||
|
||||
shippingItem.MeasuredNetWeight = double.Round(shippingItem.MeasuredNetWeight, 1);
|
||||
shippingItem.MeasuredGrossWeight = double.Round(shippingItem.MeasuredGrossWeight, 1);
|
||||
|
||||
//if (shippingItem.MeasuredQuantity < 0) shippingItem.MeasuredQuantity = 0;
|
||||
//if (!shippingItem.IsMeasurable || shippingItem.MeasuredNetWeight < 0) shippingItem.MeasuredNetWeight = 0;
|
||||
//if (!shippingItem.IsMeasurable || shippingItem.MeasuredGrossWeight < 0) shippingItem.MeasuredGrossWeight = 0;
|
||||
|
|
@ -302,6 +305,20 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
return shippingItemPallet;
|
||||
}
|
||||
|
||||
public Task<bool> AddShippingItemPalletSafeAsync(ShippingItemPallet shippingItemPallet)
|
||||
{
|
||||
return TransactionSafeAsync(async tr =>
|
||||
{
|
||||
try
|
||||
{
|
||||
return (await AddShippingItemPalletAsync(shippingItemPallet)) != null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"AddShippingItemPalletSafeAsync->TransactionSafeAsync error! shippingItemPallet: {shippingItemPallet}; ex: {ex.Message}", ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
public async Task<ShippingItemPallet?> UpdateShippingItemPalletAsync(ShippingItemPallet shippingItemPallet)
|
||||
{
|
||||
if (!await SetupShippingItemPalletMeauringValues(shippingItemPallet)) return null;
|
||||
|
|
@ -310,7 +327,40 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
return shippingItemPallet;
|
||||
}
|
||||
|
||||
public async Task AddOrUpdateShippingItemPalletAsync(List<ShippingItemPallet> shippingItemPallets, ShippingItem parentShippingItem)
|
||||
public Task<bool> UpdateShippingItemPalletSafeAsync(ShippingItemPallet shippingItemPallet)
|
||||
{
|
||||
return TransactionSafeAsync(async tr =>
|
||||
{
|
||||
try
|
||||
{
|
||||
return (await UpdateShippingItemPalletAsync(shippingItemPallet)) != null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"UpdateShippingItemPalletSafeAsync->TransactionSafeAsync error! shippingItemPallet: {shippingItemPallet}; ex: {ex.Message}", ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public Task AddOrUpdateShippingItemPalletSafeAsync(ShippingItem shippingItem) => AddOrUpdateShippingItemPalletSafeAsync(shippingItem.ShippingItemPallets!, shippingItem);
|
||||
public Task<bool> AddOrUpdateShippingItemPalletSafeAsync(IEnumerable<ShippingItemPallet> shippingItemPallets, ShippingItem parentShippingItem)
|
||||
{
|
||||
return TransactionSafeAsync(async tr =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await AddOrUpdateShippingItemPalletAsync(shippingItemPallets, parentShippingItem);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"AddOrUpdateShippingItemPalletSafeAsync->TransactionSafeAsync error! ex: {ex.Message}", ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public Task AddOrUpdateShippingItemPalletAsync(ShippingItem shippingItem) => AddOrUpdateShippingItemPalletAsync(shippingItem.ShippingItemPallets!, shippingItem);
|
||||
public async Task AddOrUpdateShippingItemPalletAsync(IEnumerable<ShippingItemPallet> shippingItemPallets, ShippingItem parentShippingItem)
|
||||
{
|
||||
foreach (var shippingItemPallet in shippingItemPallets)
|
||||
{
|
||||
|
|
@ -321,9 +371,6 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
}
|
||||
}
|
||||
|
||||
public Task AddOrUpdateShippingItemPalletAsync(ShippingItem shippingItem)
|
||||
=> AddOrUpdateShippingItemPalletAsync(shippingItem.ShippingItemPallets!, shippingItem);
|
||||
|
||||
public async Task<ShippingItemPallet?> AddOrUpdateShippingItemPalletAsync(ShippingItemPallet shippingItemPallet)
|
||||
{
|
||||
if (shippingItemPallet.Id <= 0) return await AddShippingItemPalletAsync(shippingItemPallet);
|
||||
|
|
@ -338,12 +385,10 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
|
||||
if (!shippingItem.IsMeasurable)
|
||||
{
|
||||
shippingItemPallet.NetWeight = 0;
|
||||
shippingItemPallet.PalletWeight = 0;
|
||||
shippingItemPallet.GrossWeight = 0;
|
||||
}
|
||||
|
||||
if (shippingItemPallet.Quantity < 0 || shippingItemPallet.NetWeight < 0 || shippingItemPallet.GrossWeight < 0) return false;
|
||||
|
||||
shippingItemPallet.IsMeasured = shippingItemPallet.IsValidMeasuringValues(shippingItem.IsMeasurable);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ using Nop.Core.Configuration;
|
|||
using Nop.Core.Events;
|
||||
using Nop.Data;
|
||||
using Nop.Services.Logging;
|
||||
using static LinqToDB.Reflection.Methods.LinqToDB.Insert;
|
||||
|
||||
namespace Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer;
|
||||
|
||||
|
|
@ -23,9 +24,11 @@ public class ShippingDbTable : MgDbTableBase<Shipping>
|
|||
{
|
||||
return loadRelations
|
||||
? GetAll()
|
||||
.LoadWith(sd => sd.ShippingDocuments).ThenLoad(si => si.ShippingItems).ThenLoad(sip => sip.ShippingItemPallets)
|
||||
.LoadWith(sd => sd.ShippingDocuments).ThenLoad(sdtof => sdtof.ShippingDocumentToFiles).ThenLoad(f => f.ShippingDocumentFile)
|
||||
.LoadWith(sd => sd.ShippingDocuments).ThenLoad(p => p.Partner)
|
||||
.LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.ShippingItems).ThenLoad(si => si.ShippingItemPallets)
|
||||
.LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.ShippingItems).ThenLoad(si => si.Pallet)
|
||||
.LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.ShippingItems).ThenLoad(si => si.Product)
|
||||
.LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.ShippingDocumentToFiles).ThenLoad(sdtof => sdtof.ShippingDocumentFile)
|
||||
.LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.Partner)
|
||||
: GetAll();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,9 @@ public class ShippingDocumentDbTable : MgDbTableBase<ShippingDocument>
|
|||
return loadRelations
|
||||
? GetAll()
|
||||
.LoadWith(sd => sd.Shipping)
|
||||
.LoadWith(sd => sd.ShippingItems).ThenLoad(sip => sip.ShippingItemPallets)
|
||||
.LoadWith(sd => sd.ShippingItems).ThenLoad(si => si.Pallet)
|
||||
.LoadWith(sd => sd.ShippingItems).ThenLoad(si => si.Product)
|
||||
.LoadWith(sd => sd.ShippingItems).ThenLoad(si => si.ShippingItemPallets)
|
||||
.LoadWith(sd => sd.ShippingDocumentToFiles).ThenLoad(sdtof => sdtof.ShippingDocumentFile)
|
||||
.LoadWith(sd => sd.Partner)
|
||||
: GetAll();
|
||||
|
|
|
|||
|
|
@ -39,7 +39,8 @@ public class ShippingItemDbTable : MgDbTableBase<ShippingItem>
|
|||
.LoadWith(si => si.ShippingDocument).ThenLoad(sd => sd.ShippingDocumentToFiles).ThenLoad(sdtof => sdtof.ShippingDocumentFile)
|
||||
.LoadWith(si => si.ShippingItemPallets)
|
||||
.LoadWith(si => si.Product)
|
||||
: GetAll().LoadWith(si => si.ShippingItemPallets).LoadWith(si => si.Product);
|
||||
.LoadWith(si => si.Pallet)
|
||||
: GetAll().LoadWith(si => si.ShippingItemPallets).LoadWith(si => si.Product).LoadWith(si => si.Pallet);
|
||||
}
|
||||
|
||||
public IQueryable<ShippingItem> GetAllNotMeasured(bool loadRelations)
|
||||
|
|
@ -59,6 +60,5 @@ public class ShippingItemDbTable : MgDbTableBase<ShippingItem>
|
|||
{
|
||||
shippingItem.MeasuredNetWeight = double.Round(shippingItem.MeasuredNetWeight, 1);
|
||||
shippingItem.MeasuredGrossWeight = double.Round(shippingItem.MeasuredGrossWeight, 1);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -18,13 +18,13 @@ public class ShippingItemPalletDbTable : MgDbTableBase<ShippingItemPallet>
|
|||
|
||||
protected override void OnUpdate(ShippingItemPallet entity)
|
||||
{
|
||||
RoundMeasuredValue(entity);
|
||||
BeforeInsertOrUpdate(entity);
|
||||
base.OnUpdate(entity);
|
||||
}
|
||||
|
||||
protected override void OnInsert(ShippingItemPallet entity)
|
||||
{
|
||||
RoundMeasuredValue(entity);
|
||||
BeforeInsertOrUpdate(entity);
|
||||
base.OnInsert(entity);
|
||||
}
|
||||
|
||||
|
|
@ -34,10 +34,11 @@ public class ShippingItemPalletDbTable : MgDbTableBase<ShippingItemPallet>
|
|||
{
|
||||
return loadRelations
|
||||
? GetAll()
|
||||
.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(sd => sd.Shipping)
|
||||
.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(p => p.Partner)
|
||||
.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(sd => sd.ShippingDocumentToFiles).ThenLoad(sdtof => sdtof.ShippingDocumentFile)
|
||||
.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.Product)
|
||||
.LoadWith(sip => sip.ShippingItem)
|
||||
//.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(sd => sd.Shipping)
|
||||
//.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(p => p.Partner)
|
||||
//.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(sd => sd.ShippingDocumentToFiles).ThenLoad(sdtof => sdtof.ShippingDocumentFile)
|
||||
//.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.Product)
|
||||
: GetAll();
|
||||
}
|
||||
|
||||
|
|
@ -47,9 +48,10 @@ public class ShippingItemPalletDbTable : MgDbTableBase<ShippingItemPallet>
|
|||
public IQueryable<ShippingItemPallet> GetAllByShippingItemIdAsync(int shippingItemId, bool loadRelations)
|
||||
=> GetAll(loadRelations).Where(sip => sip.ShippingItemId == shippingItemId);
|
||||
|
||||
private static void RoundMeasuredValue(ShippingItemPallet shippingItem)
|
||||
private static void BeforeInsertOrUpdate(ShippingItemPallet shippingItemPallet)
|
||||
{
|
||||
shippingItem.NetWeight = double.Round(shippingItem.NetWeight, 1);
|
||||
shippingItem.GrossWeight = double.Round(shippingItem.GrossWeight, 1);
|
||||
if (shippingItemPallet.IsValidSafeMeasuringValues()) return;
|
||||
|
||||
throw new Exception($"ShippingItemPalletDbTable->BeforeInsertOrUpdate(); Invalid measuring value(s); shippingItemPallet: {shippingItemPallet}");
|
||||
}
|
||||
}
|
||||
|
|
@ -11,6 +11,7 @@ public partial class NameCompatibility : INameCompatibility
|
|||
/// </summary>
|
||||
public Dictionary<Type, string> TableNames => new Dictionary<Type, string>
|
||||
{
|
||||
{ typeof(Pallet), FruitBankConstClient.PalletDbTableName},
|
||||
{ typeof(Files), FruitBankConstClient.FilesDbTableName},
|
||||
{ typeof(Partner), FruitBankConstClient.PartnerDbTableName },
|
||||
{ typeof(Shipping), FruitBankConstClient.ShippingDbTableName },
|
||||
|
|
|
|||
Loading…
Reference in New Issue