From 3faf6a65260323dadc5020aacfa4a5707a416caf Mon Sep 17 00:00:00 2001 From: user_3d Date: Sat, 25 Oct 2025 09:13:14 +0500 Subject: [PATCH] 25102025 --- main.py | 40 ++++++++++++++++----------- read.txt | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 106 insertions(+), 16 deletions(-) diff --git a/main.py b/main.py index c521b55..17e3a21 100644 --- a/main.py +++ b/main.py @@ -2,7 +2,7 @@ import sqlite3 import pandas as pd import os import sys -import openpyxl +#import openpyxl def create_tables(db_connection): @@ -97,7 +97,7 @@ def get_partners(db_path='partners.db', sort_by='rating', ascending=False): GROUP BY p.id """ - # Добавляем сортировку + if sort_by == 'discount': query += " ORDER BY total_quantity" elif sort_by == 'rating': @@ -106,6 +106,10 @@ def get_partners(db_path='partners.db', sort_by='rating', ascending=False): query += " ORDER BY p.name" elif sort_by == 'type': query += " ORDER BY pt.type_name, p.name" + + elif sort_by == 'inn': + query += " ORDER BY p.inn" + else: query += " ORDER BY p.rating" @@ -114,7 +118,7 @@ def get_partners(db_path='partners.db', sort_by='rating', ascending=False): df = pd.read_sql_query(query, conn) conn.close() - # Добавляем колонки со скидкой + if not df.empty: df['Скидка'] = df['total_quantity'].apply(lambda x: calculate_discount(x)[0]) df['Текст_скидки'] = df['total_quantity'].apply(lambda x: calculate_discount(x)[1]) @@ -130,7 +134,6 @@ def get_partners(db_path='partners.db', sort_by='rating', ascending=False): def get_sales_history(db_path='partners.db', limit=50, sort_by='date_desc'): - """Получает историю реализации продукции с разными вариантами сортировки""" try: conn = sqlite3.connect(db_path) query = """ @@ -149,7 +152,7 @@ def get_sales_history(db_path='partners.db', limit=50, sort_by='date_desc'): JOIN ProductType pt ON pr.product_type_id = pt.id """ - # Добавляем сортировку по дате + if sort_by == 'date_desc': query += " ORDER BY s.sale_date DESC, s.created_at DESC" elif sort_by == 'date_asc': @@ -171,7 +174,7 @@ def get_sales_history(db_path='partners.db', limit=50, sort_by='date_desc'): return None def print_partner_cards(partners_df): - """Выводит карточки партнеров в красивом формате""" + if partners_df is None or partners_df.empty: print("📭 Нет данных о партнерах") return @@ -213,7 +216,7 @@ def print_partner_cards(partners_df): def print_sales_cards(sales_df): - """Выводит карточки истории реализации в виде таблицы""" + if sales_df is None or sales_df.empty: print("📭 Нет данных о продажах") return @@ -222,14 +225,14 @@ def print_sales_cards(sales_df): print(f"║ {'ИСТОРИЯ РЕАЛИЗАЦИИ ПРОДУКЦИИ':^145} ║") print("╠" + "═" * 147 + "╣") - # Заголовок таблицы + headers = ["Дата", "Партнер", "Продукция", "Артикул", "Кол-во", "Цена", "Сумма"] print("║ {:<12} {:<18} {:<59} {:<3} {:>9} {:>8} {:>13} ║".format( headers[0], headers[1], headers[2], headers[3], headers[4], headers[5], headers[6] )) print("╠" + "═" * 147 + "╣") - # Данные таблицы + for index, row in sales_df.iterrows(): date = str(row['Дата продажи'])[:10] partner = row['Партнер'] @@ -243,12 +246,12 @@ def print_sales_cards(sales_df): print("╚" + "═" * 147 + "╝") - # Итоги + total_quantity = sales_df['Количество'].sum() total_amount = sales_df['Общая сумма'].sum() print(f"📊 ИТОГО: {len(sales_df)} продаж, {total_quantity:,} единиц, общая сумма: {total_amount:,.2f} руб.") def simple_choice(options): - """Упрощенная функция выбора""" + print("\n" + "=" * 50) print("ВЫБЕРИТЕ ОПЦИЮ:") print("=" * 50) @@ -271,7 +274,7 @@ def simple_choice(options): def check_database(): - """Проверяет загруженные данные в базе""" + conn = sqlite3.connect('partners.db') try: cursor = conn.cursor() @@ -286,12 +289,12 @@ def check_database(): def load_data_from_files(): - """Загружает данные из Excel файлов в базу данных""" + conn = sqlite3.connect('partners.db') cursor = conn.cursor() try: - # Запрос имен файлов + print("\n📁 Введите имена файлов:") partners_file = input("Файл с партнерами: ") product_type_file = input("Файл с типами продукции: ") @@ -391,10 +394,11 @@ def load_data_from_files(): def display_menu(): - """Главное меню программы""" + menu_options = [ 'КАРТОЧКИ ПАРТНЕРОВ (сортировка по рейтингу)', 'КАРТОЧКИ ПАРТНЕРОВ (сортировка по скидкам)', + 'КАРТОЧКИ ПАРТНЕРОВ (сортировка по ИНН)', 'ИСТОРИЯ РЕАЛИЗАЦИИ', 'ЗАПОЛНЕНИЕ БД из файлов', 'ВЫХОД' @@ -415,6 +419,12 @@ def display_menu(): partners = get_partners(sort_by='discount', ascending=False) print_partner_cards(partners) + elif choice == 'КАРТОЧКИ ПАРТНЕРОВ (сортировка по ИНН)': + print("\n🔢 КАРТОЧКИ ПАРТНЕРОВ (сортировка по ИНН)") + print("═" * 70) + partners = get_partners(sort_by='inn', ascending=True) + print_partner_cards(partners) + elif choice == 'ИСТОРИЯ РЕАЛИЗАЦИИ': print("\n📈 ИСТОРИЯ РЕАЛИЗАЦИИ ПРОДУКЦИИ") print("═" * 70) diff --git a/read.txt b/read.txt index 1ded0b4..dd4340f 100644 --- a/read.txt +++ b/read.txt @@ -5,4 +5,84 @@ def create_tables(db_connection): - """Создает все необходимые таблицы в базе данных""" \ No newline at end of file + """Создает все необходимые таблицы в базе данных""" + + # Добавляем сортировку + if sort_by == 'discount': + query += " ORDER BY total_quantity" + elif sort_by == 'rating'.... + + # Добавляем колонки со скидкой + if not df.empty: + df['Скидка'] = df['total_quantity'].apply(lambda x: calculate_discount(x)[0]) + df['Текст_скидки'] = df['total_quantity'].apply(lambda x: calculate_discount(x)[1]) + +def get_sales_history(db_path='partners.db', limit=50, sort_by='date_desc'): + """Получает историю реализации продукции с разными вариантами сортировки""" + +# Добавляем сортировку по дате + if sort_by == 'date_desc': + query += " ORDER BY s.sale_date DESC, s.created_at DESC" + elif sort_by == 'date_asc': + query += " ORDER BY s.sale_date ASC, s.created_at ASC" + +def print_partner_cards(partners_df): + """Выводит карточки партнеров в красивом формате""" + +def print_sales_cards(sales_df): + """Выводит карточки истории реализации в виде таблицы""" + +# Заголовок таблицы + headers = ["Дата", "Партнер", "Продукция", "Артикул", "Кол-во", "Цена", "Сумма"] + print("║ {:<12} {:<18} {:<59} {:<3} {:>9} {:>8} {:>13} ║ + + # Данные таблицы + for index, row in sales_df.iterrows(): + date = str(row['Дата продажи'])[:10] + partner = row['Партнер'] + product = row['Продукция'] + + # Итоги + total_quantity = sales_df['Количество'].sum() + total_amount = sales_df['Общая сумма'].sum() + +def simple_choice(options): + """Упрощенная функция выбора""" + +def check_database(): + """Проверяет загруженные данные в базе""" + +def load_data_from_files(): + """Загружает данные из Excel файлов в базу данных""" + + # Запрос имен файлов + print("\n📁 Введите имена файлов:") + partners_file = input("Файл с партнерами: ") + product_type_file = input("Файл с типами продукции: ") + products_file = input("Файл с продуктами: ") + sales_file = input("Файл с продажами: ") + + # 1. Загрузка типов партнеров + print("\n1. 📊 Загрузка типов партнеров...") ниже идут 2, 3, 4, 5 + + for _, row in sales_df.iterrows(): + # Находим ID продукта + + # Находим ID партнера + cursor.execute("SELECT id FROM Partner WHERE name = ?", (row['Наименование партнера'],)) + partner_result = cursor.fetchone() + + # Получаем цену продажи + cursor.execute("SELECT min_partner_price FROM Product WHERE id = ?", (product_id,)) + min_price_result = cursor.fetchone() + + # Преобразуем дату + sale_date = pd.to_datetime(row['Дата продажи']).strftime('%Y-%m-%d') + + # Вставляем продажу + cursor.execute("""INSERT INTO Sale + (product_id, partner_id, quantity, sale_date, sale_price) + VALUES (?, ?, ?, ?, ?)""", + +def display_menu(): + """Главное меню программы""" \ No newline at end of file