Skip to content

EvgeniyMakeev/check-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

check-app

Тестовое задание Clevertec

Описание

Это приложение предназначено для создания чека на основе переданных данных о товарах и дисконтных картах. Приложение считывает данные из базы данных PostgreSQL, принимает параметры через командную строку и генерирует CSV файл с результатами.

Структура проекта

  • src/main/java/ru/clevertec/check/CheckRunner.java - основной класс для запуска приложения.
  • src/main/resources/data.sql - файл с DDL и DML операциями для базы данных.
  • result.csv - файл, в который сохраняется чек.

Формат базы данных

Таблица продуктов

Таблица product должна содержать информацию о продуктах в следующем формате:

id description price quantity_in_stock wholesale_product
1 Product 1 10.00 100 true
2 Product 2 20.00 50 false
... ... ... ... ...

Таблица дисконтных карт

Таблица discount_card должна содержать информацию о дисконтных картах в следующем формате:

id number discount_amount
1 1111 5
2 2222 10
... ... ...

Запуск приложения

Для запуска приложения используйте следующую команду:

java -jar clevertec-check.jar id-quantity discountCard=xxxx balanceDebitCard=xxxx saveToFile=xxxx datasource.url=xxxx datasource.username=xxxx datasource.password=xxxx

где:

  • id-quantity - идентификатор товара и его количество. Например, 1-3 означает товар с id=1 в количестве 3 штук.
  • discountCard=xxxx - номер дисконтной карты (четыре цифры).
  • balanceDebitCard=xxxx - баланс на дебетовой карте.
  • saveToFile=xxxx - путь к файлу для сохранения результата (обязательный параметр).
  • datasource.url=xxxx - URL для подключения к базе данных PostgreSQL.
  • datasource.username=xxxx - имя пользователя для подключения к базе данных.
  • datasource.password=xxxx - пароль для подключения к базе данных.

Пример команды

java -jar clevertec-check.jar 3-1 2-5 5-1 discountCard=1111 balanceDebitCard=100 saveToFile=./result.csv datasource.url=jdbc:postgresql://localhost:5432/check datasource.username=postgres datasource.password=postgres

В этом примере:

  • 3-1 - товар с id=3 в количестве 1 штука.
  • 2-5 - товар с id=2 в количестве 5 штук.
  • 5-1 - товар с id=5 в количестве 1 штука.
  • discountCard=1111 - предъявлена дисконтная карта с номером 1111.
  • balanceDebitCard=100 - баланс на дебетовой карте равен 100.
  • saveToFile=./result.csv - указан путь для сохранения результата.
  • datasource.url=jdbc:postgresql://localhost:5432/check - URL базы данных PostgreSQL.
  • datasource.username=postgres - имя пользователя для базы данных PostgreSQL.
  • datasource.password=postgres - пароль для базы данных PostgreSQL.

Результат

После выполнения команды в указанном файле saveToFile будет создан CSV файл с результатами, содержащий список товаров, их количество, цену и рассчитанную сумму с учетом скидки по предъявленной карте (если она есть). Также чек будет продублирован в консоль.

Пример вывода

Date;Time
2024-07-01;10:30:45

QTY;DESCRIPTION;PRICE;DISCOUNT;TOTAL
1;Product 3;30.00$;3.00$;27.00$
5;Product 2;20.00$;10.00$;90.00$
1;Product 5;50.00$;5.00$;45.00$

DISCOUNT CARD;DISCOUNT PERCENTAGE
1111;5

TOTAL PRICE;TOTAL DISCOUNT;TOTAL WITH DISCOUNT
155.00$;18.00$;137.00$

Примечания

  • Название и путь к SQL-файлу:
    • data.sql должен находиться по пути ./src/main/resources/data.sql.
  • Все параметры указываются через пробел.
  • В наборе параметров должна быть минимум одна связка id-quantity.
  • Номер дисконтной карты должен содержать ровно четыре цифры.
  • Баланс дебетовой карты может быть как положительным, так и отрицательным.

Важные моменты

  • Идентификаторы товаров могут повторяться: например, 1-3 2-5 1-1 эквивалентно 1-4 2-5.
  • При количестве оптового товара от пяти и более штук на эту позицию применяется скидка 10%, персональная скидка по карте на эту позицию не действует.
  • Если не передан аргумент saveToFile, ошибка будет сохранена в файл result.csv.
  • Настройки подключения к БД передаются через аргументы командной строки и являются обязательными параметрами.

About

Clevertec test task

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages