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

CubaJas

  • Осваиваюсь на форуме
  • 27
  • 3 / 0
Ситуация такова, есть магазин в котором разные виды товаров(сорочка, чемоданы, кожгалантерея). Есть две группы покупателей, есть завязка с базой 1С. В базе прайсовые цены(фирма изначально оптовая). Первая группа покупателей-оптовые, вторая-розница. Выгрузка с 1С производится изначально с процентной надбавкой. Группе оптовых покупателей присваивается скидка, равная надбавке(присвоеной на этапе выгрузки) розничным покупателям, т.е. оптовик зайдя под своим логином, видит прайсовые цены. Проблема в том, что в фирме 3 отдела(кожа, чемодан, сорочка) и у одного оптового покупателя действуют разные скидки от прайсовой цены, т.е. возможен вариант, что он может покупать сорочку по прайсу, чемоданы с 5% скидкой от прайса, кожу с 7% надбавкой от прайса, и т.п. с разной вариацией.

ВОПРОС! Возможен ли такой хак, чтоб оптовику присвоить скидки(надбавки) на разные группы товаров(3 отдела), возможно ли создание групп товаров вообще? Как я понимаю в VirtueMart до конца не реализована система продавцов.
« Последнее редактирование: 30.09.2011, 13:18:49 от CubaJas »
*

varX

  • Живу я здесь
  • 2450
  • 141 / 5
  • разработка компонентов
VirtueMart это скорее набор скриптов для магазина, чем готовый магазин. В этом его преимущества и недостатки. Каждый частный случай функционала нужно доустанавливать или дописывать. В вашем случае - дописывать.
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

CubaJas

  • Осваиваюсь на форуме
  • 27
  • 3 / 0
В голове крутится такая идея: Создаем поле в управлении полями заполняемыми пользователем "Чемоданы" "Кожа" "Сорочки", где будет прописываться скидка(надбавка), но скрываем это поле от пользователя. Добавляю поле к товару в БД, которое будет идентифицировать, что за группа товаров. затем пишу скрипт, который проверяет это поле(группа товаров) и сверяет есть ли скидка в поле, заполненным ранее. Пишу скрипт предположительно(пока не додумал до конца) во flypage, который прибавляет(отнимает) от прайсовой цены значение, указанное в определенном поле, заполненном ранее и выводит пользователю окончательную цену. Тем более, что оптовых покупателей вношу вручную. Отпишу, что из этого получилось или не получилось.

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

varX

  • Живу я здесь
  • 2450
  • 141 / 5
  • разработка компонентов
Вам нужно добавить поле в редактирование группы покупателей. Мультиселект с категориями. В нем будете выбирать какие категории для этой группы будут со скидкой, а какие без. Все очень легко делается.
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

CubaJas

  • Осваиваюсь на форуме
  • 27
  • 3 / 0
Уважаемый, lcd25, Вы меня немного не поняли. Мне нужна индивидуальная скидка на определенного покупателя, а не на группу. Т.е. можно добавить 2 цены к товару стандартными средствами VirtueMart, и привязать цену на определенную группу. Розница видит свои цены, даже не залогинившись, а если залогинется оптовик, он увидит прайсовую цену. Это просто, а задача стоит еще некоторым оптовым покупателям сделать индивидуальные скидки на некоторые группы товаров. Сейчас займусь этим, в конце дня опишу, что сделал.

Столкнулся с проблемой. Не могу скрыть поля скидок от пользователя, при этом оставив эти поля в админке. Хотелось бы в идеале, чтоб пользователь на личной странице видел эти скидки, но редактировать их можно было только через админку. Хелп! =(
« Последнее редактирование: 14.07.2011, 13:27:33 от CubaJas »
*

varX

  • Живу я здесь
  • 2450
  • 141 / 5
  • разработка компонентов
я прекрасно все понял. По моему это вы не поняли.
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

CubaJas

  • Осваиваюсь на форуме
  • 27
  • 3 / 0
Будьте добры, тогда более подробно объясните мне. Я понимаю Ваши слова, как добавление скидок к разным группам покупателей, а не отдельно взятого пользователя... Первый раз с VirtueMart копаюсь)
*

varX

  • Живу я здесь
  • 2450
  • 141 / 5
  • разработка компонентов
Создайте для этого отдельного пользователя отдельную группу, выберите категории товаров, которые будут с оптовой скидкой в этой группе.
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

CubaJas

  • Осваиваюсь на форуме
  • 27
  • 3 / 0
Сделал вот что, средствами VirtueMart в управлении полями заполняемыми пользователем добавил 3 поля, которые соответствуют трем отделам, в которых будет писаться скидка или надбавка на ту или иную группу товара. В файле account.billing.php /administrator/components/com_virtuemart/html в строку 75 добавил:

до этого она выглядела так:
Код
$fields = ps_userfield::getUserFields( 'account');

сделал:
Код
$fields = ps_userfield::getUserFields( 'account',0,1 );

тем самым пользователь не видит поля со скидкой, а в админке каждому пользователю можно писать индивидуальные скидки.

Сейчас допиливаю ps_products.php, где задам расчет цен с учетом скидок на группы товара. Допишу скрипт в flypage.tpl.

 Конечно же разбил все товары на группы, добавив в БД соответствующие поля.

Тем самым оставляем 2 группы пользователей опт и розница, присваивая каждому отдельному пользователю все что угодно, нужное администратору. В моем случае индивидуальные скидки на определенные группы товара. В последующем очень удобно будет.

Что допишу, выложу позже. Думаю кому-нибудь пригодиться.
*

CubaJas

  • Осваиваюсь на форуме
  • 27
  • 3 / 0
Итак, встала перед нами следующая проблема: компания торгует четырьмя группами товаров (назовем их условно "Группа 1, 2, 3, 4"), и у каждого клиента на каждую группу может быть своя индивидуальная скидка, в то время как VirtueMart 1.1.7a поддерживает только единую скидку на весь товар в магазине.

Что было сделано и допилино:

Через панель администрирования и пункта меню "Настройки" - "Управление полями, заполняемыми пользователем" добавляем четыре новых поля: discount_group_1, 2, 3, 4, тип — text. Префикс "vm" им присвоится автоматически.

Добавляем через phpMyAdmin в таблицу jos_vm_product  поле product_group_id, тип varchar(1), где у каждого товара будет храниться код группы, к которой он принадлежит. Тут небольшая ремарка, каким образом это поле заполняется у нас. Выгрузка данных происходит в автоматическом или ручном режиме из 1С:Предприятие 8.1 с помощью самописной обработки в файл форма csv. Именно эта обработка, помимо основных данных о товаре, проверяет также, к какой группе он принадлежит, и выгружает в файл код этой группы (1, 2, 3 или 4). Файл автоматически отправляется по FTP на сайт, где по расписанию CRON выполняет скрипт загрузки или обновления данных в таблице товаров. Если наполнение и редактирование этой таблицы у вас происходит вручную, то нет никаких проблем добавить в админку возможность выводить/править и это дополнительное поле (гугл в помощь, как это сделать =) ).

Создаем отдельный скрипт, который перед выводом цены товара будет проверять его группу, а также скидку клиента на эту группу, если она есть. Вот его текст:

Код: php
<?php

function check_discount ($product_id, $price){

//Вызываем встроенную функцию проверки залогинен ли пользователь
$user =& JFactory::getUser();

if ($user->guest) {
// Пользователь не залогигнен, просто возвращаем базовую цену товара
return $price;
} else {
// Пользователь залогинен, погнали проверять группы и скидки

// Получаем код группы, к которой принадлежит товар
$product_group_id = ps_product::get_field($product_id, "product_group_id");
// Делаем запрос к таблице с данными пользователя
$db = new ps_DB;
$q = "SELECT * FROM #__{vm}_user_info WHERE user_id='". $user->id . "'";
$db->query($q);
$db->next_record();

//Присваиваем переменным значения полей со скидками
$discount_group_1 = $db->f("vm_discount_group_1");
$discount_group_2 = $db->f("vm_discount_group_2");
$discount_group_3 = $db->f("vm_discount_group_3");
$discount_group_4 = $db->f("vm_discount_group_4");

// Проверяем, к какой группе принадлежит товар, и в соответствии с этим присваиваем переменной $skidka размер скидки по этой группе
switch ($product_group_id){
case 1:
$skidka = $discount_group_1;
break;
case 2:
$skidka = $discount_group_2;
break;
case 3:
$skidka = $discount_group_3;
break;
case 4:
$skidka = $discount_group_4;
break;
default:
$skidka = 0;
break;
}

// Теперь проверяем значение поля скидки, если в начале стоит "+", то наоборот делаем наценку на товар (бывает и такое, например, манагер клиента сидит на отстеге =) )
if (strstr($skidka, "+")){
str_replace("+", "", $skidka);
if (is_numeric($price)){
$price = round($price * (1 + $skidka / 100));
} else {
$price['product_price'] = round($price['product_price'] * (1 + $skidka / 100));
}
} else {
if (is_numeric($price)){
$price = round($price * (1 - $skidka / 100));
} else {
$price['product_price'] = round($price['product_price'] * (1 - $skidka / 100));
}
}

// Готово! Возвращаем пересчитанную со скидкой и округленную до рубля цену
return $price;
}
}

?>

Записываем этот скрипт под именем check_discount.php и кидаем в каталог administrator/components/com_virtuemart/classes/

Допиливаем под наши нужды функции в файле ps_product.php, который лежит в том же каталоге:

Ищем функцию get_price, которая возвращает цену товара, начинается она вот так:

Код: php
function get_price($product_id, $check_multiple_prices=false, $overrideShopperGroup='' ) {

Сразу после этой строчки прописываем файл с нашей функцей проверки скидки:

Код: php
require_once(CLASSPATH . 'check_discount.php' );

Идем в самый конец функции get_price, где она возвращает цену вот этой строчкой:

Код: php
return $price;

Добавляем перед ней вызов нашей функции проверки скидки:

Код: php
$price = check_discount($product_id, $price);

Теперь нужно запретить пользователю возможность редактировать дополнительные поля со скидками, которые мы создали. В каталоге /administrator/components/com_virtuemart/html/  открываем файл account.billing.php, и ищем следующий блок:

Код: php
// Handle NO_REGISTRATION
$skip_fields = array();
if ( VM_REGISTRATION_TYPE == 'NO_REGISTRATION' || VM_REGISTRATION_TYPE == 'OPTIONAL_REGISTRATION' && empty($d['register_account'])) {
global $default;
$default['email'] = $db->f('user_email');
$skip_fields = array( 'username', 'password', 'password2', );
}

Добавляем сразу после него:

Код: php
//убираем показ этих полей независимо от настроек регистрации
$skip_fields = array( 'vm_discount_group_1', 'vm_discount_group_2', 'vm_discount_group_3', 'vm_discount_group_4' );
Бингонах! )))
*

CubaJas

  • Осваиваюсь на форуме
  • 27
  • 3 / 0
*

iaguar

  • Новичок
  • 9
  • 0 / 0
Помоги пожалуйста с VirtueMart. На форуме есть ответ как присвоить скидку на разные группы товаров разным групам пользователей. Но мне не понятно как "добавить поле в редактирование группы покупателей. Мультиселект с категориями. В нем будете выбирать какие категории для этой группы будут со скидкой, а какие без. Все очень легко делается."
*

iaguar

  • Новичок
  • 9
  • 0 / 0
*

Gitarist

  • Новичок
  • 1
  • 0 / 0
Понравилось решение, реально работает, в каталоге цены отображаются с учётом присвоенной скидки, но встала задача отобразить данную цену в корзине, на данный момент в корзину ложиться только реальная цена. Вопрос как заставить корзину подхватывать цену со скидкой?)
 
*

CubaJas

  • Осваиваюсь на форуме
  • 27
  • 3 / 0
Я уже сейчас не помню, правил ли я корзину, просмотрев код, я не нашел своего кода, поэтому почти с уверенностью скажу, что корзину я не правил... Цена отображается скидочная. Какая версия VirtueMart у Вас?
*

CubaJas

  • Осваиваюсь на форуме
  • 27
  • 3 / 0
Вот что думаю. У Вас две группы покупателей? У меня опт и розница. Задача встала добавить группе опт скидки. VirtueMart поддерживает разные цены для разных групп. Честное слово, уже подзабыл, но на днях покопаю. =)
*

Prokofe

  • Новичок
  • 2
  • 0 / 0
У меня вот вопрос, можно ли для разных групп пользователей сделать вообще разные цены? То есть без всяких там скидок, просто чтоб изначально можно было указать разную цену.
*

Messir

  • Давно я тут
  • 532
  • 73 / 0
  • могу укусить:)
У меня вот вопрос, можно ли для разных групп пользователей сделать вообще разные цены? То есть без всяких там скидок, просто чтоб изначально можно было указать разную цену.
Администрирование - список товаров - жамкаем на цене товара, появляется окно, там указываем цену и выбираем, для какой группы. Указывать можно совершенно разные цены.
*

Prokofe

  • Новичок
  • 2
  • 0 / 0
У меня установлена вторая версия, и стоит дэмо контент на чистой жумле. Так вот на цены у меня просто не жмякается в списке товаров, вот.. в чем проблема?
*

Messir

  • Давно я тут
  • 532
  • 73 / 0
  • могу укусить:)
У меня установлена вторая версия, и стоит дэмо контент на чистой жумле. Так вот на цены у меня просто не жмякается в списке товаров, вот.. в чем проблема?
Про ВМ 2.0 ничего не скажу, поскольку пока его не ковырял. На предыдущих версиях можно установить именно так, как я написал.
*

dobv

  • Новичок
  • 8
  • 0 / 0
Я уже сейчас не помню, правил ли я корзину, просмотрев код, я не нашел своего кода, поэтому почти с уверенностью скажу, что корзину я не правил... Цена отображается скидочная. Какая версия VirtueMart у Вас?
Да-да, все отлично работает, но как буть с корзиной?
Joomla 1.5.25, VM 1.1.9
Пожалуйста помогите - очень нужно. Спасибо
*

dobv

  • Новичок
  • 8
  • 0 / 0
Да-да, все отлично работает, но как буть с корзиной?
Joomla 1.5.25, VM 1.1.9
Пожалуйста помогите - очень нужно. Спасибо
Сам спросил - сам решил, может комуто поможет
Ищем строку:
Код
function get_adjusted_attribute_price ($product_id, $description='') {
Сразу после этой строчки прописываем файл с нашей функцей проверки скидки:
Код
require_once(CLASSPATH . 'check_discount.php' );
Идем в самый конец функции function get_adjusted_attribute_price, где она возвращает цену вот этой строчкой:
Код
return $price;
Добавляем перед ней вызов нашей функции проверки скидки:
Код
$price = check_discount($product_id, $price);
и все, ответ был рядом
« Последнее редактирование: 21.02.2012, 01:19:54 от dobv »
*

kpk17

  • Захожу иногда
  • 257
  • 2 / 0
а как-то можно вывести две цены? Скажем я в привелегированной группе и хочу знать цену других. Можно это реализовать?
*

Katen`ka

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
в магазине на cms Joomla VirtueMart компонент магазина. Почему то стал высвечивать такие знаки COM_VIRTUEMART_PRODUCT_XREF_CAT
над товаром. Что они означают? Все должно быть на русском языке. и еще выводит пользователю в сортировку по такому шифрованию . они не поймут и некрасиво это! КАк убрать это ? А еще проблема работаю на быстром старте шаблона и там когда я пыталась поменять названия меню на русские он выводит ? На остальных сайтах нормально  .. От чего завист что за плагин эту каку делает?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] "Цена от:" на странице категорий

Автор kry

Ответов: 27
Просмотров: 7651
Последний ответ 23.04.2016, 00:18:32
от morda77
количество товаров на странице

Автор gazman

Ответов: 0
Просмотров: 2168
Последний ответ 03.03.2016, 21:50:39
от gazman
Скидка группы на товар, имеющий специальную цену для этой группы

Автор Disdain

Ответов: 1
Просмотров: 2020
Последний ответ 28.01.2016, 13:32:12
от Disdain
Объединение похожих товаров в карточке товара

Автор newjey

Ответов: 8
Просмотров: 1394
Последний ответ 09.10.2015, 14:39:31
от newjey
Убрать привязку цены к группе покупателей

Автор newjey

Ответов: 1
Просмотров: 1069
Последний ответ 07.10.2015, 14:19:14
от fsv