Pagina 1 di 1

Prodotto voluminoso : no posta prioritaria

Inviato: 10/09/2008, 23:45
da robysoldtamiya
Salve a tutti,
ho da poco aperto il mio negozio online, al quale lavoro dallo scorso maggio.
Ho installato varie contribuzioni e fatto qualche personalizzazione, tipo caricare 3 immagini invece che 1, attivare una quantità di riordino valorizzabile per ogni prodotto invece che usare il campo generico uguale per tutti i prodotti (ancora devo fare il report però).
Sono un programmatore di altri linguaggi, non conosco il PHP. Qualcosa ci capisco leggendolo, diciamo le cose basilari.
Ora mi trovo a dover affrontare questo problema:
ho dei prodotti voluminosi che non posso spedire con prioritaria o raccomandata in quanto superano i 5cm di altezza.
Ho già predisposto nella creazione/modifica del prodotto un campo checkbox che attivo quando il prodotto è appunto voluminoso.
Adesso però non so bene dove intervenire per bloccare o meno la prioritaria, tenendo conto che:
- basta che 1 solo prodotto del carrello sia voluminoso per scartarla
- se la spedizione va all'estero invece posso usare la prioritaria (ci son solo dei limiti nella dimensione della scatola).

Così a naso mi pare che il punto dove intervenire sia nella classe 'shopping_chart.php', perchè mi pare scorra tutti i prodotti per calcolarne il peso. Forse mi basterebbe impostare lì una variabile che poi leggo nel modulo prioritaria e se attiva scarto il metodo di spedizione !?!?!

Cosa mi consigliate ?

grazie
Roby

Re: Prodotto voluminoso : no posta prioritaria

Inviato: 11/09/2008, 2:53
da marcus
robysoldtamiya ha scritto: Così a naso mi pare che il punto dove intervenire sia nella classe 'shopping_chart.php', perchè mi pare scorra tutti i prodotti per calcolarne il peso. Forse mi basterebbe impostare lì una variabile che poi leggo nel modulo prioritaria e se attiva scarto il metodo di spedizione !?!?!

Cosa mi consigliate ?

grazie
Roby
La soluzione è piuttosto semplice in questo caso.

Nel metodo check() della classe del modulo postaprioritaria utilizza come spunto un codice di questo tipo:

Codice: Seleziona tutto

   function check() {
     global $cart;

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

	$productsArray = $cart->get_products();
		for ($i = 0; $i < count($productsArray); $i++) {
			if ($productsArray[$i]['voluminoso'] == '1') {
				.....
			}
		}

............
//Controllo zona

      }
Nel costruttore della classe utilizza il valore ritornato per decidere se abilitare o meno il modulo.

Naturalmente devi modificare anche il metodo get_products della classe shopping_cart per effettuare la query anche sul nuovo campo "prodotto_voluminoso" che mi pare di aver capito hai inserito nella tabella products.

Saluti
Marcus

Inviato: 11/09/2008, 13:18
da robysoldtamiya
Ti ringrazio
:)

Re: Prodotto voluminoso : no posta prioritaria

Inviato: 29/09/2008, 17:48
da robysoldtamiya
Ok, sono riuscito nel mio intento :D

Nella function 'quote' dei moduli shipping postepostaprioritaria.php e postepostaraccomandata.php ho inserito questa parte di codice

Codice: Seleziona tutto

        if ($shipping == -1) {
          $shipping_cost = 0;
		  $error = true;
          $error_text = MODULE_SHIPPING_POSTEPOSTAPRIORITARIA_UNDEFINED_RATE;
        } else {

//Roby no spedizione prodotti voluminosi ITALIA
          if ($dest_country == 'IT') {
            $productsArray = $cart->get_products();
            for ($i = 0; $i < count($productsArray); $i++) {
              if ($productsArray[$i]['voluminous'] == '1') {
	            $error = true;
                $error_text = MODULE_SHIPPING_POSTEPOSTAPRIORITARIA_NO_VOLUMINOUS;
              }
            }
          }

          if ($error != true) {
            $shipping_cost = ($shipping * $shipping_num_boxes) + constant('MODULE_SHIPPING_POSTEPOSTAPRIORITARIA_HANDLING_' . $dest_zone);
          }
        }
grazie per i suggerimenti