コード例 #1
0
        internal string RenderProductInfoXml(List <Product> products, RenderProductInfoSettings settings)
        {
            // NotificationManager.Notify(Notifications.LiveIntegration.Orders.OnBeforeRenderOrderXml, new Notifications.LiveIntegration.Orders.OnBeforeRenderOrderXmlArgs(order, settings));
            var xmlDocument = BuildXmlDocument();
            var tablesNode  = CreateAndAppendTablesNode(xmlDocument, settings);

            tablesNode.AppendChild(BuildProductInfoXml(xmlDocument, tablesNode, products, settings));
            // NotificationManager.Notify(Notifications.LiveIntegration.Orders.OnAfterRenderOrderXml, new Notifications.LiveIntegration.Orders.OnAfterRenderOrderXmlArgs(order, xmlDocument));
            if (settings.Beautify)
            {
                return(xmlDocument.Beautify());
            }
            return(xmlDocument.InnerXml);
        }
コード例 #2
0
        private XmlNode BuildProductInfoXml(XmlDocument xmlDocument, XmlElement tablesNode, List <Product> products, RenderProductInfoSettings settings)
        {
            if (products == null || !products.Any())
            {
                return(null);
            }
            var currencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code;

            var user = User.GetCurrentExtranetUser();

            tablesNode.SetAttribute("ExternalUserId", !string.IsNullOrWhiteSpace(user?.ExternalID) ? user.ExternalID : Settings.Instance.AnonymousUserKey);
            tablesNode.SetAttribute("AccessUserCustomerNumber", !string.IsNullOrWhiteSpace(user?.CustomerNumber) ? user.CustomerNumber : Settings.Instance.AnonymousUserKey);
            tablesNode.SetAttribute("type", "filter");
            var tableNode = CreateTableNode(xmlDocument, "Products");

            foreach (var product in products)
            {
                var itemNode = CreateAndAppendItemNode(tableNode, "Products");
                if (product != null)
                {
                    AddChildXmlNode(itemNode, "ProductId", product.Id);
                    AddChildXmlNode(itemNode, "ProductVariantId", "" /* we deactivated the variant id for this implementation because NAV throws errors and we must ignore the variants: product.VariantId*/);
                    AddChildXmlNode(itemNode, "ProductNumber", product.Number);
                    AddChildXmlNode(itemNode, "CurrencyCode", currencyCode);

                    if (settings.AddProductFieldsToRequest && product.ProductFieldValues.Count > 0)
                    {
                        AppendProductFields(product, itemNode);
                    }
                }
            }
            return(tableNode);
        }