✉️100 Envelope Savings Challenge Book

people are viewing this right now
$17.99
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = '6d892b0d-5e34-4dc7-bc45-d3e34d077763'; this.isRTL = SPZ.win.document.dir === 'rtl'; this.isAddingToCart_ = false; // 加购中状态 } static deferredMount() { return false; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); this.setupAction_(); this.viewport_ = this.getViewport(); } mountCallback() { this.init(); // 监听事件 this.bindEvent_(); } async init() { this.handleFitTheme(); const data = await this.getDiscountList(); this.renderApiData_(data); } async getDiscountList() { const productId = '1bee9f9a-f80a-4fd2-9d9f-23b5a39df7f4'; const variantId = this.variant_id; const productType = 'default'; const reqBody = { product_id: productId, variant_id: variantId, discount_method: "DM_AUTOMATIC", customer: { customer_id: window.C_SETTINGS.customer.customer_id, email: window.C_SETTINGS.customer.customer_email }, product_type: productType } const url = `/api/storefront/promotion/display_setting/text/list`; const data = await this.xhr_.fetchJson(url, { method: "post", body: reqBody }).then(res => { return res; }).catch(err => { this.setContainerDisabled(false); }) return data; } async renderDiscountList() { this.setContainerDisabled(true); const data = await this.getDiscountList(); this.setContainerDisabled(false); // 重新渲染 抖动问题处理 this.renderApiData_(data); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } async renderApiData_(data) { const parentDiv = document.querySelector('.automatic_discount_container'); const newTplDom = await this.getRenderTemplate(data); if (parentDiv) { parentDiv.innerHTML = ''; parentDiv.appendChild(newTplDom); } else { console.log('automatic_discount_container is null'); } } doRender_(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); this.element.appendChild(el); }); } async getRenderTemplate(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, { ...renderData, isRTL: this.isRTL }) .then((el) => { this.clearDom(); return el; }); } setContainerDisabled(isDisable) { const automaticDiscountEl = document.querySelector('.automatic_discount_container_outer'); if(isDisable) { automaticDiscountEl.setAttribute('disabled', ''); } else { automaticDiscountEl.removeAttribute('disabled'); } } // 绑定事件 bindEvent_() { window.addEventListener('click', (e) => { let containerNodes = document.querySelectorAll(".automatic-container .panel"); let bool; Array.from(containerNodes).forEach((node) => { if(node.contains(e.target)){ bool = true; } }) // 是否popover面板点击范围 if (bool) { return; } if(e.target.classList.contains('drowdown-icon') || e.target.parentNode.classList.contains('drowdown-icon')){ return; } const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { node.classList.remove('open-dropdown'); }) // 兼容主题 this.toggleProductSticky(true); }) // 监听变体变化 document.addEventListener('dj.variantChange', async(event) => { // 重新渲染 const variant = event.detail.selected; if (variant.product_id == '1bee9f9a-f80a-4fd2-9d9f-23b5a39df7f4' && variant.id != this.variant_id) { this.variant_id = variant.id; this.renderDiscountList(); } }); } // 兼容主题 handleFitTheme() { // top 属性影响抖动 let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ productInfoEl.classList.add('force-top-auto'); } } // 兼容 wind/flash /hero 主题 (sticky属性影响 popover 层级展示, 会被其他元素覆盖) toggleProductSticky(isSticky) { let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ if(isSticky) { // 还原该主题原有的sticky属性值 productInfoEl.classList.remove('force-position-static'); return; } productInfoEl.classList.toggle('force-position-static'); } } setupAction_() { this.registerAction('handleDropdown', (invocation) => { const discount_id = invocation.args.discount_id; const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { if(node.getAttribute('id') != `automatic-${discount_id}`) { node.classList.remove('open-dropdown'); } }) const $discount_item = document.querySelector(`#automatic-${discount_id}`); $discount_item && $discount_item.classList.toggle('open-dropdown'); // 兼容主题 this.toggleProductSticky(); }); // 加购事件 this.registerAction('handleAddToCart', (invocation) => { // 阻止事件冒泡 const event = invocation.event; if (event) { event.stopPropagation(); event.preventDefault(); } // 如果正在加购中,直接返回 if (this.isAddingToCart_) { return; } const quantity = invocation.args.quantity || 1; this.addToCart(quantity); }); } // 加购方法 async addToCart(quantity) { // 设置加购中状态 this.isAddingToCart_ = true; const productId = '1bee9f9a-f80a-4fd2-9d9f-23b5a39df7f4'; const variantId = this.variant_id; const url = '/api/cart'; const reqBody = { product_id: productId, variant_id: variantId, quantity: quantity }; try { const data = await this.xhr_.fetchJson(url, { method: 'POST', body: reqBody }); // 触发加购成功提示 this.triggerAddToCartToast_(); return data; } catch (error) { error.then(err=>{ this.showToast_(err?.message || err?.errors?.[0] || 'Unknown error'); }) } finally { // 无论成功失败,都重置加购状态 this.isAddingToCart_ = false; } } showToast_(message) { const toastEl = document.querySelector("#apps-match-drawer-add_to_cart_toast"); if (toastEl) { SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } } // 触发加购成功提示 triggerAddToCartToast_() { // 如果主题有自己的加购提示,则不显示 const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy'); if (themeAddToCartToastEl) return; // 显示应用的加购成功提示 this.showToast_("Added successfully"); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); this.action_.trigger(this.element, name, event); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomProductAutomatic);
class SpzCustomDiscountBundle extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() {} unmountCallback() {} setupAction_() { this.registerAction('showAddToCartToast', () => { const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy') if(themeAddToCartToastEl) return const toastEl = document.querySelector('#apps-match-drawer-add_to_cart_toast') SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast("Added successfully"); }); }); } buildCallback() { this.setupAction_(); }; } SPZ.defineElement('spz-custom-discount-toast', SpzCustomDiscountBundle);
Color:  🔥Black
⏰VIP Shipping Today Only⏰:  ⚡Super Fast Delivery⚡
Quantity

Description

Description

 

✅ Guaranteed! GoogleTrusted Store!
🛒 Payments Via PayPal® and CreditCard
✈Shipping time>> Priority is given to delivery after payment✈

🤑Start Your Visual Savings Journey💰

📒 Includes 30 reusable transparent cash envelopes (numbers 1 to 100), plus a digital sticker set to help you save up to $5,050! 💰 Take control of your finances with this money budget . ✨

💡Have you ever set a savings goal, only to give up halfway?💦 

🥶Do budgeting apps feel too impersonal and hard to stick with?💪

 ✈️What you need isn't just another bank account, but a fun and rewarding process!💰

💎 Our ✉️ 100 Envelope Savings Challenge Book is designed for you.

This isn't just a notebook; it's a visual tool that breaks down a big goal into tiny, daily actions.

The hands-on process of filling, folding, and saving delivers unparalleled satisfaction and real control over your finances.🧲

📖How Does It Work?

🏷The Core: A Simple Yet Powerful Hands-On System

  • 🎉From 1 to 100: At the heart of this challenge book is a clear 1-100 number chart. Each number represents a savings milestone waiting to be achieved.🏆
  • 🗓️Daily/Weekly Challenge: Each week, randomly pick a number or tackle them in order. Save the amount equal to that number (e.g., save $50 for number 50).💸
  • 🖊️Mark & Achieve: After saving, manually check off ✅, color 🎨, or place a sticker on that number! Visually watch the numbers on the chart get “lit up” one by one. Your savings progress comes alive on paper, offering immense visual satisfaction.✨
  • 🎊Final Victory: Once every number from 1 to 100 on the chart is marked, congratulations! You've effortlessly accumulated a substantial $5,050 fund. This is a considerable emergency fund, travel pot, or dream starter, all created by you.🥰

🧐Why “Hands-On Marking” is the Key?🧐

In the digital age, progress bars are virtual.🤳 Manually marking a physical chart transforms your savings commitment into a visible, tangible ritual. Every checkmark is an affirmation of keeping a promise to yourself; each page filled with colorful marks is solid proof of progress toward your financial goal. This physical interaction significantly boosts a sense of achievement and ongoing motivation.💖

💸In a Cashless World, Preserve the Tangible Joy of Saving.

As we glide into a cashless society, there's a risk that this ceremonial, hands-on way of family saving could fade away.🤔

I've always preferred the tangible feel of physical money, much like my enduring love for paper books over e-books—the weight, the texture, the sound of turning pages are experiences the digital world can't replicate.😍 

It's truly a pity to think that future children might never know the joy of ‘accumulation’ by shaking a heavy piggy bank, or learn the meaning of ‘value’ by counting coins with their own hands.

This 100 Envelope Challenge Book is designed to preserve that precious sense of ‘tangibility.’✨

It's more than a tool; it's a bridge connecting digital convenience with the physical wisdom of finance, allowing the true meaning of saving—visible and touchable—to be passed down within families.❤️

❤️ Why You’ll Love It

  • ✨Visual Progress, Clear Motivation💥: Abstract savings goals are simplified into a clear map from 1 to 100. Marking off each number is a visible step forward, making your progress and achievement real-time and tangible.
  • ✨Gamified Challenge, Enhanced Fun🤩: It's like a level-up game! Randomly picking numbers adds a surprise element, turning disciplined saving into an enjoyable and anticipated ritual.
  • ✨Hands-On Marking, Ritual Commitment🎖️: The physical act of checking off or coloring in the card reinforces your savings commitment more deeply than tapping an app. This simple ritual turns intention into a steadfast habit.
  • ✨Ultimate Flexibility, Your Control🎉: You have complete control. Save the exact number (¥1, ¥2…) or multiply it (¥10, ¥20…) to match your goal. You set your own pace.
  • ✨Simple & Efficient, Zero Hassle💫: Forget the clutter of physical envelopes. This all-in-one card lets you focus purely on saving, making the challenge easier to manage and stick with.
  • ✨A Thoughtful Gift for the Future🎁: Give a unique gift to friends, family, or graduates. It's more than a book; it's a practical tool and caring gesture that promotes financial wellness and helps plan for a brighter future.

SPECIFICATIONS:

  • PACKAGE: 1pc * Budget Book

  • size: 17.8*11cm

🎁 Perfect Gift: Kickstart someone's saving journey! 🥳 This thoughtful and practical gift helps with budgeting and staying on track. 🎉 Let’s get this saving on a roll! 🌟

NOTE

  • Please allow slight measurement deviations due to manual measurement.

  • Due to the different monitor and light effect, the actual color of the item might be slightly different from the color showed in the pictures.

✈WORLDWIDE SHIPPING✈

🚢 Shipping>>Worldwide Express Shipping Available.

4 GREAT REASON TO BUY FROM US

📦 Insured Worldwide Shipping: Each order includes real-time tracking details and insurance coverage in the unlikely event that a package gets lost or stolen in transit.
💰 Money-Back Guarantee: If your items arrive damaged, we will gladly issue out a replacement or refund.
🔒 Safe & Secure Checkouts: We use state-of-the-art SSL Secure encryption to keep your personal and financial information 100% protected.