Перейти к содержимому


Варианты характеристик в корзине отдельными строками


  • Вы не можете ответить в тему
В этой теме нет ответов

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 21 September 2013 - 01:55 PM

Модуль заменяет вывод строки товара в корзине и админке с "Товар (вариант, вариант, вариант)"
на вывод вариантов отдельными строками с ценой. Дефолтовый вариант не выводится.
Заведомо предполагается, что дефолтовый вариант не уменьшает и не увеличивает цену товара.
Такое дополнение полезно, например, тогда, когда к товару можно добавить какие-либо работы и удобно было бы их видеть раздельно и с ценой.

Спонсор дополнения: mailomsk

=====================================
1. в файле custord_new_orders.php

1.1 после строки


} else {


вставляем


# BEGIN ExtraCart
# этот код нужен один раз для создания таблицы, затем его можно удалить.
db_query("CREATE TABLE IF NOT EXISTS ".DB_PRFX."order_variants (
orderID INT(11),
itemID INT(11),
price_surplus INT(11),
option_value VARCHAR(255)
) ENGINE=MYISAM") or die(mysql_error());
# END ExtraCart


1.2 заходим в админку в справочник заказов. Код из 1.1 отработает (создаст таблицу) и его можно убрать.


2. в файле custord_new_orders.tpl.html

вместо строк


<td align="right" class="toph3">{$orderContent[i].PriceOne}</td>
<td align="right" class="toph3">{$orderContent[i].PriceToShow}</td>
</tr><tr><td colspan="4" class="separ"><img src="data/admin/pixel.gif" alt="" class="sep"></td></tr>


вставляем


{* BEGIN ExtraCart *}
{*
<td align="right" class="toph3">{$orderContent[i].PriceOne}</td>
<td align="right" class="toph3">{$orderContent[i].PriceToShow}</td>
</tr><tr><td colspan="4" class="separ"><img src="data/admin/pixel.gif" alt="" class="sep"></td></tr>
*}
<td align="right" class="toph3">{$orderContent[i].PriceOneVar}</td>
<td align="right" class="toph3">{$orderContent[i].PriceToShowVar}</td>
</tr>
{foreach from=$orderContent[i].addons item=variant}
<tr class="liney">
<td align="left" colspan="3">&nbsp;&nbsp;&nbsp;&nbsp;{$variant.option_value}</td>
<td align="right" class="toph3">{$variant.price_surplus}</td>
</tr>
{/foreach}
<tr><td colspan="4" class="separ"><img src="data/admin/pixel.gif" alt="" class="sep"></td></tr>
{* END ExtraCart *}



3. в файле cart.php

перед строкой


$variants[] = $val;


вставляем


# BEGIN ExtraCart
if(!db_fetch_assoc(db_query("SELECT optionID FROM ".PRODUCT_OPTIONS_VALUES_TABLE." WHERE productID=".$_GET["addproduct"]." AND variantID=$val")))
# END ExtraCart




4. в файле cart_functions.php

4.1 в функции cartMoveContentFromShoppingCartsToOrderedCarts

вместо строк


$options = GetStrOptions( $variants );
if ( $options != "" )
$productComplexName = $product["name"]."(".$options.")";
else


вставляем


# BEGIN ExtraCart
/*
$options = GetStrOptions( $variants );
if ( $options != "" )
$productComplexName = $product["name"]."(".$options.")";
else
*/
foreach ($variants as $variant)
if ($row = db_fetch_assoc(db_query("SELECT price_surplus, option_value, name FROM ".PRODUCTS_OPTIONS_SET_TABLE." AS pos JOIN ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." AS povv USING (variantID) JOIN ".PRODUCT_OPTIONS_TABLE." AS po ON po.optionID=pos.optionID WHERE productID=$productID AND variantID=$variant")))
db_query("INSERT INTO ".DB_PRFX."order_variants SET orderID=".(int)$orderID.",itemID=".(int)$item['itemID'].",price_surplus=".$row['price_surplus']*$item['Quantity'].",option_value='".$row['name'].": ".$row['option_value']."'");
# END ExtraCart


4.2 в функции cartGetCartContent

после строк


$costUC = GetPriceProductWithOption( $variants,
$shopping_cart_item["productID"] );


вставляем


# BEGIN ExtraCart
$addons = array();
foreach ($variants as $variant)
{
if ($row = db_fetch_assoc(db_query("SELECT price_surplus, option_value, name FROM ".PRODUCTS_OPTIONS_SET_TABLE." AS pos JOIN ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." AS povv USING (variantID) JOIN ".PRODUCT_OPTIONS_TABLE." AS po ON po.optionID=pos.optionID WHERE productID=".(int)$shopping_cart_item["productID"]." AND variantID=$variant")))
$addons[] = array("name" => $row["name"],"option_value" => $row["option_value"],"price_surplus" => show_price($row["price_surplus"] * $cart_item["Quantity"]));
}
# END ExtraCart


перед строкой


"productID" => $product["productID"],


вставляем


# BEGIN ExtraCart
"addons" => $addons,
"costmin" => show_price($cart_item["Quantity"]*$product["Price"]),
# END ExtraCart


строки


$strOptions=GetStrOptions(
GetConfigurationByItemId( $tmp["id"] ));
if ( trim($strOptions) != "" )
$tmp["name"].=" (".$strOptions.")";


заменяем на (комментируем)


# BEGIN ExtraCart
/*
$strOptions=GetStrOptions(
GetConfigurationByItemId( $tmp["id"] ));
if ( trim($strOptions) != "" )
$tmp["name"].=" (".$strOptions.")";
*/
# END ExtraCart


после строк


$costUC = GetPriceProductWithOption(
$_SESSION["configurations"][$j],
$_SESSION["gids"][$j])/* * $_SESSION["counts"][$j]*/;


вставляем


# BEGIN ExtraCart
$addons = array();
foreach ($_SESSION["configurations"][$j] as $variant)
if ($row = db_fetch_assoc(db_query("SELECT price_surplus, option_value, name FROM ".PRODUCTS_OPTIONS_SET_TABLE." AS pos JOIN ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." AS povv USING (variantID) JOIN ".PRODUCT_OPTIONS_TABLE." AS po ON po.optionID=pos.optionID WHERE productID=".(int)$_SESSION["gids"][$j]." AND variantID=$variant")))
$addons[] = array("name" => $row["name"],"option_value" => $row["option_value"],"price_surplus" => show_price($row["price_surplus"] * $_SESSION["counts"][$j]));
# END ExtraCart


перед строкой


"productID" => $_SESSION["gids"][$j],


вставляем


# BEGIN ExtraCart
"addons" => $addons,
"costmin" => show_price($_SESSION["counts"][$j]*$r["Price"]),
# END ExtraCart


строки


$strOptions=GetStrOptions( $_SESSION["configurations"][$j] );
if ( trim($strOptions) != "" )
$tmp["name"].=" (".$strOptions.")";


заменяем на (комментируем)


# BEGIN ExtraCart
/*
$strOptions=GetStrOptions( $_SESSION["configurations"][$j] );
if ( trim($strOptions) != "" )
$tmp["name"].=" (".$strOptions.")";
*/
# END ExtraCart



5. в файле order_functions.php

5.1 в функции _moveSessionCartContentToOrderedCart

вместо строк


$options = GetStrOptions( $variants );
if ( $options != "" )
$productComplexName = $product["name"]."(".$options.")";
else


вставляем


# BEGIN ExtraCart
/*
$options = GetStrOptions( $variants );
if ( $options != "" )
$productComplexName = $product["name"]."(".$options.")";
else
*/
foreach ($variants as $variant)
if ($row = db_fetch_assoc(db_query("SELECT price_surplus, option_value, name FROM ".PRODUCTS_OPTIONS_SET_TABLE." AS pos JOIN ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." AS povv USING (variantID) JOIN ".PRODUCT_OPTIONS_TABLE." AS po ON po.optionID=pos.optionID WHERE productID=$productID AND variantID=$variant")))
db_query("INSERT INTO ".DB_PRFX."order_variants SET orderID=".(int)$orderID.",itemID=".(int)$itemID.",price_surplus=".$row['price_surplus']*$quantity.",option_value='".$row['name'].": ".$row['option_value']."'");
# END ExtraCart


5.2 в функции ordGetOrderContent

после строки


$product = GetProduct( $productID );


вставляем


#BEGIN ExtraCart
$price = $row["Price"];
$vars = db_query("SELECT option_value, price_surplus FROM ".DB_PRFX."order_variants WHERE OrderID=$orderID AND itemID=".$row["itemID"]);
while ($row_add = db_fetch_assoc($vars))
{
$price -= $row_add['price_surplus']/$row["Quantity"];
$row['addons'][]=array("option_value" => $row_add['option_value'],"price_surplus" => _formatPrice(roundf($currency_value*$row_add['price_surplus']),$currency_round)." ".$currency_code);
}
$row["PriceToShowVar"] = _formatPrice(roundf($currency_value*$price*$row["Quantity"]),$currency_round)." ".$currency_code;
$row["PriceOneVar"] = _formatPrice(roundf($currency_value*$price),$currency_round)." ".$currency_code;
#END ExtraCart


5.3 в функции ordDeleteOrder

после строки


db_query( "delete from ".ORDER_STATUS_CHANGE_LOG_TABLE." where orderID=".(int)$orderID);


вставляем


#BEGIN ExtraCart
db_query("DELETE FROM ".DB_PRFX."order_variants WHERE OrderID=$orderID");
#END ExtraCart



6. в файле shopping_cart.tpl.html

вместо строки


<td class="padt" align="center" valign="middle" nowrap="nowrap">{$cart_content[i].cost}</td>


вставляем


{* BEGIN ExtraCart *}
{*<td class="padt" align="center" valign="middle" nowrap="nowrap">{$cart_content[i].cost}</td>*}
<td class="padt" align="center" valign="middle" nowrap="nowrap">{$cart_content[i].costmin}</td>
{* END ExtraCart *}


перед строками


{/section}
{if $discount_prompt != 0}


вставляем


{* BEGIN ExtraCart *}
{foreach from=$cart_content[i].addons item=variant}
<tr>
<td class="padt" align="left" valign="middle" colspan="{if $smarty.const.CONF_DISPLAY_PRCODE EQ 1}3{else}2{/if}">&nbsp;&nbsp;&nbsp;&nbsp;{$variant.name}:{$variant.option_value}</td>
<td class="padt" align="center" valign="middle" nowrap="nowrap">{$variant.price_surplus}</td>
<td></td>
</tr>
{/foreach}
{* END ExtraCart *}



7. в файле order4_confirmation.tpl.html

вместо строк


<td class="padt" align="center" valign="middle" style="white-space: nowrap">{$orderSum.sumOrderContent[i].cost}</td>
</tr>


вставляем


{* BEGIN ExtraCart *}
{*
<td class="padt" align="center" valign="middle" style="white-space: nowrap">{$orderSum.sumOrderContent[i].cost}</td>
</tr>
*}
<td class="padt" align="center" valign="middle" style="white-space: nowrap">{$orderSum.sumOrderContent[i].costmin}</td>
</tr>
{foreach from=$orderSum.sumOrderContent[i].addons item=variant}
<tr>
<td class="padt" align="left" valign="middle" colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;{$variant.name}:{$variant.option_value}</td>
<td class="padt" align="center" valign="middle" nowrap="nowrap">{$variant.price_surplus}</td>
</tr>
{/foreach}
{* END ExtraCart *}



8. в файле order4_confirmation_quick.tpl.html

вместо строк


<td class="padt" align="center" valign="middle" style="white-space: nowrap">{$orderSum.sumOrderContent[i].cost}</td>
</tr>


вставляем


{* BEGIN ExtraCart *}
{*
<td class="padt" align="center" valign="middle" style="white-space: nowrap">{$orderSum.sumOrderContent[i].cost}</td>
</tr>
*}
<td class="padt" align="center" valign="middle" style="white-space: nowrap">{$orderSum.sumOrderContent[i].costmin}</td>
</tr>
{foreach from=$orderSum.sumOrderContent[i].addons item=variant}
<tr>
<td class="padt" align="left" valign="middle" colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;{$variant.name}:{$variant.option_value}</td>
<td class="padt" align="center" valign="middle" nowrap="nowrap">{$variant.price_surplus}</td>
</tr>
{/foreach}
{* END ExtraCart *}

  • 3
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)