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

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

Телеграм : @radgura

JoomShopping &One Step Checkuot - своя стоимость доставки и самовывоза у товара

Заказать
Joomla 3.x

Стоимость 500


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

Статьи

Вы можете Заказать 500руб. RUB
Интернет магазину часто необходимо указывать свою стоимость доставки/самовывоза, например для крупногабаритного груза, но стандартный функционал не позволяет это реализовать.

Для внедрения этого функционала необходимо в базе данных содать нужные поля - стоимость доставки(deleviry_cost)  и стоимость самовывоза(pickup_cost).

Необходимо внести изменения в шаблон корзины One Step Checkout, файл:

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

В нашем случае самовывоз это shipping_id=1, все остальное это доставка(транспортной компанией, до квартиры и тд), необходимо внести изменения в блок с выводом стоимости, элемент <td class="name SHIPPING_PRICE">:

$totalpickup_cost=0;$delivery=0;//обнуляем общую стоимость до цикла вывода товаров в карточке foreach ($this->products as $key_id=>$prod) 
{
if ($shipngid==1)
{
$db->setquery("select pickup_cost from #__jshopping_products where product_id='".$prod['product_id']."'");$pickup_cost=$db->loadresult();
if (trim($pickup_cost)=='') $pickup_cost='0';
$totalpickup_cost=$totalpickup_cost+($pickup_cost*$prod['quantity']);
}
if ($shipngid!=1)
{
$db->setquery("select yan_pickup_cost from #__jshopping_products where product_id='".$prod['product_id']."'");$delivery_cost=$db->loadresult();
if (trim($delivery_cost)=='') $delivery_cost='0';
$price=$price+($delivery_cost*1);
$delivery=$delivery+($delivery_cost*$prod['quantity']);
}
if ($shipngid!=1) $this->summ_delivery=$delivery;
if ($shipngid==1) $this->summ_delivery=$totalpickup_cost;
if (isset($this->summ_delivery) and $this->summ_delivery>0)
{ ?>
<tr>
<td class="name SHIPPING_PRICE">
<?php if ($is_shiping) echo JText::_('JSHOP_ONESTEPCHECKOUT_SHIPPING_PRICE'); else echo 'Стоимость самовывоза' ?>
<input type="hidden" id="formula" value="shipngid: <?php echo $shipngid?> qunt: <?php echo $qunt?> first: <?php echo $first?> second: <?php echo $second?> delcost: <?php echo $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>
<tr style="display:none;">
<td class="name mkad">Выезд за МКАД: расстояние 1км/40руб</td>
<td class="value SHIPPING_PRICE" id="mkadtd">40 руб.</td>
</tr>
<?php } ?>

 Но это только шаблон корзины, также необходимо включить стоимость доставки при создании заказа, необходимо файле после создания заказа $order->saveOrderItem($cart->products) добавить код пересчета стоимости:

components/com_jshopping/models/checkoutorder.php
$order->saveOrderItem($cart->products);
if ($order->shipping_method_id!='1')//доставка
{
$db->setquery("select sum(delivery_cost) from #__jshopping_products where product_id in (select product_id from #__jshopping_order_item where order_id='".$order->order_id."') ");$shipselfsumm=$db->loadresult();
$db->setquery("update `#__jshopping_orders` set order_shipping='".$shipselfsumm."' WHERE order_id='".$order->order_id."' ");$db->execute();
$db->setquery("update `#__jshopping_orders` set order_total=(order_shipping+order_subtotal+order_payment+order_package-order_discount) WHERE order_id='".$order->order_id."' ");$db->execute();
}
if ($order->shipping_method_id=='1')//самовывоз
{
$db->setquery("select sum(pickup_cost) from #__jshopping_products where product_id in (select product_id from #__jshopping_order_item where order_id='".$order->order_id."') ");$shipselfsumm=$db->loadresult();
$db->setquery("update `#__jshopping_orders` set order_shipping='".$shipselfsumm."' WHERE order_id='".$order->order_id."' ");$db->execute();
$db->setquery("update `#__jshopping_orders` set order_total=(order_shipping+order_subtotal+order_payment+order_package-order_discount) WHERE order_id='".$order->order_id."' ");$db->execute();
}

Для изменения подписи "стоимость доставки" на "стоимость самовывоза" в шаблоне письма для покупателя, необходимо редактировать файл:

components/com_jshopping/templates/sitecorp/checkout/ordermail.php
<?php if (!$this->config->without_shipping){?>
<tr>
<td colspan="4" align="right" style="padding-right:15px;" ><?php if ($order->shipping_method_id==1) echo 'Стоимость самовывоза '; else print _JSHOP_SHIPPING_PRICE ?>:</td>
<td class="price"><?php print formatprice($this->order->order_shipping, $order->currency_code); ?><?php print $this->_tmp_ext_shipping?></td>
</tr>
<?php } ?>

Осталось добавить новую подпись в PDF файл, редактируем файл:

components/com_jshopping/lib/generate_pdf_order.php
if (!$jshopConfig->without_shipping){
$pdf->SetXY(20,$y + 5);
$pdf->Rect(20,$y + 5,170,5,'F');
if ($order->shipping_method_id=='1') $shiptxt='Стоимость самовывоза' ;else $shiptxt=_JSHOP_SHIPPING_PRICE;
$pdf->MultiCell(130,5,$shiptxt,'1','R');
$pdf->SetXY(150,$y + 5);
$pdf->MultiCell(40,5, formatprice($order->order_shipping, $order->currency_code),'1','R');
if ($order->order_package>0 || $jshopConfig->display_null_package_price){
$y=$y+5;
$pdf->SetXY(20,$y + 5);
$pdf->Rect(20,$y + 5,170,5,'F');
$pdf->MultiCell(130,5,'Выезд за МКАД: расстояние 1км/40руб','1','R');
$pdf->SetXY(150,$y + 5);
$pdf->MultiCell(40,5, formatprice($order->order_package, $order->currency_code),'1','R');
}
}else{$y = $y - 5;}

Комментарии (0)

Здесь ещё нет оставленных комментариев.

Оставьте свой комментарий

  1. Добавление комментария от гостя.
Вложения (0 / 3)
Share Your Location

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

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

Телеграм: @radgura

OnLine заказ

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

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


RAD компоненты

Please publish modules in offcanvas position.