first commit
This commit is contained in:
69
app/api/v1/billing.py
Normal file
69
app/api/v1/billing.py
Normal file
@ -0,0 +1,69 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user