08. Februar 2024
3
minutter lesetid

TOOLS sparte minst én arbeidsdag på kjøp av julegavene ved å bruke Glede

Unni Stene
HR-direktør i TOOLS
Ingrid Lunna
HR-generalist i TOOLS

TOOLS er Norges ledende leverandør av verktøy, maskiner, personlig verneutstyr og industrielt forbruksmateriell til bedrifter i Norge. Med sine 650 ansatte fordelt på 58 butikker hjelper de kundene sine i valg av riktige produkter, og skreddersyr optimale leveringsløsninger slik at arbeidet blir utført på en effektiv og sikker måte.

I TOOLS er de opptatt av å ta godt vare på sine ansatte, og til jul pleier de å sende ansatte inn i ferien med en hyggelig julehilsen. De gjør dette for å uttrykke sin takknemlighet overfor hver enkelt ansatt og for at alle skal få en hyggelig start på juleferien. I år var det HR-direktør Unni Stene, og HR-generalist Ingrid Lunna som fikk ansvaret for gavene. Ingrid forteller litt om hva oppgaven betyr for dem.

Julegavene er en viktig oppgave. Når vi har besluttet å gi julegave til de ansatte, må det gjøres skikkelig!

Med 58 butikker over hele landet har oppgaven med julegavene ikke bare vært en dans på roser. Ingrid forteller om noen av utfordringene de har opplevd tidligere.

I Tools ønsker vi at de ansatte skal kunne velge selv, helt fritt.

TOOLS var på utkikk etter en mer praktisk løsning for julegavene da de hørte om Glede, og trigget spesielt at Glede var en enklere og digital løsning. Etter et raskt introduksjonsmøte falt valget for julegavene 2023 på Glede.

Mer enn en arbeidsdag spart

Etter at Unni og Ingrid ble bedre kjent med Glede, var det flere ting de likte spesielt godt: 

De ble også overrasket over hvor mye enklere Glede gjorde jobben med julegavene.

Sammenlignet med arbeidet i fjor, sparte vi minst én full arbeidsdag på å bruke Glede.

Smørblide mottakere

I etterkant av utsendelsen har Unni og Ingrid forhørt seg med gavekortmottakerne om hvordan det var. Responsen har vært utelukkende positiv. 

“De ansatte er veldig fornøyde, og synes det var en hyggelig og enkel måte å få julegave på.”, sier de.

De nevner noen av fordelene for mottakere: 

En kollega brukte det på et restaurantbesøk, mens andre ønsker kanskje å bruke det på dagligvarer.

Etter å ha brukt Glede for første gang til jul, forteller Ingrid at TOOLS er interessert i å bruke Glede fremover, også i forbindelse med bursdager og jubileer. 

Kontakt oss

Tusen takk! Vi har mottatt din henvendelse, og vil svare deg i løpet av én arbeidsdag 😊
Uups! Noe gikk galt, og meldingen ble ikke sendt. Prøv igjen, eller ta kontakt med oss på e-post: support@glede.app

Kom i gang med Glede

Gi gavekortet som kan brukes overalt — i butikk og på nett!

(function () { const DEBUG = false; const log = (...a) => DEBUG && console.log('[weglot-ui]', ...a); const normalize = (code) => { if (!code) return ''; code = String(code).toLowerCase(); if (code.includes('-')) code = code.split('-')[0]; // en-US -> en if (code === 'nb') code = 'no'; // Bokmål -> 'no' if (code === 'se') code = 'sv'; // common slip return code; }; // We cache a template per language so we can rebuild the list let TEMPLATES = { inner: {}, outer: {} }; function cacheTemplates(wrapper) { // Grab any [lang] blocks (from toggle OR list) and store inner/outer wrapper.querySelectorAll('[lang]').forEach(el => { const lang = normalize(el.getAttribute('lang')); if (!lang) return; if (!TEMPLATES.inner[lang]) TEMPLATES.inner[lang] = el.innerHTML; if (!TEMPLATES.outer[lang]) TEMPLATES.outer[lang] = el.outerHTML; }); log('cached templates', TEMPLATES); } function updateSwitcher(currentLang) { currentLang = normalize(currentLang); const wrappers = document.querySelectorAll('.wg-element-wrapper.sw6'); if (wrappers.length === 0) { log('no wrappers'); return; } else { wrappers.forEach(wrapper => { const toggle = wrapper.querySelector('.wg-dropdown-toggle'); const list = wrapper.querySelector('.wg-dd-1-list'); if (!toggle || !list) { log('missing toggle/list'); return; } // Ensure templates are cached (first run on this page load) if (!TEMPLATES.inner.no || !TEMPLATES.inner.sv || !TEMPLATES.inner.en) { cacheTemplates(wrapper); } // If any template still missing, bail (structure not as expected) if (!TEMPLATES.inner.no || !TEMPLATES.inner.sv || !TEMPLATES.inner.en) { log('incomplete templates'); return; } // 1) Set TOGGLE visual (attribute + optional state class + content) toggle.setAttribute('lang', currentLang); toggle.classList.remove('is-no','is-sv','is-en'); toggle.classList.add(`is-${currentLang}`); toggle.innerHTML = TEMPLATES.inner[currentLang]; // 2) Rebuild LIST to contain ONLY the two other languages (fresh each time) const ALL = ['no','sv','en']; const others = ALL.filter(l => l !== currentLang); // Build a clean list using the captured OUTER html so structure/classes match const htmlA = TEMPLATES.outer[others[0]]; const htmlB = TEMPLATES.outer[others[1]]; // Clear and insert exactly two items list.innerHTML = ''; // Insert via range to keep outerHTML intact const r1 = document.createRange(); r1.selectNode(list); list.appendChild(r1.createContextualFragment(htmlA)); const r2 = document.createRange(); r2.selectNode(list); list.appendChild(r2.createContextualFragment(htmlB)); // Optional: normalize classes on list items too list.querySelectorAll('[lang]').forEach(el => { const l = normalize(el.getAttribute('lang')); el.classList.remove('is-no','is-sv','is-en'); el.classList.add(`is-${l}`); }); log('updated → current:', currentLang, 'others:', others); } ) } } // Event delegation (survives DOM swaps) document.addEventListener('click', function (e) { const link = e.target.closest('.wg-element-wrapper.sw6 [lang]'); if (!link) return; e.preventDefault(); const lang = normalize(link.getAttribute('lang')); // Trigger Weglot switch (subdomain setups will reload; path setups will not) document.cookie = "glede_locale=" + lang + "; path=/; domain=.glede.app; max-age=31536000"; Weglot.switchTo(lang); // Do NOT call update here for subdomain setups; page will reload anyway. }); // Run AFTER Weglot has rendered (important on subdomain reload) function runAfterWeglotReady() { const run = () => { const lang = normalize(Weglot.getCurrentLang()); // Wait one frame to let Weglot paint its switcher nodes requestAnimationFrame(() => updateSwitcher(lang)); }; Weglot.on('initialized', run); // If already initialized (script included late), run immediately if (Weglot.getCurrentLang && Weglot.getCurrentLang()) run(); // For path-based projects (no reload), update visuals after change Weglot.on('languageChanged', (newLang) => { updateSwitcher(newLang) }); } // Boot when DOM is ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', runAfterWeglotReady); } else { runAfterWeglotReady(); } })();