Files
CRM-OLD-API/app/api/v1/billing.py
2025-07-24 20:13:47 +03:00

70 lines
1.8 KiB
Python
Raw 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.

from time import time
from aiohttp import ClientResponseError
from fastapi import APIRouter
from app import mongo
from app.providers import tinkoff
from app.utils.response_util import response
router = APIRouter()
@router.post("/create-deal-bill", tags=[""])
async def create_deal_bill(params: dict):
start_time = time()
deal_id = params["dealId"]
deal = await mongo.deals_collection.find_one({
"id": deal_id
}, {
"_id": False
})
client = await mongo.clients_collection.find_one({
"name": deal["clientName"]
}, {
"_id": False
})
try:
total_price = await mongo.get_deals_total_prices(deal)
bill_data = await tinkoff.create_bill(deal_id, total_price[deal_id], client)
bill_request_data = {
"invoiceId": bill_data["invoiceId"],
"pdfUrl": bill_data["pdfUrl"],
"paid": False
}
await mongo.deals_collection.update_one(
{"id": deal_id},
{"$set": {"billRequest": bill_request_data}}
)
return response({
"ok": True,
"message": "Счёт успешно создан"
}, start_time=start_time)
except ClientResponseError:
return response({
"ok": False,
"message": "Не получилось создать счёт"
}, start_time=start_time)
@router.post("/cancel-deal-bill", tags=[""])
async def cancel_deal_bill(params: dict):
start_time = time()
deal_id = params["dealId"]
await mongo.deals_collection.update_one(
{"id": deal_id},
{"$set": {"billRequest": None}}
)
return response({
"ok": True,
"message": "Счёт успешно отозван"
}, start_time=start_time)