# 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))