mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
Allow to change fees in existing orders (#1472)
* Allow to change fees in existing orders * Add tests * Add special case for payment options * Fix PK reference in tests
This commit is contained in:
@@ -1291,6 +1291,60 @@ class OrderChangeTests(SoupTest):
|
||||
assert op.tax_value == Decimal('0.00')
|
||||
assert op.tax_rate == Decimal('0.00')
|
||||
|
||||
def test_change_fee_value_success(self):
|
||||
with scopes_disabled():
|
||||
fee = self.order.fees.create(fee_type="shipping", value=Decimal('5.00'), tax_rule=self.tr19)
|
||||
self.order.total += Decimal('5.00')
|
||||
self.order.save()
|
||||
self.client.post('/control/event/{}/{}/orders/{}/change'.format(
|
||||
self.event.organizer.slug, self.event.slug, self.order.code
|
||||
), {
|
||||
'add-TOTAL_FORMS': '0',
|
||||
'add-INITIAL_FORMS': '0',
|
||||
'add-MIN_NUM_FORMS': '0',
|
||||
'add-MAX_NUM_FORMS': '100',
|
||||
'op-{}-price'.format(self.op1.pk): '24.00',
|
||||
'op-{}-operation'.format(self.op2.pk): '',
|
||||
'op-{}-itemvar'.format(self.op2.pk): str(self.ticket.pk),
|
||||
'of-{}-value'.format(fee.pk): '3.50',
|
||||
})
|
||||
self.op1.refresh_from_db()
|
||||
self.order.refresh_from_db()
|
||||
assert self.op1.item == self.ticket
|
||||
assert self.op1.price == Decimal('24.00')
|
||||
fee.refresh_from_db()
|
||||
self.op1.refresh_from_db()
|
||||
self.op2.refresh_from_db()
|
||||
assert self.order.total == self.op1.price + self.op2.price + Decimal('3.50')
|
||||
assert fee.value == Decimal('3.50')
|
||||
|
||||
def test_cancel_fee_success(self):
|
||||
with scopes_disabled():
|
||||
fee = self.order.fees.create(fee_type="shipping", value=Decimal('5.00'), tax_rule=self.tr19)
|
||||
self.order.total += Decimal('5.00')
|
||||
self.order.save()
|
||||
self.client.post('/control/event/{}/{}/orders/{}/change'.format(
|
||||
self.event.organizer.slug, self.event.slug, self.order.code
|
||||
), {
|
||||
'add-TOTAL_FORMS': '0',
|
||||
'add-INITIAL_FORMS': '0',
|
||||
'add-MIN_NUM_FORMS': '0',
|
||||
'add-MAX_NUM_FORMS': '100',
|
||||
'op-{}-operation'.format(self.op1.pk): 'price',
|
||||
'op-{}-itemvar'.format(self.op1.pk): str(self.ticket.pk),
|
||||
'op-{}-price'.format(self.op1.pk): '24.00',
|
||||
'op-{}-operation'.format(self.op2.pk): '',
|
||||
'op-{}-itemvar'.format(self.op2.pk): str(self.ticket.pk),
|
||||
'of-{}-value'.format(fee.pk): '5.00',
|
||||
'of-{}-operation_cancel'.format(fee.pk): 'on',
|
||||
})
|
||||
self.order.refresh_from_db()
|
||||
fee.refresh_from_db()
|
||||
assert fee.canceled
|
||||
self.op1.refresh_from_db()
|
||||
self.op2.refresh_from_db()
|
||||
assert self.order.total == self.op1.price + self.op2.price
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_check_vatid(client, env):
|
||||
|
||||
Reference in New Issue
Block a user