Skip to content

Commit

Permalink
feat: created task to send transaction to sage,
Browse files Browse the repository at this point in the history
feat: update transaction docmunt_id parameter
  • Loading branch information
Tiago-da-silva23 authored and jamoqs committed Dec 13, 2023
1 parent 01cf0b8 commit 21bc11e
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
9 changes: 6 additions & 3 deletions apps/billing/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from rest_framework import serializers

from apps.billing.models import Transaction, TransactionItem
from apps.billing.tasks import send_transactions_to_processor_task
from apps.organization.models import Organization
from apps.shared_revenue.models import RevenueConfiguration

Expand Down Expand Up @@ -126,7 +127,7 @@ def _execute_shared_revenue_resources(
def _execute_billing_resources(
self,
validate_data: dict,
) -> list[TransactionItem]:
) -> tuple[Transaction, list[TransactionItem]]:
items = validate_data.pop("items", [])
transaction = Transaction.objects.create(**validate_data)
items_as_instances: list[TransactionItem] = []
Expand All @@ -138,11 +139,11 @@ def _execute_billing_resources(
serialized_items.append(TransactionItemSerializer(item).data)

validate_data["items"] = serialized_items
return items_as_instances
return transaction, items_as_instances

def create(self, validate_data):
try:
items: list[TransactionItem] = self._execute_billing_resources(validate_data=validate_data)
transaction, items = self._execute_billing_resources(validate_data=validate_data)
for item in items:
organization, created = Organization.objects.get_or_create(
short_name=item.organization_code,
Expand All @@ -153,6 +154,8 @@ def create(self, validate_data):
product_id=item.product_id,
)

send_transactions_to_processor_task(transaction=transaction)

return validate_data
except Exception as e:
raise e
Expand Down
14 changes: 14 additions & 0 deletions apps/billing/tasks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from celery import shared_task

from apps.billing.models import Transaction
from apps.billing.services.transaction_service import TransactionService


@shared_task(name="apps.billing.tasks.send_transactions_to_processor_task")
def send_transactions_to_processor_task(transaction: Transaction):
try:
document_id: str = TransactionService(transaction=transaction).run_steps_to_send_transaction()
transaction.document_id = document_id
transaction.save()
except Exception as e:
raise e

0 comments on commit 21bc11e

Please sign in to comment.