Jump to content

Customizzazione scelta corriere [SOLVED]


Recommended Posts

Ciao a tutti.

Vi espongo il mio problema cercando di essere più chiaro possibile.

Ho 2 corrieri A e B. Ogni corriere può consegnare in tutte le province di italia. Il prezzo di spedizione cambia di provincia in provincia perché la mia merce è assai voluminosa e pesante. Inoltre per ogni ordine è possibile acquistare fino a 11 bancali di merce...

In certe province è più economico il vettore A, in certe il vettore B. Siccome a certe province ogni vettore mi applica certe scontistiche in base al peso, ho la necessità di di assegnare ad ogni provincia entrambi i 2 vettori. Di default il sistema calcola il costro del trasporto in base al prezzo e sceglie come corriere quello più economico. Fin qui tutto bene. Il sistema funziona alla grande.

 

Se volessi invece, attivare un corriere "ritiro presso il negozio" il cui costo ovviamente è zero, di default ad ogni ordine mi viene selezionato il corriere free shipping (giustamente).

 

Mia domanda: qual'è e dove si trova la funziona che in base alla provincia ed al peso del carrello mi tira fuori la lista dei vettori (nel mio caso 3) ordinati per prezzo?

 

La mia idea è una volta trovato il vettore che contiene la lista dei corrieri ordinati per prezzo li posso modificare in questo modo.

 

 $temp1 = array_shift($results_array); //assegno a $temp1 il primo corriere del vettore ovvero il più economico (free shipping)
 $results_array[] = $temp1;  //accodo allo stesso vettore il corriere che ho precedentemente tolto ovvero il più economico.

 

può funzionare una cosa simile? mi aiutate please?

Edited by l.zuccarini (see edit history)
Link to comment
Share on other sites

Risolto... /classes/Cart.php

 

modificare codice da:

// Foreach carriers of the package, calculate his price, check if it the best price, position and grade
foreach ($package['carrier_list'] as $id_carrier)
{
 if (!isset($carriers_instance[$id_carrier]))
  $carriers_instance[$id_carrier] = new Carrier($id_carrier);
 $price_with_tax = $this->getPackageShippingCost($id_carrier, true, $country, $package['product_list']);
 $price_without_tax = $this->getPackageShippingCost($id_carrier, false, $country, $package['product_list']);
 if (is_null($best_price) || $price_with_tax < $best_price)
 {
  $best_price = $price_with_tax;
  $best_price_carrier = $id_carrier;
 }
 $carriers_price[$id_address][$id_package][$id_carrier] = array(
  'without_tax' => $price_without_tax,
  'with_tax' => $price_with_tax);

 

 

a:

 

// Foreach carriers of the package, calculate his price, check if it the best price, position and grade
foreach ($package['carrier_list'] as $id_carrier)
{
 if (!isset($carriers_instance[$id_carrier]))
  $carriers_instance[$id_carrier] = new Carrier($id_carrier);
 $price_with_tax = $this->getPackageShippingCost($id_carrier, true, $country, $package['product_list']);
 $price_without_tax = $this->getPackageShippingCost($id_carrier, false, $country, $package['product_list']);
 if (is_null($best_price) || $price_with_tax < $best_price)
 {
  $best_price = $price_with_tax;
  $best_price_carrier = $id_carrier;
  if ($best_price == 0)   //se il miglio prezzo è quello del corriere gratis ovvero ritiro presso negozio
   $best_price = 1000000;  //fisso il miglior prezzo ad un prezzo sicuramente elevato battibile da qualsiasi altro vettore
 }

 $carriers_price[$id_address][$id_package][$id_carrier] = array(
  'without_tax' => $price_without_tax,
  'with_tax' => $price_with_tax);

 

E' una soluzione poco "elegante" ma funzionante

Edited by l.zuccarini (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...