From fdde2b3c6b5375bfc345d03f4607de658614ede8 Mon Sep 17 00:00:00 2001 From: Loretta Date: Wed, 17 Jun 2026 13:54:52 +0200 Subject: [PATCH] Set EkaerHistory summary fields and update dev DB config Updated the connection string to use the FruitBank_DEV database. Ensured EkaerHistory summary fields (ShippingDate, Partner/Customer) are consistently set via fruitBankEkaerService.SetSummary when creating or updating records, improving data consistency for both inbound and outbound cases. --- .../Controllers/FruitBankDataController.cs | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs b/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs index a948e96..fe37962 100644 --- a/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs +++ b/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs @@ -344,6 +344,9 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers var documents = await ctx.ShippingDocuments.GetAll(true).Where(sd => foreignKeys.Contains(sd.Id)).ToListAsync(); if (documents.Count == 0) throw new InvalidOperationException($"EkaerHistory #{ekaerHistoryId}: no ShippingDocuments found for the mapped ids."); ekaerHistory = fruitBankEkaerService.GenerateEkaerXmlDocument(documents, ekaerHistory); + + // Összegző (ShippingDate + Partner) frissítése — a csoporton belül invariáns, így bármelyik dok jó. + fruitBankEkaerService.SetSummary(ekaerHistory, documents[0].ShippingDate, documents[0].Partner?.Name); } else { @@ -351,6 +354,8 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers var order = await ctx.OrderDtos.GetByIdAsync(foreignKeys[0], true) ?? throw new ArgumentException($"Order not found; id: {foreignKeys[0]}"); ekaerHistory = fruitBankEkaerService.GenerateEkaerXmlDocument(order, ekaerHistory); + + fruitBankEkaerService.SetSummary(ekaerHistory, order.DateOfReceipt, order.Customer?.Company); } await ctx.EkaerHistories.UpdateAsync(ekaerHistory); @@ -376,18 +381,21 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers if (existing != null) return existing; - // A forrás-entitás léte irányfüggő: bejövő → ShippingDocument, kimenő → Order. + // A forrás-entitás létét ellenőrizzük és betöltjük (relations) az összegző mezőkhöz (ShippingDate + Partner). + var ekaerHistory = new EkaerHistory { IsOutgoing = isOutgoing, Status = EkaerStatus.Pending }; if (!isOutgoing) { - _ = await ctx.ShippingDocuments.GetByIdAsync(foreignKey, false) ?? throw new ArgumentException($"ShippingDocument not found; id: {foreignKey}", nameof(foreignKey)); + var doc = await ctx.ShippingDocuments.GetByIdAsync(foreignKey, true) ?? throw new ArgumentException($"ShippingDocument not found; id: {foreignKey}", nameof(foreignKey)); + fruitBankEkaerService.SetSummary(ekaerHistory, doc.ShippingDate, doc.Partner?.Name); } else { - _ = await ctx.OrderDtos.GetByIdAsync(foreignKey, false) ?? throw new ArgumentException($"Order not found; id: {foreignKey}", nameof(foreignKey)); + var order = await ctx.OrderDtos.GetByIdAsync(foreignKey, true) ?? throw new ArgumentException($"Order not found; id: {foreignKey}", nameof(foreignKey)); + fruitBankEkaerService.SetSummary(ekaerHistory, order.DateOfReceipt, order.Customer?.Company); } // EGY EkaerHistory + EGY mapping sor (egyelemű csoport), atomikusan. - var ekaerHistory = await ctx.AddEkaerHistoryWithMappingsAsync(new EkaerHistory { IsOutgoing = isOutgoing, Status = EkaerStatus.Pending }, [foreignKey]); + ekaerHistory = await ctx.AddEkaerHistoryWithMappingsAsync(ekaerHistory, [foreignKey]); // A friss sort adjuk vissza, a betöltött Mappings-szel; a sor biztosan létezik (épp beszúrtuk). return await ctx.EkaerHistories.GetByIdAsync(ekaerHistory.Id, true); @@ -426,8 +434,10 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers if (result.Obligation == EkaerObligation.DataError) { messages.UnionWith(result.Errors); continue; } if (result.Obligation == EkaerObligation.NotRequired) continue; - // Kötelező → EGY EkaerHistory a csoportra + a csoport dokumentumai mapping-foreignKey-ként. - toCreate.Add((new EkaerHistory { IsOutgoing = false, StatusId = (int)EkaerStatus.Pending }, docs.Select(d => d.Id).ToList())); + // Kötelező → EGY EkaerHistory a csoportra (összegző: ShippingDate + Partner — invariáns) + a dokumentumok mapping-foreignKey-ként. + var history = new EkaerHistory { IsOutgoing = false, StatusId = (int)EkaerStatus.Pending }; + fruitBankEkaerService.SetSummary(history, docs[0].ShippingDate, docs[0].Partner?.Name); + toCreate.Add((history, docs.Select(d => d.Id).ToList())); } catch (Exception ex) { @@ -454,7 +464,9 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers if (result.Obligation == EkaerObligation.DataError) { messages.UnionWith(result.Errors); continue; } if (result.Obligation == EkaerObligation.NotRequired) continue; - toCreate.Add((new EkaerHistory { IsOutgoing = true, StatusId = (int)EkaerStatus.Pending }, [order.Id])); + var history = new EkaerHistory { IsOutgoing = true, StatusId = (int)EkaerStatus.Pending }; + fruitBankEkaerService.SetSummary(history, order.DateOfReceipt, order.Customer?.Company); + toCreate.Add((history, [order.Id])); } catch (Exception ex) {