Автор Тема: Нулевая закупочная цена  (Прочитано 348 раз)

07 Января 2016, 23:58:09
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте.
Новичек я в Presta, поэтому строго не пинайте. Мой первый пост на этом форуме.
Всегда делал сайты на DLE ибо задачи стояли как правило в новостных проектах.
Сейчас потребовался полноценный магазин. И выбор пал на PrestaShop.
Так вот, о сути проблемы с которой я столкнулся.

Ставлю в приход товары, все ставится, проблем нет. По складам расходится, перебрасывается, отгружается. Виден остаток, все красиво.
Появилась необходимость ставить в приход товары с нулевой стоимостью закупки. Ну думаю сейчас оставлю нолик и будет все пучком. Да не тут-то было. Не дает с нулевой закупкой оприходоваться.

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

Заранее благодарен.
08 Января 2016, 11:46:26
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1190
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Товар сохраняется с нулевой стоимостью без проблем. Проблема только при импорте с csv, было обсуждение такого вопроса.
08 Января 2016, 12:54:44
Ответ #2
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Хорошо. Зайдем с другой стороны.

Заказы -> Управление складом -> Добавить запасы
- Количство для добавления - указываем
- Доступно для продажи - Да
- Склад - выбираем нужный
- Цена за единицу (налог не включен) - 0 (или 0.00)
- Валюта - выбираем нужную
- Заголовок - Increase

Жмякаем "Добавить в запасы" и получаем следующую ошибку: Произошла ошибка. Не были добавлены запросы.

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

Заранее благодарен.
08 Января 2016, 13:07:17
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 2156
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
В заказах не должно быть управление складом.
В складах указывать только количество, цену указывать в товарах.
08 Января 2016, 13:14:11
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 20836
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Сначала создаете склады.
Затем в товарах задаете цены и выбираете расширенную систему хранения, связываете товар со складом.
После этого при выборе Запас -> Управление складом -> Добавить запасы в поле цены будет цена товара. Меняте количества и сохраняете.
При расширенной системе запасов (склады) закупочная цена обязательно должна быть указана.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
08 Января 2016, 13:19:02
Ответ #5
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85943
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
08 Января 2016, 13:42:01
Ответ #6
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Сначала создаете склады.
Затем в товарах задаете цены и выбираете расширенную систему хранения, связываете товар со складом.
После этого при выборе Запас -> Управление складом -> Добавить запасы в поле цены будет цена товара. Меняте количества и сохраняете.
Все это сделано и все прекрасно работает.

При расширенной системе запасов (склады) закупочная цена обязательно должна быть указана.
Так вот поэтому и стал вопрос: как сделать НУЛЕВУЮ стоимость закупки? Т.е. цена закупки не 0.01, не 0.и куча нулей 1, а именно 0.00.

Предвкушая вопрос сразу отвечу. Да, такое бывает чтобы была нулевая закупка.
Так же я в первом посте писал, что можно было бы сделать все как услуги, но есть необходимость хранить все именно на складах. А услугу как я понял на складах хранить нельзя.
08 Января 2016, 13:47:13
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85943
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вам нужно переделать базовый класс /classes/stock/StockManager.php.
Удалить функции проверки закупочной цены.
$price_te = round((float)$price_te, 6);
        if ($price_te <= 0.0) {
            return false;
}
В стандарном prestashop так не сделать.
08 Января 2016, 13:52:54
Ответ #8
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вам нужно переделать базовый класс /classes/stock/StockManager.php.
Удалить функции проверки закупочной цены.
$price_te = round((float)$price_te, 6);
        if ($price_te <= 0.0) {
            return false;
}
В стандарном prestashop так не сделать.

Думаю будет достаточно?
if ($price_te < 0.0)
Сам отвечу, достаточно. Остается проверка на "минус".

Огромное Вам спасибо! Куда занести пиво? Всмысле есть тут карма не форуме?
08 Января 2016, 14:03:26
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 763
  • Репутация: +6/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Попробуйте. Если будет выдавать ошибку, то нужно искать где еще проверяет данные.
Обычно несколько уровней проверки, в шаблоне javascript, в контроллере и базе данных. 
08 Января 2016, 14:15:07
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 2156
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Огромное Вам спасибо! Куда занести пиво? Всмысле есть тут карма не форуме?
Было бы неплохо открыть на форуме пункт приема пива  :)
Карма есть, только плюсовать можешь после 20-30 постов. 
08 Января 2016, 14:17:17
Ответ #11
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Nikola, по карме ясно, спасибо.

Итак, если кому понадобится, решение следующее:

В файле /classes/stock/StockManager.php ищем:
$price_te = round((float)$price_te, 6);
        if ($price_te <= 0.0) {
            return false;
}

меняем на:
$price_te = round((float)$price_te, 6);
        if ($price_te < 0.0) {
            return false;
}

Таким образом проверка на корректность ввода сохраняется, но проверяется только "минусовая" цена.

Спасибо DarinSr!

Тему можно закрывать.