var dunaOrder; var dunaOrderDiscount = null; var dunaShipping; var totalPriceDuna; var inputDiscount = true; var placeDUNA = "Insert discount"; var discountDUNA = "Discount"; var dollarUSLocale = Intl.NumberFormat('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); var addDeuna = "."; var positionDuna = 2; var totalDUNA = "Total"; var useDUNA = "Apply"; var dunaCheckout = null; var discountAutomaticDUNA = false; var freeShippingApp = "Free shipping applied"; var messageDiscountDuna ="Invalid discount code"; function loadDunaCart(){ fetch("/cart.js").then(response => response.json()).then(data => cartNew(data)); } function loadDunaCartTimeout(){ var myTimeout = setTimeout(loadDunaCart, 800); myTimeout = setTimeout(loadDunaCart, 1400); myTimeout = setTimeout(loadDunaCart, 2000); myTimeout = setTimeout(loadDunaCart, 3000); } function deletePopup(){ links = document.querySelectorAll('.swal2-container'); console.log("links"); console.log(links); if (links.length > 0){ links = links[0]; links.style.display = "none"; } } function cartNew(data){ console.log(data); dunaOrder = data; dunaOrder.token = dunaOrder.token+Math.floor(Math.random() * 10000); var submitElement = document.querySelectorAll('input[type="submit"]'); console.log(submitElement); if (submitElement.length > 0){ if (submitElement.length > 1){ submitElement = submitElement[submitElement.length- 1]; }else{ submitElement = submitElement[0]; } if (submitElement.getAttribute("name") === "checkout") { submitElement.setAttribute("type", "button"); submitElement.addEventListener("click", onSubmitDUnaClick); } }else{ submitElement = document.querySelectorAll('button[type="submit"]'); console.log(submitElement); if (submitElement.length > 0){ if (submitElement.length > 1){ submitElement = submitElement[submitElement.length- 1]; }else{ submitElement = submitElement[0]; } if (submitElement.getAttribute("name") === "checkout") { submitElement.setAttribute("type", "button"); submitElement.addEventListener("click", onSubmitDUnaClick); } } console.log(submitElement); } const forms = document.forms; for (let i = 0; i < forms.length; i++) { console.log(forms[i].action); if (forms[i].action.endsWith('/cart')){ console.log("onSubmitDUnaClick"); var inputs = forms[i].elements; console.log(inputs); var isCheckout = false; for (j = 0; j < inputs.length; j++) { console.log(inputs[j].getAttribute("name")); if (inputs[j].getAttribute("name") === "checkout") { isCheckout = true; console.log("isTrue"); } } if(isCheckout){ forms[i].addEventListener('submit', event => { // submit event detected event.preventDefault(); onSubmitDUnaClick(); }); } }else if (forms[i].action.endsWith('/cart/add')){ console.log("loadDunaCart"); forms[i].addEventListener("click", loadDunaCartTimeout); } } var links = document.querySelectorAll('a[href*="/checkout"]'); console.log(links); if (links.length > 0){ if (links.length > 1){ links = links[links.length- 1]; }else{ links = links[0]; } if (!links.classList.contains("text-link")){ links.setAttribute("href", "#"); links.addEventListener("click", onSubmitDUnaClick); }else{ console.log("Not Element"); console.log(links); } } links = document.querySelectorAll('.product-add-cart[type=normal]'); console.log(links); if (links.length > 0){ if (links.length > 1){ links = links[links.length- 1]; }else{ links = links[0]; } console.log(links); links.addEventListener("click", onSubmitDUnaClick); const newItem = document.createElement('button'); //newItem.innerHTML = ''; newItem.innerHTML ="Comprar Ahora"; newItem.addEventListener("click", onSubmitDUnaClick); newItem.classList.add("product-add-cart"); links.parentNode.replaceChild(newItem, links); setTimeout(deletePopup, 800); setTimeout(deletePopup, 1000); setTimeout(deletePopup, 1200); setTimeout(deletePopup, 1500); setTimeout(deletePopup, 3000); //links.style.display = "none"; //links.parentNode.innerHTML = ''+submitElement.parentNode.innerHTML; } var linksCarts = document.querySelectorAll('.ajax_add_to_cart'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("click", loadDunaCartTimeout); } linksCarts = document.querySelectorAll('.header-cart-btn'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("click", loadDunaCartTimeout); } linksCarts = document.querySelectorAll('.ajaxifyCart--qty-adjuster'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("click", loadDunaCartTimeout); } linksCarts = document.querySelectorAll('.ajaxifyCart--remove'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("click", loadDunaCartTimeout); } linksCarts = document.querySelectorAll('.ajaxifyCart--num'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("change", loadDunaCartTimeout); } linksCarts = document.querySelectorAll('.quantity-selector__button'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("click", loadDunaCartTimeout); } linksCarts = document.querySelectorAll('.mini-cart__quantity-remove'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("click", loadDunaCartTimeout); } linksCarts = document.querySelectorAll('.quantity-selector__value'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("change", loadDunaCartTimeout); } linksCarts = document.querySelectorAll('.js-drawer-open-cart'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("click", loadDunaCartTimeout); } linksCarts = document.querySelectorAll('.header__cart-icon'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("click", loadDunaCartTimeout); } linksCarts = document.querySelectorAll('.js-qty__adjust'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("click", loadDunaCartTimeout); } linksCarts = document.querySelectorAll('.js-qty__adjust'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("click", loadDunaCartTimeout); } linksCarts = document.querySelectorAll('.line-item__quantity-remove'); for (j = 0; j < linksCarts.length; j++) { linksCarts[j].addEventListener("click", loadDunaCartTimeout); } discountAutomaticDUNA = true; //Para no mostrar el descuento for (let i = 0; (i < data.items.length && !discountAutomaticDUNA); i++) { var item = data.items[i]; for (let y = 0;(y < item.discounts.length && !discountAutomaticDUNA); y++) { var disc = item.discounts[i]; if(!(disc.DUNA && disc.DUNA == "yes")){ discountAutomaticDUNA = true; } } } if(!discountAutomaticDUNA ){ if(submitElement && inputDiscount){ inputDiscount = false; if (Shopify.locale === "es"){ placeDUNA = "Insertar descuento"; discountDUNA = "Descuento"; useDUNA = "Aplicar"; messageDiscountDuna ="C贸digo de descuento no v谩lido"; freeShippingApp = "Envio gratis aplicado"; } var disc = document.querySelector(".cart__blocks .js-contents"); //disc.appendChild(discountElement); disc.insertAdjacentHTML('afterend', '
'); } } } function onblurDiscount(){ if(!discountAutomaticDUNA ){ var val = document.getElementById("discountDuna").value; document.getElementById("errorDUNA").innerText=""; var inpDuna = document.getElementById("discountDuna"); inpDuna.style.borderColor ="transparent"; inpDuna.style.boxShadow ="0 0 0 0.1rem rgba(18, 18, 18 ,.55)"; if (val.length > 0){ var dunaOrderCopy = dunaOrder; dunaOrderCopy.discount = val; dunaOrderCopy.shop = Shopify.shop; //console.log(val); fetch('https://deuna.triciclogo.com/discount/', { method: "POST", body: JSON.stringify(dunaOrderCopy) }) .then(response => response.json()) .then(json => discountDuna(json)); } } } function discountDuna(data){ if(data.items && data.total_discount > 0){ dunaOrderDiscount = data; console.log(dunaOrderDiscount); var child = document.getElementsByClassName('dunaTotal'); console.log(child); if(child.length > 0){ for (let i = 0; i < child.length; i++) { console.log(child[i]); console.log(child[i].parentNode); child[i].style.display="none"; } } for (let i = 0; i < data.items.length; i++) { var item = data.items[i]; var itemTr = document.querySelector('#CartItem-'+(i+1)+' td:last-child .cart-item__price-wrapper'); if(itemTr){ var a = ""+item.original_line_price; var outputOriginal = [a.slice(0, a.length - positionDuna), addDeuna, a.slice(a.length - positionDuna, a.length)].join(''); if(item.discounts.length > 0 && item.discounts[0].DUNA){ a = ""+item.final_line_price; var outputLine = [a.slice(0, a.length - positionDuna), addDeuna, a.slice(a.length - positionDuna, a.length)].join(''); console.log(outputLine); itemTr.innerHTML = '
$ '+dollarUSLocale.format(outputOriginal)+'
$ '+dollarUSLocale.format(outputLine)+'
'; }else{ itemTr.innerHTML = '$ '+dollarUSLocale.format(outputOriginal); } } } var itemTotals = document.querySelector('.totals'); if (itemTotals){ var total = ""+data.total_price; var outputTotal = [total.slice(0, total.length - positionDuna), addDeuna, total.slice(total.length - positionDuna, total.length)].join(''); var discount = ""+data.total_discount; var outputDiscount = [discount.slice(0, discount.length - positionDuna), addDeuna, discount.slice(discount.length - positionDuna, discount.length)].join(''); itemTotals.insertAdjacentHTML('afterend', '

'+discountDUNA+'

$ '+dollarUSLocale.format(outputDiscount)+' '+Shopify.currency.active+'

'+totalDUNA+'

$ '+dollarUSLocale.format(outputTotal)+' '+Shopify.currency.active+'

'); } temTotals = document.querySelector('.totals__subtotal-value'); if (temTotals){ var subT = ""+data.original_total_price; var outputSub = [subT.slice(0, subT.length - positionDuna), addDeuna, subT.slice(subT.length - positionDuna, subT.length)].join(''); temTotals.innerHTML = '$ '+dollarUSLocale.format(outputSub)+' '+Shopify.currency.active; } }else if(data.items && data.FreeShipping && data.FreeShipping.DUNA == "yes"){ document.getElementById("successDUNA").innerText=freeShippingApp; dunaOrderDiscount = data; }else{ document.getElementById("errorDUNA").innerText=messageDiscountDuna; var inpDuna = document.getElementById("discountDuna"); inpDuna.style.borderColor ="#b03d3d"; inpDuna.style.boxShadow ="0 0 0 1px #b03d3d"; } } function blurAddress(){ var country = document.getElementById("AddressCountryNew").value; var province = document.getElementById("AddressProvinceNew").value; var zip = document.getElementById("AddressZipNew").value; if(country !== "" && province !== "" && zip !== ""){ fetch("/cart/shipping_rates.json?shipping_address%5Bzip%5D="+zip+"&shipping_address%5Bcountry%5D="+country+"&shipping_address%5Bprovince%5D="+province) .then(response => response.json()) .then(data => shippingRates(data)); } } function shippingRates(data){ //console.log(data); if (data.shipping_rates.length > 0){ dunaShipping = data.shipping_rates[0]; var div = document.getElementById("dunaShipping"); if (!(div)){ div = document.createElement("div"); div.className = 'cart-subtotal'; div.id = 'dunaShipping'; } var name = dunaShipping.name; var price = dunaShipping.price; var currency = dunaShipping.currency; var shipValue = '$ '+price+' '+currency; if (price == "0.00"){ shipValue = "Free"; } div.innerHTML = 'Envio '+name+''+shipValue+''; document.getElementsByClassName("cart-subtotal")[0].appendChild(div); } } function onSubmitDUnaClick(){ onSubmitDUna(); } var isOnsubmit = true; function onSubmitDUna(){ if(isOnsubmit){ isOnsubmit = false; var dataforUna = dunaOrder; if(dunaOrderDiscount !== null){ dataforUna = dunaOrderDiscount; } var items = []; for (let i = 0; i < dataforUna.items.length; i++) { var item = dataforUna.items[i]; console.log(item); var name = item.title.replace(/"/g,''); name = name.replace(/'/g,''); var itemJson={ "id": "SP"+item.id, "name": name, "description": "", "options": "", "total_amount": { "amount": item.final_line_price, "currency": dataforUna.currency, "currency_symbol": "$", "original_amount": item.original_line_price }, "unit_price": { "amount": item.original_price, "currency": dataforUna.currency, "currency_symbol": "$" }, "tax_amount": { "amount": 0, "currency": dataforUna.currency, "currency_symbol": "$" }, "quantity": item.quantity, "uom": "string", "upc": ""+item.product_id, "sku": item.sku, "isbn": "", "brand": ""+item.variant_id, "manufacturer": "", "category": "", "collections": [], "color": "", "size": "", "weight": { "weight": ""+item.grams, "unit": "kg" }, "image_url":item.image, "details_url": "https://"+Shopify.shop+item.url, "type": "physical", "taxable": true }; items.push(itemJson); } var discounts = null; for (let i = 0; i < dataforUna.cart_level_discount_applications.length; i++) { var disc = dataforUna.cart_level_discount_applications[i]; var discJson = { "amount": disc.total_allocated_amount, "code": disc.title, "reference": disc.title, "description": disc.description, "details_url": "", "free_shipping": { "is_free_shipping": false, "maximum_cost_allowed": 100 }, "discount_category": disc.type }; if (discounts == null){ discounts = []; } discounts.push(discJson); } if (discounts == null && dataforUna.total_discount > 0 ){ for (let i = 0; i < dataforUna.items.length; i++) { var item = dataforUna.items[i]; for (let y = 0; y < item.discounts.length; y++) { var disc = item.discounts[y]; var discJson = { "amount": disc.amount, "code": disc.title, "reference": disc.title, "description": disc.title, "details_url": "", "free_shipping": { "is_free_shipping": false, "maximum_cost_allowed": 100 }, "discount_category": "Automatic discount" }; if (discounts == null){ discounts = []; } discounts.push(discJson); } } } if (discounts == null && dataforUna.FreeShipping && dataforUna.FreeShipping.DUNA == "yes" ){ var discJson = { "amount": 0, "code": dataforUna.FreeShipping.title, "reference": dataforUna.FreeShipping.title, "description": dataforUna.FreeShipping.title, "details_url": "", "free_shipping": { "is_free_shipping": true, "maximum_cost_allowed": 100 }, "discount_category": "Free shipping" }; discounts = []; discounts.push(discJson); } var _data = { "order": { "order_id": dataforUna.token, "total_amount": dataforUna.total_price, "currency": dataforUna.currency, "tax_amount": 0, "shipping_amount": 0, "is_pickup": false, "items_total_amount": dataforUna.items_subtotal_price, "sub_total": dataforUna.items_subtotal_price, "items": items, "discounts": discounts, "store_code": "all", "metadata": { "key1": "value1", "key2": "value2" }, "shipping_options": { "type": "delivery", "details": {} }, "user_instructions": "This item is a gift." } }; fetch("https://apigw.getduna.com/merchants/orders", { method: "POST", body: JSON.stringify(_data), headers: {'X-Api-Key': "aa0b5146c9bf9711f23f3f6c77d5841d5f17e6f19e487df9024e7bf93a58c8c9d29750a417f4c5409ca25f91e400554c4bc76846be3e4e27bd76ab29298f" } }) .then(response => response.json()) .then(json => openDUna(json)); } } var isOpenDUna = false; function openDUna(data){ console.log(data); if (!isOpenDUna){ isOpenDUna = true; if(dunaCheckout == null){ dunaCheckout = window.DunaCheckout(); } dunaCheckout.configure({ onEventDispatch: function (event, data) { if (event === 'purchase') { checkFinish(); setInterval(function () { checkFinish() }, 2500); } }, apiKey: "aa0b5146c9bf9711f23f3f6c77d5841d5f17e6f19e487df9024e7bf93a58c8c9d29750a417f4c5409ca25f91e400554c4bc76846be3e4e27bd76ab29298f", orderToken: data.token }); var isSave = true; dunaCheckout.shouldOpenCheckout().then((shouldOpen) => { if(shouldOpen) { dunaCheckout.show(); }else{ isSave = false; window.location.replace("/checkout"); } }); data.url=Shopify.shop; data.tokenid=data.toke; if (isSave){ fetch('https://deuna.triciclogo.com/webhook/carts/create/', { method: "POST", body: JSON.stringify(data), }) .then(response => response) .then(json => console.log(json)); } orderIDDuna=data.order.order_id; setTimeout(setDeunaFalse, 8000); } } var orderIDDuna=null; function checkFinish(){ if(orderIDDuna != null){ fetch('https://deuna.triciclogo.com/getcheckout/?id='+orderIDDuna, { method: "GET", }) .then(response => response.json()) .then(json => getCheckout(json)); } } function setDeunaFalse(){ isOpenDUna = false; isOnsubmit = true; console.log(isOpenDUna); } function getCheckout(data){ //console.log(data); if (data.code == "200"){ if(data.data && data.data !== ""){ fetch("/cart/clear.js") .then(response => response.json()) .then(data => console.log(data)); setTimeout(function(){ window.location.assign(data.data); }, 300); } } } function includeDUNA(file) { var script = document.createElement('script'); script.src = file; script.type = 'text/javascript'; script.defer = true; document.getElementsByTagName('head').item(0).appendChild(script); } includeDUNA("https://cdn.getduna.com/checkout-widget/index.js"); includeDUNA("https://cdn.getduna.com/cdl/index.js"); loadDunaCart(); var total = document.querySelector('.cart-subtotal__price'); if(total === null){ total = document.querySelector('.totals__subtotal-value'); } if(total){ totalPriceDuna = total.innerText || total.textContent; } setInterval(function () { var total = document.querySelector('.cart-subtotal__price'); if(total === null){ total = document.querySelector('.totals__subtotal-value'); } if(total){ var totalPriceDunaLoc = total.innerText || total.textContent; if(totalPriceDunaLoc !== totalPriceDuna){ totalPriceDuna = totalPriceDunaLoc; loadDunaCart(); } } }, 1000);