Зачетный хак! Спасибо! Все сделал и заработало. Долго не мог понять почему не отображаются варианты доставки, при добавление более 1 товара, причем не каждый товар, а как то выборочно, бывает 5 в корзину брошу и все отлично, а иногда и с 2 не отображается... Оказалось все просто, на некоторые товары вес стоял не в "kg", а почему то в "кг". Поменял, и все отлично!
Но мне надо было сделать еще доставку в процентах, об этом чуть ниже.
Что я еще доделал до большей универсальности этого модуля. Полностью солидарен с высказыванием:
Может кто в курсе, как верезать проверку индекса города при доставке ? Достало уже ((
Поэтому вот решение:
В файле \administrator\components\com_virtuemart\classes\shipping\standard_shipping.php закоментировал строки, отвечающие за проверку страны и индексов:
//if( ! stristr( $db->f( "shipping_rate_country" ), $country ) && $db->f( 'shipping_rate_country' )!= "" ) {
// $vmLogger->debug( 'The country ' . $country . ' is not supported by this shipping rate.' ) ;
// $valid = false ;
//}
И еще чуток далее:
//if( is_numeric( $zip ) ) {
// if( $db->f( "shipping_rate_zip_start" ) > $zip ) {
// $vmLogger->debug( 'The ZIP ' . $zip . ' is smaller than the supported ZIP code range of this shipping rate.' ) ;
// $valid = false ;
//
// }
// if( $db->f( "shipping_rate_zip_end" ) < $zip ) {
// $vmLogger->debug( 'The ZIP ' . $zip . ' is higher than the supported ZIP code range of this shipping rate.' ) ;
// $valid = false ;
// }
//}
Далее, требовалось указать часть доставок в процентах от суммы заказа. Решение:
В этом же файле \administrator\components\com_virtuemart\classes\shipping\standard_shipping.php
1. Добавил две строчки с переменной для процентов
//GET PRICE
if ( $_SESSION['auth']['show_price_including_tax'] != 1 ) {
$taxrate = 1;
$order_total = ($total + $tax_total);
$percent01 = ($total + $tax_total)/100;
}
else {
$taxrate = $this->get_tax_rate() + 1;
$order_total = $total;
$percent01 = $total/100;
}
//END GET PRICE
2. Далее,
$total_shipping_handling = $dbr->f( "shipping_rate_value" ) + $dbr->f( "shipping_rate_package_fee" ) ;
Заменил на:
$total_shipping_handling = $dbr->f( "shipping_rate_value" ) + ($dbr->f( "shipping_rate_package_fee" )*$percent01) ;
3. Ищем
$rvalue["pack_rate"] = $dbr->f( "shipping_rate_package_fee" ) ;
$rvalue["total_rate"] = $dbr->f( "shipping_rate_value" ) + $dbr->f( "shipping_rate_package_fee" ) ;
и меняем на:
$rvalue["pack_rate"] = $dbr->f( "shipping_rate_package_fee" )*$percent01 ;
$rvalue["total_rate"] = $dbr->f( "shipping_rate_value" ) + ($dbr->f( "shipping_rate_package_fee" )*$percent01) ;
4. В языковом файле: administrator/components/com_virtuemart/languages/shipping/russian.php
'PHPSHOP_RATE_FORM_PACKAGE_FEE' => 'Стоимость доставки в процентах',
Вот и все. Теперь получился ПОЧТИ универсальный модуль. ;-)
Еще раз громадное спасибо!