У нас в компании отдел финансов уже давно пользуется и доверяет Excel и формирует отчёты по прибыли именно там. Но однажды что-то пошло не так и отчёт за определенный период привел к краху экономику компании. Руководство, узнав о подобной беде, быстро обратилась к команде Billing, которая занимается построением билинговой системы расчётов, для решения поставленной задачи.
У нас есть отчёты по товарам(items) и услугам(services), которые мы оказываем/предоставляем клиентам. Мы ежемесячно подготавливаем отчёт о прибыли(revenue). С каждого товара, что мы продаём, мы берём комиссию от поставщика (commissionPercent), с учётом количества товаров(quantity). За услуги мы берём комиссию без учета количества. Подводя итоги месяца, мы учитываем количество выручки от получаемой комиссии. Один наш опытный разработчик разработал консольное приложение, но, к сожалению уволился, прежде чем завершил бизнес-логику. (он был вынужден уехать из страны)
Необходимо дописать код. В данный момент он умеет считывать каждый отчёт (items, services) в формате .csv , а также выручку по товарам/услугам (revenue).
Осталось реализовать 2 пункта меню:
- Подсчёт самой минимальной прибыли по товару и услуге, с учетом каждой комиссии. Вывести в формате:
Минимальная выручка <сумма_выручки> по товару <имя_товара>, с комиссией <сумма комиссии>
Минимальная выручка <сумма_выручки> по услуге <имя_услуги>, с комиссией <сумма комиссии>
- Сверка прибыли по услугам и товарам. Для этого необходимо получить текущие отчёты по товарам и услугам и сверить выручку (с учетом комиссиий и количества), которую успели посчитать отдел финансов и предоставить нам в виде .csv файла (revenue). Если выручка по товарам / услугам не совпадает вывести результат в формате:
Выручка по товарам <сумма_выручки> не совпадает с выручкой из отчёта <сумма_выручки_из_отчёта>
Выручка по услугам <сумма_выручки> не совпадает с выручкой из отчёта <сумма_выручки_из_отчёта>
Необходимо сделать fork от текущего репозитория и в форкнутом репо выполнить изменения, предварительно создав ветку, а по окончании, создать PR на master, для удобства ревью
- Корректно подсчитывается минимальная сумма по товарам
- Корректно подсчитывается минимальная сумма по услугам
- Сверка по прибыли из файла revenue равна прибыли, посчитанной по данным из файла items
- Сверка по прибыли из файла revenue равна прибыли, посчитанной по данным из файла services
- При выборе каждого пункта меню в консольном приложении, можно получить ожидаемый результат
- Код написан на языке Java/Kotlin
Опционально
можно изменять/рефакторить существующий код, если видится, что можно как-то улучшить