diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/InnVoiceOrderController.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/InnVoiceOrderController.cs index d20e6aa..84ad995 100644 --- a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/InnVoiceOrderController.cs +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/InnVoiceOrderController.cs @@ -1,5 +1,4 @@ using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; using Nop.Core; using Nop.Core.Domain.Orders; using Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer; @@ -103,7 +102,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers MegrendelestombID = 1, // Configure this based on your setup MegrendelesKelte = order.CreatedOnUtc.ToLocalTime(), Hatarido = DateTime.Now.AddDays(7), // 7 days delivery time - Devizanem = "HUF", //TODO get real deault - A. + Devizanem = "Ft", //TODO get real deault - A. FizetesiMod = order.PaymentMethodSystemName ?? "átutalás", Email = billingAddress.Email, Telefon = billingAddress.PhoneNumber, @@ -315,7 +314,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers MegrendelestombID = 1, MegrendelesKelte = order.CreatedOnUtc.ToLocalTime(), Hatarido = DateTime.Now.AddDays(7), - Devizanem = order.CustomerCurrencyCode, + Devizanem = "Ft", FizetesiMod = order.PaymentMethodSystemName, Email = billingAddress.Email, Telefon = billingAddress.PhoneNumber, @@ -349,53 +348,60 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers // Create orders via API var responses = await _innVoiceOrderService.CreateOrdersAsync(orderRequests); - var successCount = responses.Count(r => r.IsSuccess); - var failureCount = responses.Count - successCount; - - // Save TechIds for successful orders - var storeId = (await _storeContext.GetCurrentStoreAsync()).Id; - for (int i = 0; i < responses.Count && i < orderIds.Length; i++) + if (responses != null) { - if (responses[i].IsSuccess) - { - var order = await _orderService.GetOrderByIdAsync(orderIds[i]); - if (order != null) - { - await _genericAttributeService.SaveAttributeAsync( - order, - "InnVoiceOrderTechId", - responses[i].TechId, - storeId - ); + var successCount = responses.Count(r => r.IsSuccess); + var failureCount = responses.Count - successCount; - await _genericAttributeService.SaveAttributeAsync( - order, - "InnVoiceOrderTableId", - responses[i].TableId?.ToString(), - storeId - ); + // Save TechIds for successful orders + var storeId = (await _storeContext.GetCurrentStoreAsync()).Id; + for (int i = 0; i < responses.Count && i < orderIds.Length; i++) + { + if (responses[i].IsSuccess) + { + var order = await _orderService.GetOrderByIdAsync(orderIds[i]); + if (order != null) + { + await _genericAttributeService.SaveAttributeAsync( + order, + "InnVoiceOrderTechId", + responses[i].TechId, + storeId + ); + + await _genericAttributeService.SaveAttributeAsync( + order, + "InnVoiceOrderTableId", + responses[i].TableId?.ToString(), + storeId + ); + } } } - } - return Json(new - { - success = successCount > 0, - message = $"Created {successCount} orders successfully. {failureCount} failed.", - data = new + return Json(new { - successCount, - failureCount, - responses = responses.Select(r => new + success = successCount > 0, + message = $"Created {successCount} orders successfully. {failureCount} failed.", + data = new { - success = r.IsSuccess, - tableId = r.TableId, - techId = r.TechId, - message = r.Message, - printUrl = r.PrintUrl - }) - } - }); + successCount, + failureCount, + responses = responses.Select(r => new + { + success = r.IsSuccess, + tableId = r.TableId, + techId = r.TechId, + message = r.Message, + printUrl = r.PrintUrl + }) + } + }); + } + else + { + throw new Exception($"InvoiceOrderAPi invalid response"); + } } catch (Exception ex) { diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/InvoiceController.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/InvoiceController.cs index 15133aa..c5afbdc 100644 --- a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/InvoiceController.cs +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/InvoiceController.cs @@ -1,4 +1,5 @@ +using AyCode.Utils.Extensions; using Microsoft.AspNetCore.Mvc; using Nop.Core; using Nop.Core.Domain.Orders; @@ -82,8 +83,8 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers SzamlaKelte = DateTime.Now, TeljesitesKelte = DateTime.Now, Hatarido = DateTime.Now.AddDays(15), // 15 days payment term - Devizanem = order.CustomerCurrencyCode, - FizetesiMod = order.PaymentMethodSystemName, + Devizanem = "Ft", + FizetesiMod = order.PaymentMethodSystemName.IsNullOrWhiteSpace() ? "Átutalás" : order.PaymentMethodSystemName, Felretett = false, Proforma = true, Email = billingAddress.Email, diff --git a/Nop.Plugin.Misc.AIPlugin/Services/InnVoiceOrderService.cs b/Nop.Plugin.Misc.AIPlugin/Services/InnVoiceOrderService.cs index 522b59f..02f224d 100644 --- a/Nop.Plugin.Misc.AIPlugin/Services/InnVoiceOrderService.cs +++ b/Nop.Plugin.Misc.AIPlugin/Services/InnVoiceOrderService.cs @@ -41,7 +41,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services /// /// Create one or more orders /// - public async Task> CreateOrdersAsync(List orders) + public async Task?> CreateOrdersAsync(List orders) { var url = $"{_baseUrl}/{_companyName}/order"; @@ -55,7 +55,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services { var response = await _httpClient.PostAsync(url, content); response.EnsureSuccessStatusCode(); - + var responseContent = await response.Content.ReadAsStringAsync(); return ParseOrderResponses(responseContent); } @@ -71,7 +71,9 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services public async Task CreateOrderAsync(OrderCreateRequest order) { var responses = await CreateOrdersAsync(new List { order }); - return responses.FirstOrDefault(); + if (responses != null && responses.Count != 1) throw new Exception($"InvoiceOrderApi responses.Count != 1!"); + + return responses?.FirstOrDefault() ?? new OrderCreateResponse(); } private string BuildOrdersXml(List orders) @@ -143,7 +145,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services return new XDeclaration("1.0", "UTF-8", null).ToString() + "\n" + ordersElement.ToString(); } - private List ParseOrderResponses(string xml) + private List? ParseOrderResponses(string xml) { var responses = new List(); @@ -171,7 +173,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services throw new InnVoiceApiException($"Error parsing order response XML: {ex.Message}", ex); } - return responses; + return responses.Count == 0 ? null : responses; } /// diff --git a/Nop.Plugin.Misc.AIPlugin/Views/OrderAttributes.cshtml b/Nop.Plugin.Misc.AIPlugin/Views/OrderAttributes.cshtml index 0ef286e..151433e 100644 --- a/Nop.Plugin.Misc.AIPlugin/Views/OrderAttributes.cshtml +++ b/Nop.Plugin.Misc.AIPlugin/Views/OrderAttributes.cshtml @@ -65,12 +65,12 @@ - - - + + + Mérés információ - + @(Model.IsMeasurable ? "Mérendő" : "Nem mérendő")