feat: new stuff
This commit is contained in:
@@ -77,51 +77,34 @@ class BillingService(BaseService):
|
|||||||
billing_client = BillingClient(backend.config.BILLING_API_KEY)
|
billing_client = BillingClient(backend.config.BILLING_API_KEY)
|
||||||
|
|
||||||
basic_deal: Deal = await deal_service.get_by_id(user, request.deal_id, return_raw=True)
|
basic_deal: Deal = await deal_service.get_by_id(user, request.deal_id, return_raw=True)
|
||||||
deals = await deal_service.get_deals_grouped(basic_deal)
|
if basic_deal.group:
|
||||||
|
deals = await self._get_deals_by_group_id(basic_deal.group.id)
|
||||||
|
else:
|
||||||
|
deals = [basic_deal]
|
||||||
|
|
||||||
|
(services, products, is_size_needed) = await self._get_products_for_deal(deals)
|
||||||
|
services: dict[str, ServiceBillingDocumentPdf]
|
||||||
|
products: dict[str, ProductBillingDocumentPdf]
|
||||||
|
is_size_needed: bool
|
||||||
billing_request_values: List[CreateBillingRequestValue] = []
|
billing_request_values: List[CreateBillingRequestValue] = []
|
||||||
|
|
||||||
psq = defaultdict(lambda: defaultdict(lambda: 0))
|
for product in products.values():
|
||||||
sq = defaultdict(lambda: 0)
|
|
||||||
|
|
||||||
services_dict = {}
|
|
||||||
products_dict = {}
|
|
||||||
for deal in deals:
|
|
||||||
for product in deal.products:
|
|
||||||
product: DealProduct
|
|
||||||
for service in product.services:
|
|
||||||
service: DealProductService
|
|
||||||
psq[product.product_id][service.service_id] += product.quantity
|
|
||||||
products_dict[product.product_id] = product.product
|
|
||||||
services_dict[service.service_id] = service
|
|
||||||
|
|
||||||
for deal in deals:
|
|
||||||
for service in deal.services:
|
|
||||||
service: models.DealService
|
|
||||||
services_dict[service.service_id] = service
|
|
||||||
sq[service.service_id] += service.quantity
|
|
||||||
|
|
||||||
for product_id, services_ids in psq.items():
|
|
||||||
product: models.Product = products_dict[product_id]
|
|
||||||
for service_id in services_ids:
|
|
||||||
service = services_dict[service_id]
|
|
||||||
quantity = psq[product_id][service_id]
|
|
||||||
billing_request_values.append(
|
billing_request_values.append(
|
||||||
CreateBillingRequestValue(
|
CreateBillingRequestValue(
|
||||||
name=f'[{product.name}] - {service.service.name}',
|
name=f'{product.article} {product.size}',
|
||||||
price=service.price,
|
price=product.price,
|
||||||
amount=quantity
|
quantity=product.quantity
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
for service_id, quantity in sq.items():
|
for service in services.values():
|
||||||
service = services_dict[service_id]
|
|
||||||
billing_request_values.append(
|
billing_request_values.append(
|
||||||
CreateBillingRequestValue(
|
CreateBillingRequestValue(
|
||||||
name=f'{service.service.name}',
|
name=service.name,
|
||||||
price=service.price,
|
price=service.price,
|
||||||
amount=quantity
|
quantity=service.quantity
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
deal = basic_deal
|
deal = basic_deal
|
||||||
create_bill_request = CreateBillRequestSchema(
|
create_bill_request = CreateBillRequestSchema(
|
||||||
listener_transaction_id=deal.id,
|
listener_transaction_id=deal.id,
|
||||||
|
|||||||
Reference in New Issue
Block a user