mirror of https://gitlab.crans.org/bde/nk20
Lock invoices, delete them
This commit is contained in:
parent
1fb14ea33d
commit
679ac3a652
|
@ -2359,6 +2359,22 @@
|
||||||
"description": "Voir toutes les notes"
|
"description": "Voir toutes les notes"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"model": "permission.permission",
|
||||||
|
"pk": 151,
|
||||||
|
"fields": {
|
||||||
|
"model": [
|
||||||
|
"treasury",
|
||||||
|
"invoice"
|
||||||
|
],
|
||||||
|
"query": "{}",
|
||||||
|
"type": "delete",
|
||||||
|
"mask": 3,
|
||||||
|
"field": "",
|
||||||
|
"permanent": false,
|
||||||
|
"description": "Supprimer une facture"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"model": "permission.role",
|
"model": "permission.role",
|
||||||
"pk": 1,
|
"pk": 1,
|
||||||
|
@ -2539,7 +2555,8 @@
|
||||||
143,
|
143,
|
||||||
146,
|
146,
|
||||||
147,
|
147,
|
||||||
150
|
150,
|
||||||
|
151
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -2695,7 +2712,8 @@
|
||||||
147,
|
147,
|
||||||
148,
|
148,
|
||||||
149,
|
149,
|
||||||
150
|
150,
|
||||||
|
151
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -4,9 +4,8 @@
|
||||||
from crispy_forms.helper import FormHelper
|
from crispy_forms.helper import FormHelper
|
||||||
from crispy_forms.layout import Submit
|
from crispy_forms.layout import Submit
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.utils import timezone
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from note_kfet.inputs import DatePickerInput, AmountInput
|
from note_kfet.inputs import AmountInput
|
||||||
|
|
||||||
from .models import Invoice, Product, Remittance, SpecialTransactionProxy
|
from .models import Invoice, Product, Remittance, SpecialTransactionProxy
|
||||||
|
|
||||||
|
@ -16,19 +15,25 @@ class InvoiceForm(forms.ModelForm):
|
||||||
Create and generate invoices.
|
Create and generate invoices.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Django forms don't support date fields. We have to add it manually
|
def clean(self):
|
||||||
date = forms.DateField(
|
if self.instance and self.instance.locked:
|
||||||
initial=timezone.now,
|
for field_name in self.fields:
|
||||||
widget=DatePickerInput(),
|
self.cleaned_data[field_name] = getattr(self.instance, field_name)
|
||||||
)
|
self.errors.clear()
|
||||||
|
return self.cleaned_data
|
||||||
|
return super().clean()
|
||||||
|
|
||||||
def clean_date(self):
|
def save(self, commit=True):
|
||||||
self.instance.date = self.data.get("date")
|
"""
|
||||||
return self.instance.date
|
If the invoice is locked, don't save it
|
||||||
|
"""
|
||||||
|
if not self.instance.locked:
|
||||||
|
super().save(commit)
|
||||||
|
return self.instance
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Invoice
|
model = Invoice
|
||||||
exclude = ('bde', 'tex', )
|
exclude = ('bde', 'date', 'tex', )
|
||||||
|
|
||||||
|
|
||||||
class ProductForm(forms.ModelForm):
|
class ProductForm(forms.ModelForm):
|
||||||
|
|
|
@ -61,6 +61,13 @@ class Invoice(models.Model):
|
||||||
|
|
||||||
acquitted = models.BooleanField(
|
acquitted = models.BooleanField(
|
||||||
verbose_name=_("Acquitted"),
|
verbose_name=_("Acquitted"),
|
||||||
|
default=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
locked = models.BooleanField(
|
||||||
|
verbose_name=_("Locked"),
|
||||||
|
help_text=_("An invoice can't be edited when it is locked."),
|
||||||
|
default=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
tex = models.TextField(
|
tex = models.TextField(
|
||||||
|
@ -74,6 +81,12 @@ class Invoice(models.Model):
|
||||||
The advantage is to never change the template.
|
The advantage is to never change the template.
|
||||||
Warning: editing this model regenerate the tex source, so be careful.
|
Warning: editing this model regenerate the tex source, so be careful.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
old_invoice = Invoice.objects.filter(id=self.id)
|
||||||
|
if old_invoice.exists():
|
||||||
|
if old_invoice.get().locked:
|
||||||
|
raise ValidationError(_("This invoice is locked and can no longer be edited."))
|
||||||
|
|
||||||
products = self.products.all()
|
products = self.products.all()
|
||||||
|
|
||||||
self.place = "Gif-sur-Yvette"
|
self.place = "Gif-sur-Yvette"
|
||||||
|
@ -103,7 +116,7 @@ class Product(models.Model):
|
||||||
|
|
||||||
invoice = models.ForeignKey(
|
invoice = models.ForeignKey(
|
||||||
Invoice,
|
Invoice,
|
||||||
on_delete=models.PROTECT,
|
on_delete=models.CASCADE,
|
||||||
related_name="products",
|
related_name="products",
|
||||||
verbose_name=_("invoice"),
|
verbose_name=_("invoice"),
|
||||||
)
|
)
|
||||||
|
|
|
@ -14,11 +14,14 @@ class InvoiceTable(tables.Table):
|
||||||
"""
|
"""
|
||||||
List all invoices.
|
List all invoices.
|
||||||
"""
|
"""
|
||||||
id = tables.LinkColumn("treasury:invoice_update",
|
id = tables.LinkColumn(
|
||||||
|
"treasury:invoice_update",
|
||||||
args=[A("pk")],
|
args=[A("pk")],
|
||||||
text=lambda record: _("Invoice #{:d}").format(record.id), )
|
text=lambda record: _("Invoice #{:d}").format(record.id),
|
||||||
|
)
|
||||||
|
|
||||||
invoice = tables.LinkColumn("treasury:invoice_render",
|
invoice = tables.LinkColumn(
|
||||||
|
"treasury:invoice_render",
|
||||||
verbose_name=_("Invoice"),
|
verbose_name=_("Invoice"),
|
||||||
args=[A("pk")],
|
args=[A("pk")],
|
||||||
accessor="pk",
|
accessor="pk",
|
||||||
|
@ -26,7 +29,24 @@ class InvoiceTable(tables.Table):
|
||||||
attrs={
|
attrs={
|
||||||
'a': {'class': 'fa fa-file-pdf-o'},
|
'a': {'class': 'fa fa-file-pdf-o'},
|
||||||
'td': {'data-turbolinks': 'false'}
|
'td': {'data-turbolinks': 'false'}
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
delete = tables.LinkColumn(
|
||||||
|
'treasury:invoice_delete',
|
||||||
|
args=[A('pk')],
|
||||||
|
verbose_name=_("delete"),
|
||||||
|
text=_("Delete"),
|
||||||
|
attrs={
|
||||||
|
'th': {
|
||||||
|
'id': 'delete-membership-header'
|
||||||
|
},
|
||||||
|
'a': {
|
||||||
|
'class': 'btn btn-danger',
|
||||||
|
'data-type': 'delete-membership'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
attrs = {
|
attrs = {
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
|
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
from .views import InvoiceCreateView, InvoiceListView, InvoiceUpdateView, InvoiceRenderView, RemittanceListView,\
|
from .views import InvoiceCreateView, InvoiceListView, InvoiceUpdateView, InvoiceDeleteView, InvoiceRenderView,\
|
||||||
RemittanceCreateView, RemittanceUpdateView, LinkTransactionToRemittanceView, UnlinkTransactionToRemittanceView,\
|
RemittanceListView, RemittanceCreateView, RemittanceUpdateView, LinkTransactionToRemittanceView,\
|
||||||
SogeCreditListView, SogeCreditManageView
|
UnlinkTransactionToRemittanceView, SogeCreditListView, SogeCreditManageView
|
||||||
|
|
||||||
app_name = 'treasury'
|
app_name = 'treasury'
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
@ -13,6 +13,7 @@ urlpatterns = [
|
||||||
path('invoice/', InvoiceListView.as_view(), name='invoice_list'),
|
path('invoice/', InvoiceListView.as_view(), name='invoice_list'),
|
||||||
path('invoice/create/', InvoiceCreateView.as_view(), name='invoice_create'),
|
path('invoice/create/', InvoiceCreateView.as_view(), name='invoice_create'),
|
||||||
path('invoice/<int:pk>/', InvoiceUpdateView.as_view(), name='invoice_update'),
|
path('invoice/<int:pk>/', InvoiceUpdateView.as_view(), name='invoice_update'),
|
||||||
|
path('invoice/<int:pk>/delete/', InvoiceDeleteView.as_view(), name='invoice_delete'),
|
||||||
path('invoice/render/<int:pk>/', InvoiceRenderView.as_view(), name='invoice_render'),
|
path('invoice/render/<int:pk>/', InvoiceRenderView.as_view(), name='invoice_render'),
|
||||||
|
|
||||||
# Remittance app paths
|
# Remittance app paths
|
||||||
|
|
|
@ -18,7 +18,7 @@ from django.urls import reverse_lazy
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.views.generic import CreateView, UpdateView, DetailView
|
from django.views.generic import CreateView, UpdateView, DetailView
|
||||||
from django.views.generic.base import View, TemplateView
|
from django.views.generic.base import View, TemplateView
|
||||||
from django.views.generic.edit import BaseFormView
|
from django.views.generic.edit import BaseFormView, DeleteView
|
||||||
from django_tables2 import SingleTableView
|
from django_tables2 import SingleTableView
|
||||||
from note.models import SpecialTransaction, NoteSpecial, Alias
|
from note.models import SpecialTransaction, NoteSpecial, Alias
|
||||||
from note_kfet.settings.base import BASE_DIR
|
from note_kfet.settings.base import BASE_DIR
|
||||||
|
@ -97,14 +97,20 @@ class InvoiceUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
|
||||||
form.helper = FormHelper()
|
form.helper = FormHelper()
|
||||||
# Remove form tag on the generation of the form in the template (already present on the template)
|
# Remove form tag on the generation of the form in the template (already present on the template)
|
||||||
form.helper.form_tag = False
|
form.helper.form_tag = False
|
||||||
# Fill the intial value for the date field, with the initial date of the model instance
|
|
||||||
form.fields['date'].initial = form.instance.date
|
|
||||||
# The formset handles the set of the products
|
# The formset handles the set of the products
|
||||||
form_set = ProductFormSet(instance=form.instance)
|
form_set = ProductFormSet(instance=self.object)
|
||||||
context['formset'] = form_set
|
context['formset'] = form_set
|
||||||
context['helper'] = ProductFormSetHelper()
|
context['helper'] = ProductFormSetHelper()
|
||||||
context['no_cache'] = True
|
context['no_cache'] = True
|
||||||
|
|
||||||
|
if self.object.locked:
|
||||||
|
for field_name in form.fields:
|
||||||
|
form.fields[field_name].disabled = True
|
||||||
|
for f in form_set.forms:
|
||||||
|
for field_name in f.fields:
|
||||||
|
f.fields[field_name].disabled = True
|
||||||
|
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
|
@ -131,6 +137,17 @@ class InvoiceUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
|
||||||
return reverse_lazy('treasury:invoice_list')
|
return reverse_lazy('treasury:invoice_list')
|
||||||
|
|
||||||
|
|
||||||
|
class InvoiceDeleteView(ProtectQuerysetMixin, LoginRequiredMixin, DeleteView):
|
||||||
|
"""
|
||||||
|
Delete a non-validated WEI registration
|
||||||
|
"""
|
||||||
|
model = Invoice
|
||||||
|
extra_context = {"title": _("Delete invoice")}
|
||||||
|
|
||||||
|
def get_success_url(self):
|
||||||
|
return reverse_lazy('treasury:invoice_list')
|
||||||
|
|
||||||
|
|
||||||
class InvoiceRenderView(LoginRequiredMixin, View):
|
class InvoiceRenderView(LoginRequiredMixin, View):
|
||||||
"""
|
"""
|
||||||
Render Invoice as a generated PDF with the given information and a LaTeX template
|
Render Invoice as a generated PDF with the given information and a LaTeX template
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-08-06 22:27+0200\n"
|
"POT-Creation-Date: 2020-08-07 11:03+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -96,7 +96,7 @@ msgid "type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/activity/models.py:87 apps/logs/models.py:22 apps/member/models.py:280
|
#: apps/activity/models.py:87 apps/logs/models.py:22 apps/member/models.py:280
|
||||||
#: apps/note/models/notes.py:126 apps/treasury/models.py:253
|
#: apps/note/models/notes.py:126 apps/treasury/models.py:266
|
||||||
#: apps/wei/models.py:160 templates/treasury/sogecredit_detail.html:14
|
#: apps/wei/models.py:160 templates/treasury/sogecredit_detail.html:14
|
||||||
#: templates/wei/survey.html:16
|
#: templates/wei/survey.html:16
|
||||||
msgid "user"
|
msgid "user"
|
||||||
|
@ -194,18 +194,18 @@ msgstr ""
|
||||||
msgid "remove"
|
msgid "remove"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/activity/tables.py:79 apps/note/forms.py:76 apps/treasury/models.py:172
|
#: apps/activity/tables.py:79 apps/note/forms.py:76 apps/treasury/models.py:185
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/activity/tables.py:81 apps/member/forms.py:106
|
#: apps/activity/tables.py:81 apps/member/forms.py:106
|
||||||
#: apps/registration/forms.py:70 apps/treasury/forms.py:130
|
#: apps/registration/forms.py:70 apps/treasury/forms.py:135
|
||||||
#: apps/wei/forms/registration.py:94
|
#: apps/wei/forms/registration.py:94
|
||||||
msgid "Last name"
|
msgid "Last name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/activity/tables.py:83 apps/member/forms.py:111
|
#: apps/activity/tables.py:83 apps/member/forms.py:111
|
||||||
#: apps/registration/forms.py:75 apps/treasury/forms.py:132
|
#: apps/registration/forms.py:75 apps/treasury/forms.py:137
|
||||||
#: apps/wei/forms/registration.py:99 templates/note/transaction_form.html:131
|
#: apps/wei/forms/registration.py:99 templates/note/transaction_form.html:131
|
||||||
msgid "First name"
|
msgid "First name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -280,7 +280,8 @@ msgid "edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/logs/models.py:63 apps/note/tables.py:137 apps/note/tables.py:165
|
#: apps/logs/models.py:63 apps/note/tables.py:137 apps/note/tables.py:165
|
||||||
#: apps/permission/models.py:129 apps/wei/tables.py:73
|
#: apps/permission/models.py:129 apps/treasury/tables.py:38
|
||||||
|
#: apps/wei/tables.py:73
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -367,7 +368,7 @@ msgid "Credit amount"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/forms.py:116 apps/registration/forms.py:80
|
#: apps/member/forms.py:116 apps/registration/forms.py:80
|
||||||
#: apps/treasury/forms.py:134 apps/wei/forms/registration.py:104
|
#: apps/treasury/forms.py:139 apps/wei/forms/registration.py:104
|
||||||
#: templates/note/transaction_form.html:137
|
#: templates/note/transaction_form.html:137
|
||||||
msgid "Bank"
|
msgid "Bank"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -715,7 +716,7 @@ msgstr ""
|
||||||
msgid "Reason"
|
msgid "Reason"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/note/forms.py:87 apps/treasury/tables.py:119
|
#: apps/note/forms.py:87 apps/treasury/tables.py:139
|
||||||
msgid "Valid"
|
msgid "Valid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -960,7 +961,7 @@ msgstr ""
|
||||||
msgid "membership transaction"
|
msgid "membership transaction"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/note/models/transactions.py:344 apps/treasury/models.py:259
|
#: apps/note/models/transactions.py:344 apps/treasury/models.py:272
|
||||||
msgid "membership transactions"
|
msgid "membership transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -976,8 +977,10 @@ msgstr ""
|
||||||
msgid "No reason specified"
|
msgid "No reason specified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/note/tables.py:139 apps/note/tables.py:167 apps/wei/tables.py:74
|
#: apps/note/tables.py:139 apps/note/tables.py:167 apps/treasury/tables.py:39
|
||||||
#: apps/wei/tables.py:100 templates/treasury/sogecredit_detail.html:59
|
#: apps/wei/tables.py:74 apps/wei/tables.py:100
|
||||||
|
#: templates/treasury/invoice_confirm_delete.html:28
|
||||||
|
#: templates/treasury/sogecredit_detail.html:59
|
||||||
#: templates/wei/weiregistration_confirm_delete.html:32
|
#: templates/wei/weiregistration_confirm_delete.html:32
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1197,44 +1200,44 @@ msgstr ""
|
||||||
msgid "Treasury"
|
msgid "Treasury"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/forms.py:88 apps/treasury/forms.py:142
|
#: apps/treasury/forms.py:93 apps/treasury/forms.py:147
|
||||||
#: templates/activity/activity_form.html:9
|
#: templates/activity/activity_form.html:9
|
||||||
#: templates/activity/activity_invite.html:8
|
#: templates/activity/activity_invite.html:8
|
||||||
#: templates/django_filters/rest_framework/form.html:5
|
#: templates/django_filters/rest_framework/form.html:5
|
||||||
#: templates/member/add_members.html:31 templates/member/club_form.html:9
|
#: templates/member/add_members.html:31 templates/member/club_form.html:9
|
||||||
#: templates/note/transactiontemplate_form.html:15
|
#: templates/note/transactiontemplate_form.html:15
|
||||||
#: templates/treasury/invoice_form.html:56 templates/wei/bus_form.html:13
|
#: templates/treasury/invoice_form.html:64 templates/wei/bus_form.html:13
|
||||||
#: templates/wei/busteam_form.html:13 templates/wei/weiclub_form.html:15
|
#: templates/wei/busteam_form.html:13 templates/wei/weiclub_form.html:15
|
||||||
#: templates/wei/weiregistration_form.html:14
|
#: templates/wei/weiregistration_form.html:14
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/forms.py:90
|
#: apps/treasury/forms.py:95
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/forms.py:99
|
#: apps/treasury/forms.py:104
|
||||||
msgid "Remittance is already closed."
|
msgid "Remittance is already closed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/forms.py:104
|
#: apps/treasury/forms.py:109
|
||||||
msgid "You can't change the type of the remittance."
|
msgid "You can't change the type of the remittance."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/forms.py:124 apps/treasury/models.py:238
|
#: apps/treasury/forms.py:129 apps/treasury/models.py:251
|
||||||
#: apps/treasury/tables.py:77 apps/treasury/tables.py:85
|
#: apps/treasury/tables.py:97 apps/treasury/tables.py:105
|
||||||
#: templates/treasury/invoice_list.html:13
|
#: templates/treasury/invoice_list.html:13
|
||||||
#: templates/treasury/remittance_list.html:13
|
#: templates/treasury/remittance_list.html:13
|
||||||
#: templates/treasury/sogecredit_list.html:13
|
#: templates/treasury/sogecredit_list.html:13
|
||||||
msgid "Remittance"
|
msgid "Remittance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/forms.py:125
|
#: apps/treasury/forms.py:130
|
||||||
msgid "No attached remittance"
|
msgid "No attached remittance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/forms.py:136 apps/treasury/tables.py:47
|
#: apps/treasury/forms.py:141 apps/treasury/tables.py:67
|
||||||
#: apps/treasury/tables.py:115 templates/note/transaction_form.html:99
|
#: apps/treasury/tables.py:135 templates/note/transaction_form.html:99
|
||||||
#: templates/treasury/remittance_form.html:18
|
#: templates/treasury/remittance_form.html:18
|
||||||
msgid "Amount"
|
msgid "Amount"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1263,7 +1266,7 @@ msgstr ""
|
||||||
msgid "Address"
|
msgid "Address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:59 apps/treasury/models.py:166
|
#: apps/treasury/models.py:59 apps/treasury/models.py:179
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1272,122 +1275,134 @@ msgid "Acquitted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:68
|
#: apps/treasury/models.py:68
|
||||||
|
msgid "Locked"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/treasury/models.py:69
|
||||||
|
msgid "An invoice can't be edited when it is locked."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/treasury/models.py:75
|
||||||
msgid "tex source"
|
msgid "tex source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:95 apps/treasury/models.py:108
|
#: apps/treasury/models.py:88 templates/treasury/invoice_form.html:17
|
||||||
|
msgid "This invoice is locked and can no longer be edited."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/treasury/models.py:108 apps/treasury/models.py:121
|
||||||
msgid "invoice"
|
msgid "invoice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:96
|
#: apps/treasury/models.py:109
|
||||||
msgid "invoices"
|
msgid "invoices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:113
|
#: apps/treasury/models.py:126
|
||||||
msgid "Designation"
|
msgid "Designation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:117
|
#: apps/treasury/models.py:130
|
||||||
msgid "Quantity"
|
msgid "Quantity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:121
|
#: apps/treasury/models.py:134
|
||||||
msgid "Unit price"
|
msgid "Unit price"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:137
|
#: apps/treasury/models.py:150
|
||||||
msgid "product"
|
msgid "product"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:138
|
#: apps/treasury/models.py:151
|
||||||
msgid "products"
|
msgid "products"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:155
|
#: apps/treasury/models.py:168
|
||||||
msgid "remittance type"
|
msgid "remittance type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:156
|
#: apps/treasury/models.py:169
|
||||||
msgid "remittance types"
|
msgid "remittance types"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:177
|
#: apps/treasury/models.py:190
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:182
|
#: apps/treasury/models.py:195
|
||||||
msgid "Closed"
|
msgid "Closed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:186
|
#: apps/treasury/models.py:199
|
||||||
msgid "remittance"
|
msgid "remittance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:187
|
#: apps/treasury/models.py:200
|
||||||
msgid "remittances"
|
msgid "remittances"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:219
|
#: apps/treasury/models.py:232
|
||||||
msgid "Remittance #{:d}: {}"
|
msgid "Remittance #{:d}: {}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:242
|
#: apps/treasury/models.py:255
|
||||||
msgid "special transaction proxy"
|
msgid "special transaction proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:243
|
#: apps/treasury/models.py:256
|
||||||
msgid "special transaction proxies"
|
msgid "special transaction proxies"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:265
|
#: apps/treasury/models.py:278
|
||||||
msgid "credit transaction"
|
msgid "credit transaction"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:328
|
#: apps/treasury/models.py:341
|
||||||
msgid ""
|
msgid ""
|
||||||
"This user doesn't have enough money to pay the memberships with its note. "
|
"This user doesn't have enough money to pay the memberships with its note. "
|
||||||
"Please ask her/him to credit the note before invalidating this credit."
|
"Please ask her/him to credit the note before invalidating this credit."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:340 templates/treasury/sogecredit_detail.html:10
|
#: apps/treasury/models.py:353 templates/treasury/sogecredit_detail.html:10
|
||||||
msgid "Credit from the Société générale"
|
msgid "Credit from the Société générale"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/models.py:341
|
#: apps/treasury/models.py:354
|
||||||
msgid "Credits from the Société générale"
|
msgid "Credits from the Société générale"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/tables.py:19
|
#: apps/treasury/tables.py:20
|
||||||
msgid "Invoice #{:d}"
|
msgid "Invoice #{:d}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/tables.py:22 templates/treasury/invoice_list.html:10
|
#: apps/treasury/tables.py:25 templates/treasury/invoice_list.html:10
|
||||||
#: templates/treasury/remittance_list.html:10
|
#: templates/treasury/remittance_list.html:10
|
||||||
#: templates/treasury/sogecredit_list.html:10
|
#: templates/treasury/sogecredit_list.html:10
|
||||||
msgid "Invoice"
|
msgid "Invoice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/tables.py:45
|
#: apps/treasury/tables.py:65
|
||||||
msgid "Transaction count"
|
msgid "Transaction count"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/tables.py:50 apps/treasury/tables.py:52
|
#: apps/treasury/tables.py:70 apps/treasury/tables.py:72
|
||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/tables.py:79
|
#: apps/treasury/tables.py:99
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/tables.py:87
|
#: apps/treasury/tables.py:107
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/tables.py:126
|
#: apps/treasury/tables.py:146
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/tables.py:126
|
#: apps/treasury/tables.py:146
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1403,28 +1418,32 @@ msgstr ""
|
||||||
msgid "Update an invoice"
|
msgid "Update an invoice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/views.py:188
|
#: apps/treasury/views.py:145 templates/treasury/invoice_confirm_delete.html:8
|
||||||
|
msgid "Delete invoice"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/treasury/views.py:205
|
||||||
msgid "Create a new remittance"
|
msgid "Create a new remittance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/views.py:209 templates/treasury/remittance_form.html:9
|
#: apps/treasury/views.py:226 templates/treasury/remittance_form.html:9
|
||||||
#: templates/treasury/specialtransactionproxy_form.html:7
|
#: templates/treasury/specialtransactionproxy_form.html:7
|
||||||
msgid "Remittances list"
|
msgid "Remittances list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/views.py:259
|
#: apps/treasury/views.py:276
|
||||||
msgid "Update a remittance"
|
msgid "Update a remittance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/views.py:282
|
#: apps/treasury/views.py:299
|
||||||
msgid "Attach a transaction to a remittance"
|
msgid "Attach a transaction to a remittance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/views.py:326
|
#: apps/treasury/views.py:343
|
||||||
msgid "List of credits from the Société générale"
|
msgid "List of credits from the Société générale"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/treasury/views.py:360
|
#: apps/treasury/views.py:377
|
||||||
msgid "Manage credits from the Société générale"
|
msgid "Manage credits from the Société générale"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2365,17 +2384,30 @@ msgid ""
|
||||||
"by following the link you received."
|
"by following the link you received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/treasury/invoice_confirm_delete.html:13
|
||||||
|
msgid "This invoice is locked and can't be deleted."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/treasury/invoice_confirm_delete.html:19
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete this invoice? This action can't be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/treasury/invoice_confirm_delete.html:26
|
||||||
|
msgid "Return to invoices list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: templates/treasury/invoice_form.html:10
|
#: templates/treasury/invoice_form.html:10
|
||||||
msgid ""
|
msgid ""
|
||||||
"Warning: the LaTeX template is saved with this object. Updating the invoice "
|
"Warning: the LaTeX template is saved with this object. Updating the invoice "
|
||||||
"implies regenerate it. Be careful if you manipulate old invoices."
|
"implies regenerate it. Be careful if you manipulate old invoices."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/treasury/invoice_form.html:51
|
#: templates/treasury/invoice_form.html:58
|
||||||
msgid "Add product"
|
msgid "Add product"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/treasury/invoice_form.html:52
|
#: templates/treasury/invoice_form.html:59
|
||||||
msgid "Remove product"
|
msgid "Remove product"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-08-06 22:27+0200\n"
|
"POT-Creation-Date: 2020-08-07 11:03+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -97,7 +97,7 @@ msgid "type"
|
||||||
msgstr "type"
|
msgstr "type"
|
||||||
|
|
||||||
#: apps/activity/models.py:87 apps/logs/models.py:22 apps/member/models.py:280
|
#: apps/activity/models.py:87 apps/logs/models.py:22 apps/member/models.py:280
|
||||||
#: apps/note/models/notes.py:126 apps/treasury/models.py:253
|
#: apps/note/models/notes.py:126 apps/treasury/models.py:266
|
||||||
#: apps/wei/models.py:160 templates/treasury/sogecredit_detail.html:14
|
#: apps/wei/models.py:160 templates/treasury/sogecredit_detail.html:14
|
||||||
#: templates/wei/survey.html:16
|
#: templates/wei/survey.html:16
|
||||||
msgid "user"
|
msgid "user"
|
||||||
|
@ -195,18 +195,18 @@ msgstr "Entré le "
|
||||||
msgid "remove"
|
msgid "remove"
|
||||||
msgstr "supprimer"
|
msgstr "supprimer"
|
||||||
|
|
||||||
#: apps/activity/tables.py:79 apps/note/forms.py:76 apps/treasury/models.py:172
|
#: apps/activity/tables.py:79 apps/note/forms.py:76 apps/treasury/models.py:185
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "Type"
|
msgstr "Type"
|
||||||
|
|
||||||
#: apps/activity/tables.py:81 apps/member/forms.py:106
|
#: apps/activity/tables.py:81 apps/member/forms.py:106
|
||||||
#: apps/registration/forms.py:70 apps/treasury/forms.py:130
|
#: apps/registration/forms.py:70 apps/treasury/forms.py:135
|
||||||
#: apps/wei/forms/registration.py:94
|
#: apps/wei/forms/registration.py:94
|
||||||
msgid "Last name"
|
msgid "Last name"
|
||||||
msgstr "Nom de famille"
|
msgstr "Nom de famille"
|
||||||
|
|
||||||
#: apps/activity/tables.py:83 apps/member/forms.py:111
|
#: apps/activity/tables.py:83 apps/member/forms.py:111
|
||||||
#: apps/registration/forms.py:75 apps/treasury/forms.py:132
|
#: apps/registration/forms.py:75 apps/treasury/forms.py:137
|
||||||
#: apps/wei/forms/registration.py:99 templates/note/transaction_form.html:131
|
#: apps/wei/forms/registration.py:99 templates/note/transaction_form.html:131
|
||||||
msgid "First name"
|
msgid "First name"
|
||||||
msgstr "Prénom"
|
msgstr "Prénom"
|
||||||
|
@ -281,7 +281,8 @@ msgid "edit"
|
||||||
msgstr "Modifier"
|
msgstr "Modifier"
|
||||||
|
|
||||||
#: apps/logs/models.py:63 apps/note/tables.py:137 apps/note/tables.py:165
|
#: apps/logs/models.py:63 apps/note/tables.py:137 apps/note/tables.py:165
|
||||||
#: apps/permission/models.py:129 apps/wei/tables.py:73
|
#: apps/permission/models.py:129 apps/treasury/tables.py:38
|
||||||
|
#: apps/wei/tables.py:73
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr "Supprimer"
|
msgstr "Supprimer"
|
||||||
|
|
||||||
|
@ -368,7 +369,7 @@ msgid "Credit amount"
|
||||||
msgstr "Montant à créditer"
|
msgstr "Montant à créditer"
|
||||||
|
|
||||||
#: apps/member/forms.py:116 apps/registration/forms.py:80
|
#: apps/member/forms.py:116 apps/registration/forms.py:80
|
||||||
#: apps/treasury/forms.py:134 apps/wei/forms/registration.py:104
|
#: apps/treasury/forms.py:139 apps/wei/forms/registration.py:104
|
||||||
#: templates/note/transaction_form.html:137
|
#: templates/note/transaction_form.html:137
|
||||||
msgid "Bank"
|
msgid "Bank"
|
||||||
msgstr "Banque"
|
msgstr "Banque"
|
||||||
|
@ -722,7 +723,7 @@ msgstr "Destination"
|
||||||
msgid "Reason"
|
msgid "Reason"
|
||||||
msgstr "Raison"
|
msgstr "Raison"
|
||||||
|
|
||||||
#: apps/note/forms.py:87 apps/treasury/tables.py:119
|
#: apps/note/forms.py:87 apps/treasury/tables.py:139
|
||||||
msgid "Valid"
|
msgid "Valid"
|
||||||
msgstr "Valide"
|
msgstr "Valide"
|
||||||
|
|
||||||
|
@ -974,7 +975,7 @@ msgstr "Transactions de crédit/retrait"
|
||||||
msgid "membership transaction"
|
msgid "membership transaction"
|
||||||
msgstr "Transaction d'adhésion"
|
msgstr "Transaction d'adhésion"
|
||||||
|
|
||||||
#: apps/note/models/transactions.py:344 apps/treasury/models.py:259
|
#: apps/note/models/transactions.py:344 apps/treasury/models.py:272
|
||||||
msgid "membership transactions"
|
msgid "membership transactions"
|
||||||
msgstr "Transactions d'adhésion"
|
msgstr "Transactions d'adhésion"
|
||||||
|
|
||||||
|
@ -990,8 +991,10 @@ msgstr "Cliquez pour valider"
|
||||||
msgid "No reason specified"
|
msgid "No reason specified"
|
||||||
msgstr "Pas de motif spécifié"
|
msgstr "Pas de motif spécifié"
|
||||||
|
|
||||||
#: apps/note/tables.py:139 apps/note/tables.py:167 apps/wei/tables.py:74
|
#: apps/note/tables.py:139 apps/note/tables.py:167 apps/treasury/tables.py:39
|
||||||
#: apps/wei/tables.py:100 templates/treasury/sogecredit_detail.html:59
|
#: apps/wei/tables.py:74 apps/wei/tables.py:100
|
||||||
|
#: templates/treasury/invoice_confirm_delete.html:28
|
||||||
|
#: templates/treasury/sogecredit_detail.html:59
|
||||||
#: templates/wei/weiregistration_confirm_delete.html:32
|
#: templates/wei/weiregistration_confirm_delete.html:32
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Supprimer"
|
msgstr "Supprimer"
|
||||||
|
@ -1226,44 +1229,44 @@ msgstr "Invalider l'inscription"
|
||||||
msgid "Treasury"
|
msgid "Treasury"
|
||||||
msgstr "Trésorerie"
|
msgstr "Trésorerie"
|
||||||
|
|
||||||
#: apps/treasury/forms.py:88 apps/treasury/forms.py:142
|
#: apps/treasury/forms.py:93 apps/treasury/forms.py:147
|
||||||
#: templates/activity/activity_form.html:9
|
#: templates/activity/activity_form.html:9
|
||||||
#: templates/activity/activity_invite.html:8
|
#: templates/activity/activity_invite.html:8
|
||||||
#: templates/django_filters/rest_framework/form.html:5
|
#: templates/django_filters/rest_framework/form.html:5
|
||||||
#: templates/member/add_members.html:31 templates/member/club_form.html:9
|
#: templates/member/add_members.html:31 templates/member/club_form.html:9
|
||||||
#: templates/note/transactiontemplate_form.html:15
|
#: templates/note/transactiontemplate_form.html:15
|
||||||
#: templates/treasury/invoice_form.html:56 templates/wei/bus_form.html:13
|
#: templates/treasury/invoice_form.html:64 templates/wei/bus_form.html:13
|
||||||
#: templates/wei/busteam_form.html:13 templates/wei/weiclub_form.html:15
|
#: templates/wei/busteam_form.html:13 templates/wei/weiclub_form.html:15
|
||||||
#: templates/wei/weiregistration_form.html:14
|
#: templates/wei/weiregistration_form.html:14
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr "Envoyer"
|
msgstr "Envoyer"
|
||||||
|
|
||||||
#: apps/treasury/forms.py:90
|
#: apps/treasury/forms.py:95
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Fermer"
|
msgstr "Fermer"
|
||||||
|
|
||||||
#: apps/treasury/forms.py:99
|
#: apps/treasury/forms.py:104
|
||||||
msgid "Remittance is already closed."
|
msgid "Remittance is already closed."
|
||||||
msgstr "La remise est déjà fermée."
|
msgstr "La remise est déjà fermée."
|
||||||
|
|
||||||
#: apps/treasury/forms.py:104
|
#: apps/treasury/forms.py:109
|
||||||
msgid "You can't change the type of the remittance."
|
msgid "You can't change the type of the remittance."
|
||||||
msgstr "Vous ne pouvez pas changer le type de la remise."
|
msgstr "Vous ne pouvez pas changer le type de la remise."
|
||||||
|
|
||||||
#: apps/treasury/forms.py:124 apps/treasury/models.py:238
|
#: apps/treasury/forms.py:129 apps/treasury/models.py:251
|
||||||
#: apps/treasury/tables.py:77 apps/treasury/tables.py:85
|
#: apps/treasury/tables.py:97 apps/treasury/tables.py:105
|
||||||
#: templates/treasury/invoice_list.html:13
|
#: templates/treasury/invoice_list.html:13
|
||||||
#: templates/treasury/remittance_list.html:13
|
#: templates/treasury/remittance_list.html:13
|
||||||
#: templates/treasury/sogecredit_list.html:13
|
#: templates/treasury/sogecredit_list.html:13
|
||||||
msgid "Remittance"
|
msgid "Remittance"
|
||||||
msgstr "Remise"
|
msgstr "Remise"
|
||||||
|
|
||||||
#: apps/treasury/forms.py:125
|
#: apps/treasury/forms.py:130
|
||||||
msgid "No attached remittance"
|
msgid "No attached remittance"
|
||||||
msgstr "Pas de remise associée"
|
msgstr "Pas de remise associée"
|
||||||
|
|
||||||
#: apps/treasury/forms.py:136 apps/treasury/tables.py:47
|
#: apps/treasury/forms.py:141 apps/treasury/tables.py:67
|
||||||
#: apps/treasury/tables.py:115 templates/note/transaction_form.html:99
|
#: apps/treasury/tables.py:135 templates/note/transaction_form.html:99
|
||||||
#: templates/treasury/remittance_form.html:18
|
#: templates/treasury/remittance_form.html:18
|
||||||
msgid "Amount"
|
msgid "Amount"
|
||||||
msgstr "Montant"
|
msgstr "Montant"
|
||||||
|
@ -1292,7 +1295,7 @@ msgstr "Nom"
|
||||||
msgid "Address"
|
msgid "Address"
|
||||||
msgstr "Adresse"
|
msgstr "Adresse"
|
||||||
|
|
||||||
#: apps/treasury/models.py:59 apps/treasury/models.py:166
|
#: apps/treasury/models.py:59 apps/treasury/models.py:179
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Date"
|
msgstr "Date"
|
||||||
|
|
||||||
|
@ -1301,80 +1304,92 @@ msgid "Acquitted"
|
||||||
msgstr "Acquittée"
|
msgstr "Acquittée"
|
||||||
|
|
||||||
#: apps/treasury/models.py:68
|
#: apps/treasury/models.py:68
|
||||||
|
msgid "Locked"
|
||||||
|
msgstr "Verrouillée"
|
||||||
|
|
||||||
|
#: apps/treasury/models.py:69
|
||||||
|
msgid "An invoice can't be edited when it is locked."
|
||||||
|
msgstr "Une facture ne peut plus être modifiée si elle est verrouillée."
|
||||||
|
|
||||||
|
#: apps/treasury/models.py:75
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "source"
|
#| msgid "source"
|
||||||
msgid "tex source"
|
msgid "tex source"
|
||||||
msgstr "source"
|
msgstr "source"
|
||||||
|
|
||||||
#: apps/treasury/models.py:95 apps/treasury/models.py:108
|
#: apps/treasury/models.py:88 templates/treasury/invoice_form.html:17
|
||||||
|
msgid "This invoice is locked and can no longer be edited."
|
||||||
|
msgstr "Cette facture est verrouillée et ne peut plus être éditée."
|
||||||
|
|
||||||
|
#: apps/treasury/models.py:108 apps/treasury/models.py:121
|
||||||
msgid "invoice"
|
msgid "invoice"
|
||||||
msgstr "facture"
|
msgstr "facture"
|
||||||
|
|
||||||
#: apps/treasury/models.py:96
|
#: apps/treasury/models.py:109
|
||||||
msgid "invoices"
|
msgid "invoices"
|
||||||
msgstr "factures"
|
msgstr "factures"
|
||||||
|
|
||||||
#: apps/treasury/models.py:113
|
#: apps/treasury/models.py:126
|
||||||
msgid "Designation"
|
msgid "Designation"
|
||||||
msgstr "Désignation"
|
msgstr "Désignation"
|
||||||
|
|
||||||
#: apps/treasury/models.py:117
|
#: apps/treasury/models.py:130
|
||||||
msgid "Quantity"
|
msgid "Quantity"
|
||||||
msgstr "Quantité"
|
msgstr "Quantité"
|
||||||
|
|
||||||
#: apps/treasury/models.py:121
|
#: apps/treasury/models.py:134
|
||||||
msgid "Unit price"
|
msgid "Unit price"
|
||||||
msgstr "Prix unitaire"
|
msgstr "Prix unitaire"
|
||||||
|
|
||||||
#: apps/treasury/models.py:137
|
#: apps/treasury/models.py:150
|
||||||
msgid "product"
|
msgid "product"
|
||||||
msgstr "produit"
|
msgstr "produit"
|
||||||
|
|
||||||
#: apps/treasury/models.py:138
|
#: apps/treasury/models.py:151
|
||||||
msgid "products"
|
msgid "products"
|
||||||
msgstr "produits"
|
msgstr "produits"
|
||||||
|
|
||||||
#: apps/treasury/models.py:155
|
#: apps/treasury/models.py:168
|
||||||
msgid "remittance type"
|
msgid "remittance type"
|
||||||
msgstr "type de remise"
|
msgstr "type de remise"
|
||||||
|
|
||||||
#: apps/treasury/models.py:156
|
#: apps/treasury/models.py:169
|
||||||
msgid "remittance types"
|
msgid "remittance types"
|
||||||
msgstr "types de remises"
|
msgstr "types de remises"
|
||||||
|
|
||||||
#: apps/treasury/models.py:177
|
#: apps/treasury/models.py:190
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr "Commentaire"
|
msgstr "Commentaire"
|
||||||
|
|
||||||
#: apps/treasury/models.py:182
|
#: apps/treasury/models.py:195
|
||||||
msgid "Closed"
|
msgid "Closed"
|
||||||
msgstr "Fermée"
|
msgstr "Fermée"
|
||||||
|
|
||||||
#: apps/treasury/models.py:186
|
#: apps/treasury/models.py:199
|
||||||
msgid "remittance"
|
msgid "remittance"
|
||||||
msgstr "remise"
|
msgstr "remise"
|
||||||
|
|
||||||
#: apps/treasury/models.py:187
|
#: apps/treasury/models.py:200
|
||||||
msgid "remittances"
|
msgid "remittances"
|
||||||
msgstr "remises"
|
msgstr "remises"
|
||||||
|
|
||||||
#: apps/treasury/models.py:219
|
#: apps/treasury/models.py:232
|
||||||
msgid "Remittance #{:d}: {}"
|
msgid "Remittance #{:d}: {}"
|
||||||
msgstr "Remise n°{:d} : {}"
|
msgstr "Remise n°{:d} : {}"
|
||||||
|
|
||||||
#: apps/treasury/models.py:242
|
#: apps/treasury/models.py:255
|
||||||
msgid "special transaction proxy"
|
msgid "special transaction proxy"
|
||||||
msgstr "Proxy de transaction spéciale"
|
msgstr "Proxy de transaction spéciale"
|
||||||
|
|
||||||
#: apps/treasury/models.py:243
|
#: apps/treasury/models.py:256
|
||||||
msgid "special transaction proxies"
|
msgid "special transaction proxies"
|
||||||
msgstr "Proxys de transactions spéciales"
|
msgstr "Proxys de transactions spéciales"
|
||||||
|
|
||||||
#: apps/treasury/models.py:265
|
#: apps/treasury/models.py:278
|
||||||
msgid "credit transaction"
|
msgid "credit transaction"
|
||||||
msgstr "transaction de crédit"
|
msgstr "transaction de crédit"
|
||||||
|
|
||||||
#: apps/treasury/models.py:328
|
#: apps/treasury/models.py:341
|
||||||
msgid ""
|
msgid ""
|
||||||
"This user doesn't have enough money to pay the memberships with its note. "
|
"This user doesn't have enough money to pay the memberships with its note. "
|
||||||
"Please ask her/him to credit the note before invalidating this credit."
|
"Please ask her/him to credit the note before invalidating this credit."
|
||||||
|
@ -1382,45 +1397,45 @@ msgstr ""
|
||||||
"Cet utilisateur n'a pas assez d'argent pour payer les adhésions avec sa "
|
"Cet utilisateur n'a pas assez d'argent pour payer les adhésions avec sa "
|
||||||
"note. Merci de lui demander de recharger sa note avant d'invalider ce crédit."
|
"note. Merci de lui demander de recharger sa note avant d'invalider ce crédit."
|
||||||
|
|
||||||
#: apps/treasury/models.py:340 templates/treasury/sogecredit_detail.html:10
|
#: apps/treasury/models.py:353 templates/treasury/sogecredit_detail.html:10
|
||||||
msgid "Credit from the Société générale"
|
msgid "Credit from the Société générale"
|
||||||
msgstr "Crédit de la Société générale"
|
msgstr "Crédit de la Société générale"
|
||||||
|
|
||||||
#: apps/treasury/models.py:341
|
#: apps/treasury/models.py:354
|
||||||
msgid "Credits from the Société générale"
|
msgid "Credits from the Société générale"
|
||||||
msgstr "Crédits de la Société générale"
|
msgstr "Crédits de la Société générale"
|
||||||
|
|
||||||
#: apps/treasury/tables.py:19
|
#: apps/treasury/tables.py:20
|
||||||
msgid "Invoice #{:d}"
|
msgid "Invoice #{:d}"
|
||||||
msgstr "Facture n°{:d}"
|
msgstr "Facture n°{:d}"
|
||||||
|
|
||||||
#: apps/treasury/tables.py:22 templates/treasury/invoice_list.html:10
|
#: apps/treasury/tables.py:25 templates/treasury/invoice_list.html:10
|
||||||
#: templates/treasury/remittance_list.html:10
|
#: templates/treasury/remittance_list.html:10
|
||||||
#: templates/treasury/sogecredit_list.html:10
|
#: templates/treasury/sogecredit_list.html:10
|
||||||
msgid "Invoice"
|
msgid "Invoice"
|
||||||
msgstr "Facture"
|
msgstr "Facture"
|
||||||
|
|
||||||
#: apps/treasury/tables.py:45
|
#: apps/treasury/tables.py:65
|
||||||
msgid "Transaction count"
|
msgid "Transaction count"
|
||||||
msgstr "Nombre de transactions"
|
msgstr "Nombre de transactions"
|
||||||
|
|
||||||
#: apps/treasury/tables.py:50 apps/treasury/tables.py:52
|
#: apps/treasury/tables.py:70 apps/treasury/tables.py:72
|
||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr "Voir"
|
msgstr "Voir"
|
||||||
|
|
||||||
#: apps/treasury/tables.py:79
|
#: apps/treasury/tables.py:99
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Ajouter"
|
msgstr "Ajouter"
|
||||||
|
|
||||||
#: apps/treasury/tables.py:87
|
#: apps/treasury/tables.py:107
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "supprimer"
|
msgstr "supprimer"
|
||||||
|
|
||||||
#: apps/treasury/tables.py:126
|
#: apps/treasury/tables.py:146
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Oui"
|
msgstr "Oui"
|
||||||
|
|
||||||
#: apps/treasury/tables.py:126
|
#: apps/treasury/tables.py:146
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr "Non"
|
msgstr "Non"
|
||||||
|
|
||||||
|
@ -1436,28 +1451,34 @@ msgstr "Liste des factures"
|
||||||
msgid "Update an invoice"
|
msgid "Update an invoice"
|
||||||
msgstr "Modifier la facture"
|
msgstr "Modifier la facture"
|
||||||
|
|
||||||
#: apps/treasury/views.py:188
|
#: apps/treasury/views.py:145 templates/treasury/invoice_confirm_delete.html:8
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "New invoice"
|
||||||
|
msgid "Delete invoice"
|
||||||
|
msgstr "Nouvelle facture"
|
||||||
|
|
||||||
|
#: apps/treasury/views.py:205
|
||||||
msgid "Create a new remittance"
|
msgid "Create a new remittance"
|
||||||
msgstr "Créer une nouvelle remise"
|
msgstr "Créer une nouvelle remise"
|
||||||
|
|
||||||
#: apps/treasury/views.py:209 templates/treasury/remittance_form.html:9
|
#: apps/treasury/views.py:226 templates/treasury/remittance_form.html:9
|
||||||
#: templates/treasury/specialtransactionproxy_form.html:7
|
#: templates/treasury/specialtransactionproxy_form.html:7
|
||||||
msgid "Remittances list"
|
msgid "Remittances list"
|
||||||
msgstr "Liste des remises"
|
msgstr "Liste des remises"
|
||||||
|
|
||||||
#: apps/treasury/views.py:259
|
#: apps/treasury/views.py:276
|
||||||
msgid "Update a remittance"
|
msgid "Update a remittance"
|
||||||
msgstr "Modifier la remise"
|
msgstr "Modifier la remise"
|
||||||
|
|
||||||
#: apps/treasury/views.py:282
|
#: apps/treasury/views.py:299
|
||||||
msgid "Attach a transaction to a remittance"
|
msgid "Attach a transaction to a remittance"
|
||||||
msgstr "Joindre une transaction à une remise"
|
msgstr "Joindre une transaction à une remise"
|
||||||
|
|
||||||
#: apps/treasury/views.py:326
|
#: apps/treasury/views.py:343
|
||||||
msgid "List of credits from the Société générale"
|
msgid "List of credits from the Société générale"
|
||||||
msgstr "Liste des crédits de la Société générale"
|
msgstr "Liste des crédits de la Société générale"
|
||||||
|
|
||||||
#: apps/treasury/views.py:360
|
#: apps/treasury/views.py:377
|
||||||
msgid "Manage credits from the Société générale"
|
msgid "Manage credits from the Société générale"
|
||||||
msgstr "Gérer les crédits de la Société générale"
|
msgstr "Gérer les crédits de la Société générale"
|
||||||
|
|
||||||
|
@ -2469,6 +2490,29 @@ msgstr ""
|
||||||
"d'adhésion. Vous devez également valider votre adresse email en suivant le "
|
"d'adhésion. Vous devez également valider votre adresse email en suivant le "
|
||||||
"lien que vous avez reçu."
|
"lien que vous avez reçu."
|
||||||
|
|
||||||
|
#: templates/treasury/invoice_confirm_delete.html:13
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "This registration is already validated and can't be deleted."
|
||||||
|
msgid "This invoice is locked and can't be deleted."
|
||||||
|
msgstr "L'inscription a déjà été validée et ne peut pas être supprimée."
|
||||||
|
|
||||||
|
#: templates/treasury/invoice_confirm_delete.html:19
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid ""
|
||||||
|
#| "Are you sure you want to delete the registration of %(user)s for the WEI "
|
||||||
|
#| "%(wei_name)s? This action can't be undone."
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete this invoice? This action can't be undone."
|
||||||
|
msgstr ""
|
||||||
|
"Êtes-vous sûr de vouloir supprimer l'inscription de %(user)s pour le WEI "
|
||||||
|
"%(wei_name)s ? Cette action ne pourra pas être annulée."
|
||||||
|
|
||||||
|
#: templates/treasury/invoice_confirm_delete.html:26
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Return to credit list"
|
||||||
|
msgid "Return to invoices list"
|
||||||
|
msgstr "Retour à la liste des crédits"
|
||||||
|
|
||||||
#: templates/treasury/invoice_form.html:10
|
#: templates/treasury/invoice_form.html:10
|
||||||
msgid ""
|
msgid ""
|
||||||
"Warning: the LaTeX template is saved with this object. Updating the invoice "
|
"Warning: the LaTeX template is saved with this object. Updating the invoice "
|
||||||
|
@ -2478,11 +2522,11 @@ msgstr ""
|
||||||
"facture implique la regénérer. Faites attention si vous manipulez de "
|
"facture implique la regénérer. Faites attention si vous manipulez de "
|
||||||
"vieilles factures."
|
"vieilles factures."
|
||||||
|
|
||||||
#: templates/treasury/invoice_form.html:51
|
#: templates/treasury/invoice_form.html:58
|
||||||
msgid "Add product"
|
msgid "Add product"
|
||||||
msgstr "Ajouter produit"
|
msgstr "Ajouter produit"
|
||||||
|
|
||||||
#: templates/treasury/invoice_form.html:52
|
#: templates/treasury/invoice_form.html:59
|
||||||
msgid "Remove product"
|
msgid "Remove product"
|
||||||
msgstr "Retirer produit"
|
msgstr "Retirer produit"
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load crispy_forms_tags %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="card bg-light shadow">
|
||||||
|
<div class="card-header text-center">
|
||||||
|
<h4>{% trans "Delete invoice" %}</h4>
|
||||||
|
</div>
|
||||||
|
{% if object.locked %}
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
{% blocktrans %}This invoice is locked and can't be deleted.{% endblocktrans %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="alert alert-warning">
|
||||||
|
{% blocktrans %}Are you sure you want to delete this invoice? This action can't be undone.{% endblocktrans %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="card-footer text-center">
|
||||||
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<a class="btn btn-primary" href="{% url 'treasury:invoice_list' %}">{% trans "Return to invoices list" %}</a>
|
||||||
|
{% if not object.locked %}
|
||||||
|
<button class="btn btn-danger" type="submit">{% trans "Delete" %}</button>
|
||||||
|
{% endif %}
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
|
@ -5,13 +5,19 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<p><a class="btn btn-default" href="{% url 'treasury:invoice_list' %}">{% trans "Invoices list" %}</a></p>
|
<p><a class="btn btn-default" href="{% url 'treasury:invoice_list' %}">{% trans "Invoices list" %}</a></p>
|
||||||
|
|
||||||
{% if not object.pk %}
|
{% if object.pk and not object.locked %}
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
{% blocktrans trimmed %}
|
{% blocktrans trimmed %}
|
||||||
Warning: the LaTeX template is saved with this object. Updating the invoice implies regenerate it.
|
Warning: the LaTeX template is saved with this object. Updating the invoice implies regenerate it.
|
||||||
Be careful if you manipulate old invoices.
|
Be careful if you manipulate old invoices.
|
||||||
{% endblocktrans %}
|
{% endblocktrans %}
|
||||||
</div>
|
</div>
|
||||||
|
{% elif object.locked %}
|
||||||
|
<div class="alert alert-info">
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
This invoice is locked and can no longer be edited.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<form method="post" action="">
|
<form method="post" action="">
|
||||||
|
@ -47,10 +53,12 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
{# Display buttons to add and remove products #}
|
{# Display buttons to add and remove products #}
|
||||||
|
{% if not object.locked %}
|
||||||
<div class="btn-group btn-block" role="group">
|
<div class="btn-group btn-block" role="group">
|
||||||
<button type="button" id="add_more" class="btn btn-primary">{% trans "Add product" %}</button>
|
<button type="button" id="add_more" class="btn btn-primary">{% trans "Add product" %}</button>
|
||||||
<button type="button" id="remove_one" class="btn btn-danger">{% trans "Remove product" %}</button>
|
<button type="button" id="remove_one" class="btn btn-danger">{% trans "Remove product" %}</button>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<div class="btn-block">
|
<div class="btn-block">
|
||||||
<button type="submit" class="btn btn-block btn-primary">{% trans "Submit" %}</button>
|
<button type="submit" class="btn btn-block btn-primary">{% trans "Submit" %}</button>
|
||||||
|
@ -78,21 +86,21 @@
|
||||||
{# Script that handles add and remove lines #}
|
{# Script that handles add and remove lines #}
|
||||||
IDS = {};
|
IDS = {};
|
||||||
|
|
||||||
$("#id_product_set-TOTAL_FORMS").val($(".row-formset").length - 1);
|
$("#id_products-TOTAL_FORMS").val($(".row-formset").length - 1);
|
||||||
|
|
||||||
$('#add_more').click(function () {
|
$('#add_more').click(function () {
|
||||||
var form_idx = $('#id_product_set-TOTAL_FORMS').val();
|
let form_idx = $('#id_products-TOTAL_FORMS').val();
|
||||||
$('#form_body').append($('#for_real').html().replace(/__prefix__/g, form_idx));
|
$('#form_body').append($('#for_real').html().replace(/__prefix__/g, form_idx));
|
||||||
$('#id_product_set-TOTAL_FORMS').val(parseInt(form_idx) + 1);
|
$('#id_products-TOTAL_FORMS').val(parseInt(form_idx) + 1);
|
||||||
$('#id_product_set-' + parseInt(form_idx) + '-id').val(IDS[parseInt(form_idx)]);
|
$('#id_products-' + parseInt(form_idx) + '-id').val(IDS[parseInt(form_idx)]);
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#remove_one').click(function () {
|
$('#remove_one').click(function () {
|
||||||
let form_idx = $('#id_product_set-TOTAL_FORMS').val();
|
let form_idx = $('#id_products-TOTAL_FORMS').val();
|
||||||
if (form_idx > 0) {
|
if (form_idx > 0) {
|
||||||
IDS[parseInt(form_idx) - 1] = $('#id_product_set-' + (parseInt(form_idx) - 1) + '-id').val();
|
IDS[parseInt(form_idx) - 1] = $('#id_products-' + (parseInt(form_idx) - 1) + '-id').val();
|
||||||
$('#form_body tr:last-child').remove();
|
$('#form_body tr:last-child').remove();
|
||||||
$('#id_product_set-TOTAL_FORMS').val(parseInt(form_idx) - 1);
|
$('#id_products-TOTAL_FORMS').val(parseInt(form_idx) - 1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in New Issue