Jeiwan / spikes_test

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

#Задание

  1. в магазин приходит документ типа "накладная", содержащий сведения о новой поставке товаров - название, количество, цена; при приходовании накладной указанные в ней товары поступают в продажу;

  2. поступившие в продажу товары можно продавать, причем в одном чеке может быть больше одного товара;

  3. при уменьшении количества единиц товара ниже определенного минимума автоматически формируется заявка на поступление данного товара в магазин, причем заявку можно редактировать вручную; несколько заявок можно объединить в одну; после формирования заявки из нее можно сделать соответствующую накладную, при этом заявка считается выполненной;

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

#Модели

  1. Article — главная база товаров. Хранит артикул (id) и название товара. Именно из этой базы берутcя данные для создания товара в магазине, выбора товара при создании накладной и заявки.

  2. Order — заказ. Имеет несколько позиций (OrderPosition).

  3. OrderPosition – позиция заказа.

  4. Product — товар в магазине. Связан с моделью Article, от которой наследует название товара.

  5. User — пользователь.

  6. Admin::Invoice — накладная. Имеет несколько позиций (Admin::InvoicePosition).

  7. Admin::InvoicePosition – позиция накладной.

  8. Admin::Request — заявка на поставку товара. Имеет несколько позиций (Admin::RequestPosition)

  9. Admin::RequestPosition – позиция заявки.

  10. Admin::Setting — модель для хранения настроек. Настройка в приложении только одна — общий для всех товаром минимальный остаток.

#Данные для входа Тестовый сервер: https://spikes-test.herokuapp.com/

Администратор: логин — admin, пароль — adminadmin

Покупатель: логин — buyer, пароль — buyerbuyer

#Сценарий

  1. Администратор

    1. Заходит в магазин и переходит на страницу "Накладные", нажимает "Приходовать новую накладную" и попадает на страницу создания накладной.
    2. На странице создания накладной заполняет позиции накладной, для каждого товара выбирая наименование, количесто и цену. После заполнения позиций нажимает "Приходовать".
    3. Открыватется страница "Накладные", на которой представлен список всех накладных. При создании накладной в магазине создаются товары, что можно проверить перейдя на страницу "Товары".
    4. На странице "Товары" для каждого товара можно задать минимальный остаток, при достижении которого будет создана новая заявка на поставку. Общий для всех товаров минимальной осаток задается на странице "Заявки".
    5. На странице "Заявки" отображаются созданные администратором заявки и заявки, атоматически созданные для товаров с низким остатком.
    6. При нажатии на кнопку "Создать заявку" открывается страница, на которой можно создать заявку, указав для каждой позиции наименование и количество.
  2. Покупатель

    1. Покупатель заходит в магазин и видит список товаров. Товар можно добавить в корзину, нажав на кнопке "В корзину".
    2. Нажав на ссылку "Корзина", покупатель попадает на страницу с корзиной, на которой приводится список положенных покупателем товаров в корзину.
    3. Товар можно убрать из корзины, нажав "Убрать" рядом с позицией товара.
    4. Товары из корзины можно оформить в заказ, нажав кнопку "Оформить".
    5. При оформлении заказа, уменьшается количество товаров в магазине и проверяется, не пересечен ли минимальный остаток товара, заданный администратором. Если пересечен, то автоматически создается заявка на поставку этого товара.
  3. Администратор

    1. При достижении минимального остатка, для товара создается заявка.
    2. Новую заявку можно отредактировать и изменить количество или наименование. Несколько новых заявко можно объединить в одну, отметив их в списке заявок и нажав "Объединить заявки".
    3. Новую заявку можно подтвердить, нажав "Подвердить" рядом с заявкой. После этого статус заявки изменится на "Ожидание".
    4. Заявку со статусом "Ожидание" можно приходовать, нажав рядом с ней "Приходовать". После этого откроется страница с созданием накладной, где будут указаны позиции из заявки.
    5. После создания накладной, товар поступит в магазин, а статус заявки изменится на "Выполнена".

About


Languages

Language:Ruby 95.1%Language:CSS 2.9%Language:CoffeeScript 1.4%Language:JavaScript 0.6%