Autore Topic: spese di spedizione estere [RISOLTO]  (Letto 9124 volte)

Offline POS88

  • Appassionato
  • ***
  • Post: 420
  • Sesso: Maschio
    • Mostra profilo
    • ParrottOperationSystem
spese di spedizione estere [RISOLTO]
« il: 07 Mag 2010, 11:23:44 »
salve ragazzi, mi ritrovo di fronte ad un nuovo quesito, sto impostando un sito e-commerce per la spedizione dei propri prodotti all'estero.
l'utente deve pagare la spesa di spedizione solo se sceglie uno stato estero come indirizzo di spedizione.
ho seguito i vari tutorial, quindi creato un corriere e la relativa tariffa, il problema è che a tale tariffa devo dare un peso e di conseguenza associare il peso agli articoli presenti in negozio.
il problema che ho riscontrato è che il prezzo finale evidenzia già l'aggiunta della spesa di spedizione, quindi non viene calcolata a seconda del paese scelto.
come posso fare a sorvolare questo problema?
grazie anticipatamente
« Ultima modifica: 13 Mag 2010, 16:41:36 da POS88 »
http://www.pos88.altervista.org
Sviluppo Web-php-mysql-cms-joomla-zen cart
http://www.oscon.it/info (Leggere il secondo punto)

Offline POS88

  • Appassionato
  • ***
  • Post: 420
  • Sesso: Maschio
    • Mostra profilo
    • ParrottOperationSystem
Re:spese di spedizione estere
« Risposta #1 il: 07 Mag 2010, 11:23:58 »
sono arrivato a scoprire che esiste già un modulo preinstallato per le spedizioni estere creato da ZephWare.com e attivabile dalla gestione spedizione, ora però devo capire come funziona...
andando in lista moduli spedizione vado a configurare il modulo Zone Shipping.
se creo una nuova zona che poi corrisponde ad una nuova tarriffa, mi presenta una pagina dove mi chiede il nome della zona, la descrizione, il costo per l'articolo e il limite costo della zona.
una volta compilati i cambi vado ad eseguire la procedura d'acquisto ma al momento della decisione del paese, supponiamo albania, come spesa mi da 0 euro.
ci tengo a precisare che per le spedizione estere ho creato un menu a tendina nel aggiungi/modifica campi utente.
qui mi chiede il nome del campo e un valore, prima gli ho dato un numero in ordine crescente poi andando a leggere la lista delle nazioni gli ho dato il codice della nazione, con albania il codice nazione è ALB e tale codice l'ho associato anche al nome della zona nella tariffa di spedizione, però nuovamente sto a capo, sempre 0 euro mi da.
http://www.pos88.altervista.org
Sviluppo Web-php-mysql-cms-joomla-zen cart
http://www.oscon.it/info (Leggere il secondo punto)

Offline POS88

  • Appassionato
  • ***
  • Post: 420
  • Sesso: Maschio
    • Mostra profilo
    • ParrottOperationSystem
Re:spese di spedizione estere
« Risposta #2 il: 12 Mag 2010, 18:31:15 »
Ritorno ad aggiornare questo post sperando di ricevere una risposta o magari di essere d'aiuto a qualcun altro.
Sono ritornato ad usare il seguente modulo:
"Spedizione standard con corrieri e tariffe configurati individualmente"
sono riuscito ad arginare la questione del peso prodotto, ho craeto una tariffa dove chiamata spedizione estera, come optional ha tutti i paesi del mondo a parte l'italia, costo € 15,00 e peso prodotto da 0.000 a 0.001
Di conseguenza se vado a selezionare un prodotto che come peso base ha 0.000 e che voglio spedirlo ad esempio a Cuba, come metodi di spedizione viene presa quella estera e come costo vengono imposti i 15,00€
Ora ho creato un'altra tariffa che va sempre come peso base da 0.000 a 0.001 però come paese di spedizione Italia, costo della spedizione gratuita,
vado a compilare il form dei dati, però se seleziona italia mi restituisce sempre € 15,00...come mai?  :'(
« Ultima modifica: 12 Mag 2010, 18:47:36 da POS88 »
http://www.pos88.altervista.org
Sviluppo Web-php-mysql-cms-joomla-zen cart
http://www.oscon.it/info (Leggere il secondo punto)

Offline POS88

  • Appassionato
  • ***
  • Post: 420
  • Sesso: Maschio
    • Mostra profilo
    • ParrottOperationSystem
Re:spese di spedizione estere
« Risposta #3 il: 13 Mag 2010, 09:30:33 »
forse sono riuscito a trovare il problema,
sul form dei dati ho creato il campo nazione e cap che come nome hanno vm_nazione e vm_cap.
disattivando questi due campi il modulo dati mi restituiva sempre € 15,00 per le spese di spedizione quindi in un certo senso ero arrivato a capire che per ora virtuemart non faceva la lettura sui campi che avevo creato.
Di conseguenza ho pensato che bisogna fare le modifiche sul file standard_shipping.php
speriamo bene
http://www.pos88.altervista.org
Sviluppo Web-php-mysql-cms-joomla-zen cart
http://www.oscon.it/info (Leggere il secondo punto)

Offline POS88

  • Appassionato
  • ***
  • Post: 420
  • Sesso: Maschio
    • Mostra profilo
    • ParrottOperationSystem
Re:spese di spedizione estere
« Risposta #4 il: 13 Mag 2010, 10:59:28 »
ho fatto le modifiche opportune...spero...
ora mi escono entrambi i metodi di spedizione, ossia estera € 15,00 e italia € 0,00, il primo problema è che l'utente è costretto a selezionarla..fosse questo non mi lamenterei...il fatto è che se vado a selezione spedizione italia virtuemart mi da il seguente errore:
Errore: Scegli un altro Metodo di Spedizione.
http://www.pos88.altervista.org
Sviluppo Web-php-mysql-cms-joomla-zen cart
http://www.oscon.it/info (Leggere il secondo punto)

Offline POS88

  • Appassionato
  • ***
  • Post: 420
  • Sesso: Maschio
    • Mostra profilo
    • ParrottOperationSystem
Re:spese di spedizione estere [RISOLTO]
« Risposta #5 il: 13 Mag 2010, 16:44:03 »
finalmente sono riuscito a risolvere questo grattacapo.
Allora, sono ritornato ad usare il modulo di spedizione a seconda della zona, visto che mi sembrava strano che non riuscivo a far funzionare un modulo apposta per quello.
Girovagando sul forum di virtuemart, quello inglese, sono riuscito a trovare il modulo con il codice corretto per farlo funzionare, che scrivo di seguito:

<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
/**
*
* @version $Id: zone_shipping.php 1589 2008-12-08 20:27:20Z soeren_nb $
* @package VirtueMart
* @subpackage shipping
* @copyright Copyright (C) 2004-2008 soeren - All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
*
* http://virtuemart.net
*/


/**
* Welcome To The Shipping Zone =]
* @copyright (C) 2000 - 2004 devcompany.com  All rights reserved.
* @author Mike Wattier - geek@devcompany.com
*/
class zone_shipping {

  var $classname = "zone_shipping";
 
  /**************************************************************************
  ** name: list_rates($d)
  ** created by: mwattier <geek@devcompany.com>
  ** description:  Get the rate according to what is in the basket AND
  **               the zone charge unless it hits the limit, then return that
  **               
  ** parameters: $ship_to_info_id - Where are we shipping to
  **             $zone_qty - This is what we use to see if we need to apply
  **             the limit or a per item cost
  ** returns: the cost to ship this order
  ***************************************************************************/
  function list_rates( &$d ) {
      global $CURRENCY_DISPLAY;
      $db = new ps_DB;
     
      $q = "SELECT country FROM #__{vm}_user_info WHERE ";
      $q .= "user_info_id='". $d["ship_to_info_id"] . "'";
      $db->query($q);
      $db->next_record();
      $country = $db->f("country");
     
      $q2 = "SELECT country_name, zone_id FROM #__{vm}_country WHERE country_3_code='$country' ";
      $db->query($q2);
      $db->next_record();
      $the_zone = $db->f("zone_id");
      $country_name = $db->f("country_name");

      if ( $_SESSION['auth']['show_price_including_tax'] != 1 ) {
          $taxrate = 1;
      }
      else {
          $taxrate = $this->get_tax_rate( $the_zone ) + 1;
      }
     
      $q3 = 'SELECT * FROM #__{vm}_zone_shipping WHERE zone_id ='.(int)$the_zone;
      $db->query($q3);
      $db->next_record();

      $cost_low = $db->f("zone_cost") * $d["zone_qty"];

      if($cost_low < $db->f("zone_limit")) {
         $rate = $cost_low;
      }
      else {
         $rate = $db->f("zone_limit");
      }
      $rate *= $taxrate;
      $rate = $GLOBALS['CURRENCY']->convert( $rate );
      // THE ORDER OF THOSE VALUES IS IMPORTANT:
      // carrier_name|rate_name|totalshippingcosts|rate_id
      $value = urlencode(__CLASS__."|Zone Shipping $country_name|".$country."|".$rate."|".$the_zone);
     
      $_SESSION[$value] = "1";
      $string = "<input type=\"radio\" checked=\"checked\" name=\"shipping_rate_id\" value=\"$value\" />";
      $string .= "La spesa di spedizione per $country_name è di: <strong>". $CURRENCY_DISPLAY->getFullValue($rate )."</strong>";
     
      echo $string;
    }
   
  function get_rate( &$d ) {   
 
     $shipping_rate_id = vmGet($_REQUEST,"shipping_rate_id");
     $zone_arr = explode("|", urldecode(urldecode($shipping_rate_id)) );
     $order_shipping = $zone_arr[3];
   
     return $order_shipping;
  }

   
function get_tax_rate( $zone_id=0 ) {
      $db = new ps_DB();
     
     if( $zone_id == 0 ) {
          $shipping_rate_id = vmGet($_REQUEST,"shipping_rate_id");
          $zone_arr = explode("|", urldecode(urldecode($shipping_rate_id)) );
          $zone_id = (int)$zone_arr[4];
      }
     $db->query( "SELECT tax_rate FROM #__{vm}_zone_shipping,#__{vm}_tax_rate WHERE zone_id='$zone_id' AND zone_tax_rate=tax_rate_id" );
      $db->next_record();
     if( $db->f('tax_rate') )
        return $db->f('tax_rate');
      else
        return 0;
  }
   
   /**
    * Validate this Shipping method by checking if the SESSION contains the key
    * @returns boolean False when the Shipping method is not in the SESSION
    */
   function validate( $d ) {
     $shipping_rate_id = vmGet($_REQUEST,"shipping_rate_id");
   
     if( array_key_exists( $shipping_rate_id, $_SESSION ))
      return true;
     else
      return false;
   }

}
?>
http://www.pos88.altervista.org
Sviluppo Web-php-mysql-cms-joomla-zen cart
http://www.oscon.it/info (Leggere il secondo punto)

Offline caps

  • Abituale
  • ****
  • Post: 848
  • Sesso: Maschio
  • smanetòn (geek)
    • Mostra profilo
Re:spese di spedizione estere [RISOLTO]
« Risposta #6 il: 10 Giu 2010, 20:05:58 »
scusa se continuo un post risolto

non ho testato il codice riportato in questo topic, si parla di zone, l'italia in che zona rientra?

Grazie
Caps
dentri Furlan (Furlan inside)-un istant par imparà il furlan

 

Torna su