After Graduate Update

This commit is contained in:
Daniel 2025-11-26 19:31:33 +03:00
parent b92a91ab37
commit c6917dd85e
69 changed files with 7540 additions and 0 deletions

View file

@ -0,0 +1,91 @@
# gui/sales_history.py
"""
Окно истории продаж партнера
Соответствует модулю 4 ТЗ
"""
from PyQt6.QtWidgets import (QDialog, QVBoxLayout, QHBoxLayout, QLabel,
QTableWidget, QTableWidgetItem, QPushButton,
QHeaderView, QMessageBox)
from PyQt6.QtCore import Qt
import requests
class SalesHistoryWindow(QDialog):
def __init__(self, partner_data, parent=None):
super().__init__(parent)
self.partner_data = partner_data
self.setup_ui()
self.load_sales_history()
def setup_ui(self):
self.setWindowTitle(f"История продаж - {self.partner_data['company_name']}")
self.setModal(True)
self.resize(800, 400)
layout = QVBoxLayout()
# Заголовок
title = QLabel(f"История реализации продукции\n{self.partner_data['company_name']}")
title.setAlignment(Qt.AlignmentFlag.AlignCenter)
title.setStyleSheet("font-size: 16px; font-weight: bold; margin: 10px;")
layout.addWidget(title)
# Таблица продаж
self.sales_table = QTableWidget()
self.sales_table.setColumnCount(4)
self.sales_table.setHorizontalHeaderLabels([
"ID", "Наименование продукции", "Количество", "Дата продажи"
])
self.sales_table.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch)
layout.addWidget(self.sales_table)
# Статистика
self.stats_label = QLabel()
self.stats_label.setStyleSheet("font-weight: bold; margin: 10px;")
layout.addWidget(self.stats_label)
# Кнопки
buttons_layout = QHBoxLayout()
self.close_button = QPushButton("Закрыть")
self.close_button.clicked.connect(self.accept)
buttons_layout.addStretch()
buttons_layout.addWidget(self.close_button)
layout.addLayout(buttons_layout)
self.setLayout(layout)
def load_sales_history(self):
"""Загрузка истории продаж партнера"""
try:
response = requests.get(
f"http://localhost:8000/api/v1/sales/partner/{self.partner_data['partner_id']}"
)
if response.status_code == 200:
sales_data = response.json()
self.display_sales_data(sales_data)
else:
QMessageBox.warning(self, "Ошибка", "Не удалось загрузить историю продаж")
except Exception as e:
QMessageBox.critical(self, "Ошибка", f"Ошибка подключения: {str(e)}")
def display_sales_data(self, sales_data):
"""Отображение данных о продажах в таблице"""
self.sales_table.setRowCount(len(sales_data))
total_quantity = 0
for row, sale in enumerate(sales_data):
self.sales_table.setItem(row, 0, QTableWidgetItem(str(sale['sale_id'])))
self.sales_table.setItem(row, 1, QTableWidgetItem(sale['product_name']))
self.sales_table.setItem(row, 2, QTableWidgetItem(str(sale['quantity'])))
self.sales_table.setItem(row, 3, QTableWidgetItem(sale['sale_date']))
total_quantity += float(sale['quantity'])
# Обновление статистики
self.stats_label.setText(
f"Общее количество проданной продукции: {total_quantity}\n"
f"Всего продаж: {len(sales_data)}"
)