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, 200);
myTimeout = setTimeout(loadDunaCart, 1400);
myTimeout = setTimeout(loadDunaCart, 2000);
myTimeout = setTimeout(loadDunaCart, 3000);
}
function cartNew(data){
console.log(data);
dunaOrder = data;
dunaOrder.token = dunaOrder.token+Math.floor(Math.random() * 10000);
var submitElement = document.querySelectorAll('.Cart__Checkout');
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.style.display = "none";
submitElement.setAttribute("type", "button");
submitElement.addEventListener("click", onSubmitDUnaClick);
submitElementNews = document.querySelectorAll('.Cart__CheckoutNew');
if (submitElementNews.length === 0){
submitElement.parentNode.innerHTML = submitElement.parentNode.innerHTML+'';
}
}
}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);
}
}
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);
}
linksCarts = document.querySelectorAll('.Icon-Wrapper--clickable');
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();
}
function onSubmitDUna(){
var dataforUna = dunaOrder;
if(dunaOrderDiscount !== null){
dataforUna = dunaOrderDiscount;
}
console.log(dataforUna);
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);
}
console.log(dataforUna.total_discount);
console.log((discounts == null && dataforUna.total_discount > 0 ));
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);
}
}
}
console.log(dataforUna.FreeShipping);
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);
}
console.log(discounts);
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': "6a6a86cd6b6d710778a848a7b4c0d09951690b545551e132b9bdd351fa015f0f9efde01a13e265196c13421abca7b7c13a29d0d53aaf5a001f768c482e7f"
}
})
.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: "6a6a86cd6b6d710778a848a7b4c0d09951690b545551e132b9bdd351fa015f0f9efde01a13e265196c13421abca7b7c13a29d0d53aaf5a001f768c482e7f",
orderToken: data.token });
dunaCheckout.shouldOpenCheckout().then((shouldOpen) => {
if(shouldOpen) {
dunaCheckout.show();
}else{
window.location.replace("/checkout");
}
});
data.url=Shopify.shop;
data.tokenid=data.toke;
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;
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);