Svuotare il carrello dopo almeno 10 giorni di inattività. 
Author: Giuseppe P.
Visited 180,
Followers 1,
Shared 0
Gentile staff, la voro in un settore ingrosso con diversi articoli. Mi capita spesso di ricevere ordini di da utenti che iniziano un ordine aggingendo articoli al carrello e lo completano dopo diversi giorni a volte anche dopo mesi, ricevendo io un ordine in cui la prima parte degli articoli non esistono più. Per evitare questo inconveniente sarebbe possibile creare un codice che azzeri il carrello in automatico dopo 10 giorni da momento in cui l'utente lo ha abbandonato.
Giuseppe
Posted on the
Buongiorno Giuseppe,
posso riportare la cosa come suggerimento, ma per quanto riguarda il codice personalizzato purtroppo non forniamo supporto, ti consiglierei quindi di aprire un post pubblico per avere supporto a tale proposito.
Resto a disposizione.
Eric, ho scritto un commento attinente a questa domanda su https://helpcenter.websitex5.com/en/post/271789
Incomedia potrebbe fornire supporto, sviluppando una gestione diversa del carrello, prendendo in seria (é un problema importante...) considerazione la gestione del carrello abbandonato.
CIAO
Ciao ALE. Metti questo codice in un oggetto sul footer e inserisci questo script. DEvi provare se ti funziona
<script>
// Funzione per svuotare automaticamente il carrello
function autoEmptyCartAfter10Days() {
const now = new Date().getTime();
const cartKey = "cartTimestamp"; // Chiave personalizzata per data creazione
// Recupera timestamp salvato
const saved = localStorage.getItem(cartKey);
// Se non esiste e il carrello non è vuoto, salviamo la data attuale
if (!saved && x5engine.cart.getProducts().length > 0) {
localStorage.setItem(cartKey, now);
}
// Se esiste e sono passati più di 10 giorni, svuotiamo
if (saved && (now - parseInt(saved)) > (10 * 24 * 60 * 60 * 1000)) {
console.log("Svuotamento automatico carrello attivato");
x5engine.cart.manager.empty();
localStorage.removeItem(cartKey);
location.reload(); // aggiorna per riflettere il carrello svuotato
}
}
// Esegui la funzione al caricamento della pagina
document.addEventListener("DOMContentLoaded", autoEmptyCartAfter10Days);
</script>
Oggetto HTML Ale.
Trova questo (10 * 24 * 60 * 60 * 1000) e modifica ad un minuto così (1 * 60 * 1000) // 1 minuto = 60.000 millisecondi e vedi se fununzia.
Prima non ero al PC ora ho provato ma non funziona il codice sopra. Cambiando strategia a me funziona e ho fatto cosi: Ti posto il primo codice che fa un controllo dopo un minuto. Il codice va messo IN CODICE E STATISTICHE:
<script>
function cart_empty() {
console.log("Tentativo di svuotamento del carrello...");
x5engine.cart.manager.empty();
location.reload();
}
// Funzione per svuotare il carrello automaticamente dopo 1 minuto
function autoEmptyCartAfter1Minute() {
setTimeout(() => {
console.log("1 minuto trascorso, svuoto il carrello automaticamente.");
cart_empty();
}, 60000); // 60.000 millisecondi = 1 minuto
}
// Avvia il timer allo start della pagina
document.addEventListener("DOMContentLoaded", autoEmptyCartAfter1Minute);
</script>
Una volta che hai provato e funziona (ti basta mettere un prodotto nel carrello) vai sulla home e attendi 1 minuto, ritorna sul codice e modificalo per i 10 gg da te ricercati.
Nella prova metti l'icona STATUS del carrello sull'header così vedi in tempo reale quando si azzera.
<script>
function cart_empty() {
console.log("Tentativo di svuotamento del carrello...");
x5engine.cart.manager.empty();
localStorage.removeItem("cartTimestamp"); // Puliamo il timestamp salvato
location.reload();
}
function autoEmptyCartAfter10Days() {
const cartKey = "cartTimestamp";
const now = Date.now();
const tenDays = 10 * 24 * 60 * 60 * 1000; // 10 giorni in millisecondi
// Se il timestamp non è salvato, lo memorizziamo
if (!localStorage.getItem(cartKey)) {
localStorage.setItem(cartKey, now);
console.log("Salvato timestamp iniziale:", now);
}
// Controlliamo se sono passati 10 giorni
const savedTimestamp = localStorage.getItem(cartKey);
if (savedTimestamp) {
const diff = now - parseInt(savedTimestamp);
if (diff > tenDays) {
console.log("Sono passati più di 10 giorni, svuoto il carrello.");
cart_empty();
} else {
console.log(`Ancora ${tenDays - diff}ms restanti prima dello svuotamento.`);
}
}
}
// Controlliamo il carrello ogni volta che la pagina viene caricata
document.addEventListener("DOMContentLoaded", autoEmptyCartAfter10Days);
</script>
Ciao Roby, il codice era per giuseppe non per me, dal mio punto di vista l ordine non concluso deve essere gestito tramite allert sms e mail + invio automatico sconto esempio del 10% per incentivare l ordine.
In tutti gli eshop importanti il carrello contenente prodotti in cui l ordine non viene inviato, non resta "abbandonato" a se stesso ma si tenta la carta del recupero perché cio puo impattare sul fatturato dal 10 al 15% ...non é male...
ciao
Ciao Ale azz confuso dall'avatar. Per quanto riguarda l'ordine concluso si può fare tuto quello che vuoi ma se lo faccio io che capisco meno della metà di quello che sa un programmatore incomedia sarebbe ora che lo facessero loro.
Buongiorno Alessandro,
ti confermo che questa funzione è stata riportata come suggerimento da un topic Idea nei mesi passati, aggiungerò anche il tuo feedback
Gentilmente, riferisci come feedback aggiuntivo che dal mio punto di vista, questa modifica potrebbe generare molte riconferme del vostro sw...