After Graduate Update
This commit is contained in:
parent
b92a91ab37
commit
c6917dd85e
69 changed files with 7540 additions and 0 deletions
91
ressult/gui/sales_history.py
Normal file
91
ressult/gui/sales_history.py
Normal 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)}"
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue