basket: don't assign cancelled credits (#89810)

This commit is contained in:
Lauréline Guérin 2024-04-23 11:53:19 +02:00
parent b48de48412
commit 904203c808
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
5 changed files with 44 additions and 0 deletions

View File

@ -166,6 +166,7 @@ class Basket(models.Model):
credit_qs = Credit.objects.filter(
models.Q(pool__isnull=True) | models.Q(pool__campaign__finalized=True),
date_publication__lte=datetime.date.today(),
cancelled_at__isnull=True,
remaining_amount__gt=0,
regie=self.regie,
payer_external_id=self.payer_external_id,

View File

@ -1710,6 +1710,7 @@ class CreditAssignment(models.Model):
credit_qs = Credit.objects.filter(
models.Q(pool__isnull=True) | models.Q(pool__campaign__finalized=True),
date_publication__lte=datetime.date.today(),
cancelled_at__isnull=True,
remaining_amount__gt=0,
regie=regie,
payer_external_id=basket.payer_external_id,

View File

@ -588,6 +588,18 @@ def test_basket_validate_generate_invoice(app, simple_user):
quantity=3,
unit_amount=1,
)
other_credit = Credit.objects.create(
date_publication=datetime.date(2022, 10, 1),
regie=regie,
payer_external_id='payer:1',
cancelled_at=now(), # cancelled
)
CreditLine.objects.create(
credit=other_credit,
event_date=datetime.date(2022, 9, 1),
quantity=3,
unit_amount=1,
)
basket.status = 'open'
basket.save()
resp = app.get('/basket/validate/')

View File

@ -342,6 +342,24 @@ def test_basket_amounts_with_draft_invoice():
assert basket.credit_amount == -1
assert basket.remaining_amount == 9
# cancelled credit
other_credit = Credit.objects.create(
date_publication=datetime.date(2022, 10, 1),
regie=regie,
payer_external_id='payer:1',
cancelled_at=now(),
)
CreditLine.objects.create(
credit=other_credit,
event_date=datetime.date(2022, 9, 1),
quantity=3,
unit_amount=1,
)
basket.draft_invoice.refresh_from_db()
assert basket.total_amount == 10
assert basket.credit_amount == -1
assert basket.remaining_amount == 9
# credit == amount to pay
campaign = Campaign.objects.create(
regie=regie,

View File

@ -386,6 +386,18 @@ def test_basket_payment_with_assigned_credits(app, simple_user):
quantity=3,
unit_amount=1,
)
other_credit = Credit.objects.create(
date_publication=datetime.date(2022, 10, 1),
regie=regie,
payer_external_id='payer:1',
cancelled_at=now(), # cancelled
)
CreditLine.objects.create(
credit=other_credit,
event_date=datetime.date(2022, 9, 1),
quantity=3,
unit_amount=1,
)
resp = app.get('/basket/validate/')
resp = resp.form.submit()