Product/OrderItem Quantity fix
This commit is contained in:
parent
8cf260a6d2
commit
a43dc391fb
|
|
@ -221,19 +221,24 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers
|
||||||
CustomerCurrencyCode = "HUF", // TODO: GET Default currency - A.
|
CustomerCurrencyCode = "HUF", // TODO: GET Default currency - A.
|
||||||
};
|
};
|
||||||
|
|
||||||
var productDtosById = await _dbContext.ProductDtos.GetAllByIds(orderProducts.Select(op => op.Id)).ToDictionaryAsync(p => p.Id, prodDto => prodDto);
|
//var productDtosById = await _dbContext.ProductDtos.GetAllByIds(orderProducts.Select(op => op.Id)).ToDictionaryAsync(p => p.Id, prodDto => prodDto);
|
||||||
|
|
||||||
var transactionSuccess = await _dbContext.TransactionSafeAsync(async _ =>
|
var transactionSuccess = await _dbContext.TransactionSafeAsync(async _ =>
|
||||||
{
|
{
|
||||||
await _orderService.InsertOrderAsync(order);
|
await _orderService.InsertOrderAsync(order);
|
||||||
order.CustomOrderNumber = order.Id.ToString();
|
order.CustomOrderNumber = order.Id.ToString();
|
||||||
await _orderService.UpdateOrderAsync(order);
|
await _orderService.UpdateOrderAsync(order);
|
||||||
|
|
||||||
foreach (var item in orderProducts)
|
foreach (var item in orderProducts)
|
||||||
{
|
{
|
||||||
//var product = await _productService.GetProductByIdAsync(item.Id);
|
var product = await _productService.GetProductByIdAsync(item.Id);
|
||||||
//if (product != null)
|
if (product == null)
|
||||||
|
{
|
||||||
|
_logger.Error($"(product == null); {item}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (productDtosById.TryGetValue(item.Id, out var product))
|
//if (productDtosById.TryGetValue(item.Id, out var productDto))
|
||||||
{
|
{
|
||||||
var orderItem = new OrderItem
|
var orderItem = new OrderItem
|
||||||
{
|
{
|
||||||
|
|
@ -250,10 +255,14 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers
|
||||||
DiscountAmountInclTax = 0,
|
DiscountAmountInclTax = 0,
|
||||||
DiscountAmountExclTax = 0
|
DiscountAmountExclTax = 0
|
||||||
};
|
};
|
||||||
//var valami = product.GenericAttributes.GetValueOrNull<bool>(nameof(IOrderDto.DateOfReceipt)); TEST - A.
|
|
||||||
await _orderService.InsertOrderItemAsync(orderItem);
|
await _orderService.InsertOrderItemAsync(orderItem);
|
||||||
|
|
||||||
|
//await _productService.AddStockQuantityHistoryEntryAsync(product, -orderItem.Quantity, product.StockQuantity, 1);
|
||||||
|
await _productService.AdjustInventoryAsync(product, -orderItem.Quantity, orderItem.AttributesXml, "");
|
||||||
|
//await _productService.BookReservedInventoryAsync(product, 1, item.Quantity, "");
|
||||||
}
|
}
|
||||||
else _logger.Error($"(productDtosById.TryGetValue(item.Id, out var product) == false); {item}");
|
//else _logger.Error($"(productDtosById.TryGetValue(item.Id, out var product) == false); {item}");
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ using Nop.Web.Framework.Events;
|
||||||
using Nop.Web.Framework.Menu;
|
using Nop.Web.Framework.Menu;
|
||||||
using Nop.Web.Models.Sitemap;
|
using Nop.Web.Models.Sitemap;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using Microsoft.IdentityModel.Tokens;
|
||||||
|
|
||||||
namespace Nop.Plugin.Misc.FruitBankPlugin.Services
|
namespace Nop.Plugin.Misc.FruitBankPlugin.Services
|
||||||
{
|
{
|
||||||
|
|
@ -64,69 +65,6 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services
|
||||||
|
|
||||||
public async Task HandleEventAsync(OrderPlacedEvent eventMessage)
|
public async Task HandleEventAsync(OrderPlacedEvent eventMessage)
|
||||||
{
|
{
|
||||||
var order = eventMessage.Order;
|
|
||||||
var orderItems = await _orderService.GetOrderItemsAsync(order.Id);
|
|
||||||
bool requiresMeasurement = false;
|
|
||||||
|
|
||||||
foreach (var item in orderItems)
|
|
||||||
{
|
|
||||||
var product = await _productService.GetProductByIdAsync(item.ProductId);
|
|
||||||
|
|
||||||
// itt pl. egy custom flag a producton, ami jelzi, hogy mérés kell hozzá
|
|
||||||
// akár egy product attribute is lehet, vagy egy saját extension metódus
|
|
||||||
if (product != null)
|
|
||||||
{
|
|
||||||
//var productAttributeMappings = await _productAttributeService.GetProductAttributeMappingsByProductIdAsync(product.Id);
|
|
||||||
////Product Attributes
|
|
||||||
//foreach (var pam in productAttributeMappings)
|
|
||||||
//{
|
|
||||||
// var attributes = await _productAttributeService.GetProductAttributeValuesAsync(pam.Id);
|
|
||||||
// foreach (var attr in attributes)
|
|
||||||
// {
|
|
||||||
// // you can check for specific attribute by its name or id
|
|
||||||
// if (attr.Name == "NeedsToBeMeasured" && attr.IsPreSelected)
|
|
||||||
// {
|
|
||||||
// requiresMeasurement = true;
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
var productSpecAttributes = await _specificationAttributeService.GetProductSpecificationAttributesAsync(product.Id);
|
|
||||||
|
|
||||||
foreach (var specAttribute in productSpecAttributes)
|
|
||||||
{
|
|
||||||
// Get the specification attribute
|
|
||||||
var specificationAttribute = await _specificationAttributeService
|
|
||||||
.GetSpecificationAttributeByIdAsync(specAttribute.Id);
|
|
||||||
|
|
||||||
// Get the specification attribute option
|
|
||||||
var specificationAttributeOption = await _specificationAttributeService
|
|
||||||
.GetSpecificationAttributeOptionByIdAsync(specAttribute.SpecificationAttributeOptionId);
|
|
||||||
|
|
||||||
System.Diagnostics.Debug.WriteLine($"Spec Attribute: {specificationAttribute.Name}, Option: {specificationAttributeOption.Name}");
|
|
||||||
|
|
||||||
// Check if this is your "NeedsToBeMeasured" specification attribute
|
|
||||||
if (specificationAttribute.Name == "Measureable" && //nameof(MeasuringAttributeValues.IsMeasurable)
|
|
||||||
specificationAttributeOption.Name == "Yes") // or whatever value you set
|
|
||||||
{
|
|
||||||
requiresMeasurement = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (requiresMeasurement)
|
|
||||||
{
|
|
||||||
var store = await _storeContext.GetCurrentStoreAsync();
|
|
||||||
// itt adjuk hozzá a GenericAttribute flag-et az orderhez
|
|
||||||
await _genericAttributeService.SaveAttributeAsync(order,
|
|
||||||
nameof(IMeasurable.IsMeasurable), true, store.Id);
|
|
||||||
// status pending
|
|
||||||
// paymentstatus pending
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task HandleEventAsync(EntityUpdatedEvent<Order> eventMessage)
|
public async Task HandleEventAsync(EntityUpdatedEvent<Order> eventMessage)
|
||||||
|
|
@ -139,29 +77,29 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services
|
||||||
{
|
{
|
||||||
if (order == null) return;
|
if (order == null) return;
|
||||||
|
|
||||||
var form = _httpContextAccessor.HttpContext?.Request?.Form;
|
var hasForm = _httpContextAccessor.HttpContext?.Request?.HasFormContentType ?? false;
|
||||||
|
var form = hasForm ? _httpContextAccessor.HttpContext.Request.Form : null;
|
||||||
|
|
||||||
if (form == null || form.Count == 0) return;
|
if (form == null || form.Count == 0) return;
|
||||||
|
|
||||||
if (form.ContainsKey(nameof(IMeasurable.IsMeasurable)))
|
//if (form.ContainsKey(nameof(IMeasurable.IsMeasurable)))
|
||||||
{
|
//{
|
||||||
var isMeasurable = form[nameof(IMeasurable.IsMeasurable)].ToString().Contains("true");
|
// var isMeasurable = form[nameof(IMeasurable.IsMeasurable)].ToString().Contains("true");
|
||||||
//var isMeasurable = CommonHelper.To<bool>(form[nameof(IMeasurable.IsMeasurable)].ToString());
|
// //var isMeasurable = CommonHelper.To<bool>(form[nameof(IMeasurable.IsMeasurable)].ToString());
|
||||||
|
|
||||||
|
// await _fruitBankAttributeService.InsertOrUpdateGenericAttributeAsync<Order, bool>(order.Id, nameof(IMeasurable.IsMeasurable), isMeasurable);
|
||||||
await _fruitBankAttributeService.InsertOrUpdateGenericAttributeAsync<Order, bool>(order.Id, nameof(IMeasurable.IsMeasurable), isMeasurable);
|
//}
|
||||||
}
|
|
||||||
|
|
||||||
if (form.ContainsKey(nameof(IOrderDto.DateOfReceipt)))
|
if (form.ContainsKey(nameof(IOrderDto.DateOfReceipt)))
|
||||||
{
|
{
|
||||||
var dateOfReceipt = form[nameof(IOrderDto.DateOfReceipt)];
|
var dateOfReceiptString = form[nameof(IOrderDto.DateOfReceipt)];
|
||||||
|
if (string.IsNullOrWhiteSpace(dateOfReceiptString)) return;
|
||||||
|
|
||||||
await _fruitBankAttributeService.InsertOrUpdateGenericAttributeAsync<Order, DateTime>(order.Id, nameof(IOrderDto.DateOfReceipt), DateTime.Parse(dateOfReceipt));
|
if (DateTime.TryParse(dateOfReceiptString, out var dateOfReceipt))
|
||||||
|
await _fruitBankAttributeService.InsertOrUpdateGenericAttributeAsync<Order, DateTime>(order.Id, nameof(IOrderDto.DateOfReceipt), dateOfReceipt);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public override async Task HandleEventAsync(AdminMenuCreatedEvent eventMessage)
|
public override async Task HandleEventAsync(AdminMenuCreatedEvent eventMessage)
|
||||||
{
|
{
|
||||||
var rootNode = eventMessage.RootMenuItem;
|
var rootNode = eventMessage.RootMenuItem;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue