From 13c2262dd759341e8d03e9811fddac7c2f666be4 Mon Sep 17 00:00:00 2001 From: DyakonovS Date: Thu, 29 Oct 2026 10:23:56 +0400 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=205:?= =?UTF-8?q?=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D1=8B=20product=5Fcalculator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++ shoe_store/logic/__init__.py | 0 shoe_store/logic/product_calculator.py | 44 ++++++++++++++++++++ shoe_store/tests/__init__.py | 0 shoe_store/tests/test_product_calculator.py | 34 +++++++++++++++ shoe_store/tests_result.png | Bin 0 -> 37907 bytes 6 files changed, 81 insertions(+) create mode 100644 .gitignore create mode 100644 shoe_store/logic/__init__.py create mode 100644 shoe_store/logic/product_calculator.py create mode 100644 shoe_store/tests/__init__.py create mode 100644 shoe_store/tests/test_product_calculator.py create mode 100644 shoe_store/tests_result.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eebc23c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +__pycache__/ +*.__pycache__ +.pytest_cache/ \ No newline at end of file diff --git a/shoe_store/logic/__init__.py b/shoe_store/logic/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/shoe_store/logic/product_calculator.py b/shoe_store/logic/product_calculator.py new file mode 100644 index 0000000..0b244b2 --- /dev/null +++ b/shoe_store/logic/product_calculator.py @@ -0,0 +1,44 @@ +"""Расчет показателей товара для каталога.""" + +from datetime import timedelta + +DISCOUNT_PERCENT = 25 +MANY_QUANTITY_THRESHOLD = 5 + + +def calculate_discounted_price(price, order_dates, calculation_date): + """Возвращает цену товара с учетом скидки. + + Скидка 25% предоставляется, если в предыдущем календарном месяце + (относительно даты расчета) по товару не было заказов. + + :param price: цена товара в рублях + :param order_dates: список дат заказов товара (datetime.date), может быть пустым + :param calculation_date: дата расчета (datetime.date) + :return: цена с учетом скидки, округленная до копеек + """ + if price < 0: + raise ValueError("Цена не может быть отрицательной.") + + current_month_start = calculation_date.replace(day=1) + previous_month_start = (current_month_start - timedelta(days=1)).replace(day=1) + has_orders_in_previous_month = any( + previous_month_start <= order_date < current_month_start + for order_date in order_dates + ) + + if has_orders_in_previous_month: + return price + return round(price * (100 - DISCOUNT_PERCENT) / 100, 2) + + +def get_quantity_label(total_quantity): + """Возвращает «много», если пар больше пяти, иначе «мало». + + :param total_quantity: количество пар суммарно по всем размерам + """ + if total_quantity < 0: + raise ValueError("Количество не может быть отрицательным.") + if total_quantity > MANY_QUANTITY_THRESHOLD: + return "много" + return "мало" diff --git a/shoe_store/tests/__init__.py b/shoe_store/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/shoe_store/tests/test_product_calculator.py b/shoe_store/tests/test_product_calculator.py new file mode 100644 index 0000000..088de04 --- /dev/null +++ b/shoe_store/tests/test_product_calculator.py @@ -0,0 +1,34 @@ +from datetime import date +from logic.product_calculator import calculate_discounted_price, get_quantity_label + + +def test_discounted_price_no_orders_in_previous_month_returns_price_with_discount(): + price = 2000 + order_dates = [] + calculation_date = date(2027, 6, 15) + + result = calculate_discounted_price(price, order_dates, calculation_date) + + assert result == 1500 + + +def test_discounted_price_order_in_previous_month_returns_price_without_discount(): + price = 2000 + order_dates = [date(2027, 5, 10)] + calculation_date = date(2027, 6, 15) + + result = calculate_discounted_price(price, order_dates, calculation_date) + + assert result == 2000 + + +def test_quantity_label_five_pairs_returns_few(): + result = get_quantity_label(5) + + assert result == "мало" + + +def test_quantity_label_six_pairs_returns_many(): + result = get_quantity_label(6) + + assert result == "много" \ No newline at end of file diff --git a/shoe_store/tests_result.png b/shoe_store/tests_result.png new file mode 100644 index 0000000000000000000000000000000000000000..191626089df1a4e6ddab1dc4835877f661032de1 GIT binary patch literal 37907 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 BgD3z1 literal 0 HcmV?d00001