mirror of
https://github.com/ae-utbm/sith.git
synced 2024-12-26 01:31:16 +00:00
Add cash register summaries
This commit is contained in:
parent
9927310f6e
commit
01c3991988
@ -10,4 +10,5 @@ admin.site.register(Counter)
|
||||
admin.site.register(Refilling)
|
||||
admin.site.register(Selling)
|
||||
admin.site.register(Permanency)
|
||||
admin.site.register(CashRegisterSummary)
|
||||
|
||||
|
@ -287,7 +287,39 @@ class Permanency(models.Model):
|
||||
verbose_name = _("permanency")
|
||||
|
||||
def __str__(self):
|
||||
return "%s in %s from %s to %s" % (self.user, self.counter,
|
||||
self.start.strftime("%Y-%m-%d %H:%M:%S"), self.end.strftime("%Y-%m-%d %H:%M:%S"))
|
||||
return "%s in %s from %s" % (self.user, self.counter,
|
||||
self.start.strftime("%Y-%m-%d %H:%M:%S"))
|
||||
|
||||
class CashRegisterSummary(models.Model):
|
||||
user = models.ForeignKey(User, related_name="cash_summaries", verbose_name=_("user"))
|
||||
counter = models.ForeignKey(Counter, related_name="cash_summaries", verbose_name=_("counter"))
|
||||
date = models.DateTimeField(_('date'))
|
||||
comment = models.TextField(_('comment'), null=True, blank=True)
|
||||
emptied = models.BooleanField(_('emptied'), default=False)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("cash register summary")
|
||||
|
||||
def __str__(self):
|
||||
return "At %s by %s - Total: %s €" % (self.counter, self.user, self.get_total())
|
||||
|
||||
def get_total(self):
|
||||
t = 0
|
||||
for it in self.items.all():
|
||||
t += it.quantity * it.value
|
||||
return t
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.id:
|
||||
self.date = timezone.now()
|
||||
return super(CashRegisterSummary, self).save(*args, **kwargs)
|
||||
|
||||
class CashRegisterSummaryItem(models.Model):
|
||||
cash_summary = models.ForeignKey(CashRegisterSummary, related_name="items", verbose_name=_("cash summary"))
|
||||
value = CurrencyField(_("value"))
|
||||
quantity = models.IntegerField(_('quantity'), default=0)
|
||||
check = models.BooleanField(_('check'), default=False)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("cash register summary item")
|
||||
|
||||
|
27
counter/templates/counter/cash_register_summary.jinja
Normal file
27
counter/templates/counter/cash_register_summary.jinja
Normal file
@ -0,0 +1,27 @@
|
||||
{% extends "core/base.jinja" %}
|
||||
|
||||
{% block title %}
|
||||
{% trans obj=object %}Edit {{ obj }}{% endtrans %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h2>{% trans %}Make a cash register summary{% endtrans %}</h2>
|
||||
<form action="" method="post" id="cash_summary_form">
|
||||
{% csrf_token %}
|
||||
{% for field in form %}
|
||||
<p>
|
||||
{% if field.name[:5] == "check" and field.name[8:] == "value" %}
|
||||
{% set name = field.name[:7] + "_quantity" %}
|
||||
{{ field.errors }}<label for="{{ field.name }}">{{ field.label }}</label> {{ field }}
|
||||
{{ form[name].errors }}<label for="{{ form[name].name }}">{{ form[name].label }}</label> {{ form[name] }}
|
||||
{% elif field.name[:5] != "check" %}
|
||||
{{ field.errors }}<label for="{{ field.name }}">{{ field.label }}</label> {{ field }}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endfor %}
|
||||
<p><input type="submit" value="{% trans %}Save{% endtrans %}" /></p>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
@ -2,16 +2,16 @@
|
||||
{% from "core/macros.jinja" import user_mini_profile %}
|
||||
|
||||
|
||||
{% macro add_product(id, content) %}
|
||||
<form method="post" action="{{ url('counter:click', counter_id=counter.id, user_id=customer.user.id) }}" class="form_button">
|
||||
{% macro add_product(id, content, class="") %}
|
||||
<form method="post" action="{{ url('counter:click', counter_id=counter.id, user_id=customer.user.id) }}" class="{{ class }}">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="action" value="add_product">
|
||||
<button type="submit" name="product_id" value="{{ id }}"> {{ content|safe }} </button>
|
||||
</form>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro del_product(id, content) %}
|
||||
<form method="post" action="{{ url('counter:click', counter_id=counter.id, user_id=customer.user.id) }}" class="form_button">
|
||||
{% macro del_product(id, content, class="") %}
|
||||
<form method="post" action="{{ url('counter:click', counter_id=counter.id, user_id=customer.user.id) }}" class="{{ class }}">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="action" value="del_product">
|
||||
<button type="submit" name="product_id" value="{{ id }}"> {{ content }} </button>
|
||||
@ -53,7 +53,7 @@
|
||||
{% for id,infos in request.session['basket']|dictsort %}
|
||||
{% set product = counter.products.filter(id=id).first() %}
|
||||
{% set s = infos['qty'] * infos['price'] / 100 %}
|
||||
<li>{{ del_product(id, '-') }} {{ infos['qty'] + infos['bonus_qty'] }} {{ add_product(id, '+') }}
|
||||
<li>{{ del_product(id, '-', "inline") }} {{ infos['qty'] + infos['bonus_qty'] }} {{ add_product(id, '+', "inline") }}
|
||||
{{ product.name }}: {{ "%0.2f"|format(s) }} €
|
||||
{% if infos['bonus_qty'] %}
|
||||
P
|
||||
@ -105,7 +105,7 @@
|
||||
{% set file = static('core/img/na.gif') %}
|
||||
{% endif %}
|
||||
{% set prod = '<strong>%s</strong><hr><img src="%s" /><span>%s €<br>%s</span>' % (p.name, file, p.selling_price, p.code) %}
|
||||
{{ add_product(p.id, prod) }}
|
||||
{{ add_product(p.id, prod, "form_button") }}
|
||||
{%- endfor %}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
|
@ -1,19 +0,0 @@
|
||||
{% extends "core/base.jinja" %}
|
||||
|
||||
{% block title %}
|
||||
{% trans obj=object %}Edit {{ obj }}{% endtrans %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h2>{% trans obj=object %}Edit {{ obj }}{% endtrans %}</h2>
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
<p>{{ form.sellers.errors }}<label for="{{ form.sellers.name }}">{{ form.sellers.label }}</label> {{ form.sellers }}</p>
|
||||
<p><input type="submit" value="{% trans %}Save{% endtrans %}" /></p>
|
||||
<p>{{ form.products.errors }}<label for="{{ form.products.name }}">{{ form.products.label }}</label> {{ form.products }}</p>
|
||||
<p><input type="submit" value="{% trans %}Save{% endtrans %}" /></p>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
@ -39,13 +39,14 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if counter.type == 'BAR' %}
|
||||
{% if barmen %}
|
||||
<p><a href="{{ url('counter:cash_summary', counter_id=counter.id) }}">{% trans %}Make a cash register summary{% endtrans %}</a></p>
|
||||
{% endif %}
|
||||
<div>
|
||||
<h3>{% trans %}Barman: {% endtrans %}</h3>
|
||||
<ul>
|
||||
{% for b in barmen %}
|
||||
<li>{{ barman_logout_link(b) }}</li>
|
||||
<p>{{ barman_logout_link(b) }}</p>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<form method="post" action="{{ url('counter:login', counter_id=counter.id) }}">
|
||||
{% csrf_token %}
|
||||
{{ login_form.as_p() }}
|
||||
|
@ -5,6 +5,7 @@ from counter.views import *
|
||||
urlpatterns = [
|
||||
url(r'^(?P<counter_id>[0-9]+)$', CounterMain.as_view(), name='details'),
|
||||
url(r'^(?P<counter_id>[0-9]+)/click/(?P<user_id>[0-9]+)$', CounterClick.as_view(), name='click'),
|
||||
url(r'^(?P<counter_id>[0-9]+)/cash_summary$', CounterCashSummaryView.as_view(), name='cash_summary'),
|
||||
url(r'^(?P<counter_id>[0-9]+)/login$', CounterLogin.as_view(), name='login'),
|
||||
url(r'^(?P<counter_id>[0-9]+)/logout$', CounterLogout.as_view(), name='logout'),
|
||||
url(r'^admin/(?P<counter_id>[0-9]+)$', CounterEditView.as_view(), name='admin'),
|
||||
|
@ -529,3 +529,96 @@ class SellingDeleteView(CanEditPropMixin, DeleteView):
|
||||
def get_success_url(self):
|
||||
return reverse_lazy('core:user_account', kwargs={'user_id': self.object.customer.user.id})
|
||||
|
||||
# Cash register summaries
|
||||
|
||||
class CashRegisterSummaryForm(forms.Form):
|
||||
"""
|
||||
Provide the cash summary form
|
||||
"""
|
||||
ten_cents = forms.IntegerField(label=_("10 cents"), required=False)
|
||||
twenty_cents = forms.IntegerField(label=_("20 cents"), required=False)
|
||||
fifty_cents = forms.IntegerField(label=_("50 cents"), required=False)
|
||||
one_euro = forms.IntegerField(label=_("1 euro"), required=False)
|
||||
two_euros = forms.IntegerField(label=_("2 euros"), required=False)
|
||||
five_euros = forms.IntegerField(label=_("5 euros"), required=False)
|
||||
ten_euros = forms.IntegerField(label=_("10 euros"), required=False)
|
||||
twenty_euros = forms.IntegerField(label=_("20 euros"), required=False)
|
||||
fifty_euros = forms.IntegerField(label=_("50 euros"), required=False)
|
||||
hundred_euros = forms.IntegerField(label=_("100 euros"), required=False)
|
||||
check_1_value = forms.DecimalField(label=_("Check amount"), required=False)
|
||||
check_1_quantity = forms.IntegerField(label=_("Check quantity"), required=False)
|
||||
check_2_value = forms.DecimalField(label=_("Check amount"), required=False)
|
||||
check_2_quantity = forms.IntegerField(label=_("Check quantity"), required=False)
|
||||
check_3_value = forms.DecimalField(label=_("Check amount"), required=False)
|
||||
check_3_quantity = forms.IntegerField(label=_("Check quantity"), required=False)
|
||||
check_4_value = forms.DecimalField(label=_("Check amount"), required=False)
|
||||
check_4_quantity = forms.IntegerField(label=_("Check quantity"), required=False)
|
||||
check_5_value = forms.DecimalField(label=_("Check amount"), required=False)
|
||||
check_5_quantity = forms.IntegerField(label=_("Check quantity"), required=False)
|
||||
comment = forms.CharField(label=_("Comment"), required=False)
|
||||
emptied = forms.BooleanField(label=_("Emptied"), required=False)
|
||||
|
||||
def save(self, counter):
|
||||
cd = self.cleaned_data
|
||||
summary = CashRegisterSummary(
|
||||
counter=counter,
|
||||
user=counter.get_random_barman(),
|
||||
comment=cd['comment'],
|
||||
emptied=cd['emptied'],
|
||||
)
|
||||
summary.save()
|
||||
# Cash
|
||||
if cd['ten_cents']: CashRegisterSummaryItem(cash_summary=summary, value=0.1, quantity=cd['ten_cents']).save()
|
||||
if cd['twenty_cents']: CashRegisterSummaryItem(cash_summary=summary, value=0.2, quantity=cd['twenty_cents']).save()
|
||||
if cd['fifty_cents']: CashRegisterSummaryItem(cash_summary=summary, value=0.5, quantity=cd['fifty_cents']).save()
|
||||
if cd['one_euro']: CashRegisterSummaryItem(cash_summary=summary, value=1, quantity=cd['one_euro']).save()
|
||||
if cd['two_euros']: CashRegisterSummaryItem(cash_summary=summary, value=2, quantity=cd['two_euros']).save()
|
||||
if cd['five_euros']: CashRegisterSummaryItem(cash_summary=summary, value=5, quantity=cd['five_euros']).save()
|
||||
if cd['ten_euros']: CashRegisterSummaryItem(cash_summary=summary, value=10, quantity=cd['ten_euros']).save()
|
||||
if cd['twenty_euros']: CashRegisterSummaryItem(cash_summary=summary, value=20, quantity=cd['twenty_euros']).save()
|
||||
if cd['fifty_euros']: CashRegisterSummaryItem(cash_summary=summary, value=50, quantity=cd['fifty_euros']).save()
|
||||
if cd['hundred_euros']: CashRegisterSummaryItem(cash_summary=summary, value=100, quantity=cd['hundred_euros']).save()
|
||||
# Checks
|
||||
if cd['check_1_quantity']: CashRegisterSummaryItem(cash_summary=summary, value=cd['check_1_value'], quantity=cd['check_1_quantity']).save()
|
||||
if cd['check_2_quantity']: CashRegisterSummaryItem(cash_summary=summary, value=cd['check_2_value'], quantity=cd['check_2_quantity']).save()
|
||||
if cd['check_3_quantity']: CashRegisterSummaryItem(cash_summary=summary, value=cd['check_3_value'], quantity=cd['check_3_quantity']).save()
|
||||
if cd['check_4_quantity']: CashRegisterSummaryItem(cash_summary=summary, value=cd['check_4_value'], quantity=cd['check_4_quantity']).save()
|
||||
if cd['check_5_quantity']: CashRegisterSummaryItem(cash_summary=summary, value=cd['check_5_value'], quantity=cd['check_5_quantity']).save()
|
||||
if summary.items.count() < 1:
|
||||
summary.delete()
|
||||
|
||||
class CounterCashSummaryView(CanViewMixin, DetailView):
|
||||
"""
|
||||
Provide the cash summary form
|
||||
"""
|
||||
model = Counter
|
||||
pk_url_kwarg = "counter_id"
|
||||
template_name = 'counter/cash_register_summary.jinja'
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.object = self.get_object()
|
||||
if len(self.object.get_barmen_list()) < 1:
|
||||
return HttpResponseRedirect(reverse_lazy('counter:details', args=self.args,
|
||||
kwargs={'counter_id': self.object.id}))
|
||||
self.form = CashRegisterSummaryForm()
|
||||
return super(CounterCashSummaryView, self).get(request, *args, **kwargs)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
self.object = self.get_object()
|
||||
if len(self.object.get_barmen_list()) < 1:
|
||||
return HttpResponseRedirect(reverse_lazy('counter:details', args=self.args,
|
||||
kwargs={'counter_id': self.object.id}))
|
||||
self.form = CashRegisterSummaryForm(request.POST)
|
||||
if self.form.is_valid():
|
||||
self.form.save(self.object)
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
return super(CounterCashSummaryView, self).get(request, *args, **kwargs)
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse_lazy('counter:details', kwargs={'counter_id': self.object.id})
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
""" Add form to the context """
|
||||
kwargs = super(CounterCashSummaryView, self).get_context_data(**kwargs)
|
||||
kwargs['form'] = self.form
|
||||
return kwargs
|
||||
|
Binary file not shown.
@ -6,7 +6,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-08-24 21:38+0200\n"
|
||||
"POT-Creation-Date: 2016-08-26 20:28+0200\n"
|
||||
"PO-Revision-Date: 2016-07-18\n"
|
||||
"Last-Translator: Skia <skia@libskia.so>\n"
|
||||
"Language-Team: AE info <ae.info@utbm.fr>\n"
|
||||
@ -16,158 +16,186 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: accounting/models.py:34 accounting/models.py:46 accounting/models.py:73
|
||||
#: accounting/models.py:123 club/models.py:18 counter/models.py:52
|
||||
#: accounting/models.py:36 accounting/models.py:55 accounting/models.py:82
|
||||
#: accounting/models.py:132 club/models.py:18 counter/models.py:52
|
||||
#: counter/models.py:77 counter/models.py:111 launderette/models.py:15
|
||||
#: launderette/models.py:60 launderette/models.py:85
|
||||
msgid "name"
|
||||
msgstr "nom"
|
||||
|
||||
#: accounting/models.py:37
|
||||
msgid "street"
|
||||
msgstr "rue"
|
||||
|
||||
#: accounting/models.py:38
|
||||
msgid "city"
|
||||
msgstr "ville"
|
||||
|
||||
#: accounting/models.py:39
|
||||
msgid "postcode"
|
||||
msgstr "code postal"
|
||||
|
||||
#: accounting/models.py:40
|
||||
msgid "country"
|
||||
msgstr "pays"
|
||||
|
||||
#: accounting/models.py:41 core/models.py:166
|
||||
msgid "phone"
|
||||
msgstr "téléphone"
|
||||
|
||||
#: accounting/models.py:42
|
||||
msgid "email"
|
||||
msgstr "email"
|
||||
|
||||
#: accounting/models.py:43
|
||||
msgid "website"
|
||||
msgstr "site internet"
|
||||
|
||||
#: accounting/models.py:46
|
||||
msgid "company"
|
||||
msgstr "entreprise"
|
||||
|
||||
#: accounting/models.py:47
|
||||
#: accounting/models.py:56
|
||||
msgid "iban"
|
||||
msgstr "IBAN"
|
||||
|
||||
#: accounting/models.py:48
|
||||
#: accounting/models.py:57
|
||||
msgid "account number"
|
||||
msgstr "numero de compte"
|
||||
|
||||
#: accounting/models.py:49 accounting/models.py:74 club/models.py:146
|
||||
#: counter/models.py:86
|
||||
#: accounting/models.py:58 accounting/models.py:83 club/models.py:146
|
||||
#: counter/models.py:86 counter/models.py:112
|
||||
msgid "club"
|
||||
msgstr "club"
|
||||
|
||||
#: accounting/models.py:52
|
||||
#: accounting/models.py:61
|
||||
msgid "Bank account"
|
||||
msgstr "Compte en banque"
|
||||
|
||||
#: accounting/models.py:75
|
||||
#: accounting/models.py:84
|
||||
msgid "bank account"
|
||||
msgstr "compte en banque"
|
||||
|
||||
#: accounting/models.py:78
|
||||
#: accounting/models.py:87
|
||||
msgid "Club account"
|
||||
msgstr "Compte club"
|
||||
|
||||
#: accounting/models.py:114
|
||||
#: accounting/models.py:123
|
||||
#, python-format
|
||||
msgid "%(club_account)s on %(bank_account)s"
|
||||
msgstr "%(club_account)s sur %(bank_account)s"
|
||||
|
||||
#: accounting/models.py:121 club/models.py:147 counter/models.py:297
|
||||
#: accounting/models.py:130 club/models.py:147 counter/models.py:282
|
||||
#: launderette/models.py:122
|
||||
msgid "start date"
|
||||
msgstr "date de début"
|
||||
|
||||
#: accounting/models.py:122 club/models.py:148 counter/models.py:298
|
||||
#: accounting/models.py:131 club/models.py:148 counter/models.py:283
|
||||
msgid "end date"
|
||||
msgstr "date de fin"
|
||||
|
||||
#: accounting/models.py:124
|
||||
#: accounting/models.py:133
|
||||
msgid "is closed"
|
||||
msgstr "est fermé"
|
||||
|
||||
#: accounting/models.py:125
|
||||
#: accounting/models.py:134
|
||||
msgid "club account"
|
||||
msgstr "compte club"
|
||||
|
||||
#: accounting/models.py:126 accounting/models.py:169 counter/models.py:25
|
||||
#: counter/models.py:212
|
||||
#: accounting/models.py:135 accounting/models.py:178 counter/models.py:25
|
||||
#: counter/models.py:197
|
||||
msgid "amount"
|
||||
msgstr "montant"
|
||||
|
||||
#: accounting/models.py:127
|
||||
#: accounting/models.py:136
|
||||
msgid "effective_amount"
|
||||
msgstr "montant effectif"
|
||||
|
||||
#: accounting/models.py:130
|
||||
#: accounting/models.py:139
|
||||
msgid "General journal"
|
||||
msgstr "Classeur"
|
||||
|
||||
#: accounting/models.py:167
|
||||
#: accounting/models.py:176
|
||||
msgid "number"
|
||||
msgstr "numéro"
|
||||
|
||||
#: accounting/models.py:168
|
||||
#: accounting/models.py:177
|
||||
msgid "journal"
|
||||
msgstr "classeur"
|
||||
|
||||
#: accounting/models.py:170 core/models.py:437 core/models.py:713
|
||||
#: counter/models.py:215 counter/models.py:261 eboutic/models.py:14
|
||||
#: eboutic/models.py:47
|
||||
#: accounting/models.py:179 core/models.py:437 core/models.py:713
|
||||
#: counter/models.py:200 counter/models.py:246 counter/models.py:296
|
||||
#: eboutic/models.py:14 eboutic/models.py:47
|
||||
msgid "date"
|
||||
msgstr "date"
|
||||
|
||||
#: accounting/models.py:171
|
||||
#: accounting/models.py:180 counter/models.py:297
|
||||
msgid "comment"
|
||||
msgstr "commentaire"
|
||||
|
||||
#: accounting/models.py:172 counter/models.py:216 counter/models.py:262
|
||||
#: accounting/models.py:181 counter/models.py:201 counter/models.py:247
|
||||
#: subscription/models.py:34
|
||||
msgid "payment method"
|
||||
msgstr "méthode de paiement"
|
||||
|
||||
#: accounting/models.py:173
|
||||
#: accounting/models.py:182
|
||||
msgid "cheque number"
|
||||
msgstr "numéro de chèque"
|
||||
|
||||
#: accounting/models.py:174 eboutic/models.py:115
|
||||
#: accounting/models.py:183 eboutic/models.py:115
|
||||
msgid "invoice"
|
||||
msgstr "facture"
|
||||
|
||||
#: accounting/models.py:175
|
||||
#: accounting/models.py:184
|
||||
msgid "is done"
|
||||
msgstr "est fait"
|
||||
|
||||
#: accounting/models.py:177
|
||||
#: accounting/models.py:186
|
||||
msgid "simple type"
|
||||
msgstr "type simplifié"
|
||||
|
||||
#: accounting/models.py:179 accounting/models.py:278
|
||||
#: accounting/models.py:188 accounting/models.py:287
|
||||
msgid "accounting type"
|
||||
msgstr "type comptable"
|
||||
|
||||
#: accounting/models.py:180
|
||||
#: accounting/models.py:189
|
||||
msgid "target type"
|
||||
msgstr "type de cible"
|
||||
|
||||
#: accounting/models.py:181
|
||||
#: accounting/models.py:190
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:44
|
||||
msgid "User"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
#: accounting/models.py:181 club/templates/club/club_detail.jinja:4
|
||||
#: accounting/models.py:190 club/templates/club/club_detail.jinja:4
|
||||
msgid "Club"
|
||||
msgstr "Club"
|
||||
|
||||
#: accounting/models.py:181 core/templates/core/user_base.jinja:18
|
||||
#: accounting/models.py:190 core/templates/core/user_base.jinja:18
|
||||
msgid "Account"
|
||||
msgstr "Compte"
|
||||
|
||||
#: accounting/models.py:181
|
||||
#: accounting/models.py:190
|
||||
msgid "Company"
|
||||
msgstr "Entreprise"
|
||||
|
||||
#: accounting/models.py:181 sith/settings.py:289 sith/settings_sample.py:272
|
||||
#: accounting/models.py:190 sith/settings.py:290 sith/settings_sample.py:272
|
||||
msgid "Other"
|
||||
msgstr "Autre"
|
||||
|
||||
#: accounting/models.py:182
|
||||
#: accounting/models.py:191
|
||||
msgid "target id"
|
||||
msgstr "id de la cible"
|
||||
|
||||
#: accounting/models.py:183
|
||||
#: accounting/models.py:192
|
||||
msgid "target label"
|
||||
msgstr "nom de la cible"
|
||||
|
||||
#: accounting/models.py:184
|
||||
#: accounting/models.py:193
|
||||
msgid "linked operation"
|
||||
msgstr "opération liée"
|
||||
|
||||
#: accounting/models.py:200
|
||||
#: accounting/models.py:209
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The date can not be before the start date of the journal, which is\n"
|
||||
@ -176,16 +204,16 @@ msgstr ""
|
||||
"La date ne peut pas être avant la date de début du journal, qui est\n"
|
||||
"%(start_date)s."
|
||||
|
||||
#: accounting/models.py:203
|
||||
#: accounting/models.py:212
|
||||
msgid "Target does not exists"
|
||||
msgstr "La cible n'existe pas."
|
||||
|
||||
#: accounting/models.py:205
|
||||
#: accounting/models.py:214
|
||||
msgid "Please add a target label if you set no existing target"
|
||||
msgstr ""
|
||||
"Merci d'ajouter un nom de cible si vous ne spécifiez pas de cible existante"
|
||||
|
||||
#: accounting/models.py:207
|
||||
#: accounting/models.py:216
|
||||
msgid ""
|
||||
"You need to provide ether a simplified accounting type or a standard "
|
||||
"accounting type"
|
||||
@ -193,39 +221,39 @@ msgstr ""
|
||||
"Vous devez fournir soit un type comptable simplifié ou un type comptable "
|
||||
"standard"
|
||||
|
||||
#: accounting/models.py:268 counter/models.py:81
|
||||
#: accounting/models.py:277 counter/models.py:81
|
||||
msgid "code"
|
||||
msgstr "code"
|
||||
|
||||
#: accounting/models.py:270
|
||||
#: accounting/models.py:279
|
||||
msgid "An accounting type code contains only numbers"
|
||||
msgstr "Un code comptable ne contient que des numéros"
|
||||
|
||||
#: accounting/models.py:273 accounting/models.py:299 counter/models.py:253
|
||||
#: accounting/models.py:282 accounting/models.py:308 counter/models.py:238
|
||||
msgid "label"
|
||||
msgstr "intitulé"
|
||||
|
||||
#: accounting/models.py:274
|
||||
#: accounting/models.py:283
|
||||
msgid "movement type"
|
||||
msgstr "type de mouvement"
|
||||
|
||||
#: accounting/models.py:274
|
||||
#: accounting/models.py:283
|
||||
msgid "Credit"
|
||||
msgstr "Crédit"
|
||||
|
||||
#: accounting/models.py:274
|
||||
#: accounting/models.py:283
|
||||
msgid "Debit"
|
||||
msgstr "Débit"
|
||||
|
||||
#: accounting/models.py:275
|
||||
#: accounting/models.py:284
|
||||
msgid "Neutral"
|
||||
msgstr "Neutre"
|
||||
|
||||
#: accounting/models.py:301
|
||||
#: accounting/models.py:310
|
||||
msgid "simplified accounting types"
|
||||
msgstr "type simplifié"
|
||||
|
||||
#: accounting/models.py:304
|
||||
#: accounting/models.py:313
|
||||
msgid "simplified type"
|
||||
msgstr "type simplifié"
|
||||
|
||||
@ -264,26 +292,36 @@ msgstr "Il n'y a pas de types comptable dans ce site web."
|
||||
msgid "Bank account: "
|
||||
msgstr "Compte en banque : "
|
||||
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:14
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:15
|
||||
#: accounting/templates/accounting/club_account_details.jinja:16
|
||||
#: core/templates/core/file_detail.jinja:43
|
||||
#: core/templates/core/group_list.jinja:13
|
||||
#: core/templates/core/user_edit.jinja:18
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:16
|
||||
#: launderette/views.py:146
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:17
|
||||
#: core/templates/core/user_base.jinja:7
|
||||
msgid "Infos"
|
||||
msgstr "Infos"
|
||||
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:16
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:19
|
||||
msgid "IBAN: "
|
||||
msgstr "IBAN : "
|
||||
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:17
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:20
|
||||
msgid "Number: "
|
||||
msgstr "Numéro : "
|
||||
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:19
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:22
|
||||
msgid "New club account"
|
||||
msgstr "Nouveau compte club"
|
||||
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:23
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:26
|
||||
#: accounting/templates/accounting/bank_account_list.jinja:21
|
||||
#: accounting/templates/accounting/club_account_details.jinja:50
|
||||
#: accounting/templates/accounting/club_account_details.jinja:53
|
||||
#: accounting/templates/accounting/journal_details.jinja:66
|
||||
#: club/templates/club/club_detail.jinja:7 core/templates/core/file.jinja:38
|
||||
#: core/templates/core/page.jinja:31 core/templates/core/user_base.jinja:10
|
||||
@ -293,16 +331,6 @@ msgstr "Nouveau compte club"
|
||||
msgid "Edit"
|
||||
msgstr "Éditer"
|
||||
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:25
|
||||
#: accounting/templates/accounting/bank_account_list.jinja:23
|
||||
#: core/templates/core/file_detail.jinja:43
|
||||
#: core/templates/core/group_list.jinja:13
|
||||
#: core/templates/core/user_edit.jinja:18
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:16
|
||||
#: launderette/views.py:146
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
#: accounting/templates/accounting/bank_account_list.jinja:4
|
||||
#: accounting/templates/accounting/bank_account_list.jinja:17
|
||||
msgid "Bank account list"
|
||||
@ -320,7 +348,7 @@ msgstr "Gérer les types comptable"
|
||||
msgid "New bank account"
|
||||
msgstr "Nouveau compte en banque"
|
||||
|
||||
#: accounting/templates/accounting/bank_account_list.jinja:29
|
||||
#: accounting/templates/accounting/bank_account_list.jinja:26
|
||||
msgid "There is no accounts in this website."
|
||||
msgstr "Il n'y a pas de comptes dans ce site web."
|
||||
|
||||
@ -329,58 +357,58 @@ msgstr "Il n'y a pas de comptes dans ce site web."
|
||||
msgid "Club account:"
|
||||
msgstr "Compte club : "
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:16
|
||||
#: accounting/templates/accounting/club_account_details.jinja:19
|
||||
msgid "New journal"
|
||||
msgstr "Nouveau classeur"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:18
|
||||
#: accounting/templates/accounting/club_account_details.jinja:21
|
||||
msgid "You can not create new journal while you still have one opened"
|
||||
msgstr "Vous ne pouvez pas créer de journal tant qu'il y en a un d'ouvert"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:23
|
||||
#: accounting/templates/accounting/club_account_details.jinja:26
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:43
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:24
|
||||
#: accounting/templates/accounting/club_account_details.jinja:27
|
||||
msgid "Start"
|
||||
msgstr "Début"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:25
|
||||
#: accounting/templates/accounting/club_account_details.jinja:28
|
||||
msgid "End"
|
||||
msgstr "Fin"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:26
|
||||
#: accounting/templates/accounting/club_account_details.jinja:29
|
||||
#: accounting/templates/accounting/journal_details.jinja:28
|
||||
#: core/templates/core/user_account.jinja:19
|
||||
#: core/templates/core/user_account.jinja:78
|
||||
msgid "Amount"
|
||||
msgstr "Montant"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:27
|
||||
#: accounting/templates/accounting/club_account_details.jinja:30
|
||||
msgid "Effective amount"
|
||||
msgstr "Montant effectif"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:28
|
||||
#: accounting/templates/accounting/club_account_details.jinja:31
|
||||
msgid "Closed"
|
||||
msgstr "Fermé"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:29
|
||||
#: accounting/templates/accounting/club_account_details.jinja:32
|
||||
#: accounting/templates/accounting/journal_details.jinja:36
|
||||
msgid "Actions"
|
||||
msgstr "Actions"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:45
|
||||
#: accounting/templates/accounting/club_account_details.jinja:48
|
||||
#: accounting/templates/accounting/journal_details.jinja:54
|
||||
msgid "Yes"
|
||||
msgstr "Oui"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:47
|
||||
#: accounting/templates/accounting/club_account_details.jinja:50
|
||||
#: accounting/templates/accounting/journal_details.jinja:56
|
||||
msgid "No"
|
||||
msgstr "Non"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:49
|
||||
#: accounting/templates/accounting/club_account_details.jinja:52
|
||||
#: core/templates/core/file.jinja:36 core/templates/core/page.jinja:28
|
||||
msgid "View"
|
||||
msgstr "Voir"
|
||||
@ -440,6 +468,7 @@ msgid "Done"
|
||||
msgstr "Effectué"
|
||||
|
||||
#: accounting/templates/accounting/journal_details.jinja:34
|
||||
#: counter/views.py:558
|
||||
msgid "Comment"
|
||||
msgstr "Commentaire"
|
||||
|
||||
@ -510,8 +539,9 @@ msgstr "Vous ne pouvez pas faire de boucles dans les clubs"
|
||||
msgid "A club with that unix_name already exists"
|
||||
msgstr "Un club avec ce nom UNIX existe déjà."
|
||||
|
||||
#: club/models.py:145 eboutic/models.py:13 eboutic/models.py:46
|
||||
#: launderette/models.py:89 launderette/models.py:126
|
||||
#: club/models.py:145 counter/models.py:280 counter/models.py:294
|
||||
#: eboutic/models.py:13 eboutic/models.py:46 launderette/models.py:89
|
||||
#: launderette/models.py:126
|
||||
msgid "user"
|
||||
msgstr "nom d'utilisateur"
|
||||
|
||||
@ -860,10 +890,6 @@ msgstr "signature du forum"
|
||||
msgid "second email address"
|
||||
msgstr "adresse email secondaire"
|
||||
|
||||
#: core/models.py:166
|
||||
msgid "phone"
|
||||
msgstr "téléphone"
|
||||
|
||||
#: core/models.py:167
|
||||
msgid "parent phone"
|
||||
msgstr "téléphone des parents"
|
||||
@ -1185,7 +1211,7 @@ msgid "Please login to see this page."
|
||||
msgstr "Merci de vous identifier pour voir cette page."
|
||||
|
||||
#: core/templates/core/login.jinja:28
|
||||
#: counter/templates/counter/counter_main.jinja:52
|
||||
#: counter/templates/counter/counter_main.jinja:53
|
||||
msgid "login"
|
||||
msgstr "login"
|
||||
|
||||
@ -1531,7 +1557,7 @@ msgstr "Gestion de Sith"
|
||||
msgid "Subscriptions"
|
||||
msgstr "Cotisations"
|
||||
|
||||
#: core/templates/core/user_tools.jinja:22 counter/views.py:470
|
||||
#: core/templates/core/user_tools.jinja:22 counter/views.py:473
|
||||
msgid "Counters"
|
||||
msgstr "Comptoirs"
|
||||
|
||||
@ -1661,6 +1687,10 @@ msgstr "groupe d'achat"
|
||||
msgid "product"
|
||||
msgstr "produit"
|
||||
|
||||
#: counter/models.py:113
|
||||
msgid "products"
|
||||
msgstr "produits"
|
||||
|
||||
#: counter/models.py:114
|
||||
msgid "counter type"
|
||||
msgstr "type de comptoir"
|
||||
@ -1677,7 +1707,7 @@ msgstr "Bureau"
|
||||
#: eboutic/templates/eboutic/eboutic_main.jinja:24
|
||||
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:8
|
||||
#: eboutic/templates/eboutic/eboutic_payment_result.jinja:4
|
||||
#: sith/settings.py:288 sith/settings_sample.py:271
|
||||
#: sith/settings.py:289 sith/settings_sample.py:271
|
||||
msgid "Eboutic"
|
||||
msgstr "Eboutic"
|
||||
|
||||
@ -1685,48 +1715,77 @@ msgstr "Eboutic"
|
||||
msgid "sellers"
|
||||
msgstr "vendeurs"
|
||||
|
||||
#: counter/models.py:123 launderette/models.py:16
|
||||
#: counter/models.py:122 counter/models.py:281 counter/models.py:295
|
||||
#: launderette/models.py:16
|
||||
msgid "counter"
|
||||
msgstr "comptoir"
|
||||
|
||||
#: counter/models.py:218
|
||||
#: counter/models.py:203
|
||||
msgid "bank"
|
||||
msgstr "banque"
|
||||
|
||||
#: counter/models.py:220 counter/models.py:264
|
||||
#: counter/models.py:205 counter/models.py:249
|
||||
msgid "is validated"
|
||||
msgstr "est validé"
|
||||
|
||||
#: counter/models.py:223
|
||||
#: counter/models.py:208
|
||||
msgid "refilling"
|
||||
msgstr "rechargement"
|
||||
|
||||
#: counter/models.py:257 eboutic/models.py:102
|
||||
#: counter/models.py:242 eboutic/models.py:102
|
||||
msgid "unit price"
|
||||
msgstr "prix unitaire"
|
||||
|
||||
#: counter/models.py:258 eboutic/models.py:103
|
||||
#: counter/models.py:243 counter/models.py:320 eboutic/models.py:103
|
||||
msgid "quantity"
|
||||
msgstr "quantité"
|
||||
|
||||
#: counter/models.py:263
|
||||
#: counter/models.py:248
|
||||
msgid "Sith account"
|
||||
msgstr "Compte utilisateur"
|
||||
|
||||
#: counter/models.py:263 sith/settings.py:281 sith/settings.py:286
|
||||
#: sith/settings.py:307 sith/settings_sample.py:264
|
||||
#: counter/models.py:248 sith/settings.py:282 sith/settings.py:287
|
||||
#: sith/settings.py:308 sith/settings_sample.py:264
|
||||
#: sith/settings_sample.py:269 sith/settings_sample.py:290
|
||||
msgid "Credit card"
|
||||
msgstr "Carte banquaire"
|
||||
|
||||
#: counter/models.py:267
|
||||
#: counter/models.py:252
|
||||
msgid "selling"
|
||||
msgstr "vente"
|
||||
|
||||
#: counter/models.py:301
|
||||
#: counter/models.py:284
|
||||
msgid "last activity date"
|
||||
msgstr "dernière activité"
|
||||
|
||||
#: counter/models.py:287
|
||||
msgid "permanency"
|
||||
msgstr "permanence"
|
||||
|
||||
#: counter/models.py:298
|
||||
msgid "emptied"
|
||||
msgstr "coffre vidée"
|
||||
|
||||
#: counter/models.py:301
|
||||
msgid "cash register summary"
|
||||
msgstr "relevé de caisse"
|
||||
|
||||
#: counter/models.py:318
|
||||
msgid "cash summary"
|
||||
msgstr "relevé"
|
||||
|
||||
#: counter/models.py:319
|
||||
msgid "value"
|
||||
msgstr "valeur"
|
||||
|
||||
#: counter/models.py:321
|
||||
msgid "check"
|
||||
msgstr "chèque"
|
||||
|
||||
#: counter/models.py:324
|
||||
msgid "cash register summary item"
|
||||
msgstr "élément de relevé de caisse"
|
||||
|
||||
#: counter/templates/counter/counter_click.jinja:29
|
||||
msgid "Customer"
|
||||
msgstr "Client"
|
||||
@ -1824,6 +1883,10 @@ msgid "Please, login"
|
||||
msgstr "Merci de vous identifier"
|
||||
|
||||
#: counter/templates/counter/counter_main.jinja:43
|
||||
msgid "Make a cash register summary"
|
||||
msgstr "Faire un relevé de caisse"
|
||||
|
||||
#: counter/templates/counter/counter_main.jinja:46
|
||||
msgid "Barman: "
|
||||
msgstr "Barman : "
|
||||
|
||||
@ -1853,42 +1916,96 @@ msgstr "Nouveau type de produit"
|
||||
msgid "There is no product types in this website."
|
||||
msgstr "Il n'y a pas de types de produit dans ce site web."
|
||||
|
||||
#: counter/views.py:35
|
||||
#: counter/views.py:36
|
||||
msgid "Select user"
|
||||
msgstr "Choisir un utilisateur"
|
||||
|
||||
#: counter/views.py:51
|
||||
#: counter/views.py:52
|
||||
msgid "User not found"
|
||||
msgstr "Utilisateur non trouvé"
|
||||
|
||||
#: counter/views.py:83
|
||||
#: counter/views.py:84
|
||||
msgid "Bad credentials"
|
||||
msgstr "Mauvais identifiants"
|
||||
|
||||
#: counter/views.py:85
|
||||
#: counter/views.py:86
|
||||
msgid "User is not subscriber"
|
||||
msgstr "L'utilisateur n'est pas cotisant."
|
||||
|
||||
#: counter/views.py:257
|
||||
#: counter/views.py:258
|
||||
msgid "END"
|
||||
msgstr "FIN"
|
||||
|
||||
#: counter/views.py:259
|
||||
#: counter/views.py:260
|
||||
msgid "CAN"
|
||||
msgstr "ANN"
|
||||
|
||||
#: counter/views.py:289
|
||||
#: counter/views.py:290
|
||||
msgid "You have not enough money to buy all the basket"
|
||||
msgstr "Vous n'avez pas assez d'argent pour acheter le panier"
|
||||
|
||||
#: counter/views.py:467
|
||||
#: counter/views.py:470
|
||||
msgid "Parent product"
|
||||
msgstr "Produit parent"
|
||||
|
||||
#: counter/views.py:468
|
||||
#: counter/views.py:471
|
||||
msgid "Buying groups"
|
||||
msgstr "Groupes d'achat"
|
||||
|
||||
#: counter/views.py:538
|
||||
msgid "10 cents"
|
||||
msgstr "10 centimes"
|
||||
|
||||
#: counter/views.py:539
|
||||
msgid "20 cents"
|
||||
msgstr "20 centimes"
|
||||
|
||||
#: counter/views.py:540
|
||||
msgid "50 cents"
|
||||
msgstr "50 centimes"
|
||||
|
||||
#: counter/views.py:541
|
||||
msgid "1 euro"
|
||||
msgstr "1 €"
|
||||
|
||||
#: counter/views.py:542
|
||||
msgid "2 euros"
|
||||
msgstr "2 €"
|
||||
|
||||
#: counter/views.py:543
|
||||
msgid "5 euros"
|
||||
msgstr "5 €"
|
||||
|
||||
#: counter/views.py:544
|
||||
msgid "10 euros"
|
||||
msgstr "10 €"
|
||||
|
||||
#: counter/views.py:545
|
||||
msgid "20 euros"
|
||||
msgstr "20 €"
|
||||
|
||||
#: counter/views.py:546
|
||||
msgid "50 euros"
|
||||
msgstr "50 €"
|
||||
|
||||
#: counter/views.py:547
|
||||
msgid "100 euros"
|
||||
msgstr "100 €"
|
||||
|
||||
#: counter/views.py:548 counter/views.py:550 counter/views.py:552
|
||||
#: counter/views.py:554 counter/views.py:556
|
||||
msgid "Check amount"
|
||||
msgstr "Montant du chèque"
|
||||
|
||||
#: counter/views.py:549 counter/views.py:551 counter/views.py:553
|
||||
#: counter/views.py:555 counter/views.py:557
|
||||
msgid "Check quantity"
|
||||
msgstr "Nombre de chèque"
|
||||
|
||||
#: counter/views.py:559
|
||||
msgid "Emptied"
|
||||
msgstr "Coffre vidé"
|
||||
|
||||
#: eboutic/models.py:48
|
||||
msgid "validated"
|
||||
msgstr "validé"
|
||||
@ -2037,12 +2154,12 @@ msgid "Washing and drying"
|
||||
msgstr "Lavage et séchage"
|
||||
|
||||
#: launderette/templates/launderette/launderette_book.jinja:26
|
||||
#: sith/settings.py:417 sith/settings_sample.py:400
|
||||
#: sith/settings.py:418 sith/settings_sample.py:400
|
||||
msgid "Washing"
|
||||
msgstr "Lavage"
|
||||
|
||||
#: launderette/templates/launderette/launderette_book.jinja:30
|
||||
#: sith/settings.py:417 sith/settings_sample.py:400
|
||||
#: sith/settings.py:418 sith/settings_sample.py:400
|
||||
msgid "Drying"
|
||||
msgstr "Séchage"
|
||||
|
||||
@ -2097,116 +2214,116 @@ msgstr "L'utilisateur n'a pas réservé de créneau"
|
||||
msgid "Token not found"
|
||||
msgstr "Jeton non trouvé"
|
||||
|
||||
#: sith/settings.py:172 sith/settings_sample.py:160
|
||||
#: sith/settings.py:173 sith/settings_sample.py:160
|
||||
msgid "English"
|
||||
msgstr "Anglais"
|
||||
|
||||
#: sith/settings.py:173 sith/settings_sample.py:161
|
||||
#: sith/settings.py:174 sith/settings_sample.py:161
|
||||
msgid "French"
|
||||
msgstr "Français"
|
||||
|
||||
#: sith/settings.py:278 sith/settings.py:285 sith/settings.py:305
|
||||
#: sith/settings.py:279 sith/settings.py:286 sith/settings.py:306
|
||||
#: sith/settings_sample.py:261 sith/settings_sample.py:268
|
||||
#: sith/settings_sample.py:288
|
||||
msgid "Check"
|
||||
msgstr "Chèque"
|
||||
|
||||
#: sith/settings.py:279 sith/settings.py:287 sith/settings.py:306
|
||||
#: sith/settings.py:280 sith/settings.py:288 sith/settings.py:307
|
||||
#: sith/settings_sample.py:262 sith/settings_sample.py:270
|
||||
#: sith/settings_sample.py:289
|
||||
msgid "Cash"
|
||||
msgstr "Espèces"
|
||||
|
||||
#: sith/settings.py:280 sith/settings_sample.py:263
|
||||
#: sith/settings.py:281 sith/settings_sample.py:263
|
||||
msgid "Transfert"
|
||||
msgstr "Virement"
|
||||
|
||||
#: sith/settings.py:293 sith/settings_sample.py:276
|
||||
#: sith/settings.py:294 sith/settings_sample.py:276
|
||||
msgid "Belfort"
|
||||
msgstr "Belfort"
|
||||
|
||||
#: sith/settings.py:294 sith/settings_sample.py:277
|
||||
#: sith/settings.py:295 sith/settings_sample.py:277
|
||||
msgid "Sevenans"
|
||||
msgstr "Sevenans"
|
||||
|
||||
#: sith/settings.py:295 sith/settings_sample.py:278
|
||||
#: sith/settings.py:296 sith/settings_sample.py:278
|
||||
msgid "Montbéliard"
|
||||
msgstr "Montbéliard"
|
||||
|
||||
#: sith/settings.py:330 sith/settings_sample.py:313
|
||||
#: sith/settings.py:331 sith/settings_sample.py:313
|
||||
msgid "One semester"
|
||||
msgstr "Un semestre"
|
||||
|
||||
#: sith/settings.py:335 sith/settings_sample.py:318
|
||||
#: sith/settings.py:336 sith/settings_sample.py:318
|
||||
msgid "Two semesters"
|
||||
msgstr "Deux semestres"
|
||||
|
||||
#: sith/settings.py:340 sith/settings_sample.py:323
|
||||
#: sith/settings.py:341 sith/settings_sample.py:323
|
||||
msgid "Common core cursus"
|
||||
msgstr "Cursus tronc commun"
|
||||
|
||||
#: sith/settings.py:345 sith/settings.py:350 sith/settings_sample.py:328
|
||||
#: sith/settings.py:346 sith/settings.py:351 sith/settings_sample.py:328
|
||||
#: sith/settings_sample.py:333
|
||||
msgid "Branch cursus"
|
||||
msgstr "Cursus branche"
|
||||
|
||||
#: sith/settings.py:355 sith/settings_sample.py:338
|
||||
#: sith/settings.py:356 sith/settings_sample.py:338
|
||||
msgid "Honorary member"
|
||||
msgstr "Membre honoraire"
|
||||
|
||||
#: sith/settings.py:360 sith/settings_sample.py:343
|
||||
#: sith/settings.py:361 sith/settings_sample.py:343
|
||||
msgid "Assidu member"
|
||||
msgstr "Membre d'Assidu"
|
||||
|
||||
#: sith/settings.py:365 sith/settings_sample.py:348
|
||||
#: sith/settings.py:366 sith/settings_sample.py:348
|
||||
msgid "Amicale/DOCEO member"
|
||||
msgstr "Membre de l'Amicale/DOCEO"
|
||||
|
||||
#: sith/settings.py:370 sith/settings_sample.py:353
|
||||
#: sith/settings.py:371 sith/settings_sample.py:353
|
||||
msgid "UT network member"
|
||||
msgstr "Cotisant du réseau UT"
|
||||
|
||||
#: sith/settings.py:375 sith/settings_sample.py:358
|
||||
#: sith/settings.py:376 sith/settings_sample.py:358
|
||||
msgid "CROUS member"
|
||||
msgstr "Membres du CROUS"
|
||||
|
||||
#: sith/settings.py:380 sith/settings_sample.py:363
|
||||
#: sith/settings.py:381 sith/settings_sample.py:363
|
||||
msgid "Sbarro/ESTA member"
|
||||
msgstr "Membre de Sbarro ou de l'ESTA"
|
||||
|
||||
#: sith/settings.py:388 sith/settings_sample.py:371
|
||||
#: sith/settings.py:389 sith/settings_sample.py:371
|
||||
msgid "President"
|
||||
msgstr "Président"
|
||||
|
||||
#: sith/settings.py:389 sith/settings_sample.py:372
|
||||
#: sith/settings.py:390 sith/settings_sample.py:372
|
||||
msgid "Vice-President"
|
||||
msgstr "Vice-Président"
|
||||
|
||||
#: sith/settings.py:390 sith/settings_sample.py:373
|
||||
#: sith/settings.py:391 sith/settings_sample.py:373
|
||||
msgid "Treasurer"
|
||||
msgstr "Trésorier"
|
||||
|
||||
#: sith/settings.py:391 sith/settings_sample.py:374
|
||||
#: sith/settings.py:392 sith/settings_sample.py:374
|
||||
msgid "Communication supervisor"
|
||||
msgstr "Responsable com"
|
||||
|
||||
#: sith/settings.py:392 sith/settings_sample.py:375
|
||||
#: sith/settings.py:393 sith/settings_sample.py:375
|
||||
msgid "Secretary"
|
||||
msgstr "Secrétaire"
|
||||
|
||||
#: sith/settings.py:393 sith/settings_sample.py:376
|
||||
#: sith/settings.py:394 sith/settings_sample.py:376
|
||||
msgid "IT supervisor"
|
||||
msgstr "Responsable info"
|
||||
|
||||
#: sith/settings.py:394 sith/settings_sample.py:377
|
||||
#: sith/settings.py:395 sith/settings_sample.py:377
|
||||
msgid "Board member"
|
||||
msgstr "Membre du bureau"
|
||||
|
||||
#: sith/settings.py:395 sith/settings_sample.py:378
|
||||
#: sith/settings.py:396 sith/settings_sample.py:378
|
||||
msgid "Active member"
|
||||
msgstr "Membre actif"
|
||||
|
||||
#: sith/settings.py:396 sith/settings_sample.py:379
|
||||
#: sith/settings.py:397 sith/settings_sample.py:379
|
||||
msgid "Curious"
|
||||
msgstr "Curieux"
|
||||
|
||||
@ -2250,4 +2367,3 @@ msgstr "Un utilisateur avec cette adresse email existe déjà"
|
||||
msgid "You must either choose an existing user or create a new one properly"
|
||||
msgstr ""
|
||||
"Vous devez soit choisir un utilisateur existant, ou en créer un proprement."
|
||||
|
||||
|
@ -636,6 +636,7 @@ def migrate_counter():
|
||||
user=user,
|
||||
counter=counter,
|
||||
start=r['logged_time'].replace(tzinfo=timezone('Europe/Paris')),
|
||||
activity=r['logged_time'].replace(tzinfo=timezone('Europe/Paris')),
|
||||
end=r['closed_time'].replace(tzinfo=timezone('Europe/Paris')),
|
||||
)
|
||||
new.save()
|
||||
|
Loading…
Reference in New Issue
Block a user