Spedizione gratis e pagamento con Carta di credito
Moderatore: mod Generali
Spedizione gratis e pagamento con Carta di credito
Cè modo di forzare la spedizione gratis e pagamento con carta di credito, cioè chi paga con carta di credito ha le spedizioni gratis.
Re: Spedizione gratis e pagamento con Carta di credito
Si, devi modificare il modulo:amstaff ha scritto:Cè modo di forzare la spedizione gratis e pagamento con carta di credito, cioè chi paga con carta di credito ha le spedizioni gratis.
includes/modules/order_total/ot_shipping.php
aggiungendo nel metodo process il codice seguente:
Codice: Seleziona tutto
if ($order->info['payment_method'] == 'Carta di Credito - PayPal'){
$order->info['shipping_method'] = $this->title;
$order->info['total'] -= $order->info['shipping_cost'];
$order->info['shipping_cost'] = 0;
}
Naturalmente devi sostituire la stringa 'Carta di Credito - PayPal' con quella relativa al modulo di pagamento che stai utilizzando.function process() {
global $order, $currencies;
if (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') {
switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {
case 'national':
if ($order->delivery['country_id'] == STORE_COUNTRY) $pass = true; break;
case 'international':
if ($order->delivery['country_id'] != STORE_COUNTRY) $pass = true; break;
case 'both':
$pass = true; break;
default:
$pass = false; break;
}
if ( ($pass == true) && ( ($order->info['total'] - $order->info['shipping_cost']) >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) {
$order->info['shipping_method'] = $this->title;
$order->info['total'] -= $order->info['shipping_cost'];
$order->info['shipping_cost'] = 0;
}
}
if ($order->info['payment_method'] == 'Carta di Credito - PayPal'){
$order->info['shipping_method'] = $this->title;
$order->info['total'] -= $order->info['shipping_cost'];
$order->info['shipping_cost'] = 0;
}
$module = substr($GLOBALS['shipping']['id'], 0, strpos($GLOBALS['shipping']['id'], '_'));
if (tep_not_null($order->info['shipping_method'])) {
if ($GLOBALS[$module]->tax_class > 0) {
$shipping_tax = tep_get_tax_rate($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
$shipping_tax_description = tep_get_tax_description($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
$order->info['tax'] += tep_calculate_tax($order->info['shipping_cost'], $shipping_tax);
$order->info['tax_groups']["$shipping_tax_description"] += tep_calculate_tax($order->info['shipping_cost'], $shipping_tax);
$order->info['total'] += tep_calculate_tax($order->info['shipping_cost'], $shipping_tax);
if (DISPLAY_PRICE_WITH_TAX == 'true') $order->info['shipping_cost'] += tep_calculate_tax($order->info['shipping_cost'], $shipping_tax);
}
$this->output[] = array('title' => $order->info['shipping_method'] . ':',
'text' => $currencies->format($order->info['shipping_cost'], true, $order->info['currency'], $order->info['currency_value']),
'value' => $order->info['shipping_cost']);
}
}
NOTA: nel file checkout_process.php la chiamata di elaborazione dei moduli order_total deve precedere la chiamata al metodo before_process del modulo di pagamento. Nei files originali di osC questo non avviene, si tratta di un bug noto da tempo che può dare problemi nei pagamenti con CC.
Questo è il codice corretto:
Codice: Seleziona tutto
$order_totals = $order_total_modules->process();
// load the before_process function from the payment modules
$payment_modules->before_process();
Marcus
Nuovo pacchetto osCommercePRO (osCPRO) + Modulo Interfacciamento Gestionale Danea.
Visita la demo: http://oscpro.oscommercedev.com/index.php
Visita la demo: http://oscpro.oscommercedev.com/index.php