feat: cancel deal bill if exists
This commit is contained in:
@@ -30,6 +30,7 @@ class CreateCardBillRequest(BaseSchema):
|
|||||||
|
|
||||||
class CancelCardBillRequest(BaseSchema):
|
class CancelCardBillRequest(BaseSchema):
|
||||||
card_id: int
|
card_id: int
|
||||||
|
force: Optional[bool] = False
|
||||||
|
|
||||||
|
|
||||||
# endregion
|
# endregion
|
||||||
|
|||||||
@@ -180,8 +180,12 @@ class BillingService(BaseService):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
create_bill_response = await billing_client.create(create_bill_request)
|
create_bill_response = await billing_client.create(create_bill_request)
|
||||||
|
if not create_bill_response.ok and 'Request already exists' in create_bill_response.message:
|
||||||
|
await self.cancel_card_billing(user, CancelCardBillRequest(card_id=request.card_id, force=True))
|
||||||
|
return await self.create_card_billing(user, request)
|
||||||
if not create_bill_response.ok:
|
if not create_bill_response.ok:
|
||||||
return CreateCardBillResponse(ok=create_bill_response.ok, message=create_bill_response.message or 'Неизвестная ошибка')
|
return CreateCardBillResponse(ok=create_bill_response.ok,
|
||||||
|
message=create_bill_response.message or 'Неизвестная ошибка')
|
||||||
|
|
||||||
if basic_card.group:
|
if basic_card.group:
|
||||||
await self.create_group_bill_request(basic_card.group)
|
await self.create_group_bill_request(basic_card.group)
|
||||||
@@ -212,22 +216,22 @@ class BillingService(BaseService):
|
|||||||
|
|
||||||
if card.group:
|
if card.group:
|
||||||
bill = await self._get_group_bill_by_id(card.group.id)
|
bill = await self._get_group_bill_by_id(card.group.id)
|
||||||
if not bill:
|
if not bill and not request.force:
|
||||||
return CancelCardBillResponse(ok=False, message='Заявка не найдена')
|
return CancelCardBillResponse(ok=False, message='Заявка не найдена')
|
||||||
billing_client = BillingClient(backend.config.BILLING_API_KEY)
|
billing_client = BillingClient(backend.config.BILLING_API_KEY)
|
||||||
response = await billing_client.delete(DeleteBillRequestSchema(listener_transaction_id=card.group.id))
|
response = await billing_client.delete(DeleteBillRequestSchema(listener_transaction_id=card.group.id))
|
||||||
else:
|
else:
|
||||||
bill = await self._get_card_bill_by_id(request.card_id)
|
bill = await self._get_card_bill_by_id(request.card_id)
|
||||||
if not bill:
|
if not bill and not request.force:
|
||||||
return CancelCardBillResponse(ok=False, message='Заявка не найдена')
|
return CancelCardBillResponse(ok=False, message='Заявка не найдена')
|
||||||
billing_client = BillingClient(backend.config.BILLING_API_KEY)
|
billing_client = BillingClient(backend.config.BILLING_API_KEY)
|
||||||
response = await billing_client.delete(DeleteBillRequestSchema(listener_transaction_id=request.card_id))
|
response = await billing_client.delete(DeleteBillRequestSchema(listener_transaction_id=request.card_id))
|
||||||
|
|
||||||
if not response.ok:
|
if not response.ok:
|
||||||
return CancelCardBillResponse(ok=False, message='Ошибка')
|
return CancelCardBillResponse(ok=False, message='Ошибка')
|
||||||
|
if bill:
|
||||||
await self.session.delete(bill)
|
await self.session.delete(bill)
|
||||||
await self.session.commit()
|
await self.session.commit()
|
||||||
return CancelCardBillResponse(ok=True, message='Заявка успешно отозвана')
|
return CancelCardBillResponse(ok=True, message='Заявка успешно отозвана')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return CancelCardBillResponse(ok=False, message=str(e))
|
return CancelCardBillResponse(ok=False, message=str(e))
|
||||||
|
|||||||
Reference in New Issue
Block a user