forked from CGM_Public/pretix_original
Cancel payments if the pending price of the order changes
This commit is contained in:
@@ -931,6 +931,21 @@ class OrderChangeManager:
|
|||||||
if self.order.pending_sum <= Decimal('0.00'):
|
if self.order.pending_sum <= Decimal('0.00'):
|
||||||
self.order.status = Order.STATUS_PAID
|
self.order.status = Order.STATUS_PAID
|
||||||
self.order.save()
|
self.order.save()
|
||||||
|
elif self.open_payment:
|
||||||
|
self.open_payment.state = OrderPayment.PAYMENT_STATE_CANCELED
|
||||||
|
self.open_payment.save()
|
||||||
|
self.order.log_action('pretix.event.order.payment.canceled', {
|
||||||
|
'local_id': self.open_payment.local_id,
|
||||||
|
'provider': self.open_payment.provider,
|
||||||
|
}, user=self.user, auth=self.auth)
|
||||||
|
elif self.order.status in (Order.STATUS_PENDING, Order.STATUS_EXPIRED) and self._totaldiff > 0:
|
||||||
|
if self.open_payment:
|
||||||
|
self.open_payment.state = OrderPayment.PAYMENT_STATE_CANCELED
|
||||||
|
self.open_payment.save()
|
||||||
|
self.order.log_action('pretix.event.order.payment.canceled', {
|
||||||
|
'local_id': self.open_payment.local_id,
|
||||||
|
'provider': self.open_payment.provider,
|
||||||
|
}, user=self.user, auth=self.auth)
|
||||||
|
|
||||||
def _check_paid_to_free(self):
|
def _check_paid_to_free(self):
|
||||||
if self.order.total == 0 and (self._totaldiff < 0 or (self.split_order and self.split_order.total > 0)):
|
if self.order.total == 0 and (self._totaldiff < 0 or (self.split_order and self.split_order.total > 0)):
|
||||||
|
|||||||
@@ -1103,6 +1103,18 @@ class OrderChangeManagerTests(TestCase):
|
|||||||
assert o2.invoice_address != ia
|
assert o2.invoice_address != ia
|
||||||
assert o2.invoice_address.company == 'Sample'
|
assert o2.invoice_address.company == 'Sample'
|
||||||
|
|
||||||
|
def test_change_price_of_pending_order_with_payment(self):
|
||||||
|
self.order.status = Order.STATUS_PENDING
|
||||||
|
self.order.save()
|
||||||
|
assert self.order.payments.last().state == OrderPayment.PAYMENT_STATE_CREATED
|
||||||
|
assert self.order.payments.last().amount == Decimal('46.00')
|
||||||
|
|
||||||
|
self.ocm.change_price(self.op1, Decimal('27.00'))
|
||||||
|
self.ocm.commit()
|
||||||
|
|
||||||
|
assert self.order.payments.last().state == OrderPayment.PAYMENT_STATE_CANCELED
|
||||||
|
assert self.order.payments.last().amount == Decimal('46.00')
|
||||||
|
|
||||||
def test_split_reverse_charge(self):
|
def test_split_reverse_charge(self):
|
||||||
ia = self._enable_reverse_charge()
|
ia = self._enable_reverse_charge()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user