Форум русской поддержки Joomla!® CMS
08.12.2016, 04:15:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

VirtueMart - несколько складов

 (Прочитано 6590 раз)
0 Пользователей и 1 Гость смотрят эту тему.
necro2000
Осваиваюсь на форуме
***

Репутация: +4/-1
Offline Offline

Сообщений: 32


« : 19.07.2006, 13:38:59 »

Есть необходимость для отображения наличия товара на нескольких складах (в двух разных городах). Кто-нибудь как-нибудь реализовывал такой момент?
Записан
necro2000
Осваиваюсь на форуме
***

Репутация: +4/-1
Offline Offline

Сообщений: 32


« Ответ #1 : 25.07.2006, 14:56:32 »

Люди, есть кто живой? Не поверю, что бы ни у кого, действительно, работавшего с инет-шопом, не возникало такой необходимости.
Записан
t0xas
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 38


Только страсть познания делает нас людьми!


« Ответ #2 : 31.03.2010, 14:29:31 »

АУууу я тоже хочу это знать! Сколько примерно трудозатрат придется использовать чтобы такую вещь родить?
Записан
Dobryak
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 109


« Ответ #3 : 31.03.2010, 18:24:04 »

Присоединяюсь! Не исключаю возможность скинуться и попросить гуру реализовать это!
Записан
t0xas
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 38


Только страсть познания делает нас людьми!


« Ответ #4 : 01.04.2010, 07:38:24 »

Гуру не гуру, а вот вопрос насколько это сложно? Впринципе товары одни, надо только цены из других городов брать и кол-во товара, и как-то это в админки должно отображатся, в принципе нужно создать таблицы с городами, куда вписывать кол-во товара на складах этих городов и цены, потом это привязать к основной таблице товара, и выводить у каждого товара выбор города и кол-во, так же для вывода в основном макете(на морду) сделать выбор города и в зависимости от выбранного города показывать нужную цену и кол-во товара, но, есть но, я VirtueMart почти не копал, если его копать, а он не маленький, убьется много времени. Так вот мне нужен всего лишь совет, мысли у меня верные? Стоит за такое браться?
Записан
MMONSTERR
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 59



« Ответ #5 : 04.06.2011, 10:16:03 »

10: 00 Все утро сегодня убил (в интернете абсолютно ничего не нашел), но наконец нашел лазейку как сделать два склада на одном сайте ... Joomla 1.5 + 2 склада на VirtueMart

я еще копаю, но как все сделаю напишу на блоге (alex-leo.ru) - наверное через месяцок, т.к пока прикручу 1Сv8 и несколько складов уйдет много времени.

Вот направление и мысль (это только для программистов). У нас будет как бы 3 Joomla с одной базой допустим:
\magazin
\magazin\sklad1
\magazin\sklad2

визуально они вообще ничем не отличаются, т.к шаблон один, файлы одни и те же, база одна
таблицы будут следующие
jos_ ....
Jos_vm_ ... (первый магазин, по умолчанию создает virtuemart)
Jos_sklad2_ ... (второй магазин), как создать эти таблицы - проявите хитрость )... у меня ушло примерно 5 минут ) + компонент akeeba

префикс для VirtueMart меняется тут \www\sklad2\administrator\components\com_virtuemart\virtuemart.cfg.php  define('VM_TABLEPREFIX', 'gybkina');

еще пришла мысль... т.к контент по сути будет повторятся 3 раза, надо два сайта закрыть от индексации.

ps метод геморный, но уж очень я люблю Joomla )

11:00 Вообщем этот метод не годится, т.к корзина начинает страшно тупить... надо четко разделять все базы.
« Последнее редактирование: 04.06.2011, 10:53:29 от MMONSTERR » Записан
MMONSTERR
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 59



« Ответ #6 : 04.06.2011, 10:28:21 »

и еще вопрос, планируется ли в новой версии VirtueMart поддержка нескольких складов и магазинов? ... на официальном сайте толком ничего не нашел.
Записан
flyingspook
Moderator
*****

Репутация: +226/-9
Offline Offline

Сообщений: 3534


« Ответ #7 : 04.06.2011, 11:11:50 »

а назначить еще продавца (как второй склад) не вариант?
Записан
MMONSTERR
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 59



« Ответ #8 : 04.06.2011, 11:14:26 »

А различное количество товара зависит от продавцов ? У меня задача... есть два магазина, номенклатура одна и таже, но он может быть на одном только складе, либо допусти 2 на одном и 10 на другом. Счета естественно тоже буту формироваться разные ... - но это потом, главное что бы количество товара отображалось отдельно на одном и другом складе, такое можно сделать?
Записан
MMONSTERR
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 59



« Ответ #9 : 04.06.2011, 16:21:31 »

16:00 Сейчас буду тестировать другие версии VirtueMart > 1.1.8 ... в текущей 1.1.8 - это практически не возможно реализовать. Остановился на варианте , про который писал в 10:00 . Только с небольшими изменениями ...

Если секретные коды у Joomla делать одинаковыми, то авторизация на всех трех сайтах проходит одновременно, но тут начинаются косяки с корзиной ... поэтому сделал секретки разные, если пользователю надо купить товар на другом складе, то ему необходимо заново авторизоваться ... зато корзины получаются разные.

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

Подскажите кто знает, как програмно авторизовать пользователя?? зная его сессию??
« Последнее редактирование: 04.06.2011, 16:28:07 от MMONSTERR » Записан
zaidonoff
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 1


« Ответ #10 : 28.03.2013, 07:58:46 »

10: 00 Все утро сегодня убил (в интернете абсолютно ничего не нашел), но наконец нашел лазейку как сделать два склада на одном сайте ... Joomla 1.5 + 2 склада на VirtueMart
Да вы, батенька, извращенец, однако =)
Всё намного проще:
Реализовать в Joomla остатки по нескольким складам можно гораздо проще.
1) Добавляем в БД пару таблиц:
CREATE TABLE IF NOT EXISTS `jos_vm_product_stock` (
  `product_stock_id` int(11) NOT NULL auto_increment,
  `product_id` int(11) NOT NULL default '0',
  `product_stock` decimal(15,2) default NULL,
  `product_stock_vdate` int(11) default NULL,
  `product_stock_edate` int(11) default NULL,
  `cdate` int(11) default NULL,
  `mdate` int(11) default NULL,
  `stockroom_id` int(11) default '0',
  PRIMARY KEY  (`product_stock_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
CREATE TABLE IF NOT EXISTS `jos_vm_stockroom` (
  `stockroom_id` int(11) NOT NULL auto_increment,
  `stockroom_name` varchar(32) default NULL,
  `stockroom_desc` text,
  `stockroom_publish` char(1) NOT NULL default 'N',
  `stockroom_type` varchar(15) default 'default',
  PRIMARY KEY  (`stockroom_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2130 ;

И меняем часть кода всего в паре файликов:
Вот этот код будет отвечать за вывод таблицы с остатками по складам в карточке товара:
Код:
<tr>
  <td colspan="3"><?php
  if( $this->get_cfg( 'showAvailability' )) {
  echo $product_availability;
  }
  ?>
  </td>
  <!-- <td colspan="2"><br /><?php echo $addtocart ?></td> -->
</tr>
Его следует подретушировать при необходимости в файле
/public_html/components/com_virtuemart/themes/<у кого какая там тема (как правило, default)>/templates/product_details/flypage.tpl.php

Это сама таблица складов с остатками:
Код:
// Yes, we have XX products in stock!
elseif( ($product_in_stock >= 1 && CHECK_STOCK) ) { ?>
<div>
<?php echo $VM_LANG->_('PHPSHOP_PRODUCT_FORM_IN_STOCK') ?>:
</div>
<table style="width:100%; margin: 10px 0px 20px; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="3">
<tbody>
<?php
foreach( $product_stockroom['stockroom_name'] as $key => $value ) {
if($product_stockroom['stockroom_stock'][$key] > 0) { ?>
<tr>
<td style="border-top: 1px solid #d1d2d3; border-bottom: 1px solid #d1d2d3;">
<strong>
<?php echo $value; ?>
</strong>
</td>
<td style="border-top: 1px solid #d1d2d3; border-bottom: 1px solid #d1d2d3;">
<?php echo $product_stockroom['stockroom_desc'][$key]; ?>
</td>
</tr>
<?php }} ?>
  <!-- <?php echo $product_in_stock ?> -->
  </tbody></table>
  <span>Остаток товара актуален на начало текущего дня.</span>
  <?php
}
Код нужно поменять в файле
/public_html/components/com_virtuemart/themes/<у кого какая там тема (как правило, default)>/templates/common/availability.tpl.php

Ну и, самое главное, аккуратно внедряем новую переменную остатков по складам в сам модуль ядра сайта:
Код:
function get_availability($prod_id) {

$html = '';
$availArr = $this->get_availability_data( $prod_id );
if( !empty( $availArr )) {
$tpl = vmTemplate::getInstance();
$tpl->set( 'product_id', $prod_id );
$tpl->set( 'product_available_date', $availArr['product_available_date'] );
$tpl->set( 'product_availability', $availArr['product_availability'] );
$tpl->set( 'product_in_stock', $availArr['product_in_stock'] );
$tpl->set( 'product_stockroom', $availArr['product_stockroom'] );
$html = $tpl->fetch( 'common/availability.tpl.php');
}
return $html;
}
/**
* Retrieves the data related to availability information
*
* @param int $prod_id
* @return array
*/
function get_availability_data( $prod_id) {
$is_parent = $this->parent_has_children( $prod_id );
$availArr = array();
if( !$is_parent ) {
$availArr['product_id'] = $prod_id;
$availArr['product_available_date'] = $this->get_field( $prod_id, 'product_available_date');
$availArr['product_availability'] = $this->get_field( $prod_id, 'product_availability');
$availArr['product_in_stock'] = $this->get_field( $prod_id, 'product_in_stock');
$availArr['product_stockroom'] = $this->get_stockrooms( $prod_id );
}
return $availArr;
}

/**
* Функция вытаскивает склады с ненулевыми остатками
*/
function get_stockrooms($pid) {
$db = new ps_DB;
$q  = "SELECT product_stock_id, product_stock FROM #__{vm}_product_stock ";
$q .= "WHERE product_id='$pid' ";

$db->setQuery($q); $db->query();

$i = 0;
$list = Array();
while($db->next_record()) {
$list[$i] = $db->f("product_stock_id");
$GLOBALS['product_info'][$pid]["stockroom"]["stockroom_stock"][$i] = $db->f("product_stock");
$i++;
}

foreach( $list as $key => $value ) {
$db_stock = new ps_DB;
$q_st  = "SELECT stockroom_name, stockroom_desc FROM #__{vm}_stockroom ";
$q_st .= "WHERE stockroom_id='$value' ";

$db_stock->query($q_st);
$db_stock->next_record();
if( $db_stock->num_rows() > 0 ) {
$GLOBALS['product_info'][$pid]["stockroom"]["stockroom_name"][$key] = $db_stock->f("stockroom_name");
$GLOBALS['product_info'][$pid]["stockroom"]["stockroom_desc"][$key] = $db_stock->f("stockroom_desc");
}
}

return $GLOBALS['product_info'][$pid]["stockroom"];
}
Тут мне пришлось добавить одну новую функцию и модифицировать пару имевшихся...
Путь файла:
/public_html/administrator/components/com_virtuemart/classes/ps_product.php

И в общем-то, всё.
Записан
max_2002
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 1


« Ответ #11 : 23.03.2015, 22:24:15 »

Ребята, подскажите, о какой версии VM тут идет речь?
Удалось ли реализовать кому-нибудь несколько складов что бы оно работало?
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet