WDDiscountApp.PDPage.DisplayTiers = function () { if(globalFields.isProductPage){ var storeTime = globalFields.Storetime() ? globalFields.Storetime() : undefined; // Parse the date string into individual components let [currentYear, currentMonth, currentDay, currentHours, currentMinutes, currentSeconds] = storeTime.split(/[\sT:-]/); currentYear = parseInt(currentYear); currentMonth = parseInt(currentMonth); // Months are zero-based in JavaScript currentDay = parseInt(currentDay); currentHours = parseInt(currentHours); currentMinutes = parseInt(currentMinutes); currentSeconds = parseInt(currentSeconds); } function makeTimer(end_date) { if (globalFields.isProduct_Page) { if (end_date != null) { jQuery("#wd_countDown").css("display", "block"); var endTime = end_date; // Increment seconds by 1 currentSeconds++; // Adjust minutes, hours, and day if necessary if (currentSeconds >= 60) { currentSeconds = 0; currentMinutes++; if (currentMinutes >= 60) { currentMinutes = 0; currentHours++; if (currentHours >= 24) { currentHours = 0; currentDay++; } } } // Reformat the updated timestamp let currentStoreTime = `${currentYear}-${currentMonth.toString().padStart(2, '0')}-${currentDay.toString().padStart(2, '0')}T${currentHours.toString().padStart(2, '0')}:${currentMinutes.toString().padStart(2, '0')}:${currentSeconds.toString().padStart(2, '0')}`; endTime = (Date.parse(endTime) / 1000); var now = currentStoreTime; now = (Date.parse(now) / 1000); var timeLeft = endTime - now; var days = Math.floor(timeLeft / 86400); var hours = Math.floor(timeLeft / 3600); var exactHour = hours % 24; var minutes = Math.floor((timeLeft - (hours * 3600)) / 60); var seconds = Math.floor((timeLeft - (hours * 3600) - (minutes * 60))); var isDays = false; if (days > 0 || hours > 24) { isDays = true; } if (days < 0) { days = "00"; /*hours = "0"; minutes = "0"; seconds = "0";*/ } if (hours < 10) { hours = "0" + hours; } if (minutes < 10) { minutes = "0" + minutes; } if (seconds < 10) { seconds = "0" + seconds; } if (timeLeft > 0) { if (isDays) { $(".wd__days").html(days); $(".wd__hours").html(exactHour); $(".wd__minutes").html(minutes); $(".wd_sec, .wd__colon.seconds").hide(); } else { $(".wd__hours").html(exactHour); $(".wd__minutes").html(minutes); $(".wd__seconds").html(seconds); $(".wd_day, .wd__colon.hours").hide(); $(".wd_sec, .wd__colon.seconds").show(); } } else { jQuery('.wd__settings__table, #wd_countDown').remove(); } setTimeout(function () { jQuery('.wd__settings__table').after(jQuery("#wd_countDown")); }, 500); } } } var hide_buttons = null; var HideAdditionalPayments = function () { hide_buttons = setInterval(function () { if (jQuery('.shopify-payment-button__button').length > 0) { jQuery('.shopify-payment-button__button').hide(); clearInterval(hide_buttons); } }, 500); } this.DisplayTiersFn = function () { setTimeout(function () { jQuery('.wd__settings__table').remove(); var selectedVariant = jQuery('input[name^=id]:checked, select[name^=id], input[name=id], hidden[name^=id]', jQuery('form[action="/cart/add"]')).val(); let ProductPage = globalFields.TableProductPage != undefined && globalFields.TableProductPage != '' ? globalFields.TableProductPage : 'true'; ProductPage = ProductPage == 'true' ? true : false; if (selectedVariant != null && globalFieldsProductPage_WD.productMetafield != '[]' && globalFieldsProductPage_WD.productMetafield != undefined && ProductPage) { let tierObj = globalFields.GetTierObject(globalFieldsProductPage_WD.productMetafield, selectedVariant); let DiscountAppliedOn = false; let Location_Tag_s = false; if (tierObj != undefined) { DiscountAppliedOn = tierObj.DiscountAppliedON != null && tierObj.DiscountAppliedON != '' && tierObj.DiscountAppliedON != undefined ? true : false; Location_Tag_s = tierObj.Location_Tag_ != null && tierObj.Location_Tag_ != '' && tierObj.Location_Tag_ != undefined ? true : false; } if (DiscountAppliedOn) { // 1 if (Location_Tag_s) { // 2 let DiscountAppliedOnTag = tierObj.DiscountAppliedON == 'Both_Store' || tierObj.DiscountAppliedON == 'Online_Store' ? true : false; let LocationObject = Object.keys(tierObj.Location_Tag_); if (LocationObject[0] == 'StoreLocation') { let StoreLocationcheck = tierObj.Location_Tag_[LocationObject[0]].includes(globalFields.Storecountry) || tierObj.Location_Tag_[LocationObject[0]].includes(globalFields.Storecity) ? true : false; if (tierObj != undefined && tierObj.status && globalFields.StartEndDateValid(tierObj.start_date, tierObj.end_date) && DiscountAppliedOnTag && StoreLocationcheck) { var getDates = globalFields.TimerStartEndDateValid(tierObj.start_date, tierObj.end_date); getDates.valid; getDates.start_date; getDates.end_date; let timer_settings = parsed_timer_settings; WriteTableHeading(tierObj); WriteTableRows(tierObj, selectedVariant); if (timer_settings != undefined) { if (timer_settings.TimerStatus) { if (getDates.valid) { setInterval(function () { makeTimer(getDates.end_date); }, 1000); } } } jQuery('.shopify-payment-button__button').hide(); setTimeout(function () { jQuery('.shopify-payment-button__button').hide(); HideAdditionalPayments(); }, 2000); setTimeout(function () { clearInterval(hide_buttons); }, 5000); } } else { // 3 let TierLocation = tierObj.Location_Tag_[LocationObject[0]]; let CusotmerCountryLocation = globalFields.Customercountry; let CusotmerCityLocation = globalFields.Customercity; let CustomerLocationcheck_1 = (arr, arr1) => { return arr.some(item => arr1.includes(item)) }; let CustomerLocationcheck_2 = (arr2, arr3) => { return arr2.some(item => arr3.includes(item)) }; let CityValue = CustomerLocationcheck_1(TierLocation, CusotmerCountryLocation); let CountryValue = CustomerLocationcheck_2(TierLocation, CusotmerCityLocation); if (tierObj != undefined && tierObj.status && globalFields.StartEndDateValid(tierObj.start_date, tierObj.end_date) && DiscountAppliedOnTag && (CityValue || CountryValue)) { var getDates = globalFields.TimerStartEndDateValid(tierObj.start_date, tierObj.end_date); getDates.valid; getDates.start_date; getDates.end_date; let timer_settings = parsed_timer_settings; WriteTableHeading(tierObj); WriteTableRows(tierObj, selectedVariant); if (timer_settings != undefined) { if (timer_settings.TimerStatus) { if (getDates.valid) { setInterval(function () { makeTimer(getDates.end_date); }, 1000); } } } jQuery('.shopify-payment-button__button').hide(); setTimeout(function () { jQuery('.shopify-payment-button__button').hide(); HideAdditionalPayments(); }, 2000); setTimeout(function () { clearInterval(hide_buttons); }, 5000); } } } else { // 4 if (tierObj != undefined && tierObj.status && globalFields.StartEndDateValid(tierObj.start_date, tierObj.end_date) && (tierObj.DiscountAppliedON == 'Both_Store' || tierObj.DiscountAppliedON == 'Online_Store')) { var getDates = globalFields.TimerStartEndDateValid(tierObj.start_date, tierObj.end_date); getDates.valid; getDates.start_date; getDates.end_date; let timer_settings = undefined//parsed_timer_settings; WriteTableHeading(tierObj); WriteTableRows(tierObj, selectedVariant); if (timer_settings != undefined) { if (timer_settings.TimerStatus) { if (getDates.valid) { setInterval(function () { makeTimer(getDates.end_date); }, 1000); } } } jQuery('.shopify-payment-button__button').hide(); setTimeout(function () { jQuery('.shopify-payment-button__button').hide(); HideAdditionalPayments(); }, 2000); setTimeout(function () { clearInterval(hide_buttons); }, 5000); } } } else { // 5 let temptimer = globalFields.StartEndDateValid(tierObj.start_date, tierObj.end_date) if (tierObj != undefined && tierObj.status && globalFields.StartEndDateValid(tierObj.start_date, tierObj.end_date)) { var getDates = globalFields.TimerStartEndDateValid(tierObj.start_date, tierObj.end_date); getDates.valid; getDates.start_date; getDates.end_date; let timer_settings = undefined//parsed_timer_settings; WriteTableHeading(tierObj); WriteTableRows(tierObj, selectedVariant); if (timer_settings != undefined) { if (timer_settings.TimerStatus) { if (getDates.valid) { setInterval(function () { makeTimer(getDates.end_date); }, 1000); } } } jQuery('.shopify-payment-button__button').hide(); setTimeout(function () { jQuery('.shopify-payment-button__button').hide(); HideAdditionalPayments(); }, 2000); setTimeout(function () { clearInterval(hide_buttons); }, 5000); } } } }, 200); } setTimeout(function () { clearInterval(hide_buttons); }, 10000); this.OnVariantChange = function () { setTimeout(function () { $(".js.product-form__input label").click(function () { displayTiers.DisplayTiersFn(); }); }, 2000); } var TableHeadHtml = function (contentHtml, tableSelector, position) { jQuery(tableSelector).before(contentHtml) } var WriteTableHeading = function (tierObj) { var tableSelector = 'form[action="/cart/add"] .core__blocks .ecom-block.ecom-core.core__block.elmspace.ecom-fi8xx2s8bov'; if (globalFields.settings.selected_table == "table1") { TableHeadHtml('
' + globalFields.settings.table_headers.header1_value + '' + globalFields.settings.table_headers.header2_value + '
', tableSelector); } if (globalFields.settings.selected_table == "table2") { TableHeadHtml('
' + globalFields.settings.table_headers.header1_value + '' + globalFields.settings.table_headers.header2_value + '' + globalFields.settings.table_headers.header3_value + '
', tableSelector); } if (globalFields.settings.selected_table == "table3") { TableHeadHtml('
' + globalFields.settings.table_headers.header1_value + '' + globalFields.settings.table_headers.header2_value + '' + globalFields.settings.table_headers.header3_value + '
', tableSelector); } if (globalFields.settings.selected_table == "table4") { TableHeadHtml('
', tableSelector); } } var TableRowHtml = function (contentHtml, tableSelector) { jQuery(tableSelector).append(contentHtml); } var TableRowSingle = function (tieredMin_, tieredMax_, discountedPrice, tieredOff, booleanmostPopularValues, index) { var plusSign = tieredMin_ == tieredMax_ ? '' : '+', buyText = 'Buy '; var priceHtml = '' + globalFields.formatMoney(discountedPrice, globalFields.amount) + ''; if (globalFields.settings.selected_table == "table1") { if (booleanmostPopularValues) { TableRowHtml(' ' + tieredMin_ + plusSign + 'Most Popular' + '' + tieredOff + '', '#wd_table1 .wd__tbody'); } else { TableRowHtml(' ' + tieredMin_ + plusSign + '' + tieredOff + '', '#wd_table1 .wd__tbody'); } } if (globalFields.settings.selected_table == "table2") { if (booleanmostPopularValues) { TableRowHtml(' ' + tieredMin_ + 'Most Popular' + '' + tieredMax_ + '' + tieredOff + '', '#wd_table2 .wd__tbody'); } else { TableRowHtml(' ' + tieredMin_ + '' + tieredMax_ + '' + tieredOff + '', '#wd_table2 .wd__tbody'); } } if (globalFields.settings.selected_table == "table3") { if (booleanmostPopularValues) { TableRowHtml(' ' + tieredMin_ + plusSign + 'Most Popular' + '' + priceHtml + '' + tieredOff + '', '#wd_table3 .wd__tbody'); } else { TableRowHtml(' ' + tieredMin_ + plusSign + '' + priceHtml + '' + tieredOff + '', '#wd_table3 .wd__tbody'); } } if (globalFields.settings.selected_table == "table4") { var quantityTextTable4 = tieredMin_ + "-" + tieredMax_; if (tieredMax_ == "+") { quantityTextTable4 = tieredMin_ + "+"; } TableRowHtml(' ' + globalFields.settings.table_body.body1_value + ' ' + tieredMin_ + ' ' + globalFields.settings.table_body.body2_value + ' ' + tieredOff + '', '#wd_table4'); } } var WriteTableRows = async function (tierObj, selectedVariant_) { var originalPrice_ = globalFieldsProductPage_WD.variantsPriceArray_PD[selectedVariant_]; originalPrice_ = originalPrice_ / 100; let costMargin = tierObj.costMargin; let costPrice = null; costPrice = await getCostPrice(selectedVariant_); if (costMargin) { if ((costPrice == 0 || costPrice == null )&& $('.wd__settings__table tr').length == 1) { //for if the cost price is equal to 0 the remove the table $('.wd__settings__table').remove(); return; } } for (i = 0; i < tierObj.tier_min.length; i++) { var isBreakLoop = false, tieredOff = Number(tierObj.tier_values[i]); var tieredMin_ = parseInt(tierObj.tier_min[i]), tieredMax_ = tierObj.tier_max[i], discountedPrice = 0, allvariantQuantity = parseInt(tierObj.tier_min[0]) if (tieredMax_ != "max") { tieredMax_ = parseInt(tieredMax_); } else { tieredMax_ = "+"; } if (tierObj.discount_type == "percentage") { discountedPrice = Number(originalPrice_.toFixed(2)); var p = parseFloat(tieredOff) / 100, originalPriceCut_ = Number(parseFloat(p * discountedPrice).toFixed(2)); discountedPrice = discountedPrice - originalPriceCut_; if (discountedPrice <= 0) { discountedPrice = 0; tieredOff = "100%"; isBreakLoop = true; tieredMax_ = "+"; } else { discountedPrice = discountedPrice.toFixed(2); tieredOff = tieredOff + "% OFF"; } } else if (tierObj.discount_type == "costMargin") { if (costPrice != null && costPrice != 0){ discountedPrice = tieredOff.toFixed(2); tieredOff = globalFields.formatMoney(tieredOff.toFixed(2), globalFields.amount); let marginCalculation = Number(costPrice) * Number(discountedPrice); marginCalculation = marginCalculation / 100; marginCalculation = marginCalculation + Number(costPrice); console.log(">>", marginCalculation) discountedPrice = marginCalculation.toFixed(2); tieredOff = globalFields.formatMoney(marginCalculation.toFixed(2), globalFields.amount); // } }else{ if ((costPrice == 0 || costPrice == null )&& $('.wd__settings__table tr').length == 1) { //for if the cost price is equal to 0 the remove the table $('.wd__settings__table').remove(); return; } } } else if (tierObj.discount_type == "fixed_price") { discountedPrice = tieredOff.toFixed(2); tieredOff = globalFields.formatMoney(tieredOff.toFixed(2), globalFields.amount); if ( costMargin && costPrice != 0 && costPrice != null ){ let marginCalculation = Number(costPrice) * Number(discountedPrice); marginCalculation = marginCalculation / 100; marginCalculation = marginCalculation + Number(costPrice); console.log(">>", marginCalculation) discountedPrice = marginCalculation.toFixed(2); tieredOff = globalFields.formatMoney(marginCalculation.toFixed(2), globalFields.amount); // } } } else { discountedPrice = Number((originalPrice_ - tieredOff).toFixed(2)); if (discountedPrice <= 0) { discountedPrice = 0; tieredOff = globalFields.formatMoney(originalPrice_.toFixed(2), globalFields.amount); isBreakLoop = true; tieredMax_ = "+"; } else { discountedPrice = discountedPrice.toFixed(2); tieredOff = globalFields.formatMoney(tieredOff.toFixed(2), globalFields.amount) + " OFF"; } } let booleanmostPopularValues = tierObj.mostPopularValues != undefined ? (tierObj.mostPopularValues[i] != undefined ? tierObj.mostPopularValues[i] : false) : false; TableRowSingle(tieredMin_, tieredMax_, discountedPrice, tieredOff, booleanmostPopularValues, i + 1); // product Price Cutt var tierPrice = parseFloat(tierObj.tier_values[i]); var minTier = parseInt(tierObj.tier_min[i]), maxTier = tierObj.tier_max[i] != 'max' ? parseInt(tierObj.tier_max[i]) : tierObj.tier_max[i]; var updatedLinePrice = 0, updatedItemPrice = 0 ; let condition1 = false, condition2 = false; condition1 = allvariantQuantity >= minTier; condition2 = maxTier == "max" || allvariantQuantity <= maxTier; if (condition1 && condition2) { if (tierObj.discount_type == 'percentage') { var originalPriceCut = parseFloat(globalFields.ConvertToFixedDecimalNumber((parseFloat(tierPrice) / 100) * globalFields.ConvertToFixedDecimalNumber(originalPrice_))); updatedItemPrice = globalFields.ConvertToFixedDecimalNumber(globalFields.ConvertToFixedDecimalNumber(originalPrice_) - originalPriceCut); } else if (tierObj.discount_type == 'fixed') { updatedItemPrice = globalFields.ConvertToFixedDecimalNumber(globalFields.ConvertToFixedDecimalNumber(originalPrice_) - parseFloat(tierPrice)); } else if (tierObj.discount_type == 'fixed_price') { if (costMargin ){ updatedItemPrice = globalFields.ConvertToFixedDecimalNumber(parseFloat(discountedPrice)) //discountedPrice } else { updatedItemPrice = globalFields.ConvertToFixedDecimalNumber(parseFloat(tierPrice)) } //old //updatedItemPrice = globalFields.ConvertToFixedDecimalNumber(parseFloat(tierPrice)); } // updatedItemPrice = globalFields.formatMoney(Number(updatedItemPrice).toFixed(2), globalFields.amount); // jQuery('.core__blocks--body .ecom-product-single__price-container .ecom-product-single.ecom-product-single__price--prices').html('
' + globalFields.formatMoney(originalPrice_*100, globalFields.amount) + '
' + updatedItemPrice + '
') // } // else{ // jQuery('.core__blocks--body .ecom-product-single__price-container .ecom-product-single.ecom-product-single__price--prices').html(`

${globalFields.formatMoney(originalPrice_*100, globalFields.amount)}

`) //} updatedItemPrice = globalFields.formatMoney(Number(updatedItemPrice).toFixed(2), globalFields.amount); jQuery('.ecom-product-single__price--sale.ecom-product-single__price-normal').html('

' + globalFields.formatMoney(originalPrice_*100, globalFields.amount) + '
' + updatedItemPrice + '
') jQuery('.ecom-product-single__price .ecom-product-single__price-container').html('
' + globalFields.formatMoney(originalPrice_*100, globalFields.amount) + '
' + updatedItemPrice + '
') } // else{ // jQuery('.ecom-product-single__price--sale.ecom-product-single__price-normal').html(`

${globalFields.formatMoney(originalPrice_*100, globalFields.amount)}

`) // jQuery('.ecom-product-single__price .ecom-product-single__price-container').html(`

${globalFields.formatMoney(originalPrice_*100, globalFields.amount)}

`) // } if (isBreakLoop) { break; } } } } //function for get cost price async function getCostPrice1(variantId){ console.log("cost price"); let accessToken = "***********"; const myHeaders = new Headers(); myHeaders.append("X-Shopify-Access-Token", accessToken ); const requestOptions = { method: "GET", headers: myHeaders, redirect: "follow" }; try { let resData = await fetch(`https://6edc19.myshopify.com/admin/api/2024-01/variants/${variantId}.json`, requestOptions); let data = await resData.json(); console.log("data", data); let inventryId = data.variant.inventory_item_id; //for cost price let responseData = await fetch(`https://6edc19.myshopify.com/admin/api/2024-01/inventory_items/${inventryId}.json`, requestOptions); let costData = await responseData.json(); let costPrice = costData.inventory_item.cost; console.log(">>>", costPrice); return costPrice; } catch (er){ console.log("err>>>>", er) } } //end function //function for get cost price by backend async function getCostPrice(variantId){ let accessToken = "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" const myHeaders = new Headers(); myHeaders.append("X-Shopify-Access-Token", accessToken ); const requestOptions = { method: "GET", headers: myHeaders, redirect: "follow" }; try { let resData = await fetch(`https://wholesale.apptiv.in/storeFront/getVariantCost?Shop=${Shopify.shop}&variantId=${variantId}`, requestOptions); let costPrice = await resData.json(); return costPrice.data; } catch (er){ console.log("err>>>>", er) } } //end function var globalFieldsProductPage_WD = new WDDiscountApp.PDPage.Global(), displayTiers = new WDDiscountApp.PDPage.DisplayTiers(); displayTiers.DisplayTiersFn(); displayTiers.OnVariantChange();