Сделай мне приложение для склада пункта выдачи заказов. Я не программист, поэтому сущности, связи и экраны проектируй сам, а в конце выдай один готовый HTML-файл со встроенными стилями и скриптами, без внешних библиотек и без сервера.
Мой пункт выдачи: одна стойка, стеллаж с ячейками и небольшой запас расходников. Сейчас я веду приём и выдачу в блокноте и в таблице, из-за этого не могу быстро ответить на вопрос «где чья посылка», а остатки расходников заканчиваются в самый неподходящий момент.
Главная задача: чтобы по номеру посылки сразу было видно, принята ли она, где лежит и выдана ли. Каждое изменение количества должно быть не правкой числа, а отдельным движением с датой, причиной и комментарием. Остаток всегда считается из движений.
Сущности:
1) Позиция склада (товар или посылка): название, номер или артикул, категория, единица измерения (шт, упак, рулон), ячейка хранения, цена закупки, минимальный остаток, статус.
2) Движение: тип (приход или расход), позиция, количество, дата и время, поставщик, получатель или причина списания, комментарий, автор записи.
3) Получатель: фамилия и имя, телефон, номер посылки, статус (ожидает, выдана, возврат), дата приёма и дата выдачи.
4) Поставщик: название, контактное лицо, телефон, график привоза, история поставок и сумма за период.
5) Категория: название и количество позиций в ней.
6) Закупка: позиции ниже минимального остатка с рекомендуемым количеством к заказу и отметкой «заказано».
Статусы позиции: «в наличии» → «ниже минимума» → «нет в наличии». Статус пересчитывается автоматически после каждого движения, вручную его не ставят. Строку ниже минимума выделяй сразу в таблице остатков.
Экраны:
- Таблица остатков: позиция, номер, категория, ячейка, остаток, минимум, цена, стоимость остатка, статус. Поиск по номеру, названию и фамилии получателя, фильтры по категории, ячейке и статусу, сортировка по остатку и стоимости. Итоги по складу в штуках и в деньгах.
- Приход: выбор позиции, количество, цена за единицу, поставщик, дата, комментарий. Можно добавить несколько позиций в одну поставку.
- Расход и выдача: выбор позиции, количество, получатель или причина списания (выдано, возврат, упаковка, брак), дата, комментарий. Нельзя списать больше, чем есть: покажи понятное предупреждение по-русски.
- Карточка позиции: все поля, текущий остаток, история движений по дате с типом и комментарием, средний расход за месяц, кнопки «Приход» и «Расход» прямо из карточки.
- Список закупки: только позиции ниже минимума, с рекомендуемым количеством, чекбоксом «заказано» и группировкой по поставщику.
Правила и мелочи:
- Все данные храни в браузере, добавь кнопки «Выгрузить резервную копию» и «Загрузить копию».
- Запрещено отрицательное количество. Ошибки показывай текстом рядом с полем, без кодов.
- Числа выводи моноширинным шрифтом с разделителями разрядов.
- Печать списка закупки на одном листе А4.
- Интерфейс на русском, светлый и спокойный: светлый фон, тонкие линии, один тёплый акцент только на главных кнопках. Крупные кликабельные области, чтобы удобно было с телефона у стойки.
- Сначала коротко опиши структуру и экраны, потом выдай весь код одним файлом, который открывается двойным кликом.