0 Пользователей и 1 Гость просматривают эту тему.
  • 11 Ответов
  • 8548 Просмотров
*

necro2000

  • Осваиваюсь на форуме
  • 32
  • 4 / 1
VirtueMart - несколько складов
« : 19.07.2006, 13:38:59 »
Есть необходимость для отображения наличия товара на нескольких складах (в двух разных городах). Кто-нибудь как-нибудь реализовывал такой момент?
*

necro2000

  • Осваиваюсь на форуме
  • 32
  • 4 / 1
Re: VirtueMart - несколько складов
« Ответ #1 : 25.07.2006, 14:56:32 »
Люди, есть кто живой? Не поверю, что бы ни у кого, действительно, работавшего с инет-шопом, не возникало такой необходимости.
*

t0xas

  • Осваиваюсь на форуме
  • 38
  • 3 / 0
  • Только страсть познания делает нас людьми!
Re: VirtueMart - несколько складов
« Ответ #2 : 31.03.2010, 14:29:31 »
АУууу я тоже хочу это знать! Сколько примерно трудозатрат придется использовать чтобы такую вещь родить?
*

Dobryak

  • Захожу иногда
  • 104
  • 2 / 0
Re: VirtueMart - несколько складов
« Ответ #3 : 31.03.2010, 18:24:04 »
Присоединяюсь! Не исключаю возможность скинуться и попросить гуру реализовать это!
*

t0xas

  • Осваиваюсь на форуме
  • 38
  • 3 / 0
  • Только страсть познания делает нас людьми!
Re: VirtueMart - несколько складов
« Ответ #4 : 01.04.2010, 07:38:24 »
Гуру не гуру, а вот вопрос насколько это сложно? Впринципе товары одни, надо только цены из других городов брать и кол-во товара, и как-то это в админки должно отображатся, в принципе нужно создать таблицы с городами, куда вписывать кол-во товара на складах этих городов и цены, потом это привязать к основной таблице товара, и выводить у каждого товара выбор города и кол-во, так же для вывода в основном макете(на морду) сделать выбор города и в зависимости от выбранного города показывать нужную цену и кол-во товара, но, есть но, я VirtueMart почти не копал, если его копать, а он не маленький, убьется много времени. Так вот мне нужен всего лишь совет, мысли у меня верные? Стоит за такое браться?
*

MMONSTERR

  • Захожу иногда
  • 59
  • 3 / 0
Re: VirtueMart - несколько складов
« Ответ #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

  • Захожу иногда
  • 59
  • 3 / 0
Re: VirtueMart - несколько складов
« Ответ #6 : 04.06.2011, 10:28:21 »
и еще вопрос, планируется ли в новой версии VirtueMart поддержка нескольких складов и магазинов? ... на официальном сайте толком ничего не нашел.
*

flyingspook

  • Moderator
  • 3590
  • 247 / 9
Re: VirtueMart - несколько складов
« Ответ #7 : 04.06.2011, 11:11:50 »
а назначить еще продавца (как второй склад) не вариант?
*

MMONSTERR

  • Захожу иногда
  • 59
  • 3 / 0
Re: VirtueMart - несколько складов
« Ответ #8 : 04.06.2011, 11:14:26 »
А различное количество товара зависит от продавцов ? У меня задача... есть два магазина, номенклатура одна и таже, но он может быть на одном только складе, либо допусти 2 на одном и 10 на другом. Счета естественно тоже буту формироваться разные ... - но это потом, главное что бы количество товара отображалось отдельно на одном и другом складе, такое можно сделать?
*

MMONSTERR

  • Захожу иногда
  • 59
  • 3 / 0
Re: VirtueMart - несколько складов
« Ответ #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

  • Новичок
  • 1
  • 0 / 0
Re: VirtueMart - несколько складов
« Ответ #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

  • Новичок
  • 1
  • 0 / 0
Re: VirtueMart - несколько складов
« Ответ #11 : 23.03.2015, 21:24:15 »
Ребята, подскажите, о какой версии VM тут идет речь?
Удалось ли реализовать кому-нибудь несколько складов что бы оно работало?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Количество просмотров товара VirtueMart Существует?

Автор grishin

Ответов: 38
Просмотров: 9801
Последний ответ 22.08.2020, 08:44:29
от rsn
Не выводит списком Настраиваемое поле в VirtueMart 5.0

Автор ЛюдмилаМир

Ответов: 2
Просмотров: 1726
Последний ответ 25.08.2019, 16:27:04
от ЛюдмилаМир
Joomla VirtueMart помощь в переводе

Автор akkord31

Ответов: 0
Просмотров: 1694
Последний ответ 21.05.2019, 09:14:02
от akkord31
Миграция с Joomla 1.5 на 3 с VirtueMart 1.1.9 stable на свежую. Кто поможет?

Автор Гриша-Десантник

Ответов: 7
Просмотров: 1870
Последний ответ 23.04.2019, 10:22:25
от draff
Переход на https VirtueMart 1.1.4 проблемы с фото

Автор Sergey1984

Ответов: 4
Просмотров: 2011
Последний ответ 25.10.2018, 20:56:54
от Sergey1984