Make logging for payment changes consistent with OrderPayment handling

This commit is contained in:
Raphael Michel
2018-10-22 22:28:42 +02:00
parent bc0bc78219
commit 3a0ef3760c

View File

@@ -415,6 +415,7 @@ class OrderPayChangeMethod(EventViewMixin, OrderDetailMixin, TemplateView):
old_fee = fee.value old_fee = fee.value
new_fee = p['provider'].calculate_fee(self.order.pending_sum - old_fee) new_fee = p['provider'].calculate_fee(self.order.pending_sum - old_fee)
with transaction.atomic():
if new_fee: if new_fee:
fee.value = new_fee fee.value = new_fee
fee.internal_type = p['provider'].identifier fee.internal_type = p['provider'].identifier
@@ -431,38 +432,29 @@ class OrderPayChangeMethod(EventViewMixin, OrderDetailMixin, TemplateView):
self.open_payment.save(update_fields=['state']) self.open_payment.save(update_fields=['state'])
self.order.total = self._position_sum + (self.order.fees.aggregate(sum=Sum('value'))['sum'] or 0) self.order.total = self._position_sum + (self.order.fees.aggregate(sum=Sum('value'))['sum'] or 0)
self.order.save(update_fields=['total'])
newpayment = self.order.payments.create( newpayment = self.order.payments.create(
state=OrderPayment.PAYMENT_STATE_CREATED, state=OrderPayment.PAYMENT_STATE_CREATED,
provider=p['provider'].identifier, provider=p['provider'].identifier,
amount=self.order.pending_sum, amount=self.order.pending_sum,
fee=fee fee=fee
) )
self.order.log_action(
resp = p['provider'].payment_prepare(request, newpayment) 'pretix.event.order.payment.changed' if self.open_payment else 'pretix.event.order.payment.started',
if resp: {
with transaction.atomic():
if self.open_payment and self.open_payment.provider != p['provider'].identifier:
self.order.log_action('pretix.event.order.payment.changed', {
'old_fee': old_fee,
'new_fee': new_fee,
'old_provider': self.open_payment.provider,
'new_provider': p['provider'].identifier,
'payment': newpayment.pk,
'local_id': newpayment.local_id,
})
else:
self.order.log_action('pretix.event.order.payment.started', {
'fee': new_fee, 'fee': new_fee,
'provider': p['provider'].identifier, 'old_fee': old_fee,
'provider': newpayment.provider,
'payment': newpayment.pk, 'payment': newpayment.pk,
'local_id': newpayment.local_id, 'local_id': newpayment.local_id,
}) }
self.order.save() )
i = self.order.invoices.filter(is_cancellation=False).last() i = self.order.invoices.filter(is_cancellation=False).last()
if i and self.order.total != oldtotal: if i and self.order.total != oldtotal:
generate_cancellation(i) generate_cancellation(i)
generate_invoice(self.order) generate_invoice(self.order)
resp = p['provider'].payment_prepare(request, newpayment)
if isinstance(resp, str): if isinstance(resp, str):
return redirect(resp) return redirect(resp)
elif resp is True: elif resp is True: