From da7ad948fd52a28ca17b0ec1ed08b9d84c012b13 Mon Sep 17 00:00:00 2001 From: Dmitriy Benyuk Date: Mon, 22 Jun 2026 18:10:13 +0300 Subject: [PATCH 1/2] OrderLineFieldValues column serialized as escaped text in live integration order XML --- .../Dynamicweb.Ecommerce.DynamicwebLiveIntegration.csproj | 2 +- .../XmlGenerators/OrderXmlGenerator.cs | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/Dynamicweb.Ecommerce.DynamicwebLiveIntegration.csproj b/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/Dynamicweb.Ecommerce.DynamicwebLiveIntegration.csproj index c96f75e..792b6a2 100644 --- a/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/Dynamicweb.Ecommerce.DynamicwebLiveIntegration.csproj +++ b/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/Dynamicweb.Ecommerce.DynamicwebLiveIntegration.csproj @@ -1,6 +1,6 @@  - 10.21.5 + 10.21.6 1.0.0.0 Live Integration Live Integration diff --git a/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/XmlGenerators/OrderXmlGenerator.cs b/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/XmlGenerators/OrderXmlGenerator.cs index 1287a1a..ca2f41f 100644 --- a/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/XmlGenerators/OrderXmlGenerator.cs +++ b/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/XmlGenerators/OrderXmlGenerator.cs @@ -336,7 +336,13 @@ private void CreateOrderLineXml(Settings currentSettings, XmlNode orderLinesNode AddChildXmlNode(itemNode, "OrderLineBomItemId", orderline.BomItemId); AddChildXmlNode(itemNode, "OrderLineGiftCardCode", orderline.GiftCardCode); AddChildXmlNode(itemNode, "OrderLineIsGiftCardDiscount", (!string.IsNullOrEmpty(orderline.GiftCardCode)).ToString(), isCustomField: true); - AddChildXmlNode(itemNode, "OrderLineFieldValues", OrderLineFieldValuesToXml(orderline.OrderLineFieldValues).InnerXml); + var fieldValuesNode = itemNode.OwnerDocument.CreateElement("column"); + fieldValuesNode.SetAttribute("columnName", "OrderLineFieldValues"); + fieldValuesNode.AppendChild( + itemNode.OwnerDocument.ImportNode( + OrderLineFieldValuesToXml(orderline.OrderLineFieldValues).DocumentElement, + deep: true)); + itemNode.AppendChild(fieldValuesNode); if (!settings.ErpControlsDiscount && orderline.IsDiscount()) { AddChildXmlNode(itemNode, "OrderLineDiscountId", orderline.DiscountId); From da77e7dc5e87a58611c876e9da95b1fa034ee6ea Mon Sep 17 00:00:00 2001 From: Dmitriy Benyuk Date: Wed, 24 Jun 2026 10:30:34 +0300 Subject: [PATCH 2/2] code review --- .../XmlGenerators/OrderXmlGenerator.cs | 8 +------- .../XmlGenerators/XmlGenerator.cs | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/XmlGenerators/OrderXmlGenerator.cs b/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/XmlGenerators/OrderXmlGenerator.cs index ca2f41f..632c4a4 100644 --- a/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/XmlGenerators/OrderXmlGenerator.cs +++ b/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/XmlGenerators/OrderXmlGenerator.cs @@ -336,13 +336,7 @@ private void CreateOrderLineXml(Settings currentSettings, XmlNode orderLinesNode AddChildXmlNode(itemNode, "OrderLineBomItemId", orderline.BomItemId); AddChildXmlNode(itemNode, "OrderLineGiftCardCode", orderline.GiftCardCode); AddChildXmlNode(itemNode, "OrderLineIsGiftCardDiscount", (!string.IsNullOrEmpty(orderline.GiftCardCode)).ToString(), isCustomField: true); - var fieldValuesNode = itemNode.OwnerDocument.CreateElement("column"); - fieldValuesNode.SetAttribute("columnName", "OrderLineFieldValues"); - fieldValuesNode.AppendChild( - itemNode.OwnerDocument.ImportNode( - OrderLineFieldValuesToXml(orderline.OrderLineFieldValues).DocumentElement, - deep: true)); - itemNode.AppendChild(fieldValuesNode); + AddChildXmlNode(itemNode, "OrderLineFieldValues", OrderLineFieldValuesToXml(orderline.OrderLineFieldValues).DocumentElement); if (!settings.ErpControlsDiscount && orderline.IsDiscount()) { AddChildXmlNode(itemNode, "OrderLineDiscountId", orderline.DiscountId); diff --git a/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/XmlGenerators/XmlGenerator.cs b/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/XmlGenerators/XmlGenerator.cs index cf1b69d..fc55d3f 100644 --- a/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/XmlGenerators/XmlGenerator.cs +++ b/src/Dynamicweb.Ecommerce.DynamicwebLiveIntegration/XmlGenerators/XmlGenerator.cs @@ -38,6 +38,26 @@ protected static void AddChildXmlNode(XmlElement parent, string nodeName, string parent.AppendChild(node); } + protected static void AddChildXmlNode(XmlElement parent, string nodeName, XmlNode nodeValue, bool isInformationalOnly = false, bool isCustomField = false) + { + if (parent.OwnerDocument == null) + { + throw new InvalidOperationException("Cannot call this method without an xml document associated with the parent element."); + } + + var node = parent.OwnerDocument.CreateElement("column"); + node.SetAttribute("columnName", nodeName); + + Dictionary attributes = BuildAttributes(isInformationalOnly, isCustomField); + foreach (var attribute in attributes) + { + node.SetAttribute(attribute.Key, attribute.Value); + } + + node.AppendChild(parent.OwnerDocument.ImportNode(nodeValue, deep: true)); + parent.AppendChild(node); + } + /// /// Builds the XML document. ///