Impostare e gestire una quantità minima assortita per i Grouped products

Configurazione back-end:

Per prima cosa dobbiamo occuparci di creare un attributo apposito per i Grouped Product, dove indichiamo la quantità minima di elementi assortiti che si vuole associare al prodotto. Nel back-end, seguire il percorso: Catalogo -> Attributi -> Gestione attributi -> Aggiungi nuovo attributo. Applicare il nuovo attributo soltanto ai Prodotti raggruppati, assegnare un nome intuitivo, un controllo sul numero intero ed un valore predefinito di 1. Gli altri campi possono essere riempiti a piacimento. Indicare la visibilità dell’attributo ed aggiungerlo attraverso la Gestione gruppi attributi.

 

Creazione/modifica prodotto raggruppato:

Una volta creato ed assegnato ad un gruppo, l’attributo è visibile in fase di creazione e modifica di ogni Grouped Product. Modificandone il valore, gestiamo la quantità minima assortita che il cliente deve richiedere per poter proseguire l’acquisto.

Librerie JavaScript:

Occorre aggiornare Prototype all’ultima versione e renderlo compatibile con jQuery, seguendo la guida presente qui e che adattiamo al lato front. In particolare, jQuery fornisce la somma dei prodotti inseriti nel carrello dal cliente, mentre Prototype si occupa di confrontare tale somma con l’attributo appositamente creato nel back-end.
Partiamo da jQuery e dal codice che dovrà essere scritto nell’head.phtml dell’amministrazione:

<script type="text/javascript">
  var $j = jQuery.noConflict();
            $j(document).ready(function(){
                $j("#super-product-table input").each(function() {
                    $j(this).keyup(function(){
                        calculateSum();
                    });
                });
            });
            function calculateSum() {
                var sum = 0;
                $j("#super-product-table input").each(function() {
                    if(!isNaN(this.value) && this.value.length!=0) {
                        sum += parseFloat(this.value);
                    }
                });
                $j("#sum").html(sum);
            }
</script>

Il primo blocco esegue la somma in tempo reale di tutte le richieste input contenuti nella scheda del prodotto raggruppato. Tale valore viene visualizzato, grazie al blocco di codice successivo, in un div apposito che creeremo nel file grouped.phtml:

</table>
<div id="sum">0</div>
<script type="text/javascript">decorateTable('super-product-table')</script>

Aggiungendo la riga sottolineata, il nostro valore auto-aggiornato sarà visibile tra l’elenco dei prodotti e il bottone per aggiungere al carrello.
Ora entra in scena Prototype, nel file view.phtml, cioè la scheda prodotto:

    <script type="text/javascript">
            var productAddToCartForm = new VarienForm('product_addtocart_form');
            productAddToCartForm.submit = function(){
                if (<? echo $_product->_data['nome-attributo'] ?> <= $('sum').innerHTML){
                    if (this.validator.validate()) {
                            this.form.submit();
                    }
                }
                else alert('Non hai rispettato la quantita minima di acquisto!');
            }.bind(productAddToCartForm);
    </script>

Il controllo viene effettuato da questo codice, da inserire subito dopo la chiusura della form. In questo esempio è stato integrato alla normale validazione di Magento, in modo che essa si attivi solo se la procedura passa il nostro unico controllo, cioè la comparazione tra la somma dei prodotti richiesti dal cliente ed il valore associato all’attributo precedentemente creato.
Ricordare di personalizzare il nome-attributo ed il messaggio di alert.

0 commenti

Lascia un Commento

Vuoi partecipare alla discussione?
Sentitevi liberi di contribuire!

Lascia un commento