Доработка модуля расчета доставки по весу

Прислано: MGMaster

пт, 30/07/2010 - 07:07

Требуется доработать модуль uc_weightquote расчета доставки по весу.
Когда создаешь способ доставки, нужна возможность выбирать начальный вес величину шага для следующей стоимости.
Возможно ли такое? Сколько будет стоить?

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Mirocow в ср, 25/08/2010 - 23:04.

да возможно
как раз щас занимаюсь доработкой подобного модуля


Опубликовано MGMaster в пн, 30/08/2010 - 02:40.

К сожалению средств уже на покупку нет.
Выкрутились так, что прописали каждый вес в стандартной доставке.

Подскажите, сколько бы это стоило?

И еще один вопрос: может Вы сможете подсказать как вытащить переменную, в которой хранится общий вес в корзине, и вывести ее значение в корзине?


Опубликовано Mirocow в вт, 31/08/2010 - 11:36.

"MGMaster" написал(а):

$products = uc_cart_get_contents();
$weight = 0;
foreach($products as $product) $weight += (float)$product->weight;
echo $weight;


Опубликовано MGMaster в чт, 16/09/2010 - 10:39.

Доработали модуль?
Сможете поделиться? Сколько будет стоить?


Опубликовано ijfamily в чт, 23/12/2010 - 12:20.

у меня стояла задача щитать доставку так - до 30 кг - 50 грн, свыше 30 кг - плюс 50 грн, и так за каждые новые 30 кг. стоимость доставки этих 30 кг - это значение по умолчанию, вводимое в настройках модуля.

решать задачу нужно было быстро, поетому убила котенка таким образом:

это кусок кода модуля uc_weightquote, правила прям в нем, знаю что это ужасно, но выхода не было. может быть кому-то пригодится на будущее:
закоментировала расчет стоимости за каждый лишний килограмм, ниже добавила расчет стоимости за каждые последующие 30.
function uc_weightquote_quote($products, $details, $method) {
$method = explode('_', $method['id']);
$mid = $method[1];
$context = array(
'revision' => 'altered',
'type' => 'amount',
);

if ($method = db_fetch_object(db_query("SELECT * FROM {uc_weightquote_methods} WHERE mid = %d", $mid))) {
$context['extras']['weightquote_method'] = $method;
// Start at the base rate.

foreach ($products as $product) {
$context['subject']['order_product'] = $product;
// if (empty($product->weightquote) || is_null($product->weightquote[$mid])) {
// $price_info = array(
// 'price' => $method->product_rate,
// 'qty' => $product->qty,
// );
// // Add the method's default product rate.
// $product_rate = uc_price($price_info, $context);
// }
// else {
// $price_info = array(
// 'price' => $product->weightquote[$mid],
// 'qty' => $product->qty,
// );
// // Add the product-specific rate.
// $product_rate = uc_price($price_info, $context);
// }

$weights += ($product->qty * $product->weight);
// $rate += $product_rate * $product->weight * uc_weight_conversion($product->weight_units, variable_get('uc_weight_unit', 'lb'));
}
$total_weight = $weights;
$kvo_pos=1;
if($total_weight > 30) {
$kvo_pos=ceil($total_weight/30);
}
$rate = $method->base_rate*$kvo_pos;

unset($context['subject']['order_product']);
$altered = uc_price($rate, $context);
$context['revision'] = 'formatted';
$formatted = uc_price($rate, $context);
$quotes[] = array('rate' => $altered, 'format' => $formatted, 'option_label' => check_plain($method->label));
}

return $quotes;
}


Опубликовано Mirocow в вс, 26/12/2010 - 15:41.

Лучщше conditional настроить.


Новое на сайте

Ссылки партнёров