invoicing: add filters on payer fields and user name (#75054)
gitea/lingo/pipeline/head This commit looks good
Details
gitea/lingo/pipeline/head This commit looks good
Details
This commit is contained in:
parent
5723ed2a2f
commit
054d63bf41
|
@ -61,10 +61,32 @@ class AbstractInvoiceFilterSet(django_filters.FilterSet):
|
|||
payer_external_id = django_filters.CharFilter(
|
||||
label=_('Payer (external ID)'),
|
||||
)
|
||||
payer_first_name = django_filters.CharFilter(
|
||||
label=_('Payer first name'),
|
||||
lookup_expr='icontains',
|
||||
)
|
||||
payer_last_name = django_filters.CharFilter(
|
||||
label=_('Payer last name'),
|
||||
lookup_expr='icontains',
|
||||
)
|
||||
payer_demat = django_filters.BooleanFilter(
|
||||
label=_('Payer demat'),
|
||||
)
|
||||
payer_direct_debit = django_filters.BooleanFilter(
|
||||
label=_('Payer direct debit'),
|
||||
)
|
||||
user_external_id = django_filters.CharFilter(
|
||||
label=_('User (external ID)'),
|
||||
method='filter_user_external_id',
|
||||
)
|
||||
user_first_name = django_filters.CharFilter(
|
||||
label=_('User first name'),
|
||||
method='filter_user_first_name',
|
||||
)
|
||||
user_last_name = django_filters.CharFilter(
|
||||
label=_('User last name'),
|
||||
method='filter_user_last_name',
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.pool = kwargs.pop('pool')
|
||||
|
@ -84,6 +106,24 @@ class AbstractInvoiceFilterSet(django_filters.FilterSet):
|
|||
lines = line_model.objects.filter(user_external_id=value).values('invoice')
|
||||
return queryset.filter(pk__in=lines)
|
||||
|
||||
def filter_user_first_name(self, queryset, name, value):
|
||||
if not value:
|
||||
return queryset
|
||||
line_model = InvoiceLine
|
||||
if self.pool.draft:
|
||||
line_model = DraftInvoiceLine
|
||||
lines = line_model.objects.filter(user_first_name__icontains=value).values('invoice')
|
||||
return queryset.filter(pk__in=lines)
|
||||
|
||||
def filter_user_last_name(self, queryset, name, value):
|
||||
if not value:
|
||||
return queryset
|
||||
line_model = InvoiceLine
|
||||
if self.pool.draft:
|
||||
line_model = DraftInvoiceLine
|
||||
lines = line_model.objects.filter(user_last_name__icontains=value).values('invoice')
|
||||
return queryset.filter(pk__in=lines)
|
||||
|
||||
|
||||
class DraftInvoiceFilterSet(AbstractInvoiceFilterSet):
|
||||
class Meta:
|
||||
|
@ -114,9 +154,31 @@ class AbstractLineFilterSet(django_filters.FilterSet):
|
|||
payer_external_id = django_filters.CharFilter(
|
||||
label=_('Payer (external ID)'),
|
||||
)
|
||||
payer_first_name = django_filters.CharFilter(
|
||||
label=_('Payer first name'),
|
||||
lookup_expr='icontains',
|
||||
)
|
||||
payer_last_name = django_filters.CharFilter(
|
||||
label=_('Payer last name'),
|
||||
lookup_expr='icontains',
|
||||
)
|
||||
payer_demat = django_filters.BooleanFilter(
|
||||
label=_('Payer demat'),
|
||||
)
|
||||
payer_direct_debit = django_filters.BooleanFilter(
|
||||
label=_('Payer direct debit'),
|
||||
)
|
||||
user_external_id = django_filters.CharFilter(
|
||||
label=_('User (external ID)'),
|
||||
)
|
||||
user_first_name = django_filters.CharFilter(
|
||||
label=_('User first name'),
|
||||
lookup_expr='icontains',
|
||||
)
|
||||
user_last_name = django_filters.CharFilter(
|
||||
label=_('User last name'),
|
||||
lookup_expr='icontains',
|
||||
)
|
||||
status = django_filters.ChoiceFilter(
|
||||
label=_('Status'),
|
||||
widget=forms.RadioSelect,
|
||||
|
|
|
@ -811,6 +811,36 @@ def test_detail_pool_invoices(app, admin_user, draft):
|
|||
params={'payer_external_id': 'payer:2'},
|
||||
)
|
||||
assert len(resp.pyquery('li.invoice')) == 1
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'payer_first_name': 'first'},
|
||||
)
|
||||
assert len(resp.pyquery('li.invoice')) == 2
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'payer_first_name': 'first1'},
|
||||
)
|
||||
assert len(resp.pyquery('li.invoice')) == 1
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'payer_last_name': 'name'},
|
||||
)
|
||||
assert len(resp.pyquery('li.invoice')) == 2
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'payer_last_name': 'name1'},
|
||||
)
|
||||
assert len(resp.pyquery('li.invoice')) == 1
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'payer_demat': True},
|
||||
)
|
||||
assert len(resp.pyquery('li.invoice')) == 1
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'payer_direct_debit': True},
|
||||
)
|
||||
assert len(resp.pyquery('li.invoice')) == 1
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'user_external_id': 'user:1'},
|
||||
|
@ -821,6 +851,26 @@ def test_detail_pool_invoices(app, admin_user, draft):
|
|||
params={'user_external_id': 'user:2'},
|
||||
)
|
||||
assert len(resp.pyquery('li.invoice')) == 1
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'user_first_name': 'user'},
|
||||
)
|
||||
assert len(resp.pyquery('li.invoice')) == 2
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'user_first_name': 'user2'},
|
||||
)
|
||||
assert len(resp.pyquery('li.invoice')) == 1
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'user_last_name': 'name'},
|
||||
)
|
||||
assert len(resp.pyquery('li.invoice')) == 2
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'user_last_name': 'name1'},
|
||||
)
|
||||
assert len(resp.pyquery('li.invoice')) == 2
|
||||
|
||||
|
||||
def test_journal_pool(app, admin_user):
|
||||
|
@ -1027,7 +1077,13 @@ def test_journal_pool_lines(app, admin_user, draft):
|
|||
pricing_data={'foo': 'bar'},
|
||||
event={'event': 'foobar'},
|
||||
user_external_id='user:1',
|
||||
user_first_name='First1',
|
||||
user_last_name='Last1',
|
||||
payer_external_id='payer:1',
|
||||
payer_first_name='First1',
|
||||
payer_last_name='Last1',
|
||||
payer_demat=True,
|
||||
payer_direct_debit=False,
|
||||
),
|
||||
]
|
||||
errors = [
|
||||
|
@ -1078,7 +1134,13 @@ def test_journal_pool_lines(app, admin_user, draft):
|
|||
},
|
||||
event={'event': 'foobar'},
|
||||
user_external_id='user:1',
|
||||
user_first_name='First1',
|
||||
user_last_name='Last1',
|
||||
payer_external_id='payer:2',
|
||||
payer_first_name='First2',
|
||||
payer_last_name='Last2',
|
||||
payer_demat=False,
|
||||
payer_direct_debit=True,
|
||||
)
|
||||
)
|
||||
if not draft:
|
||||
|
@ -1094,6 +1156,10 @@ def test_journal_pool_lines(app, admin_user, draft):
|
|||
total_amount=1,
|
||||
user_external_id='user:2',
|
||||
payer_external_id='payer:2',
|
||||
payer_first_name='First2',
|
||||
payer_last_name='Last2',
|
||||
payer_demat=False,
|
||||
payer_direct_debit=True,
|
||||
regie=regie,
|
||||
)
|
||||
lines.append(
|
||||
|
@ -1108,7 +1174,13 @@ def test_journal_pool_lines(app, admin_user, draft):
|
|||
pricing_data={'foo': 'bar'},
|
||||
event={'event': 'foobar2'},
|
||||
user_external_id='user:2',
|
||||
user_first_name='First2',
|
||||
user_last_name='Last2',
|
||||
payer_external_id='payer:2',
|
||||
payer_first_name='First2',
|
||||
payer_last_name='Last2',
|
||||
payer_demat=False,
|
||||
payer_direct_debit=True,
|
||||
from_injected_line=injected_line,
|
||||
),
|
||||
)
|
||||
|
@ -1356,6 +1428,36 @@ def test_journal_pool_lines(app, admin_user, draft):
|
|||
params={'payer_external_id': 'payer:2'},
|
||||
)
|
||||
assert len(resp.pyquery('tr td.status')) == 22
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/journal/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'payer_first_name': 'first'},
|
||||
)
|
||||
assert len(resp.pyquery('tr td.status')) == 23
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/journal/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'payer_first_name': 'first1'},
|
||||
)
|
||||
assert len(resp.pyquery('tr td.status')) == 1
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/journal/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'payer_last_name': 'last'},
|
||||
)
|
||||
assert len(resp.pyquery('tr td.status')) == 23
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/journal/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'payer_last_name': 'last1'},
|
||||
)
|
||||
assert len(resp.pyquery('tr td.status')) == 1
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/journal/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'payer_demat': True},
|
||||
)
|
||||
assert len(resp.pyquery('tr td.status')) == 1
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/journal/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'payer_direct_debit': True},
|
||||
)
|
||||
assert len(resp.pyquery('tr td.status')) == 22
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/journal/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'user_external_id': 'user:1'},
|
||||
|
@ -1366,6 +1468,26 @@ def test_journal_pool_lines(app, admin_user, draft):
|
|||
params={'user_external_id': 'user:2'},
|
||||
)
|
||||
assert len(resp.pyquery('tr td.status')) == 1
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/journal/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'user_first_name': 'first'},
|
||||
)
|
||||
assert len(resp.pyquery('tr td.status')) == 23
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/journal/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'user_first_name': 'first1'},
|
||||
)
|
||||
assert len(resp.pyquery('tr td.status')) == 22
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/journal/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'user_last_name': 'last'},
|
||||
)
|
||||
assert len(resp.pyquery('tr td.status')) == 23
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/journal/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'user_last_name': 'last1'},
|
||||
)
|
||||
assert len(resp.pyquery('tr td.status')) == 22
|
||||
resp = app.get(
|
||||
'/manage/invoicing/regie/%s/campaign/%s/pool/%s/journal/' % (regie.pk, campaign.pk, pool.pk),
|
||||
params={'status': 'success'},
|
||||
|
|
Loading…
Reference in New Issue