Новосибирск +7(983)

По всем вопросам :

ЗаказатьJoomla 3x

Стоимость 1500


@radgura.ru
Адриена Лежена
63089
Новосибирск
Адриена Лежена
+7(983)
3067856
Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Статьи

Вы можете Заказать 1500руб. RUB

Стандартный механизм JoomShopping не умеет делать сложный расчет доставки, необходимо вносить изменения.

Поставлена задача:

1. Добавлять 200р к доставке, если товаров больше одного, при этом есть исключения по товару.

Сначала вводим признак, по которому будем исключать товар, для этого создаем характеристику.Необходимо поставить эту характеристику всем товарам, которые не будут добавлять 200р к доставке.

Далее нам необходимо понять в какое поле она будет выгружаться, у нас получилось поле #__jshopping_products.extra_field_3,  ID характеристики 4. 

Следующий шаг расчета стоимости доставки

Карточки товара из корзины JoomShopping хранятся в сессии, для обновлении цены нам необходимо "на лету" изменить данные, открываем файл:

components/com_jshopping/templates/addons/onestepcheckout/default/checkout.php

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

<tbody>
<?php
$i=1;
$countprod = count($this->products);$qunt=0;
foreach ($this->products as $key_id=>$prod) {
$db->setquery("select extra_field_3 from #__jshopping_products where product_id='".$prod['product_id']."' ");$ext=$db->loadresult();//поле скрыто, получаем значение из БД
if ($ext!=4) $qunt=$qunt+$prod['quantity'];
?>
<tr class="jshop_prod_cart" >

И нужно переопределить вывод суммы:

$session = JFactory::getSession();
$price = $session->get("jshop_price_shipping");
//если товаров несколько то к каждой позиции кроме первой добавляем 200р
if ($price>0)
{
$quntprice=0;

if ($qunt>1) $quntprice=($qunt-1)*200; else $quntprice=0;
$this->summ_delivery=getRoundPriceProduct(floatval($price+$quntprice));
}

if (isset($this->summ_delivery)){ ?>
<tr>
<td class="name">
<?php echo JText::_('JSHOP_ONESTEPCHECKOUT_SHIPPING_PRICE') ?>
</td>
<td class="value SHIPPING_PRICE">
<?php
echo formatprice($this->summ_delivery) ?>
<?php echo $this->_tmp_ext_shipping?>
</td>
</tr>
<?php } ?>

Также переопределить итоговую сумму:

<?php 
$this->fullsumm=$this->summ_package+$this->summ_delivery+$this->summ;
?>
<tr class="total">
<td class="name">
<?php echo $this->text_total ?>
</td>
<td class="value">
<?php echo formatprice($this->fullsumm) ?>
<?php echo $this->_tmp_ext_total ?>
</td>
</tr>

Далее нам нужно после сохранения заказа, переписать суммы доставки и сумму итого:

/city-new/public_html/components/com_jshopping/models/checkoutorder.php
if ($jshopConfig->send_order_email && $order->order_created){
$send = $this->sendOrderEmail($order->order_id);
}
//обновляем стоимость доставки, исключаем кол-во товара по характеристике
if ($order->order_shipping>0)
{
$db = JFactory::getDbo();
$db->setquery("SELECT SUM(`product_quantity`) FROM `#__jshopping_order_item` WHERE order_id='".$order->order_id."' and product_id not in (select product_id from #__jshopping_products where extra_field_3=4)");$qunt=$db->loadresult();
$quntprice=0;
if ($qunt>1)
{
$quntprice=($qunt-1)*200;
$order_shipping=getRoundPriceProduct(floatval($order->order_shipping+$quntprice));
$db->setquery("update `#__jshopping_orders` set order_shipping='".$order_shipping."' WHERE order_id='".$order->order_id."' ");$db->execute();
$db->setquery("update `#__jshopping_orders` set order_total=order_shipping+order_subtotal+order_payment WHERE order_id='".$order->order_id."' ");$db->execute();
}
}

 

2.Стоимость доставки индивидуальна для каждого товара. Доставка рассчитывается: 100% от первого товара, 50% от второго. Стоимость доставки брать от наибольшей.

Решение аналогичны задаче 1

в файле "на лету" изменяем сумму:

components/com_jshopping/templates/addons/onestepcheckout/default/checkout.php
<tbody>
<?php
$first=0;$second=0;$prodid=array();
foreach ($this->products as $key_id=>$prod) {$prodid[]=$prod['product_id'];}
$db->setquery("select yan_local_delivery_cost as cost from #__jshopping_products where product_id in (".implode(',',$prodid).") order by yan_local_delivery_cost desc limit 2");$delcostlist=$db->loadobjectlist();
if (isset($delcostlist[0]->cost))
{
$first=$delcostlist[0]->cost;
if (isset($delcostlist[1]->cost)) $second=$delcostlist[1]->cost/2;
}
//выводим карточку
foreach ($this->products as $key_id=>$prod) {
if (isset($delcostlist[0]->cost) and $delcostlist[0]->product_id==$prod['product_id'] and $prod['quantity']>1) $second=(int)($delcostlist[0]->cost/2);
}
....
$this->summ_delivery=($first+$second);
if (isset($this->summ_delivery) and $this->summ_delivery>0){ ?>
<tr>
<td class="name">
<?php echo JText::_('JSHOP_ONESTEPCHECKOUT_SHIPPING_PRICE') ?>
</td>
<td class="value SHIPPING_PRICE">
<?php
echo formatprice($this->summ_delivery) ?>
<?php echo $this->_tmp_ext_shipping?>
<input type="hidden" id="pagequant" value="<?php echo $qunt?>">
<input type="hidden" id="delprice" value="<?php echo getRoundPriceProduct(floatval($price+$quntprice))?>">
</td>
</tr>

Переписываем стоимость заказа:

/city-new/public_html/components/com_jshopping/models/checkoutorder.php
$first=0;$second=0;
$db->setquery("select yan_local_delivery_cost as cost from #__jshopping_products where product_id in (select product_id FROM `#__jshopping_order_item` WHERE order_id='".$order->order_id."' and product_id not in (select product_id from #__jshopping_products where extra_field_3=4)) order by yan_local_delivery_cost desc limit 2");$delcostlist=$db->loadobjectlist();
if (isset($delcostlist[0]->cost))
{
$first=$delcostlist[0]->cost;
if ($prod['quantity']>1)$second=(int)($delcostlist[0]->cost/2);
else
if (isset($delcostlist[1]->cost)) $second=$delcostlist[1]->cost;
}
$db->setquery("update `#__jshopping_orders` set order_shipping='".($first+$second)."' WHERE order_id='".$order->order_id."' ");$db->execute();
$db->setquery("update `#__jshopping_orders` set order_total=order_shipping+order_subtotal+order_payment+order_package WHERE order_id='".$order->order_id."' ");$db->execute();
return $order;

Как с нами связаться

По всем вопросам пишите  

OnLine заказ

Отправить сообщение

Нажимая на кнопку «Отправить сообщение», я соглашаюсь:
* с условиями публичной оферты
* обработку моих персональных данных


RAD компоненты

  • Точный рейтинг материалов k2


    Стоимость 500

  • Статистика К2 (Joomla 3x)


    Стоимость 1500

  • K2 Экспорт в яндекс маркет YML формат


    Стоимость 2500

  • Акции К2 store


    Стоимость 1200

  • QR code в K2 и k2_store


    Стоимость 300

  • Мониторинг здоровья


    Стоимость 1700

  • Модуль отзывов - яндекс маркет, фламп


    Стоимость 800

  • Таблица замены текста по тегу


    Стоимость 700

  • ЖКХ паспорт дома


    Стоимость 5000

  • Плагин обновления доп.поля К2


    Стоимость 200

  • K2_store купоны


    Стоимость 1500

  • K2_store сопутствующий товар


    Стоимость 1500

  • Плагин Scroll to Top Mobile Detect


    Стоимость 500

  • JShopping поиск товара по атрибутам


    Стоимость 600

  • Расписание занятий


    Стоимость 2000

  • Плагин оплаты K2 store Форма ПД-4 Сбербанк


    Стоимость 1000

  • Доска объявлений


    Стоимость 1500

  • Расширенные заказы JoomShopping


    Стоимость 2500

  • Галерея изображений


    Стоимость 1000

  • Калькулятор прибыли


    Стоимость 500

  • Назначение группы пользователя от суммы заказа VM3


    Стоимость 1200

  • Автоматические купоны по сумме заказов VM3


    Стоимость 1200

  • JoomShopping - Демпинг яндекс маркета


    Стоимость 3000

Please publish modules in offcanvas position.