master-floor/ressult/app/routes/sales.py
2025-11-26 19:31:33 +03:00

64 lines
2.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# app/routes/sales.py
"""
Маршруты API для управления продажами
Соответствует требованиям ТЗ по истории реализации продукции
"""
from fastapi import APIRouter, HTTPException
from app.database import db
from app.models import Sale, SaleCreate
router = APIRouter()
@router.get("/partner/{partner_id}")
async def get_sales_by_partner(partner_id: int):
"""
Получение истории реализации продукции партнером
Соответствует модулю 4 ТЗ
"""
try:
result = db.execute_query("""
SELECT sale_id, partner_id, product_name, quantity, sale_date
FROM sales
WHERE partner_id = %s
ORDER BY sale_date DESC
""", (partner_id,))
return [dict(row) for row in result]
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.get("/")
async def get_all_sales():
"""Получение всех продаж с информацией о партнерах"""
try:
result = db.execute_query("""
SELECT s.sale_id, s.partner_id, p.company_name, s.product_name,
s.quantity, s.sale_date
FROM sales s
JOIN partners p ON s.partner_id = p.partner_id
ORDER BY s.sale_date DESC
""")
return [dict(row) for row in result]
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/")
async def create_sale(sale: SaleCreate):
"""Создание новой записи о продаже"""
try:
result = db.execute_query("""
INSERT INTO sales (partner_id, product_name, quantity, sale_date)
VALUES (%s, %s, %s, %s)
RETURNING sale_id
""", (sale.partner_id, sale.product_name, sale.quantity, sale.sale_date))
return {"sale_id": result[0]["sale_id"]}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.delete("/{sale_id}")
async def delete_sale(sale_id: int):
"""Удаление записи о продаже"""
try:
db.execute_query("DELETE FROM sales WHERE sale_id = %s", (sale_id,))
return {"message": "Sale deleted successfully"}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))