api: exclude cancelled credits (#89810)

This commit is contained in:
Lauréline Guérin 2024-04-23 12:02:13 +02:00
parent 9352f2d0c7
commit b48de48412
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
3 changed files with 76 additions and 6 deletions

View File

@ -408,6 +408,7 @@ class RefundSerializer(serializers.ModelSerializer):
uuid=value,
regie=self.regie,
date_publication__lte=datetime.date.today(),
cancelled_at__isnull=True,
)
except Credit.DoesNotExist:
raise ValidationError(_('Unknown credit.'))

View File

@ -524,6 +524,7 @@ class InvoicingCredits(PayerMixin, APIView):
remaining_amount__gt=0,
payer_external_id=payer_external_id,
date_publication__lte=datetime.date.today(),
cancelled_at__isnull=True,
).order_by('-created_at')
def get(self, request, regie_identifier):
@ -566,6 +567,7 @@ class InvoicingHistoryCredits(InvoicingCredits):
remaining_amount=0,
payer_external_id=payer_external_id,
date_publication__lte=datetime.date.today(),
cancelled_at__isnull=True,
).order_by('-created_at')
@ -590,6 +592,7 @@ class InvoicingCreditPDF(PayerMixin, APIView):
regie=regie,
payer_external_id=payer_external_id,
date_publication__lte=datetime.date.today(),
cancelled_at__isnull=True,
)
result = credit.html()
html = HTML(string=result)

View File

@ -3261,9 +3261,17 @@ def test_list_credits(mock_payer, app, user):
assert resp.json['err'] == 0
assert resp.json['data'] == []
# credit is cancelled
credit.date_publication = datetime.date(2022, 10, 1)
credit.cancelled_at = now()
credit.save()
resp = app.get('/api/regie/foo/credits/', params={'NameID': 'foobar'})
assert resp.json['err'] == 0
assert resp.json['data'] == []
# other regie
other_regie = Regie.objects.create(label='Other Foo')
credit.date_publication = datetime.date(2022, 10, 1)
credit.cancelled_at = None
credit.regie = other_regie
credit.save()
resp = app.get('/api/regie/foo/credits/', params={'NameID': 'foobar'})
@ -3411,9 +3419,17 @@ def test_list_credits_for_payer(app, user):
assert resp.json['err'] == 0
assert resp.json['data'] == []
# credit is cancelled
credit.date_publication = datetime.date(2022, 10, 1)
credit.cancelled_at = now()
credit.save()
resp = app.get('/api/regie/foo/credits/', params={'payer_external_id': 'payer:1'})
assert resp.json['err'] == 0
assert resp.json['data'] == []
# other regie
other_regie = Regie.objects.create(label='Other Foo')
credit.date_publication = datetime.date(2022, 10, 1)
credit.cancelled_at = None
credit.regie = other_regie
credit.save()
resp = app.get('/api/regie/foo/credits/', params={'payer_external_id': 'payer:1'})
@ -3561,9 +3577,17 @@ def test_list_history_credits(mock_payer, app, user):
assert resp.json['err'] == 0
assert resp.json['data'] == []
# credit is cancelled
credit.date_publication = datetime.date(2022, 10, 1)
credit.cancelled_at = now()
credit.save()
resp = app.get('/api/regie/foo/credits/history/', params={'NameID': 'foobar'})
assert resp.json['err'] == 0
assert resp.json['data'] == []
# other regie
other_regie = Regie.objects.create(label='Other Foo')
credit.date_publication = datetime.date(2022, 9, 1)
credit.cancelled_at = None
credit.regie = other_regie
credit.save()
resp = app.get('/api/regie/foo/credits/history/', params={'NameID': 'foobar'})
@ -3710,9 +3734,17 @@ def test_list_history_credits_for_payer(app, user):
assert resp.json['err'] == 0
assert resp.json['data'] == []
# credit is cancelled
credit.date_publication = datetime.date(2022, 10, 1)
credit.cancelled_at = now()
credit.save()
resp = app.get('/api/regie/foo/credits/history/', params={'payer_external_id': 'payer:1'})
assert resp.json['err'] == 0
assert resp.json['data'] == []
# other regie
other_regie = Regie.objects.create(label='Other Foo')
credit.date_publication = datetime.date(2022, 9, 1)
credit.cancelled_at = None
credit.regie = other_regie
credit.save()
resp = app.get('/api/regie/foo/credits/history/', params={'payer_external_id': 'payer:1'})
@ -3781,9 +3813,15 @@ def test_pdf_credit(mock_payer, app, user):
credit.save()
app.get('/api/regie/foo/credit/%s/pdf/' % str(credit.uuid), params={'NameID': 'foobar'}, status=404)
# credit is cancelled
credit.date_publication = datetime.date(2022, 10, 1)
credit.cancelled_at = now()
credit.save()
app.get('/api/regie/foo/credit/%s/pdf/' % str(credit.uuid), params={'NameID': 'foobar'}, status=404)
# other regie
other_regie = Regie.objects.create(label='Other Foo')
credit.date_publication = datetime.date(2022, 9, 1)
credit.cancelled_at = None
credit.regie = other_regie
credit.save()
app.get('/api/regie/foo/credit/%s/pdf/' % str(credit.uuid), params={'NameID': 'foobar'}, status=404)
@ -3869,9 +3907,19 @@ def test_pdf_credit_for_payer(app, user):
status=404,
)
# credit is cancelled
credit.date_publication = datetime.date(2022, 10, 1)
credit.cancelled_at = now()
credit.save()
app.get(
'/api/regie/foo/credit/%s/pdf/' % str(credit.uuid),
params={'payer_external_id': 'payer:1'},
status=404,
)
# other regie
other_regie = Regie.objects.create(label='Other Foo')
credit.date_publication = datetime.date(2022, 9, 1)
credit.cancelled_at = None
credit.regie = other_regie
credit.save()
app.get(
@ -3995,6 +4043,24 @@ def test_add_refund(app, user):
resp = app.post('/api/regie/foo/refunds/', params=params, status=400)
assert resp.json['err']
assert resp.json['errors'] == {'credit': ['Unknown credit.']}
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,
)
params = {
'credit': str(other_credit.uuid),
}
resp = app.post('/api/regie/foo/refunds/', params=params, status=400)
assert resp.json['err']
assert resp.json['errors'] == {'credit': ['Unknown credit.']}
campaign = Campaign.objects.create(
regie=regie,
date_start=datetime.date(2022, 9, 1),