l.zuccarini Posted June 11, 2013 Share Posted June 11, 2013 (edited) 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 June 12, 2013 by l.zuccarini (see edit history) Link to comment Share on other sites More sharing options...
l.zuccarini Posted June 12, 2013 Author Share Posted June 12, 2013 (edited) 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 June 12, 2013 by l.zuccarini (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now