WebSite X5Help Center

 
Maurizio Giglio
Maurizio Giglio
User

Inserimento data di prenotazione  it

Autor: Maurizio Giglio
Visitado 210, Seguidores 2, Compartilhado 0  

sto lavorando ad un ecommerce per prenotare accessi in piscina, tutto ok.... ma come faccio a far selezionare anche una data di prenotazione selezionabile tra le varie opzioni d'acquisto?

Publicado em
11 RESPOSTAS - 3 ÚTEIS
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator

... potresti usare il normale modulo contatti...

... oppure prova bookeo, molto interessante:.    https://helpcenter.websitex5.com/pt/post/90098

.... vedi anche qui:.    https://market.websitex5.com/it/oggetti/shopping_and_booking

...(... oppure ancora, rispetto ad altre mie idee ed invenzioni originali, si potrebbe limitare l'acquisto ad un solo prodotto per volta, ed integrare nel modulo dello #step1 un campo per la data, il tutto con codice EXTRA ovviamente da sviluppare ad hoc con partecipazione attiva...)...

.

ciao

Ler mais
Publicado em de  ‪ KolAsim ‪ ‪
Maurizio Giglio
Maurizio Giglio
User
Autor

con il normale modulo contatti... swmbra interessante.... come faccio?

Ler mais
Publicado em de Maurizio Giglio
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator

... c'è l'apposito campo DATA da aggiungere, come da mio STAMP:

.

Ler mais
Publicado em de  ‪ KolAsim ‪ ‪
Maurizio Giglio
Maurizio Giglio
User
Autor

probabilmente mi sono spiegato male... io desideravo inserire il "campo data" direttamente tra le voci del modulo ordine, al momento ho aggiunto un campo personale "inserisci data prenotazione (gg-mm-anno)" ma questo prevede l'inserimento "manuale" con alte probabilità di errore... di digitazione. Il campo data (con il calendarietto automatico) risolverebbe tanti problemi

Ler mais
Publicado em de Maurizio Giglio
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator

... quello a cui ti riferisci nel tuo STAMP, il FORM del carrello-#step1, allo stato attuale non è possibile, ...ma(!), ...sta in quanto ti avevo detto come alternativa in calce al mio precedente Post:

 ‪ KolAsim ‪ ‪
... ... ...  ...(... oppure ancora, rispetto ad altre mie idee ed invenzioni originali, si potrebbe limitare l'acquisto ad un solo prodotto per volta, ed integrare nel modulo dello #step1 un campo per la data, il tutto con codice EXTRA ovviamente da sviluppare ad hoc con partecipazione attiva...)... ... ... ... 

... per stare nel semplice, puoi usare quel campo supplementare che hai inserito per digitare manualmente la data, ... ma se hai vari prodotti...!?...

... a meno che non indichi di digitare la data per ogni tipo di prodotto inserito nel carrello...

ciao

.

Ler mais
Publicado em de  ‪ KolAsim ‪ ‪
Maurizio Giglio
Maurizio Giglio
User
Autor

al momento (trattandosi di prenotazioni eventi più che di vendita prodotti) dovrò accontentarmi del campo supplementare.... direi a questo punto che si tratti di un "limite" del programma e spero possa essera da spunto per i programmatori affinchè possano implementarlo (credo possa servire a tanti utenti)

Ler mais
Publicado em de Maurizio Giglio
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator

... eventualmente posta la tua idea nella sezione IDEA per poter essere vagliata...

... purtroppo per alcuni giorni avrò poco tempo, ...ma per fartene un'idea di quel che intendevo io, messo su su due piedi,  unico ed esclusivo, vedi e prova qui, sino alla fine #STEP4:

>> MAX 1 prodotto con controllo DATA e redirect

.

Ler mais
Publicado em de  ‪ KolAsim ‪ ‪
Maurizio Giglio
Maurizio Giglio
User
Autor

Beh questa tua soluzione potrebbe fare al caso mio... trattandosi di prenotare accessi in piscina in una specifica data. Come si implementa?

Ler mais
Publicado em de Maurizio Giglio
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator

... per il mio esempio:
1) ... usare il campo Note di default;
2) ... rinominare il campo Note in:
Data prenotazione;
3) ... se necessario, aggiungere un campo note supplementare nominato Note o come si vuole, senza alterare o togliere quello di default;
...
... questo è tutto il codice originale che ho inventato in varie implementazioni da diversi anni, niente AI(blabla), così com'è in uso nel mio precedente esempio...
... puoi provarlo con un copia/incolla nella pagina speciale del carrello-checkout sezione /HEAD...
... codice:

<style> .btn-go-back[value="Continua shopping"] {display:none} #Note{font-size:24px;color:red}</style>

<!-- script esclusivo by KolAsim > -->
<script>
/** --- MAX 1 prodotto con MAX 1 unità x WSx5 - by KolAsim - **/
$(document).ready(function () { /* --- K --- */ const maxProdotti = 1; const quantitaFissa = 1; const selettoreInput = "#cart-container .cart-table .product-quantity.product-data-info input[type=number]"; const avvisoK = ` <strong>Attenzione!</strong><br> È consentito acquistare:<br> Max 1 prodotto<br> Quantità fissa = 1 `; let resetInCorso = false; /* --- K --- */ function creaAvviso() { if ($("#divK").length === 0) { $("#cart-content").prepend(` <div id="divK" style=" display:none; color:#b30000; border:3px solid red; padding:12px; margin-bottom:10px; background:#fff5f5; text-align:center; font-weight:bold; border-radius:6px; line-height:1.5; "> ${avvisoK} </div> `); } } function mostraAvviso() { creaAvviso(); $("#divK") .stop(true, true) .fadeIn(200) .delay(3000) .fadeOut(300); } /* --- K --- */ function forzaQuantitaUno() { $(selettoreInput).each(function () { $(this) .attr("min", 1) .attr("max", 1) .attr("step", 1) .val(1); }); } /* --- K --- */ function eseguiControllo() { if (resetInCorso) return false; let errore = false; const inputs = $(selettoreInput); /* --- K --- */ if (inputs.length > maxProdotti) { errore = true; resetInCorso = true; mostraAvviso(); setTimeout(function () { if ( typeof x5engine !== "undefined" && x5engine.cart && x5engine.cart.manager ) { x5engine.cart.manager.empty(); } alert("MAX 1 …!..."); location.reload(); }, 1500); return false; } /* --- K --- */ inputs.each(function () { let val = parseInt($(this).val(), 10); if ( isNaN(val) || val < 1 || val > 1 ) { errore = true; $(this).val(1); mostraAvviso(); } /* --- K --- */ $(this) .attr("min", 1) .attr("max", 1) .attr("step", 1); }); return !errore; } /* --- K --- */ $(document).on( "keyup change blur input", selettoreInput, function () { $(this).val(1); eseguiControllo(); } ); /* --- K --- */ $(document).on( "paste", selettoreInput, function (e) { e.preventDefault(); $(this).val(1); mostraAvviso(); } ); /* --- K --- */ $(document).on( "keydown", selettoreInput, function (e) { const tastiConsentiti = [ 8, 9, 37, 39, 46 ]; if ( !tastiConsentiti.includes(e.keyCode) ) { e.preventDefault(); $(this).val(1); } } ); /* --- K --- */ $(".btn-go-next, .btn-proceed-to-order") .off("click.controlloK") .on("click.controlloK", function (e) { if (!eseguiControllo()) { e.preventDefault(); return false; } }); /* --- K --- */ function initControllo() { forzaQuantitaUno(); eseguiControllo(); const observer = new MutationObserver(function () { forzaQuantitaUno(); eseguiControllo(); }); observer.observe(document.body, { childList: true, subtree: true }); } /* --- K --- */ initControllo();/*K*/});
</script>
<!-- script esclusivo by KolAsim << -->

<!-- === condizioamento data (K) === -->
<script>
function input2date() {/*K>*/ setTimeout(function() { var oggi = new Date(); var anno = oggi.getFullYear(); var mese = String(oggi.getMonth() + 1).padStart(2, '0'); var giorno = String(oggi.getDate()).padStart(2, '0'); var dataOggi = anno + '-' + mese + '-' + giorno; /*-K-*/ var dataMassima = new Date(oggi); dataMassima.setDate(dataMassima.getDate() + 7); var annoMax = dataMassima.getFullYear(); var meseMax = String(dataMassima.getMonth() + 1).padStart(2, '0'); var giornoMax = String(dataMassima.getDate()).padStart(2, '0'); var dataMax = annoMax + '-' + meseMax + '-' + giornoMax; $("#Note").replaceWith( '<input type="date" id="Note" class="mandatory" data-uuid="Note" min="' + dataOggi + '" max="' + dataMax + '">' ); }, 800); } $(window).on("hashchange load", input2date); input2date();/*K>>*/
</script>
<!-- ======= DATA fine ====== -->

<!-- redirect STEP4 inizio -->
<script>
/** -- WSx5 cart + #STEP4 + redirect by KolAsim -- **/
document.addEventListener("DOMContentLoaded", () => { /*K>*/
const ritardoK = 3;
const ritardoStep4K = 6;
let textK = "Grazie e arrivederci";
/*K*/let redirectTimer = null; function mostraSaluto(callback) { const box = document.createElement("div"); box.textContent = textK; box.style.cssText = ` position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: #333; color: #fff; padding: 20px 30px; border-radius: 8px; font-size: 20px; z-index: 9999; opacity: 0; transition: opacity 0.8s ease; `; document.body.appendChild(box); setTimeout(() => { box.style.opacity = "1"; }, 50); setTimeout(() => { box.style.opacity = "0"; setTimeout(() => { box.remove(); callback(); }, 800); }, 2000); } function step_K() { if (redirectTimer) { clearTimeout(redirectTimer); redirectTimer = null; } if (window.location.hash === "#step4") { redirectTimer = setTimeout(() => { mostraSaluto(() => { window.location.assign("../"); }); }, ritardoStep4K * 1000); } } setTimeout(step_K, ritardoK * 1000); window.addEventListener("hashchange", step_K);/*K<<*/});
</script>
<!-- redirect STEP4 fine -->

..........................................

... il codice fu sviluppato passo passo ed a seconda dell'occasione su varie richieste in vari Topic postati qui su HelpCenter...

... se hai difficoltà, avvisami, tempo permettendo perchè sono indaffarato in altre cose impegnative...

.

Ler mais
Publicado em de  ‪ KolAsim ‪ ‪
Maurizio Giglio
Maurizio Giglio
User
Autor

Grazie...ho dato una guardata veloce al codice... purtroppo penso non possa utilizzarlo per le mie esigenze....perchè vincolato non solo al "prodotto" ma anche alla quantità. Nel mio caso volendo prenotare anche una sola formula di accesso in piscina ma con quantità variabile (tipo 4 persone) non credo funzionerebbe. La mia esigenza (forse elementare) indicare nel "campo calendario" la data di prenotazione...
Grazie comunque Kolasim.... da quando conosco ed utilizzo il pgrm (fin dalla sua prima versione) sei sempre stato preziosissimo con i tuoi consigli e suggerimenti. Confido nello Staff ;-)

Ler mais
Publicado em de Maurizio Giglio
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator

... no! ...in quel codice basilare non è previsto, ... ma con la stessa logica si potrebbe aggiungere in un altro campo generico supplementare un campo "select" EXTRA con i valori numerici delle persone da selezionare...
... io non ho mai provato, ma se il campo supplementare viene ricevuto nella email dell'ordine, allora i problemi sarebbero relativi; ...ovviamente da sviluppare ; ... al massimo immagino che si potrebbe condizionare in modo diverso il campo Note...
... insomma, come  da si è sviluppato quel codice, "da cosa nasce cosa", ...praticamente occorrerebbe un passo in più, ...di tutto e di più...

... ho visto che hai lanciato la tua IDEA, ottimo, non si sa mai, in un prossimo futuro...

.

ciao

.

p.s.: ... se passi ancora di qua, rivedi il mio esempio ... ;-)

Ler mais
Publicado em de  ‪ KolAsim ‪ ‪