Zen Cart è lo stato dell'Arte quale software Open Source gratuito E-commerce. Per creare e gestire il Tuo negozio / showroom online!

NEWS F.A.Q. DOCUMENTAZIONE MANUALE SUPPORTO DOWNLOAD RISORSE INFO
  Registrati alla Comunità Ufficiale Zen Cart Italia. (leggi le condizioni d'uso e privacy)  oppure  Accedi e partecipa!
Info sul Progetto
SourceForge.net Logo

Sostieni il progetto
Sostieni il Progetto Zen Cart Italia

Fai pubblicità qui!


zen-cart e-commerce gratuito
Menu principale
zen-cart e-commerce gratuito
Express Checkout !

PayPal soluzione certificata

zen-cart e-commerce gratuito
Login
Nome utente:

Password:


Hai perso la password?

Registrati ora!
zen-cart e-commerce gratuito
Parlano di Noi
Zen Cart Italia - Opzione.com partner oro PayPal
zen-cart e-commerce gratuito
Creative Commons License OPZIONE.COM Realizzazione Progetti Web Cantù, Como
Come fare a ...
Gestire i valori presenti nella pagina / scheda articolo (prodotto, documento ecc...)

Domande Frequenti ...
Come inviare (e gestire) un buono regalo per ogni nuova iscrizione?

 
Indice del forum Zen Cart Italia
   Spedizioni e Pagamenti
     Come fare una spedizione differenziata per prodotti
Registrati per inviare messaggi

Ad albero | I più nuovi prima Discussione precedente | Discussione successiva | In fondo
AutoreThread
Inviato il: 17/12/2007 14:27
Matricola
Messaggi: 2
Joined: 24/10/2007
Da:
Come fare una spedizione differenziata per prodotti
Ciao, era un problema di molti e forse l'abbiamo risolto.
Ovvero spedire in maniera differenziata, usando table.php, a seconda dei prodotti.

Ecco i passaggi
1) Si duplica table.php (/includes/modules/shipping/table.php) e gli si da un altro nome, ad esempio tablespeciale.php
In tablespeciale.php si sostituiscono tutte le variabili table e TABLE con altri nome. Nel nostro caso tablespeciale e TABLESPECIALE (attenzione: la sostituzione deve essere case sensitive)
2) Si fa la stessa cosa del punto 1 con table.php della propria lingua. In questo caso l'italiano (/includes/languages/italian/modules/shipping). Nella descrizione si avrà cura si inserirne una per capire di che categorie stiamo parlando
3) Si aprono di nuovo table.php e tablespeciale.php e si faranno queste sostituzioni:

al posto di

if (zen_get_shipping_enabled($this->code)) {
$this->enabled = ((MODULE_SHIPPING_TABLE_STATUS == 'True') ? true : false);
}

metteremo in table.php

$special_categories = array('2','6','10');
if ( (zen_get_shipping_enabled($this->code)) && (!zen_order_contains_special_categories($special_categories))) {
$this->enabled = ((MODULE_SHIPPING_TABLE_STATUS == 'True') ? true : false);
}


e in tablespeciale.php

$special_categories = array('2','6','10');
if ( (zen_get_shipping_enabled($this->code)) && (!zen_order_contains_special_categories($special_categories))) {
$this->enabled = ((MODULE_SHIPPING_TABLE_STATUS == 'True') ? true : false);
}


L'array ('2','6','10') contiene gli ID delle categorie scelte.
La prima funzione fa attivare il modulo solo se l'ordine NON contiene prodotti appartenenti alle categorie speciali
La seconda, di conseguenza, nel caso inverso. In questa maniera se è attivo il primo, non si attiva il secondo, e viceversa.

3) Si creano due file uguali
/includes/functions/extra_functions/extra_functions.php
/admin/includes/functions/extra_functions/extra_functions.php

con questo codice


<?php
/**
* extra_functions.php
*
* @package functions
* @copyright Copyright 2007 Marco Trotta - Gianluca Nigro
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
* @version $Id: extra_functions.php 4135 2007-12-14 04:25:02Z drbyte $
*/

function zen_order_contains_special_categories($special_categories) {
global $db, $order;

$check_flag = true;


for ($i = 0, $n = sizeof($order->products); ($i < $n) && $check_flag; $i++) {

$check_categories = false;
for ($j = 0, $k = sizeof($special_categories); ($j < $k) && !$check_categories ; $j++) {
// if (zen_get_products_category_id($order->products[$i]['id']) == $special_category) {

if (zen_product_in_category($order->products[$i]['id'], $special_categories[$j])) {
$check_categories = true;
}
}
if (!$check_categories) {
$check_flag = false;
}
}
return $check_flag;
}

?>


A questo punto basta attivare i due moduli, inserire costi di spedizione diversi e inaugurare il nuovo sistema.
La funzione zen_order_contains_special_categories funziona solo sulle categorie-padre. Significa che un prodotto è riconosciuto tra le categorie speciali anche se appartiene ad una categoria-figlio dentro la categoria-padre inserita nell'array $special_categories
Nel caso si voglia tener conto, invece, delle categorie figlio bisognerà sostituire

if (zen_product_in_category($order->products[$i]['id'], $special_categories[$j])) {
$check_categories = true;
}
}

con


if (zen_product_in_parent_category ($order->products[$i]['id'], zen_get_products_category_id($order->products[$i]['id']), $special_categories[$j])) {
$check_categories = true;
}
}


Questa è la soluzione più rapida al problema che hanno molti. Ovviamente ha diversi limiti. Per esempio:
1) Così com'è si possono cambiare le categorie speciali solo nel codice, mentre sarebbe più utile farlo lato web
2) Questa soluzione funziona solo se ho due categorie da tenere in conto. Quelle normali e quelle speciali. Nel caso l'ordine preveda prodotti di entrambe le categorie userà la spedizione normale. Se avete altre esigenze tocca rimettere mano al codice

Una possibile soluzione potrebbe essere usare una solo table.php ma stravolgere completamente il senso sei settaggi creando una specie di grammatica di utilizzo.

Per esempio
[1,2,3]25:8.50,50:5.50
[2,5,6]15:7,20:4
40:8,50:16

Può significare se ci sono solo prodotti delle categorie (o sottocategorie 1, 2 e 3) usa la priam riga. Se ci sono solo prodotti delle categorie (o sottocategorie 2,5 e 6) usa la seconda riga. Per tutto il resto usa l'ultima riga

Ma ovviamente a quel punto bisogna cambiare buona parte del codice.
Se viene implementato, però, come sempre spedite nel forum le modifiche secondo la specifica della GPL
Inviato il: 26/2/2008 13:50
Scelto
Messaggi: 119
Joined: 5/3/2007
Da:
Re: Come fare una spedizione differenziata per prodotti
ciao
ho provato la modifica e funziona tutto.

Ho un problema però.
nel caso in cui un cliente acquista un prodotto inserito nelle categorie "speciali" ed uno inserito nelle categorie "normali", vengono visualizzati i metodi di spedizione "normali".
invece dovrebbero essere visualizzati quelli "speciali".

Come è possibile ovviare a questo? e quindi far visualizzare le spedizioni speciali??
grazie
Inviato il: 25/3/2008 11:49
Matricola
Messaggi: 11
Joined: 12/3/2008
Da:
Re: Come fare una spedizione differenziata per prodotti
salve scusate se mi intrufolo nella discussione, però nn ho benc apito una cosa, questo sistema appena descritto imposta le spese spese di spedizione diverse a seconda del prodotto?? cioè se io ho 10 prodotti e voglio spedirli ognuno con una spesa differente devo utilizzare questo metodo??? e se combino i prodotti? o meglio se il cliente acquista più prodotti con diverse spese di spedizione, queste si sommano o cosa accade??? per favore illuminatemi perchè non riesco a capire.
Inviato il: 25/3/2008 15:19
Scelto
Messaggi: 119
Joined: 5/3/2007
Da:
Re: Come fare una spedizione differenziata per prodotti
ciao
il metodo su descritto, consente di applicare particolari metodi di spedizione a tutti i prodotti contenuti in determinate categorie, pertanto con questo metodo puoi impostare un metodo di spedizione a "categorie di prodotti" e non a singoli prodotti.

Per quanto riguarda la combinazione dei prodotti, nel caso in cui un cliente acquista un prodotto di categoria normale ed uno di categoria speciale, vengono visualizzate le spese di spedizione della categoria speciale.
Inviato il: 25/3/2008 16:33
Matricola
Messaggi: 11
Joined: 12/3/2008
Da:
Re: Come fare una spedizione differenziata per prodotti
ho capito, grazie. é invece possibile applicare proprio spese diverse per singolo prodotto? non c'è modo di impostare la spedizione già al momento in cui configuro prezzi iva ecc nel prodotto?
Inviato il: 25/3/2008 19:11
Scelto
Messaggi: 119
Joined: 5/3/2007
Da:
Re: Come fare una spedizione differenziata per prodotti
purtroppo non ho trovato nulla del genere... nemmeno sul forum americano...
Inviato il: 26/3/2008 14:55
Matricola
Messaggi: 10
Joined: 3/1/2008
Da: Assisi
Re: Come fare una spedizione differenziata per prodotti
Io avrei un problema credo più complesso oltre a differenziare per prodotto mi necessita differenziare per provincia.
Vorremmo utilizzare un vettore con delle tariffe convenienti, ma differenti per province e per tre scaglioni di peso, anche se alcune province hanno tariffe simili le provincie in Italia sono tante.

Duplicare table tante volte quante le province che servono pensate che sia l'unica strada?
Qualcuno può aiutarmi?
Inviato il: 26/3/2008 15:24
Scelto
Messaggi: 119
Joined: 5/3/2007
Da:
Re: Come fare una spedizione differenziata per prodotti
ciao...
forse la risoluzione del tuo problema è più facile di quanto sembri... Però devi verificare personalmente....

Il modulo di spedizione di zencart già ti consente di differenziare le spese di spedizione per singola provincia...
Di conseguenza penso che dovrai limitarti a seguire il procedimento sopra riportato per differenziare le spese di spedizione per "prodotto", dopodiché dovrai ri-settare le spese di sped per ogni provincia...

non so se sono stato chiaro...
Inviato il: 25/5/2008 16:33
Matricola
Messaggi: 10
Joined: 3/1/2008
Da: Assisi
Re: Come fare una spedizione differenziata per prodotti
Ritorno sul tema delle spedizioni con costi diversi per le varie province.
Come posso duplicare il modulo table per ottenere prezzi per una determinata zona- provincia. Ho provato a duplicare table.php e rinominarlo ma si verificano errori.
Praticamente dovrei creare tanti moduli quante sono le province e allo stesso tempo quando il peso supera i trenta kg o i 50 delle poste il sistema dovrebbe proporre i costi assegnati per le varie province di destinazione automaticamente.

Qualcuno ha già provato alla duplicazione del modulo richiamato?
Inviato il: 31/5/2008 18:39
Allievo
Messaggi: 40
Joined: 24/6/2006
Da:
Re: Come fare una spedizione differenziata per prodotti
Ho provato ma mi funziona... o meglio...
se ho in carrello solo prodotti di categoria speciale va, se metto altri prodotti mi da il prezzo categoria normale e speciale da scegliere.
entrambi i moduli (quello nuovo e quello modiifcato) mi danni nella configurazioni moduli spedizioni il pallino giallo...
ho notato se il primo prodotto in carrello è della categoria speciale mi da la spedizione corretta (cioè il pre duezzo della categoria speciale)
quindi deduco non mi faccia bene qualche controllo.
Ho provato a rifare il tutto ma senza ottenere risultati migliori.
potreste postare i file che avete fatto? forse sbaglio qualcosa.
Grazie Mirco
(1) 2 »
Manuale operativo in italiano per allestire e gestire Zen Cart
Ad albero | I più nuovi prima Discussione precedente | Discussione successiva | Top

Registrati per inviare messaggi
 
La fiducia del Nostro Sponsor:

Ultimi Messaggi dal Forum Zen Cart Italia
LEGGERE PRIMA di postare: Come scrivere e utilizzare il Forum !
Discussioni Risp. Ultimo
Editore pagine extra - problema nell'elenco a discesa 0 10/9/2010 0:09 MisterX
ecommerce pneumatici 1 9/9/2010 18:43 intimoviro
Personalizzare pagina prodotto 1 9/9/2010 18:39 intimoviro
Problema "Categoria" 6 9/9/2010 10:43 dave90
PayPal Expres 3 8/9/2010 18:30 LaVale
Stesso valore Totale IVA (Inclusa e Esclusa) su riepilogo ordine 5 8/9/2010 18:27 LaVale
separatore per box categorie 2 8/9/2010 17:12 pinatz
Title duplicati 0 7/9/2010 9:15 Lazzo85
css per dispositivi mobili 0 6/9/2010 18:32 gianc69
errori nella fattura 2 6/9/2010 8:43 pinatz
Modulo admin profile manca flag per lista novità 7 5/9/2010 17:45 webmaster
Tariffa Spedizioni Sardegna - Isole Minori 1 5/9/2010 17:44 webmaster
* Codice Fiscale 3 2/9/2010 13:11 supertacco
Modulo pagamento Unicredit Banca 2 2/9/2010 10:25 Serafini
Domanda stupida.. 2 1/9/2010 13:02 alex__08
Admin Profiles e menù Configurazione 0 1/9/2010 12:57 alex__08
Vari problemi allo store/admin - 1.3.8a - 2008 7 28/8/2010 10:31 dave90
Supplementi per pagamenti con carta & compagnia bella 0 27/8/2010 18:45 Uncino
Payment status pending 5 27/8/2010 17:10 fabio70
Includere pagina php interna 6 26/8/2010 11:02 Serafini
Cos'è Zen Cart |  Condizioni |  Privacy |  Licenza |  Open Source |  Pubblicità |  Risorse |  Lo Staff |  Info e Contatti
Zen Cart ™ Copyright © 2003, 2004, 2005, 2006, 2007, 2008, 2009 by The Zen Cart™ Team - CMS XOOPS © 2001-2008 The XOOPS Project

Copyright © 2004 / 2009 ZEN CART ITALIA Maintainer del Progetto è OPZIONE.COM installazione, hosting, consulenza Zen Cart.
OPZIONE.COM Via Regina Margherita 33, 22070 Capiago Intimiano Cantù (Como) C.C.I.A. N° 278886 - P.I. 02647740139