// orderConfirmation cookie to push event only once document.addEventListener('click', function(event) { if(event.target.classList.contains("ms-checkout__btn-place-order")){ document.cookie = "orderStatus=placed"; } }); window.dataLayer = window.dataLayer || []; document.addEventListener("DOMContentLoaded", function(event) { // const pageName = window.___initialData___.requestContext.telemetryPageName; // ECOMMERCE - PURCHASE if(document.querySelectorAll('[data-m-t="order-confirmation"]').length > 0) { const cookieOrderValue = document.cookie .split('; ') .find(row => row.startsWith('orderStatus=')) .split('=')[1]; if(cookieOrderValue==='placed') { const orderInfo = window.___initialData___.requestCache.internalCache.SALESORDER[`ID-${window.___initialData___.requestContext.query.transactionId.toUpperCase()}`].item; const transactionId = window.___initialData___.requestContext.query.transactionId; const revenue = orderInfo.GrossAmount; const tax = orderInfo.TaxAmount; const shipping = orderInfo.ShippingChargeAmount; const coupon = orderInfo.Coupons.length > 0 ? orderInfo.Coupons[0] : ''; const orderProducts = []; orderInfo.SalesLines.forEach((salesLine, i) => { const name = document.getElementsByClassName("msc-cart-line__product-title")[i].children[0].textContent; orderProducts.push({ 'name': name, 'id': salesLine.ItemId, //SKU 'price': (salesLine.NetAmount/salesLine.Quantity).toFixed(2), // discounted price for 1 unit 'quantity': salesLine.Quantity, 'dimension10': salesLine.PeriodicPercentageDiscount, 'dimension11': salesLine.DiscountLines.length > 0 ? salesLine.DiscountLines[0].OfferName : '', 'dimension12': salesLine.ProductId //microsoft id }); }); const orderDataLayer = { 'event': 'purchase', 'ecommerce': { 'currencyCode': window.___initialData___.requestContext.channel.Currency, 'purchase': { 'actionField': { 'id': transactionId, 'affiliation': '', 'revenue': revenue, 'tax': tax, 'shipping': shipping, 'coupon': coupon, }, 'products': orderProducts } } } window.dataLayer.push(orderDataLayer); document.cookie = "orderStatus="; } } }); function activeCartProducts (activeCart) { const cartLineProducts = []; activeCart.CartLines.forEach((cartLine,i) => { const productName = window.___initialData___.requestContext.telemetryData[cartLine.ProductId] ? window.___initialData___.requestContext.telemetryData[cartLine.ProductId].productName : undefined; cartLineProducts.push({ 'name': productName, 'id': cartLine.ItemId, //product SKU 'price': (cartLine.TotalAmount/cartLine.Quantity).toFixed(2), // discounted price for 1 unit 'quantity': cartLine.Quantity, 'dimension12': cartLine.ProductId //product ID (microsoft) }); }); return cartLineProducts; } function activeCartItems () { // CART ITEMS // const activeCart = window.___initialData___.requestContext.telemetryData.activeCart; var activeCart = window.___initialData___.requestContext.telemetryData.activeCart ? window.___initialData___.requestContext.telemetryData.activeCart : undefined; if (activeCart) { if(activeCart.CartLines.length>0){ const activeCartLine = window.___initialData___.requestContext.telemetryData.activeCart.CartLines[0]; if(activeCartLine !== undefined){ const cartLineProducts = activeCartProducts(activeCart); const cartItemsDataLayer = { 'cartItems': cartLineProducts } window.dataLayer.push(cartItemsDataLayer); console.log("cartItems pushed"); } else { console.log("activeCartProducts - l"); setTimeout(activeCartItems, 1000); } } } else { setTimeout(activeCartItems, 1000); console.log("activeCartItems - l"); } } document.onreadystatechange = function () { if (document.readyState === 'complete') { activeCartItems(); } };