invoicing: filter injected lines on journal (#73742)

This commit is contained in:
Lauréline Guérin 2023-01-27 09:10:59 +01:00
parent 691713b69e
commit 36d54f8b2c
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 23 additions and 1 deletions

View File

@ -92,6 +92,7 @@ class AbstractLineFilterSet(django_filters.FilterSet):
status_choices = [
('success', _('Success')),
('success_injected', '%s (%s)' % (_('Success'), _('Injected'))),
('warning', _('Warning')),
('error', _('Error')),
]
@ -106,6 +107,8 @@ class AbstractLineFilterSet(django_filters.FilterSet):
def filter_status(self, queryset, name, value):
if not value:
return queryset
if value == 'success_injected':
return queryset.filter(status='success', from_injected_line__isnull=False)
if value == 'error_todo':
return queryset.filter(status='error', error_status='')
if value == 'error_ignored':

View File

@ -784,6 +784,7 @@ def test_journal_pool_lines(app, admin_user, draft):
invoice_model = DraftInvoice if draft else Invoice
line_model = DraftInvoiceLine if draft else InvoiceLine
regie = Regie.objects.create(label='Foo')
campaign = Campaign.objects.create(
date_start=datetime.date(2022, 9, 1),
date_end=datetime.date(2022, 10, 1),
@ -871,6 +872,15 @@ def test_journal_pool_lines(app, admin_user, draft):
lines[-2].error_status = 'fixed'
lines[-2].save()
injected_line = InjectedLine.objects.create(
event_date=datetime.date(2022, 9, 1),
quantity=1,
unit_amount=1,
total_amount=1,
user_external_id='user:2',
payer_external_id='payer:2',
regie=regie,
)
lines.append(
line_model.objects.create(
event_date=datetime.date(2022, 9, 1),
@ -884,6 +894,7 @@ def test_journal_pool_lines(app, admin_user, draft):
event={'event': 'foobar2'},
user_external_id='user:2',
payer_external_id='payer:2',
from_injected_line=injected_line,
),
)
@ -1005,7 +1016,10 @@ def test_journal_pool_lines(app, admin_user, draft):
"{'error': 'PricingBookingCheckTypeError', 'error_details': {'check_type': 'foo-reason', "
"'check_type_group': 'foo-bar', 'reason': 'wrong-kind'}} {'event': 'foobar'}"
)
assert format_status(resp.pyquery('tr[data-line-id="%s"] td.status' % lines[13].pk).text()) == 'Success'
assert (
format_status(resp.pyquery('tr[data-line-id="%s"] td.status' % lines[13].pk).text())
== 'Success (Injected)'
)
assert (
resp.pyquery('tr[data-details-for-line-id="%s"] td pre' % lines[13].pk).text().strip()
== "{'foo': 'bar'} {'event': 'foobar2'}"
@ -1064,6 +1078,11 @@ def test_journal_pool_lines(app, admin_user, draft):
params={'status': 'success'},
)
assert len(resp.pyquery('tr td.status')) == 2
resp = app.get(
'/manage/invoicing/campaign/%s/pool/%s/journal/' % (campaign.pk, pool.pk),
params={'status': 'success_injected'},
)
assert len(resp.pyquery('tr td.status')) == 1
resp = app.get(
'/manage/invoicing/campaign/%s/pool/%s/journal/' % (campaign.pk, pool.pk),
params={'status': 'warning'},