diff --git a/apps/payment/management/commands/payment_fix_amounts.py b/apps/payment/management/commands/payment_fix_amounts.py new file mode 100644 index 00000000..e4ca313e --- /dev/null +++ b/apps/payment/management/commands/payment_fix_amounts.py @@ -0,0 +1,22 @@ +from decimal import Decimal +from django.core.management.base import BaseCommand +from django.db.models import F + +from apps.payment.models import Payment, AuthorBalance + + +class Command(BaseCommand): + help = 'Fix payment and author balance amount based on payment.data.effective_price_amount' + + def handle(self, *args, **options): + + for payment in Payment.objects.exclude(data__effective_price_amount=''): + if payment.data.get('effective_price_amount'): + payment.amount = Decimal(payment.data.get('effective_price_amount')) + payment.save() + + for ab in AuthorBalance.objects.exclude(payment__amount=F('amount')).select_related('payment'): + ab.amount = ab.payment.amount + ab.save() + + diff --git a/apps/payment/views.py b/apps/payment/views.py index 1c705609..846b5a4a 100644 --- a/apps/payment/views.py +++ b/apps/payment/views.py @@ -201,7 +201,7 @@ class PaymentwallCallbackView(View): payment.status = pingback.get_type() payment.data = payment_raw_data if pingback.is_deliverable(): - effective_amount = pingback.get_parameter('effective_price_amount') + effective_amount = payment_raw_data.get('effective_price_amount') if effective_amount: payment.amount = effective_amount