Code Monkey home page Code Monkey logo

teklifo's Introduction

This is a Next.js project bootstrapped with create-next-app.

Getting Started

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font to automatically optimize and load Inter, a custom Google Font.

Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

Deploy on Vercel

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out our Next.js deployment documentation for more details.

teklifo's People

Contributors

kamranv21 avatar

Watchers

 avatar

teklifo's Issues

RFQ product name

В данный момент при создании RFQ в обязательном порядке нужно выбирать товар из списка загруженных товаров организации. Это неудобно, так как вынуждает пользователя проходить лишний шаг загрузки товаров.

Поэтому поле productId нужно сделать необязательным, а вместо него добавить поле productName, которое уже будет обязательно к заполнению. Функция выбора товара при этом остается, но только как вспомогательная - при выборе товара имя товара заполнится автоматически. Чтобы снова ввести наименование товара вручную нужно будет очистить поле товара.

Landing page

Пришло время сделать стартовую страницу приложения, в которой будет отображена информация о его возможностях и преимуществах.

Company CRUD testing

Тестирование CRUD операций по организации:

Создание / изменение:

  • Написание ID строчными латинскими буквами, уникальное значение ID
  • ИНН из 10 чисел, уникальность ИНН

Чтение:

  • Переход по URL на страницу организации
  • Отображение организации в списке
  • Наличие роли с полными правами
  • Наличие одного участника в организации

Удаление:

  • Невозможность удаления организации при наличии пользователя
  • 404 при переходе на страницу удаленной организации

Skip item bug

Ошибка при пропуске строки в коммерческих предложениях.

Date bug

Ошибка с типом даты в компоненте QuotationMainInfo.

Quotation (backend)

Как поставщик мы получили доступ к запросу цен от клиента. Теперь наша задача состоит в том, чтобы ответить на этот запрос цен своим коммерческим предложением (КП).

Сразу оговоримся, что на текущий момент мы не рассматриваем такие ситуации, когда поставщик выбирает аналог номенклатуры или добавляет в КП новую позицию, которой не было в RFQ. Пока функционал позволяет отвечать только строго на те позиции, что были указаны в RFQ.

Следовательно, КП жестко подвязано к RFQ - не может быть КП без RFQ, каждая строка товаров КП жестко подвязана к определенной строке этого RFQ.

Кроме того может возникнуть ситуация, когда RFQ был изменен или удален его создателем, могут также быть изменены или удалены товары RFQ. Даже может быть удалена организация-составитель RFQ. Это не должно сказаться на КП - составитель КП всегда должен видеть на какие позиции было отправлено КП, кому оно было отправлено и т.д. Следовательно в структуре таблиц КП должна быть не только связка по ссылкам к объектам RFQ, но и, как минимум, их строковое представление на случай удаления ссылочных данных.

Реквизиты шапки:

  • ID RFQ
  • ID организации отправителя
  • Наименование и ИНН организации отправителя (на случай удаления связанных данных)
  • Комментарий
  • Валюта - та же валюта, что и в RFQ. Недоступно для редактирования

Реквизиты товаров:

  • Номенклатура RFQ
  • Представление номенклатуры RFQ (на случай удаления связанных данных)
  • Количество RFQ (на случай удаления связанных данных)
  • Цена RFQ (на случай удаления связанных данных)
  • Дата доставки RFQ (на случай удаления связанных данных)
  • Количество
  • Цена
  • Сумма
  • Ставка НДС
  • Сумма НДС
  • Сумма включает НДС
  • Сумма с НДС
  • Дата доставки

В рамках этой задачи фокусируемся именно на бэкенде - построении таблиц, методах CRUD API.

RFQ date control

Если КП ссылается на неактуальный запрос цен, то об этом нужно уведомить и в карточке, и на странице КП. Изменить КП в таком случае запрещается, можно только создать новый запрос цен.

Если текущая дата больше даты запроса цен, то создавать КП на его основании больше нельзя. Проверять и в фронте, и в бэке.

Ununique TIN error handler

Нет обработки ошибки неуникального ИНН при создании/обновлении организации. Сейчас ошибка происходит на уровне БД, клиент получает 500 ошибку.

UI fix

  • В странице запроса цен шапку и кнопку создания КП переместить вправо (проверить тоже самое в форме создания КП и форме самого КП)
  • В форме запроса цен нет плашки "поделитесь ссылкой"
  • Из карточки КП убрать валюту, организацию переместить направо, дату КП переместить куда-нибудь и уменьшить
  • В форме КП таблица должна отображаться в модальном окне, в обычном состоянии отображается карточка
  • Из всех шапок убрать ИНН организации, вместо этого показывать карточку организации при наведении на ссылку

Minor UI/UX fixes

  • Изменить стиль карточек в КП и запросах цен
  • Перегруппировать кнопки в сайдбаре
  • Изменить заголовок КП
  • Отметить запросы цен, по которым были отправлены коммерческие предложения

RFQ end date

Заменить период сбора предложений RFQ на конечную дату сбора предложений

Auth testing

Нужно потихоньку начать добавление автотестов. Начинаем с авторизации.

  • Проверяем, что при неправильном вводе Email через Magic Link выходит ошибка
  • Проверяем, что при правильном вводе Email через Magic Link отправляется письмо
  • Проверяем, что при неправильном вводе Email через Credentials выходит ошибка
  • Проверяем, что при неправильной комбинации Email и пароля через Credentials выходит ошибка
  • Проверяем, что при правильной комбинации Email и пароля через Credentials пользователь авторизуется

RFQ - Read / Update / Delete

Добавлена форма создания запроса цен, но теперь нужно поработать над другими функциями CRUD.

  • Просмотр запроса
  • Изменение
  • Удаление

Также нужно будет после создания / обновления запроса отобразить формочку, на которой мы поздравим пользователя с успешным формированием запроса и предоставим ему ссылку для поставщиков.

Token bug

Если пользователя больше нет в базе данных, то при проверке его токена не происходит очистка токена и переброс на страницу авторизации.

Contact data

Необходимо указывать контактные данные при регистрации организации, при публикации запроса цен и при публикации коммерческих предложений.

RFQ statuses

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

  1. У запроса цен создаем статус с возможными вариантами: подготавливается, сбор предложений и завершен.

1.1. При создании запроса цен у пользователя должно быть два варианта:

  • сохранить (статус "подготавливается")
  • начать сбор предложений (статус "сбор предложений")

1.2. При изменении запроса цен пользователь может:

1.2.1. Если статус запроса цен "подготавливается":

  • сохранить
  • начать сбор предложений

1.2.2. Если статус запроса цен "сбор предложений":

  • обновить (запрос обновляется с тем же статусом "Сбор предложений")

1.2.3. Если статус запроса цен "завершен", то пользователь не может больше изменить запрос цен

1.3. При просмотре запроса цен пользователю доступны кнопки:

1.3.1. Если статус запроса цен "подготавливается":

  • Изменить
  • Удалить (удаляет полностью)
  • Начать сбор предложений (меняет статус на "начать сбор предложений")

1.3.2. Если статус запроса цен "сбор предложений":

  • Изменить
  • Завершить (меняет статус на "завершен")

1.3.3. Если статус запроса цен "завершен", то никакие кнопки пользователю недоступны

1.4. Поставщики могут становиться участниками только запросов цен со статусом "сбор предложений"
1.5. Поставщики могут видеть только запросы цен со статусами "сбор предложений" и "завершен".

  1. Обновить интерфейс работы с документами.

2.1. В сайдбаре оставить только линки на запросы и переименовать их в "Закупки" и "Продажи". Заголовки убрать.

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

2.3. Вкладка "коммерческие предложения" это отдельная страница с пагинацией, где отображаются все КП
по данному запросу цен. Поставщик видит тут только свои КП. Заголовок карточки КП - это имя организации.

2.4. КП создавать и изменять только в модальном окне из запроса цен.

Quotation form

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

Request for quotation

Запрос цен должен включать в себя следующие реквизиты:

  • Организация. Запрос цен может принадлежать только одной организации, у одной организации может быть много запросов.
  • Автор запроса
  • Валюта (создать новую таблицу?)
  • Начальная и конечная дата сбора предложений
  • Текстовое описание
  • Адрес доставки
  • Комментарий к условиям доставки
  • Комментарий к условиям оплаты

К таблице "Запрос цен" будет подсоединена таблица товаров (one-to-many). В этой таблице будут содержаться данные о запрашиваемых товарах. Используются следующие реквизиты:

  • Номенклатура
  • Количество
  • Желаемая цена
  • Дата поставки

Suppliers guide

Запрос цен был опубликован и передан поставщику. При переходе по этой ссылке поставщиком должен быть отображен не сам запрос цен, а специальная страница, на которой кратко и доступно будет объяснено, что должен сделать пользователь, чтобы увидеть этот запрос и ответить на него, а именно:

  • Авторизоваться
  • Создать организацию
  • Вернуться и нажать на кнопку "Просмотреть запрос цен"

При выполнении какого-либо из этапов он помечается как выполненный.

Для удобства сразу после авторизации нового пользователя нужно перенаправить на специальную страницу, где ему будет предложено на выбор: создать новую организацию или же вступить в ряды уже существующий (вступление в существующую организацию это тема для отдельной задачи).

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.