Invoice fixes
This commit is contained in:
parent
16dbfb18e2
commit
41422340c8
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services
|
|||
/// <summary>
|
||||
/// Create one or more orders
|
||||
/// </summary>
|
||||
public async Task<List<OrderCreateResponse>> CreateOrdersAsync(List<OrderCreateRequest> orders)
|
||||
public async Task<List<OrderCreateResponse>?> CreateOrdersAsync(List<OrderCreateRequest> 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<OrderCreateResponse> CreateOrderAsync(OrderCreateRequest order)
|
||||
{
|
||||
var responses = await CreateOrdersAsync(new List<OrderCreateRequest> { 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<OrderCreateRequest> 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<OrderCreateResponse> ParseOrderResponses(string xml)
|
||||
private List<OrderCreateResponse>? ParseOrderResponses(string xml)
|
||||
{
|
||||
var responses = new List<OrderCreateResponse>();
|
||||
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -65,12 +65,12 @@
|
|||
<div id="orderAttributesSection">
|
||||
<div class="form-group row">
|
||||
<div class="col-12">
|
||||
<div class="form-group row">
|
||||
<div class="col-md-3">
|
||||
<nop-label asp-for="IsMeasurable" />
|
||||
<div class="form-group row">
|
||||
<div class="col-md-3 text-right">
|
||||
<strong>Mérés információ</strong>
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
<nop-editor asp-for="IsMeasurable" asp-template="" />
|
||||
@(Model.IsMeasurable ? "Mérendő" : "Nem mérendő")
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
|
|
|
|||
Loading…
Reference in New Issue