This commit is contained in:
user_3d 2025-11-06 11:35:13 +05:00
parent 7b12d4431a
commit 93f1dc97c1
2 changed files with 15 additions and 15 deletions

24
main.py
View file

@ -9,7 +9,7 @@ import openpyxl
def create_tables(db_connection): def create_tables(db_connection):
"""Создает все необходимые таблицы в базе данных""" # Функция создает структуру таблиц в базе данных
cursor = db_connection.cursor() cursor = db_connection.cursor()
cursor.executescript(''' cursor.executescript('''
@ -37,7 +37,7 @@ def create_tables(db_connection):
coefficient DECIMAL(5,2) NOT NULL DEFAULT 1.0 coefficient DECIMAL(5,2) NOT NULL DEFAULT 1.0
); );
CREATE TABLE IF NOT EXISTS Product ( CREATE TABLE IF NOT EXISTS Product (df = pd.read_sql_query(query, conn, params=(limit,))
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
product_type_id INTEGER REFERENCES ProductType(id), product_type_id INTEGER REFERENCES ProductType(id),
product_name VARCHAR(255) NOT NULL, product_name VARCHAR(255) NOT NULL,
@ -46,7 +46,7 @@ def create_tables(db_connection):
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
); );
CREATE TABLE IF NOT EXISTS Sale ( CREATE TABLE IF NOT EXISTS Sale (df = pd.read_sql_query(query, conn, params=(limit,))
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
product_id INTEGER REFERENCES Product(id), product_id INTEGER REFERENCES Product(id),
partner_id INTEGER REFERENCES Partner(id), partner_id INTEGER REFERENCES Partner(id),
@ -70,7 +70,7 @@ def create_tables(db_connection):
def calculate_discount(total_quantity): def calculate_discount(total_quantity):
"""Рассчитывает скидку на основе общего количества проданной продукции""" # Функция рассчитывает скидку на основе объема продаж
if total_quantity >= 300000: if total_quantity >= 300000:
return 15, '15% (более 300000 ед.)' return 15, '15% (более 300000 ед.)'
elif total_quantity >= 50000: elif total_quantity >= 50000:
@ -82,7 +82,7 @@ def calculate_discount(total_quantity):
def get_partners(db_path='partners.db', sort_by='rating', ascending=False): def get_partners(db_path='partners.db', sort_by='rating', ascending=False):
"""Получает данные о партнерах с возможностью сортировки""" # Функция получает данные о партнерах из базы данных
try: try:
conn = sqlite3.connect(db_path) conn = sqlite3.connect(db_path)
query = """ query = """
@ -136,7 +136,7 @@ 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'): def get_sales_history(db_path='partners.db', limit=50, sort_by='date_desc'):
"""Получает историю реализации продукции с разными вариантами сортировки""" # Функция получает историю продаж
try: try:
conn = sqlite3.connect(db_path) conn = sqlite3.connect(db_path)
query = """ query = """
@ -177,7 +177,7 @@ def get_sales_history(db_path='partners.db', limit=50, sort_by='date_desc'):
return None return None
def print_partner_cards(partners_df): def print_partner_cards(partners_df):
"""Выводит карточки партнеров в красивом формате""" # Функция выводит информацию о партнерах в красивой форме
if partners_df is None or partners_df.empty: if partners_df is None or partners_df.empty:
print("📭 Нет данных о партнерах") print("📭 Нет данных о партнерах")
return return
@ -219,7 +219,7 @@ def print_partner_cards(partners_df):
def print_sales_cards(sales_df): def print_sales_cards(sales_df):
"""Выводит карточки истории реализации в виде таблицы""" # Функция выводит историю продаж в табличном представлении
if sales_df is None or sales_df.empty: if sales_df is None or sales_df.empty:
print("📭 Нет данных о продажах") print("📭 Нет данных о продажах")
return return
@ -254,7 +254,7 @@ def print_sales_cards(sales_df):
total_amount = sales_df['Общая сумма'].sum() total_amount = sales_df['Общая сумма'].sum()
print(f"📊 ИТОГО: {len(sales_df)} продаж, {total_quantity:,} единиц, общая сумма: {total_amount:,.2f} руб.") print(f"📊 ИТОГО: {len(sales_df)} продаж, {total_quantity:,} единиц, общая сумма: {total_amount:,.2f} руб.")
def simple_choice(options): def simple_choice(options):
"""Упрощенная функция выбора""" # Простая функция выбора пункта меню
print("\n" + "=" * 50) print("\n" + "=" * 50)
print("ВЫБЕРИТЕ ОПЦИЮ:") print("ВЫБЕРИТЕ ОПЦИЮ:")
print("=" * 50) print("=" * 50)
@ -277,7 +277,7 @@ def simple_choice(options):
def check_database(): def check_database():
"""Проверяет загруженные данные в базе""" # Проверяет наличие данных в базе
conn = sqlite3.connect('partners.db') conn = sqlite3.connect('partners.db')
try: try:
cursor = conn.cursor() cursor = conn.cursor()
@ -292,7 +292,7 @@ def check_database():
def load_data_from_files(): def load_data_from_files():
"""Загружает данные из Excel файлов в базу данных""" # Загружает данные из Excel-файлов в базу данных
conn = sqlite3.connect('partners.db') conn = sqlite3.connect('partners.db')
cursor = conn.cursor() cursor = conn.cursor()
@ -397,7 +397,7 @@ def load_data_from_files():
def display_menu(): def display_menu():
"""Главное меню программы""" # Основное меню программы
menu_options = [ menu_options = [
'КАРТОЧКИ ПАРТНЕРОВ (сортировка по рейтингу)', 'КАРТОЧКИ ПАРТНЕРОВ (сортировка по рейтингу)',
'КАРТОЧКИ ПАРТНЕРОВ (сортировка по скидкам)', 'КАРТОЧКИ ПАРТНЕРОВ (сортировка по скидкам)',

View file

@ -1,7 +1,7 @@
Файл с партнерами: Partners_import.xlsx Файл с партнерами: Partners_import.xlsx
Файл с типами продукции: Product_type_import.xlsx Файл с типами продукции: Product_type_import.xlsx
Файл с продуктами: Products_import.xlsx Файл с продуктами: Products_import.xlsx
Файл с продажами: Partner_products_import.xlsx Файл с продажами: Partner_products_import.xlsx ""
# Импортируем библиотеку SQLite3 для взаимодействия с базами данных SQLite # Импортируем библиотеку SQLite3 для взаимодействия с базами данных SQLite
@ -20,11 +20,11 @@ import sqlite3
import pandas as pd import pandas as pd
import os import os
import sys import sys
import openpyxl import openpyxl """Создает все необходимые таблицы в базе данных"""
# Функция создает структуру таблиц в базе данных # Функция создает структуру таблиц в базе данных
def create_tables(db_connection): def create_tables(db_connection):
"""Создает все необходимые таблицы в базе данных.""" "Создает все необходимые таблицы в базе данных."""
cursor = db_connection.cursor() cursor = db_connection.cursor()
# Создание таблиц и индексов # Создание таблиц и индексов