invoicing: display payer infos (#75054)

This commit is contained in:
Lauréline Guérin 2023-03-02 16:34:55 +01:00
parent 869cc6ca22
commit 5723ed2a2f
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
6 changed files with 47 additions and 10 deletions

View File

@ -303,6 +303,11 @@ class AbstractInvoice(models.Model):
class Meta:
abstract = True
@property
def payer_name(self):
payer_name = '%s %s' % (self.payer_first_name, self.payer_last_name)
return payer_name.strip()
class DraftInvoice(AbstractInvoice):
pass
@ -392,6 +397,11 @@ class AbstractInvoiceLine(models.Model):
user_name = '%s %s' % (self.user_first_name, self.user_last_name)
return user_name.strip()
@property
def payer_name(self):
payer_name = '%s %s' % (self.payer_first_name, self.payer_last_name)
return payer_name.strip()
def get_error_display(self):
if self.status == 'success':
return

View File

@ -16,7 +16,13 @@
<td>{{ line.unit_amount }}</td>
<td>{{ line.total_amount }}</td>
<td>{{ line.user_name }} ({{ line.user_external_id }})</td>
<td>{{ line.payer_external_id }}</td>
<td>
{{ line.payer_name }} ({{ line.payer_external_id }})
<br />
{% blocktrans with payer_demat=line.payer_demat|yesno %}demat: {{ payer_demat }}{% endblocktrans %}
<br />
{% blocktrans with payer_direct_debit=line.payer_direct_debit|yesno %}direct debit: {{ payer_direct_debit }}{% endblocktrans %}
</td>
<td class="status">
<span class="meta meta-{{ line.status }}">{% spaceless %}
{% if line.status == 'error' and line.error_status %}

View File

@ -41,7 +41,7 @@
<td>{{ line.unit_amount }}</td>
<td>{{ line.total_amount }}</td>
<td>{{ line.user_name }} ({{ line.user_external_id }})</td>
<td>{{ line.payer_external_id }}</td>
<td>{{ line.payer_name}} ({{ line.payer_external_id }})</td>
<td class="status">
<span class="meta meta-{{ line.status }}">{% spaceless %}
{% if line.status == 'error'%}

View File

@ -51,9 +51,9 @@
{% for invoice in object_list %}
<li class="invoice untoggled" data-invoice-id="{{ invoice.pk }}" data-invoice-lines-url="{% url 'lingo-manager-invoicing-invoice-line-list' regie_pk=regie.pk pk=object.pk pool_pk=pool.pk invoice_pk=invoice.pk %}">
{% if pool.draft %}
{% blocktrans with number=invoice.pk payer=invoice.payer_external_id amount=invoice.total_amount %}Invoice <a href="{{ journal_url }}?invoice_id={{ number }}">PROFORMA-{{ number }}</a> addressed to <a href="{{ journal_url }}?payer_external_id={{ payer }}">{{ payer }}</a>, amount {{ amount }}€{% endblocktrans %}
{% blocktrans with number=invoice.pk payer_id=invoice.payer_external_id payer_name=invoice.payer_name payer_demat=invoice.payer_demat|yesno payer_direct_debit=invoice.payer_direct_debit|yesno amount=invoice.total_amount %}Invoice <a href="{{ journal_url }}?invoice_id={{ number }}">PROFORMA-{{ number }}</a> addressed to <a href="{{ journal_url }}?payer_external_id={{ payer_id }}">{{ payer_name }} ({{ payer_id }})</a>, amount {{ amount }}€, demat: {{ payer_demat }}, direct debit: {{ payer_direct_debit }}{% endblocktrans %}
{% else %}
{% blocktrans with invoice_number=invoice.formatted_number payer=invoice.payer_external_id amount=invoice.total_amount number=invoice.number %}Invoice <a href="{{ journal_url }}?invoice_number={{ number }}">{{ invoice_number }}</a> addressed to <a href="{{ journal_url }}?payer_external_id={{ payer }}">{{ payer }}</a>, amount {{ amount }}€{% endblocktrans %}
{% blocktrans with invoice_number=invoice.formatted_number payer_id=invoice.payer_external_id payer_name=invoice.payer_name payer_demat=invoice.payer_demat|yesno payer_direct_debit=invoice.payer_direct_debit|yesno amount=invoice.total_amount number=invoice.number %}Invoice <a href="{{ journal_url }}?invoice_number={{ number }}">{{ invoice_number }}</a> addressed to <a href="{{ journal_url }}?payer_external_id={{ payer_id }}">{{ payer_name }} ({{ payer_id }})</a>, amount {{ amount }}€, demat: {{ payer_demat }}, direct debit: {{ payer_direct_debit }}{% endblocktrans %}
{% endif %}
<span class="togglable"></span>
</li>

View File

@ -635,6 +635,8 @@ class NonInvoicedLineListView(ListView):
'total_amount',
'user_external_id',
'payer_external_id',
'payer_first_name',
'payer_last_name',
'user_first_name',
'user_last_name',
'event',
@ -669,6 +671,9 @@ class NonInvoicedLineListView(ListView):
line['user_name'] = InvoiceLine(
user_first_name=line['user_first_name'], user_last_name=line['user_last_name']
).user_name
line['payer_name'] = InvoiceLine(
payer_first_name=line['payer_first_name'], payer_last_name=line['payer_last_name']
).payer_name
line['error_display'] = InvoiceLine(
status=line['status'], pricing_data=line['pricing_data']
).get_error_display()

View File

@ -627,10 +627,24 @@ def test_detail_pool_invoices(app, admin_user, draft):
status='completed',
)
invoice1 = invoice_model.objects.create(
date_issue=datetime.date.today(), regie=regie, pool=pool, payer_external_id='payer:1'
date_issue=datetime.date.today(),
regie=regie,
pool=pool,
payer_external_id='payer:1',
payer_first_name='First1',
payer_last_name='Name1',
payer_demat=True,
payer_direct_debit=False,
)
invoice2 = invoice_model.objects.create(
date_issue=datetime.date.today(), regie=regie, pool=pool, payer_external_id='payer:2'
date_issue=datetime.date.today(),
regie=regie,
pool=pool,
payer_external_id='payer:2',
payer_first_name='First2',
payer_last_name='Name2',
payer_demat=False,
payer_direct_debit=True,
)
if not draft:
invoice1.set_number()
@ -711,12 +725,13 @@ def test_detail_pool_invoices(app, admin_user, draft):
if draft:
assert (
resp.pyquery('li[data-invoice-id="%s"]' % invoice1.pk).text()
== 'Invoice PROFORMA-%s addressed to payer:1, amount 6.00€' % invoice1.pk
== 'Invoice PROFORMA-%s addressed to First1 Name1 (payer:1), amount 6.00€, demat: yes, direct debit: no'
% invoice1.pk
)
else:
assert resp.pyquery(
'li[data-invoice-id="%s"]' % invoice1.pk
).text() == 'Invoice F%02s-%s-0000001 addressed to payer:1, amount 6.00€' % (
).text() == 'Invoice F%02s-%s-0000001 addressed to First1 Name1 (payer:1), amount 6.00€, demat: yes, direct debit: no' % (
regie.pk,
invoice1.created_at.strftime('%y-%m'),
)
@ -744,12 +759,13 @@ def test_detail_pool_invoices(app, admin_user, draft):
if draft:
assert (
resp.pyquery('li[data-invoice-id="%s"]' % invoice2.pk).text()
== 'Invoice PROFORMA-%s addressed to payer:2, amount 1.00€' % invoice2.pk
== 'Invoice PROFORMA-%s addressed to First2 Name2 (payer:2), amount 1.00€, demat: no, direct debit: yes'
% invoice2.pk
)
else:
assert resp.pyquery(
'li[data-invoice-id="%s"]' % invoice2.pk
).text() == 'Invoice F%02d-%s-0000002 addressed to payer:2, amount 1.00€' % (
).text() == 'Invoice F%02d-%s-0000002 addressed to First2 Name2 (payer:2), amount 1.00€, demat: no, direct debit: yes' % (
regie.pk,
invoice2.created_at.strftime('%y-%m'),
)