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


Модуль "Учет количества товара по дополнительным характеристикам"

ShopCMS 3.1.* учет товара дополнительные характеристики

  • Вы не можете ответить в тему
Сообщений в теме: 203

#21 badisoft

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

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

Отправлено 23 March 2013 - 07:33 PM

Должен ли отображаться столбец УчДХ в модуле который лежит в складчине?


Ни в одном из выложенных в даунлоаде трех архивов нет каталога core/tpl/admin. Приведенный Вами скриншот относится к админке и если бы в выложенных архивах эта фишка была, то был бы и файл в каталоге core/tpl/admin. Но его нет. Увы.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#22 makki

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

  • Assistent vsupport.club
  • PipPipPip
  • 148 сообщений
Репутация: 7
Начинающий

Отправлено 22 May 2013 - 01:14 PM

Очень нужная доработка. Но в даунлоуде не последняя версия, в которой не исправлена ошибка с обработкой товара без дополнительных характеристик :(
  • 0

#23 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 22 May 2013 - 01:54 PM

А какая именно там ошибка?
  • 0

#24 makki

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

  • Assistent vsupport.club
  • PipPipPip
  • 148 сообщений
Репутация: 7
Начинающий

Отправлено 22 May 2013 - 05:27 PM

А какая именно там ошибка?


Отсутствует возможность продажи товара, для которого не указаны дополнительные характеристики. Т.е. товар без дополнительной характеристики вообще не добавляется в корзину, а в подробном описании вообще отсутствует кнопка добавить в корзину.

Учет количества для товара с дополнительными характеристиками работает правильно.

Возможно я неправильно внес изменения в скрипт. Из трех архивов я накатал поверх только последний check_in_stock_from_options_upd.zip
Проверялось на чистом движке.
  • 0

#25 makki

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

  • Assistent vsupport.club
  • PipPipPip
  • 148 сообщений
Репутация: 7
Начинающий

Отправлено 23 May 2013 - 10:56 AM

Поставил этот модуль, могу сказать - он нуждается в доработках. Работает он только если товар имеет дополнительные характеристики, а если товар не имеет никаких дополнительных характеристик, то по ним учет товара на складе вобще перестает учитываться, соответственно этот товар нельзя заказать. Обошел этот недостаток без доработок в скриптах путем указывания абсолютно для всех товаров дополнительной характеристики, а там где не предусмотрена доп.характеристика - добавил новое значение "нет характеристики" и выбрал ее для таких товаров с указанием кол-ва на складе. Может кому поможет, иначе тогда нужно ковыряться в кодах скриптов с указанием условий...

обновите до последней версии, эта беда пропадёт.

но возникла другая беда - не возвращаются товары на "склад" после отмены заказа, у кого какие мысли?

и ещё, если у характеристики заканчивается товар то уведомление не приходит, у товаров без учёта наличия по характеристике - всё нормально


Если ставить последнюю версию из архива check_in_stock_from_options_upd.zip всеравно остается та же проблема - товар без характеристик не обрабатывается.

А возврат как раз работает правильно. Просто после возврата не обновляется количество в карточке товара в админке, но обновляется в дополнительных характеристиках. А доработка сделана так, что при покупке именно оттуда берется товар. После покупки товара количество в карточке товара обновляется.
  • 0

#26 badisoft

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

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

Отправлено 23 May 2013 - 06:41 PM

Если ставить последнюю версию из архива check_in_stock_from_options_upd.zip всеравно остается та же проблема - товар без характеристик не обрабатывается.

Ну так поставьте последнюю версию от автора, в чем проблема? В том, что ворованная версия не работает так, как должна работать не ворованная? Так не ворованная с тех пор имела два, насколько я знаю, радикальных обновления-исправления. Видимо, у автора были продажи модуля, где покупатели напрягли исправить косяки.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#27 makki

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

  • Assistent vsupport.club
  • PipPipPip
  • 148 сообщений
Репутация: 7
Начинающий

Отправлено 21 October 2013 - 09:27 PM

Никто не сталкивался с ошибкой в логах адмики после установки этого дополнения совместно с правкой в фукнции PsCount, которую на форуме предложил Badisoft, чтобы убрать тормоза в аминке при сохранении правок в товаре? Там в логе какая то беда с sql
  • 0

#28 badisoft

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

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

Отправлено 21 October 2013 - 10:09 PM

Никто не сталкивался с ошибкой в логах адмики после установки этого дополнения совместно с правкой в фукнции PsCount, которую на форуме предложил Badisoft, чтобы убрать тормоза в аминке при сохранении правок в товаре?

Не надо в один котел мешать все, что в голову придет. Исправленная функция никаким боком к модулю "учет количества товаров по доп. хар-кам". Я писал одно и правил другое - они никак не пересекаются.

Там в логе какая то беда с sql

Жаль, что Вы не выложили самое важное - беду, как она показана в логах.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#29 makki

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

  • Assistent vsupport.club
  • PipPipPip
  • 148 сообщений
Репутация: 7
Начинающий

Отправлено 22 October 2013 - 08:32 AM

Вот код ошибки:

ERROR: 1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' products_count=249, products_count_admin=250 WHERE categoryID=1' at line 1
Sql: UPDATE ayur_categories SET subcount=, products_count=249, products_count_admin=250 WHERE categoryID=1
Link: /admin.php?productID=219&eaction=prod
  • 0

#30 badisoft

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

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

Отправлено 22 October 2013 - 11:44 AM

Вот код ошибки:
UPDATE ayur_categories SET subcount=, products_count=249, products_count_admin=250 WHERE categoryID=1

subcount= - а числа нет.
Это код из моего дополнения. Либо в нем где-то ошибка, либо Вы что-то не так поставили. Т.к. поставить "не так" это дополнение очень сложно, то, видимо, где-то таки ошибка. Хотя и странно. У меня работает без ошибок, в паре-тройке других мест тоже. Возможно, комбинация именно ваших данных приводит к проявлению этой ошибки.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#31 badisoft

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

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

Отправлено 18 April 2014 - 09:34 PM

ERROR: 1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' products_count=249, products_count_admin=250 WHERE categoryID=1' at line 1 Sql: UPDATE ayur_categories SET subcount=, products_count=249, products_count_admin=250 WHERE categoryID=1

http://vsupport.club/topic/2119-%d1%82%d0%be%d1%80%d0%bc%d0%be%d0%b7%d0%b0-%d0%bf%d1%80%d0%b8-%d1%80%d0%b5%d0%b4%d0%b0%d0%ba%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d0%b0/page__view__findpost__p__30550
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#32 zcz

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

  • Assistent vsupport.club
  • PipPipPip
  • 104 сообщений
Репутация: 62
Продвинутый

Отправлено 20 November 2014 - 02:03 PM

кому-то может пригодится..
столкнулся с проблемой - при отмене заказ не возвращался обратно параметр кол-во на складе (не характеристики а общий).

файл order_status_functions.php

функция _changeIn_stock

Вместо

 // db_query( "update ".PRODUCTS_TABLE." set in_stock=in_stock + ".(int)$Quantity.
 // " where productID=".(int)$product["productID"] );
 db_query("update ".PRODUCTS_OPTIONS_SET_TABLE." set  qty = qty + ".(int)$Quantity.
			    " where productID=".(int)$product["productID"]." AND variantID=".(int)$item["variantID"] );
											
$in_stock = db_query("select SUM(`qty`) from ".PRODUCTS_OPTIONS_SET_TABLE." where productID=".(int)$productID);
$in_stock = db_fetch_row($in_stock);
db_query("update ".PRODUCTS_TABLE." set in_stock=".(int)$in_stock[0]." where productID=".(int)$productID);

поставить
db_query( "update ".PRODUCTS_TABLE." set in_stock=in_stock + ".(int)$Quantity.
 " where productID=".(int)$product["productID"] );
db_query("update ".PRODUCTS_OPTIONS_SET_TABLE." set  qty = qty + ".(int)$Quantity.
" where productID=".(int)$product["productID"]." AND variantID=".(int)$item["variantID"] );

меня спасло.
  • 0
Пишу, устанавливаю, натягиваю))) pix-art.ru

#33 badisoft

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

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

Отправлено 20 November 2014 - 05:09 PM

столкнулся с проблемой - при отмене заказ не возвращался обратно параметр кол-во на складе (не характеристики а общий).

Это странно. Ведь логика запросов вполне нормальная и рабочая. Не сработает она (не изменится общее количество) только если отутствует $item['variantID']. Но , насколько я помню, там должно быть ветвление в зависимости от того, ведется для этого товара УчетПоДХ или нет, т.е. при "ведется" отсутствия $item['variantID'] быть не может, а при "не ведется" должно идти по штатной ветке логики.

PS. подозреваю, что у Вас довольно старая версия модуля. Галка "УчДХ" в админке в таблице товаров есть? Не исключено, что в старой версии модуля вообще не отрабатывается вариант, когда у товара нет учета по ДХ. И, соответственно, нет ни одного варианта ни одной характеристики :).

Исправление в таком случае вполне сработает, т.к. получается update количества у вариантов для variantID=0, но лучше вообще обновить модуль, в старой версии таракан на таракане. И новая-то не подарок, но таки меньше :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#34 badisoft

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

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

Отправлено 20 November 2014 - 08:26 PM

Решил таки оформить отдельным сообщением, а то как-то некузяво.

но лучше вообще обновить модуль, в старой версии таракан на таракане

Модуль "Учет товаров по дополнительным характеристикам".

Мне надоело копаться с исходным авторским кодом, я его причесал для удобства и понятности, а также сделал в виде инструкции.
Надеюсь, ничего не забыл :).

Отличия:

- После инсталляции учет выключен (галка "УчДХ" у товаров снята). Т.е. если ее не включать, то все работает как и раньше.
- исправлена ошибка в configurator.php, из-за которой криво работало модальное окно выбора вариантов при выключенном УчДХ.
- синтаксис <?bla-bla-bla?> заменен на <?php bla-bla-bla ?>.
- добавлена отправка емейла админу об окончании ОДНОГО ИЗ вариантов товара.
- убраны авторские шаблоны краткого и полного описания. Вместо них добавлены правки штатных шаблонов, скрывающие варианты с нулевым количеством на складе.
- многократно повторяющийся код проверки состояния галки УчДХ вынесен в отдельную функцию.
- убрано некоторое количество лишнего (на мой взгляд) кода.

1. копируем файлы

configurator.php -> /core/includes/processor/
cisfo_functions.php -> /core/functons/

2. в файле catalog_products_categories.php

2.1. после строки


} else {


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if (!db_fetch_row(db_query("SHOW COLUMNS FROM ".PRODUCTS_TABLE." LIKE 'check_in_stock_from_options'"))) db_query("ALTER TABLE ".PRODUCTS_TABLE." ADD check_in_stock_from_options TINYINT(1) NOT NULL DEFAULT 0");
if (!db_fetch_row(db_query("SHOW COLUMNS FROM ".PRODUCTS_OPTIONS_SET_TABLE." LIKE 'qty'"))) db_query("ALTER TABLE ".PRODUCTS_OPTIONS_SET_TABLE." ADD qty INT(11) NOT NULL DEFAULT 0");
if (!db_fetch_row(db_query("SHOW COLUMNS FROM ".ORDERED_CARTS_TABLE." LIKE 'variantID'"))) db_query("ALTER TABLE ".ORDERED_CARTS_TABLE." ADD variantID INT( 11 ) NULL");
#END Учет количества товара по дополнительным характеристикам


2.2. строку


$data = ScanPostVariableWithId( array( "price", "enable", "left", "sort_order" ) );


заменяем на


#BEGIN Учет количества товара по дополнительным характеристикам
#$data = ScanPostVariableWithId( array( "price", "enable", "left", "sort_order" ) );
$data = ScanPostVariableWithId( array( "price", "enable", "left", "sort_order", "check_in_stock_from_options" ) );
#END Учет количества товара по дополнительным характеристикам


2.3. чуть ниже после строк (строк!)


foreach( $data as $key => $val )
{


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if ( isset($val["check_in_stock_from_options"]) ) db_query( "UPDATE ".PRODUCTS_TABLE." SET check_in_stock_from_options=".(int)$val["check_in_stock_from_options"]." WHERE productID=".(int)$key );
#END Учет количества товара по дополнительным характеристикам



3. в файле catalog_products_categories.tpl.html

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


<td align="left" width="100%"><a href='{$urlToSort}&amp;sort=name&amp;sort_dir=ASC' title="{$smarty.const.ADMIN_ADMIN_MENUNEW11}" class="liv">{$smarty.const.ADMIN_PRODUCT_NAME}</a></td>


вставляем


{* BEGIN Учет количества товара по дополнительным характеристикам *}
<td align="center">УчДХ</td>
{* END Учет количества товара по дополнительным характеристикам *}


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


<td align="left"><a href="{$smarty.const.ADMIN_FILE}?productID={$products[i].productID}&amp;eaction=prod" title="{$smarty.const.ADMIN_ADMIN_MENUNEW9}" {if !$products[i].enabled}class="greyy"{/if}>{$products[i].name}</a></td>


вставляем


{* BEGIN Учет количества товара по дополнительным характеристикам *}
<td align="center">
<input type="hidden" name="check_in_stock_from_options_{$products[i].productID}" id="check_in_stock_from_options_{$products[i].productID}" {if $products[i].check_in_stock_from_options}value='1'{else}value='0'{/if} >
<input type="checkbox" class="round" name="checkbo_check_in_stock_from_options_{$products[i].productID}" id="checkbo_check_in_stock_from_options_{$products[i].productID}" {if $products[i].check_in_stock_from_options eq 1}checked{/if} onclick='CheckBoxHandler_check_in_stock_from_options({$products[i].productID})' title="{$smarty.const.ADMIN_ADMIN_MENUNEW6}">
</td>
{* END Учет количества товара по дополнительным характеристикам *}


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


<td align="right">{if $products[i].in_stock <= 0}<input type="text" name="left_{$products[i].productID}" value="{$products[i].in_stock}" class="prc prcss{if !$products[i].enabled} gryy{/if}">{else}<input type="text" name="left_{$products[i].productID}" value="{$products[i].in_stock}" class="prc prcss {if !$products[i].enabled}gryy{/if}">{/if}</td>


вставляем


{* BEGIN Учет количества товара по дополнительным характеристикам *}
{*<td align="right">{if $products[i].in_stock <= 0}<input type="text" name="left_{$products[i].productID}" value="{$products[i].in_stock}" class="prc prcss{if !$products[i].enabled} gryy{/if}">{else}<input type="text" name="left_{$products[i].productID}" value="{$products[i].in_stock}" class="prc prcss {if !$products[i].enabled}gryy{/if}">{/if}</td>*}
<td align="right"><input type="text" name="left_{$products[i].productID}" value="{$products[i].in_stock}" class="prc prcss{if !$products[i].enabled} gryy{/if}"{if $products[i].check_in_stock_from_options} disabled{/if}></td>
{* END Учет количества товара по дополнительным характеристикам *}


3.4. после строк (строк!)


document.getElementById('enable_' + id).value = '0';
{literal}}{/literal}


вставляем


// BEGIN Учет количества товара по дополнительным характеристикам
function CheckBoxHandler_check_in_stock_from_options(id){literal}{{/literal}
if ( document.getElementById('checkbo_check_in_stock_from_options_' + id).checked )
document.getElementById('check_in_stock_from_options_' + id).value = '1';
else
document.getElementById('check_in_stock_from_options_' + id).value = '0';
{literal}}{/literal}
// END Учет количества товара по дополнительным характеристикам


3.4. заменяем везде colspan="15" на colspan="16"


4. в файле shopping_cart.php

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


$is=GetProductInStockCount( $productID );


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if(cisfo($productID))
{
$variants = GetConfigurationByItemId(str_replace("count_","",$key));
$is=GetProductInStockCount( $productID, $variants[0]);
}
else
#END Учет количества товара по дополнительным характеристикам


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


$is=GetProductInStockCount( $res["productID"] );


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if(cisfo($res["productID"])) $is=GetProductInStockCount( $res["productID"], $res["variants"][0] );
else
#END Учет количества товара по дополнительным характеристикам



5. в файле cart_functions.php

5.1. в функции GetProductInStockCount вместо строк


function GetProductInStockCount($productID)
{
$q=db_query("select in_stock from ".PRODUCTS_TABLE." where productID=".(int)$productID);


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
#function GetProductInStockCount($productID)
#{
#$q=db_query("select in_stock from ".PRODUCTS_TABLE." where productID=".(int)$productID);

function GetProductInStockCount($productID, $variantID = false)
{
if($variantID !== false) $q = db_query("SELECT qty FROM ".PRODUCTS_OPTIONS_SET_TABLE." WHERE productID=".(int)$productID." AND variantID=".$variantID);
else $q = db_query("SELECT in_stock FROM ".PRODUCTS_TABLE." WHERE productID=".(int)$productID);
#END Учет количества товара по дополнительным характеристикам


5.2. в функции cartMoveContentFromShoppingCartsToOrderedCarts

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


db_query("INSERT INTO ".ORDERED_CARTS_TABLE.
"( itemID, orderID, name, ".
" Price, Quantity, tax ) ".
" VALUES ".
" (".(int)$item["itemID"].",".(int)$orderID.", '".xEscSQL($productComplexName)."', ".xEscSQL($price).
", ".(int)$item["Quantity"].", ".xEscSQL($tax)." )");


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if($cisfo = cisfo($productID)) db_query("INSERT INTO ".ORDERED_CARTS_TABLE."(itemID, orderID, name, Price, Quantity, tax, variantID ) VALUES (".(int)$item["itemID"].",".(int)$orderID.", '".xEscSQL($productComplexName)."', ".xEscSQL($price).", ".(int)$item["Quantity"].", ".xEscSQL($tax).", ".(int)$variants[0]." )");
else
#END Учет количества товара по дополнительным характеристикам


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


db_query( "update ".PRODUCTS_TABLE." set in_stock = in_stock - ".(int)$item["Quantity"].


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if($cisfo)
{
db_query("UPDATE ".PRODUCTS_OPTIONS_SET_TABLE." SET qty = qty - ".(int)$item["Quantity"]." WHERE productID=".(int)$productID." AND variantID=".(int)$variants[0] );
$in_stock = db_fetch_row(db_query("SELECT SUM(qty) FROM ".PRODUCTS_OPTIONS_SET_TABLE." WHERE productID=".(int)$productID));
db_query("UPDATE ".PRODUCTS_TABLE." SET in_stock=".(int)$in_stock[0]." WHERE productID=".(int)$productID);
# BEGIN email-on-qty-patch
if (CONF_NOTIFY_STOCKADMIN)
{
$qty = db_fetch_assoc(db_query("SELECT qty FROM ".PRODUCTS_OPTIONS_SET_TABLE." WHERE productID=".(int)$productID." AND variantID=".(int)$variants[0]));
if ($qty['qty'] < 1)
{
$name = db_fetch_row(db_query("SELECT option_value FROM ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." WHERE variantID=".(int)$variants[0]));
$smarty_mail->assign( "option_value", $name["option_value"] );
$productsta = db_fetch_row(db_query("SELECT name FROM ".PRODUCTS_TABLE." WHERE productID=".(int)$productID));
$smarty_mail->assign( "productstaname", $productsta["name"] );
$smarty_mail->assign( "productstid", $productID );
$stockadmin = $smarty_mail->fetch( "notify_stockadmin.tpl.html" );
xMailTxtHTMLDATA(CONF_ORDERS_EMAIL,CUSTOMER_ACTIVATE_99,$stockadmin);
}
}
# END email-on-qty-patch
}
else
#END Учет количества товара по дополнительным характеристикам


5.3. в функции cartAddToCart перед строкой

ё

$is = GetProductInStockCount( $productID );


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if(cisfo($productID)) $is = GetProductInStockCount( $productID, $variants[0] );
else
#END Учет количества товара по дополнительным характеристикам



6. в файле configurator_functions.php в функции UpdateConfiguriableProductOption

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


db_query("update ".PRODUCTS_OPTIONS_SET_TABLE." set price_surplus='".


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if(cisfo($productID)) db_query("UPDATE ".PRODUCTS_OPTIONS_SET_TABLE." SET price_surplus=".(float)$setting[$key]["price_surplus"].", qty=".(int)$setting[$key]["qty"].$where_clause );
else
#END Учет количества товара по дополнительным характеристикам


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


db_query("insert into ".PRODUCTS_OPTIONS_SET_TABLE.


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if(cisfo($productID)) db_query("INSERT INTO ".PRODUCTS_OPTIONS_SET_TABLE."(productID, optionID, variantID, price_surplus, qty) VALUES ( '".(int)$productID."', '".(int)$optionID."', '".(int)$key."', '".(float)$setting[$key]["price_surplus"]."', '".(int)$setting[$key]["qty"]."')");
else
#END Учет количества товара по дополнительным характеристикам



7. в файле order_functions.php

7.1. в функции _moveSessionCartContentToOrderedCart

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


db_query( "insert into ".ORDERED_CARTS_TABLE." ( itemID, orderID, name, Price, Quantity, tax ) ".


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if(cisfo($productID)) db_query( "INSERT INTO ".ORDERED_CARTS_TABLE." ( itemID, orderID, name, Price, Quantity, tax, variantID ) VALUES ( ".(int)$itemID.", ".(int)$orderID.", '".xEscSQL($productComplexName)."', '".xEscSQL($price)."', ".(int)$quantity.", ".xEscSQL($tax).", ".(int)$variants[0]." ) " );
else
#END Учет количества товара по дополнительным характеристикам


7.2. в функции ordOrderProcessing

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


$q1 = db_query("select itemID, Quantity FROM ".ORDERED_CARTS_TABLE." WHERE orderID=".(int)$orderID);


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
#$q1 = db_query("select itemID, Quantity FROM ".ORDERED_CARTS_TABLE." WHERE orderID=".(int)$orderID);
$q1 = db_query("select itemID, Quantity, variantID FROM ".ORDERED_CARTS_TABLE." WHERE orderID=".(int)$orderID);
#END Учет количества товара по дополнительным характеристикам


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


db_query( "update ".PRODUCTS_TABLE." set in_stock = in_stock - ".(int)$item["Quantity"].


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if(cisfo($pr[0]))
{
db_query("UPDATE ".PRODUCTS_OPTIONS_SET_TABLE." SET qty = qty - ".(int)$item["Quantity"]." WHERE productID=".(int)$pr[0]." AND variantID=".(int)$item["variantID"] );
$in_stock = db_fetch_row(db_query("SELECT SUM(qty) FROM ".PRODUCTS_OPTIONS_SET_TABLE." WHERE productID=".(int)$pr[0]));
db_query("UPDATE ".PRODUCTS_TABLE." SET in_stock=".(int)$in_stock[0]." WHERE productID=".(int)$pr[0]);
# BEGIN email-on-qty-patch
if (CONF_NOTIFY_STOCKADMIN)
{
$qty = db_fetch_assoc(db_query("SELECT qty FROM ".PRODUCTS_OPTIONS_SET_TABLE." WHERE productID=".(int)$pr[0]." AND variantID=".(int)$item["variantID"]));
if ($qty['qty'] < 1)
{
$name = db_fetch_row(db_query("SELECT option_value FROM ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." WHERE variantID=".(int)$item["variantID"]));
$smarty_mail->assign( "option_value", $name["option_value"] );
$productsta = db_fetch_row(db_query("SELECT name FROM ".PRODUCTS_TABLE." WHERE productID=".(int)$pr[0]));
$smarty_mail->assign( "productstaname", $productsta["name"] );
$smarty_mail->assign( "productstid", $pr[0] );
$stockadmin = $smarty_mail->fetch( "notify_stockadmin.tpl.html" );
xMailTxtHTMLDATA(CONF_ORDERS_EMAIL,CUSTOMER_ACTIVATE_99,$stockadmin);
}
}
# END email-on-qty-patch
}
else
#END Учет количества товара по дополнительным характеристикам



8. в файле order_status_functions.php в функции _changeIn_stock

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


$q = db_query( "select itemID, Quantity from ".ORDERED_CARTS_TABLE.


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
#$q = db_query( "select itemID, Quantity from ".ORDERED_CARTS_TABLE.
$q = db_query( "select itemID, Quantity, variantID from ".ORDERED_CARTS_TABLE.
#END Учет количества товара по дополнительным характеристикам


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


db_query( "update ".PRODUCTS_TABLE." set in_stock=in_stock + ".(int)$Quantity.


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if(cisfo($product['productID']))
{
db_query("UPDATE ".PRODUCTS_OPTIONS_SET_TABLE." SET qty = qty + ".(int)$Quantity." WHERE productID=".(int)$product["productID"]." AND variantID=".(int)$item["variantID"] );
$in_stock = db_fetch_row(db_query("SELECT SUM(qty) FROM ".PRODUCTS_OPTIONS_SET_TABLE." WHERE productID=".(int)$product["productID"]));
db_query("UPDATE ".PRODUCTS_TABLE." SET in_stock=".(int)$in_stock[0]." WHERE productID=".(int)$product["productID"]);
}
else
#END Учет количества товара по дополнительным характеристикам


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


db_query( "update ".PRODUCTS_TABLE." set in_stock=in_stock - ".(int)$Quantity.


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if(cisfo($product['productID']))
{
db_query("UPDATE ".PRODUCTS_OPTIONS_SET_TABLE." SET qty = qty - ".(int)$Quantity." WHERE productID=".(int)$product["productID"]." AND variantID=".(int)$item["variantID"] );
$in_stock = db_fetch_row(db_query("SELECT SUM(qty) FROM ".PRODUCTS_OPTIONS_SET_TABLE." WHERE productID=".(int)$product["productID"]));
db_query("UPDATE ".PRODUCTS_TABLE." SET in_stock=".(int)$in_stock[0]." WHERE productID=".(int)$product["productID"]);
}
else
#END Учет количества товара по дополнительным характеристикам



9. в файле product_functions.php

9.1. в функции UpdateProduct перед строкой


db_query("delete from ".CATEGORIY_PRODUCT_TABLE." where productID = ".(int)$productID." and categoryID = ".(int)$categoryID);


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if(cisfo($productID))
{
$in_stock = db_fetch_row(db_query("SELECT SUM(`qty`) FROM ".PRODUCTS_OPTIONS_SET_TABLE." WHERE productID=$productID AND qty>0"));
db_query("UPDATE ".PRODUCTS_TABLE." SET in_stock=".(int)$in_stock[0]." WHERE productID=".(int)$productID);
}
#END Учет количества товара по дополнительным характеристикам


9.2. в функции GetExtraParametrs

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


$sql = 'select povvt.option_value, povvt.variantID, post.price_surplus


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
#$sql = 'select povvt.option_value, povvt.variantID, post.price_surplus
$sql = 'select povvt.option_value, povvt.variantID, post.price_surplus, post.qty


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


while( $_Rowue = db_fetch_assoc($q2) ){


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
$variant_count = 0;
#END Учет количества товара по дополнительным характеристикам


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


$_Row['values_to_select'][$i]['variantID']=$_Rowue['variantID'];


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if($cisfo = cisfo($_Row['productID']))
{
$_Row['values_to_select'][$i]['qty'] = $_Rowue['qty'];
$variant_count += $_Rowue['qty'];
}
#END Учет количества товара по дополнительным характеристикам


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


$ProductsExtras[$_Row['productID']][] = $_Row;


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
if($cisfo) $_Row['values_to_select_variant_count'] = $variant_count;
#END Учет количества товара по дополнительным характеристикам


9.3. в функциях prdSearchProductByTemplateAdmin и prdSearchProductByTemplate вместо строки


" product_code, description, shipping_freight, viewed_times, min_order_amount from ".PRODUCTS_TABLE." ".


вставляем


#BEGIN Учет количества товара по дополнительным характеристикам
#" product_code, description, shipping_freight, viewed_times, min_order_amount from ".PRODUCTS_TABLE." ".
" product_code, description, shipping_freight, viewed_times, min_order_amount, check_in_stock_from_options from ".PRODUCTS_TABLE." ".
#END Учет количества товара по дополнительным характеристикам


10. в файле notify_stockadmin.tpl.html

после строки


{$productstaname}<br>


вставляем


{* BEGIN Учет количества товара по дополнительным характеристикам email-on-qty-patch *}
{if $option_value}({$option_value})<br>{/if}
{* END Учет количества товара по дополнительным характеристикам email-on-qty-patch *}



11. в файле product_brief.tpl.html

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




вставляем


{* BEGIN Учет количества товара по дополнительным характеристикам *}

{* штатное *}
{*<option value='{$product_info.product_extra[i].values_to_select[j].price_surplus}:{$product_info.product_extra[i].values_to_select[j].variantID}' {if $product_info.product_extra[i].values_to_select[j].variantID eq $product_info.product_extra[i].variantID}selected{/if}>{$product_info.product_extra[i].values_to_select[j].option_value}</option>*}

{* отсутствующий на складе вариант показывается, но задизаблен *}
{*<option value='{$product_info.product_extra[i].values_to_select[j].price_surplus}:{$product_info.product_extra[i].values_to_select[j].variantID}' {if $product_info.product_extra[i].values_to_select[j].variantID eq $product_info.product_extra[i].variantID}selected{/if}{if $product_info.product_extra[i].values_to_select[j].qty == '0'} disabled{/if}>{$product_info.product_extra[i].values_to_select[j].option_value}{if $product_info.product_extra[i].values_to_select[j].qty == '0'} (нет на складе){/if}</option>*}

{* отсутствующие на складе варианты не показываются, но если нет вообще ни одного варианта на складе, то показываются все *}
{if $product_info.product_extra[i].values_to_select[j].qty != '0' || $product_info.in_stock < 1}<option value='{$product_info.product_extra[i].values_to_select[j].price_surplus}:{$product_info.product_extra[i].values_to_select[j].variantID}' {if $product_info.product_extra[i].values_to_select[j].variantID eq $product_info.product_extra[i].variantID}selected{/if}>{$product_info.product_extra[i].values_to_select[j].option_value}</option>{/if}

{* END Учет количества товара по дополнительным характеристикам *}



12. в файле product_detailed.tpl.html

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


<option value='{$product_extra[i].values_to_select[j].price_surplus}:{$product_extra[i].values_to_select[j].variantID}' {if $product_extra[i].values_to_select[j].variantID eq $product_extra[i].variantID}selected{/if}>{$product_extra[i].values_to_select[j].option_value}</option>


вставляем


{* BEGIN Учет количества товара по дополнительным характеристикам *}

{* штатное *}
{*<option value='{$product_extra[i].values_to_select[j].price_surplus}:{$product_extra[i].values_to_select[j].variantID}' {if $product_extra[i].values_to_select[j].variantID eq $product_extra[i].variantID}selected{/if}>{$product_extra[i].values_to_select[j].option_value}</option>*}

{* отсутствующий на складе вариант показывается, но задизаблен *}
{*<option value='{$product_extra[i].values_to_select[j].price_surplus}:{$product_extra[i].values_to_select[j].variantID}' {if $product_extra[i].values_to_select[j].variantID eq $product_extra[i].variantID}selected{/if}{if $product_extra[i].values_to_select[j].qty == '0'} disabled{/if}>{$product_extra[i].values_to_select[j].option_value}{if $product_extra[i].values_to_select[j].qty == '0'} (нет на складе){/if}</option>*}

{* отсутствующие на складе варианты не показываются, но если нет вообще ни одного варианта на складе, то показываются все *}
{if $product_extra[i].values_to_select[j].qty != '0' || $product_info.in_stock < 1}<option value='{$product_extra[i].values_to_select[j].price_surplus}:{$product_extra[i].values_to_select[j].variantID}' {if $product_extra[i].values_to_select[j].variantID eq $product_extra[i].variantID}selected{/if}>{$product_extra[i].values_to_select[j].option_value}</option>{/if}

{* END Учет количества товара по дополнительным характеристикам *}


13. Заходим в админке в "Каталог товаров". При этом создадутся новые поля в таблицах, необходимые для работы модуля.

-------------

Прикрепленные файлы


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

#35 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 26 January 2015 - 01:47 PM

Что-то установил я этот модуль на чистый движок. Нифига он не работает.
Галочка появилась в Каталоге.
При выборе характеристик кол-во можно указать. Сохраняется. А дальше что?
Оформил заказ - ничего не изменилось. Пока не разбирался еще в чем проблема.

Кроме того не понятна логика работы
Например у меня есть
Платье
Красный 42 трикотаж - 1шт.
Красный 44 трикотаж - 1шт.
Синий 46 коттон - 1шт,

В результате я указываю в характеристиках
Красный - 2шт.
Синий - 1шт.
Трикотаж -2 шт.
Коттон - 1 шт.
42 - 1
44 - 1
46 - 1

И покупатель может заказать Красный 46 коттон - хотя такого товара нет, т.к. связи между характеристиками нет.
  • 0

#36 eugene_wb

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

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 26 January 2015 - 02:22 PM

В данном модуле связи никогда и не было, матрицы склада характеристик кроме как у меня пока ни у кого нет
  • 0
Изображение Изображение Изображение

#37 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 26 January 2015 - 02:27 PM

В данном модуле связи никогда и не было, матрицы склада характеристик кроме как у меня пока ни у кого нет


Да оно и без связей у меня не работает.

А по матрице ты ж не хочешь продавать ))) Я ж спрашивал сколько?
  • 0

#38 badisoft

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

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

Отправлено 26 January 2015 - 03:45 PM

И покупатель может заказать Красный 46 коттон - хотя такого товара нет, т.к. связи между характеристиками нет.

А там и не должно быть никакой связи, т.к. модуль писался явно под задачу, когда количественный учет нужен только по одной характеристике, а остальных либо нет, либо учет по ним не нужен. Там даже в каком-то месте модуля количество берется не из характеристики, для которой задаются количества, а из ПЕРВОЙ ПО СЧЕТУ характеристики. Т.е. "учетная" характеристика у любого товара должна быть:
1. единственной (с учетом)
2. первой по счету. Не помню только, вообще первой или с учетом сортировки. Вроде, с учетом сортировки.

Я его несколько причесал, что-то добавил, что-то исправил, написал инструкцию, но не более того.
Он так и остался "модулем от namer-а".
Там сам способ (алгоритм, идея) реализации учета по характеристикам неверный. Таблица не многомерная, а плоская. Слишком много ограничений вылезает, чтобы оно работало. Кто в эти ограничения укладывается по своему товару - у того нормально работает. Но как только, скажем, надо отследить количественно сразу две характеристики (например, размер и цвет), так сразу тю-тю...

Нифига он не работает.

А что не работает-то? У меня работает, а вообще я его у клиента месяца два вылизывал по вылезающим глюкам. Оттуда потом инструкция и сделана.

Хотя, если сам можешь написать (чего очень советую) - то боже упаси от этого модуля :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#39 AlexRox

    write my essay 2024! Online paper writing service reviews t

  • Пользователи
  • PipPipPip
  • 3232 сообщений
Репутация: 0
Начинающий
  • ГородPhoenix

Отправлено 12 February 2024 - 09:51 PM

Regards! My name is Alex and I'm pleased to be at shopcms.vsupport.club. I was born in Iceland but now I'm a student at the Stony Brook University.
I'm normally an diligent student but this semester I had to travel abroad to visit my kindred. I knew I wouldn’t have time to complete my business plan, so I’ve found an excellent solution to my problem - ESSAYERUDITE.COM
I had to order my paper, as I was pressed for time to finish it myself. I chose EssayErudite as my business plan writing service because it’s respected and has a lot of experience in this market.
I received my order on time, with proper style and formatting. (business plan, 61 pages, 7 days, University)
I never thought it could be possible to order business plan from an online writing service. But I tried it, and it was successful!
I would doubtless advise this essay writing service to all my friends ;)
  • 0

#40 werappergomaype

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений
Репутация: 0
Начинающий
  • ГородBeijing

Отправлено 06 March 2024 - 04:29 AM

Привет!

Так случилось, что моя двоюродная сестра нашла у Вас интересного мужчину и вышла за него замуж ^_^

Неужели здесь есть красивые люди! ;) Я Изабелла, мне 26 лет.
Я работаю моделью, преуспеваю - надеюсь, и вы тоже! Хотя, если вы очень хороши в постели, то вы вне очереди!)))
Поставьте лайк мне здесь, плз: @topsecret7847 (если жена рядом, не щелкай! :D)
Кстати, секса давно не было, найти достойного очень сложно...

И нет! Я не проститутка! Я предпочитаю гармоничные, теплые и надежные отношения. Я вкусно готовлю и не только ;) У меня ученая степень в области маркетинга.

Моя фотография:
00131-483565854.png

P.S live:i2JpMMlvzyCGRbRLi4iI
P.S Еще обо мне: Ищу достойного мужчину! Ищу достойного мужчину! Ищу достойного мужчину! 6933454
  • 0