Skip to content

Commit

Permalink
rf#113 Move some ecommerce description to SE side (#330)
Browse files Browse the repository at this point in the history
- Move some ecommerce description to SE side
- Review#1 fixes. Fix some wrong facts and markdown
- Launch drone
  • Loading branch information
duker33 committed Jun 6, 2018
1 parent 645b07f commit 572a6e0
Showing 1 changed file with 59 additions and 0 deletions.
59 changes: 59 additions & 0 deletions ecommerce.md
@@ -0,0 +1,59 @@
# Интеграция с 1С и база товаров на сайте.

Сайт берёт товары только из 1С, не из админки.
И имеет специфичный алгоритм расчёта скидки.

## Алгоритм

1C формирует выгрузку базы товаров в формате .xml и помещает её в определённой директории на Windows Server’е (контролируемым бизнесом). Выгрузка скачивается по ftp.

*Примечание: в случае проблем с ftp или Windows Server’ом обращайтесь к Хелхи.*

Чтобы выгрузка из 1С оказалась в своей базе, запустите на сервере команду "dcp exec app python manage.py update_catalog".

*Примечания:*
1. Команда "update_catalog" запускается по крону (crone) раз в 2 часа.
2. Из базы достаём только товары. Структура категорий на сайте своя. Из-за этого неприятное следствие: когда в 1С добавляют товары, в базу сайта они заезжают без родительской категории. Контентщикам приходится добавлять их руками.
3. Обновление прайс-листов для Яндекс.Маркета и в формате Excel обычно происходит так же по крону сразу после обновления каталога.
4. Сценарий использования прайс-листа в формате Excel: оптовый покупатель по линку “Скачать прайс” на Главной странице скачивает прайс, проставляет в нём нужное количество единиц товара и высылает его нам на почту.

## Определение оптовой скидки

Всего есть 5 видов цен:
1. Закупочная цена (R). Вносится в базу 1С вручную.
2. Розничная цена (S). Вносится в базу 1С вручную.
3. Оптовые цены:
* мелкий опт: S1 = S х k1;
* средний опт: S2 = S х k2;
* крупный опт: S3 = S х k3,

где k1, k2, k3 - коэффициенты оптовой цены.

*Примечание: определение значений S1, S2, S3 происходит на стороне 1С.*

Также есть пороговые значения для оптовых цен, при превышении которых применяется оптовая скидка:
* мелкий опт (B1), руб: 20000;
* средний опт (B2), руб: 50000;
* крупный опт (B3), руб: 100000.

У каждой корзины есть:
* 4 цены:
* 1 розничная (S);
* 3 оптовых (S1, S2, S3);
* 3 пороговых значения цены (B1, B2, B3).

Алгоритм определения итоговой цены заказа такой:
* если S3 > B3, значит в корзине крупный опт. Назначаем каждому товару цену крупного опта и завершаем алгоритм;
* если S2 > B2 - средний опт, аналогично;
* если S1 > B1 - мелкий опт, аналогично;

иначе - оставляем розничные цены S.

*Пример 1*

*Пользователь указал количество: 500 шт. Расчёт по розничной цене: 500 х 1111 = 555500 руб. 555500 > 100000, поэтому расчёт идёт по цене 666,16 руб за единицу. Итоговая цена: 500 х 666,16 = 333080 руб.*

*Пример 2*

*Возьмём товар - блок питания: https://www.shopelectro.ru/catalog/products/2805/. Закажем 26 шт. Видим в корзине это: 1111 руб х 26 шт. = 28886 руб. Очистим корзину. Закажем 27 шт. Видим в корзине это: 767 руб х 27 шт. = 20717 руб. Получается, мы можем купить 27 одних и тех же блоков дешевле, чем 26.*

0 comments on commit 572a6e0

Please sign in to comment.