Add cash register summaries

This commit is contained in:
Skia 2016-08-26 20:57:04 +02:00
parent 9927310f6e
commit 01c3991988
11 changed files with 424 additions and 171 deletions

View File

@ -10,4 +10,5 @@ admin.site.register(Counter)
admin.site.register(Refilling) admin.site.register(Refilling)
admin.site.register(Selling) admin.site.register(Selling)
admin.site.register(Permanency) admin.site.register(Permanency)
admin.site.register(CashRegisterSummary)

View File

@ -287,7 +287,39 @@ class Permanency(models.Model):
verbose_name = _("permanency") verbose_name = _("permanency")
def __str__(self): def __str__(self):
return "%s in %s from %s to %s" % (self.user, self.counter, return "%s in %s from %s" % (self.user, self.counter,
self.start.strftime("%Y-%m-%d %H:%M:%S"), self.end.strftime("%Y-%m-%d %H:%M:%S")) 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")

View 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 %}

View File

@ -2,16 +2,16 @@
{% from "core/macros.jinja" import user_mini_profile %} {% from "core/macros.jinja" import user_mini_profile %}
{% macro add_product(id, content) %} {% macro add_product(id, content, class="") %}
<form method="post" action="{{ url('counter:click', counter_id=counter.id, user_id=customer.user.id) }}" class="form_button"> <form method="post" action="{{ url('counter:click', counter_id=counter.id, user_id=customer.user.id) }}" class="{{ class }}">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="action" value="add_product"> <input type="hidden" name="action" value="add_product">
<button type="submit" name="product_id" value="{{ id }}"> {{ content|safe }} </button> <button type="submit" name="product_id" value="{{ id }}"> {{ content|safe }} </button>
</form> </form>
{% endmacro %} {% endmacro %}
{% macro del_product(id, content) %} {% macro del_product(id, content, class="") %}
<form method="post" action="{{ url('counter:click', counter_id=counter.id, user_id=customer.user.id) }}" class="form_button"> <form method="post" action="{{ url('counter:click', counter_id=counter.id, user_id=customer.user.id) }}" class="{{ class }}">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="action" value="del_product"> <input type="hidden" name="action" value="del_product">
<button type="submit" name="product_id" value="{{ id }}"> {{ content }} </button> <button type="submit" name="product_id" value="{{ id }}"> {{ content }} </button>
@ -53,7 +53,7 @@
{% for id,infos in request.session['basket']|dictsort %} {% for id,infos in request.session['basket']|dictsort %}
{% set product = counter.products.filter(id=id).first() %} {% set product = counter.products.filter(id=id).first() %}
{% set s = infos['qty'] * infos['price'] / 100 %} {% 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) }} € {{ product.name }}: {{ "%0.2f"|format(s) }} €
{% if infos['bonus_qty'] %} {% if infos['bonus_qty'] %}
P P
@ -105,7 +105,7 @@
{% set file = static('core/img/na.gif') %} {% set file = static('core/img/na.gif') %}
{% endif %} {% endif %}
{% set prod = '<strong>%s</strong><hr><img src="%s" /><span>%s €<br>%s</span>' % (p.name, file, p.selling_price, p.code) %} {% 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 %} {%- endfor %}
</div> </div>
{%- endif -%} {%- endif -%}

View File

@ -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 %}

View File

@ -39,13 +39,14 @@
{% endif %} {% endif %}
</div> </div>
{% if counter.type == 'BAR' %} {% 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> <div>
<h3>{% trans %}Barman: {% endtrans %}</h3> <h3>{% trans %}Barman: {% endtrans %}</h3>
<ul>
{% for b in barmen %} {% for b in barmen %}
<li>{{ barman_logout_link(b) }}</li> <p>{{ barman_logout_link(b) }}</p>
{% endfor %} {% endfor %}
</ul>
<form method="post" action="{{ url('counter:login', counter_id=counter.id) }}"> <form method="post" action="{{ url('counter:login', counter_id=counter.id) }}">
{% csrf_token %} {% csrf_token %}
{{ login_form.as_p() }} {{ login_form.as_p() }}

View File

@ -5,6 +5,7 @@ from counter.views import *
urlpatterns = [ urlpatterns = [
url(r'^(?P<counter_id>[0-9]+)$', CounterMain.as_view(), name='details'), 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]+)/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]+)/login$', CounterLogin.as_view(), name='login'),
url(r'^(?P<counter_id>[0-9]+)/logout$', CounterLogout.as_view(), name='logout'), 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'), url(r'^admin/(?P<counter_id>[0-9]+)$', CounterEditView.as_view(), name='admin'),

View File

@ -529,3 +529,96 @@ class SellingDeleteView(CanEditPropMixin, DeleteView):
def get_success_url(self): def get_success_url(self):
return reverse_lazy('core:user_account', kwargs={'user_id': self.object.customer.user.id}) 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.

View File

@ -6,7 +6,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Report-Msgid-Bugs-To: \n" "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" "PO-Revision-Date: 2016-07-18\n"
"Last-Translator: Skia <skia@libskia.so>\n" "Last-Translator: Skia <skia@libskia.so>\n"
"Language-Team: AE info <ae.info@utbm.fr>\n" "Language-Team: AE info <ae.info@utbm.fr>\n"
@ -16,158 +16,186 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: accounting/models.py:34 accounting/models.py:46 accounting/models.py:73 #: accounting/models.py:36 accounting/models.py:55 accounting/models.py:82
#: accounting/models.py:123 club/models.py:18 counter/models.py:52 #: accounting/models.py:132 club/models.py:18 counter/models.py:52
#: counter/models.py:77 counter/models.py:111 launderette/models.py:15 #: counter/models.py:77 counter/models.py:111 launderette/models.py:15
#: launderette/models.py:60 launderette/models.py:85 #: launderette/models.py:60 launderette/models.py:85
msgid "name" msgid "name"
msgstr "nom" msgstr "nom"
#: accounting/models.py:37 #: 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" msgid "company"
msgstr "entreprise" msgstr "entreprise"
#: accounting/models.py:47 #: accounting/models.py:56
msgid "iban" msgid "iban"
msgstr "IBAN" msgstr "IBAN"
#: accounting/models.py:48 #: accounting/models.py:57
msgid "account number" msgid "account number"
msgstr "numero de compte" msgstr "numero de compte"
#: accounting/models.py:49 accounting/models.py:74 club/models.py:146 #: accounting/models.py:58 accounting/models.py:83 club/models.py:146
#: counter/models.py:86 #: counter/models.py:86 counter/models.py:112
msgid "club" msgid "club"
msgstr "club" msgstr "club"
#: accounting/models.py:52 #: accounting/models.py:61
msgid "Bank account" msgid "Bank account"
msgstr "Compte en banque" msgstr "Compte en banque"
#: accounting/models.py:75 #: accounting/models.py:84
msgid "bank account" msgid "bank account"
msgstr "compte en banque" msgstr "compte en banque"
#: accounting/models.py:78 #: accounting/models.py:87
msgid "Club account" msgid "Club account"
msgstr "Compte club" msgstr "Compte club"
#: accounting/models.py:114 #: accounting/models.py:123
#, python-format #, python-format
msgid "%(club_account)s on %(bank_account)s" msgid "%(club_account)s on %(bank_account)s"
msgstr "%(club_account)s sur %(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 #: launderette/models.py:122
msgid "start date" msgid "start date"
msgstr "date de début" 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" msgid "end date"
msgstr "date de fin" msgstr "date de fin"
#: accounting/models.py:124 #: accounting/models.py:133
msgid "is closed" msgid "is closed"
msgstr "est fermé" msgstr "est fermé"
#: accounting/models.py:125 #: accounting/models.py:134
msgid "club account" msgid "club account"
msgstr "compte club" msgstr "compte club"
#: accounting/models.py:126 accounting/models.py:169 counter/models.py:25 #: accounting/models.py:135 accounting/models.py:178 counter/models.py:25
#: counter/models.py:212 #: counter/models.py:197
msgid "amount" msgid "amount"
msgstr "montant" msgstr "montant"
#: accounting/models.py:127 #: accounting/models.py:136
msgid "effective_amount" msgid "effective_amount"
msgstr "montant effectif" msgstr "montant effectif"
#: accounting/models.py:130 #: accounting/models.py:139
msgid "General journal" msgid "General journal"
msgstr "Classeur" msgstr "Classeur"
#: accounting/models.py:167 #: accounting/models.py:176
msgid "number" msgid "number"
msgstr "numéro" msgstr "numéro"
#: accounting/models.py:168 #: accounting/models.py:177
msgid "journal" msgid "journal"
msgstr "classeur" msgstr "classeur"
#: accounting/models.py:170 core/models.py:437 core/models.py:713 #: accounting/models.py:179 core/models.py:437 core/models.py:713
#: counter/models.py:215 counter/models.py:261 eboutic/models.py:14 #: counter/models.py:200 counter/models.py:246 counter/models.py:296
#: eboutic/models.py:47 #: eboutic/models.py:14 eboutic/models.py:47
msgid "date" msgid "date"
msgstr "date" msgstr "date"
#: accounting/models.py:171 #: accounting/models.py:180 counter/models.py:297
msgid "comment" msgid "comment"
msgstr "commentaire" 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 #: subscription/models.py:34
msgid "payment method" msgid "payment method"
msgstr "méthode de paiement" msgstr "méthode de paiement"
#: accounting/models.py:173 #: accounting/models.py:182
msgid "cheque number" msgid "cheque number"
msgstr "numéro de chèque" msgstr "numéro de chèque"
#: accounting/models.py:174 eboutic/models.py:115 #: accounting/models.py:183 eboutic/models.py:115
msgid "invoice" msgid "invoice"
msgstr "facture" msgstr "facture"
#: accounting/models.py:175 #: accounting/models.py:184
msgid "is done" msgid "is done"
msgstr "est fait" msgstr "est fait"
#: accounting/models.py:177 #: accounting/models.py:186
msgid "simple type" msgid "simple type"
msgstr "type simplifié" msgstr "type simplifié"
#: accounting/models.py:179 accounting/models.py:278 #: accounting/models.py:188 accounting/models.py:287
msgid "accounting type" msgid "accounting type"
msgstr "type comptable" msgstr "type comptable"
#: accounting/models.py:180 #: accounting/models.py:189
msgid "target type" msgid "target type"
msgstr "type de cible" msgstr "type de cible"
#: accounting/models.py:181 #: accounting/models.py:190
#: launderette/templates/launderette/launderette_admin.jinja:44 #: launderette/templates/launderette/launderette_admin.jinja:44
msgid "User" msgid "User"
msgstr "Utilisateur" 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" msgid "Club"
msgstr "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" msgid "Account"
msgstr "Compte" msgstr "Compte"
#: accounting/models.py:181 #: accounting/models.py:190
msgid "Company" msgid "Company"
msgstr "Entreprise" 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" msgid "Other"
msgstr "Autre" msgstr "Autre"
#: accounting/models.py:182 #: accounting/models.py:191
msgid "target id" msgid "target id"
msgstr "id de la cible" msgstr "id de la cible"
#: accounting/models.py:183 #: accounting/models.py:192
msgid "target label" msgid "target label"
msgstr "nom de la cible" msgstr "nom de la cible"
#: accounting/models.py:184 #: accounting/models.py:193
msgid "linked operation" msgid "linked operation"
msgstr "opération liée" msgstr "opération liée"
#: accounting/models.py:200 #: accounting/models.py:209
#, python-format #, python-format
msgid "" msgid ""
"The date can not be before the start date of the journal, which is\n" "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" "La date ne peut pas être avant la date de début du journal, qui est\n"
"%(start_date)s." "%(start_date)s."
#: accounting/models.py:203 #: accounting/models.py:212
msgid "Target does not exists" msgid "Target does not exists"
msgstr "La cible n'existe pas." 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" msgid "Please add a target label if you set no existing target"
msgstr "" msgstr ""
"Merci d'ajouter un nom de cible si vous ne spécifiez pas de cible existante" "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 "" msgid ""
"You need to provide ether a simplified accounting type or a standard " "You need to provide ether a simplified accounting type or a standard "
"accounting type" "accounting type"
@ -193,39 +221,39 @@ msgstr ""
"Vous devez fournir soit un type comptable simplifié ou un type comptable " "Vous devez fournir soit un type comptable simplifié ou un type comptable "
"standard" "standard"
#: accounting/models.py:268 counter/models.py:81 #: accounting/models.py:277 counter/models.py:81
msgid "code" msgid "code"
msgstr "code" msgstr "code"
#: accounting/models.py:270 #: accounting/models.py:279
msgid "An accounting type code contains only numbers" msgid "An accounting type code contains only numbers"
msgstr "Un code comptable ne contient que des numéros" 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" msgid "label"
msgstr "intitulé" msgstr "intitulé"
#: accounting/models.py:274 #: accounting/models.py:283
msgid "movement type" msgid "movement type"
msgstr "type de mouvement" msgstr "type de mouvement"
#: accounting/models.py:274 #: accounting/models.py:283
msgid "Credit" msgid "Credit"
msgstr "Crédit" msgstr "Crédit"
#: accounting/models.py:274 #: accounting/models.py:283
msgid "Debit" msgid "Debit"
msgstr "Débit" msgstr "Débit"
#: accounting/models.py:275 #: accounting/models.py:284
msgid "Neutral" msgid "Neutral"
msgstr "Neutre" msgstr "Neutre"
#: accounting/models.py:301 #: accounting/models.py:310
msgid "simplified accounting types" msgid "simplified accounting types"
msgstr "type simplifié" msgstr "type simplifié"
#: accounting/models.py:304 #: accounting/models.py:313
msgid "simplified type" msgid "simplified type"
msgstr "type simplifié" msgstr "type simplifié"
@ -264,26 +292,36 @@ msgstr "Il n'y a pas de types comptable dans ce site web."
msgid "Bank account: " msgid "Bank account: "
msgstr "Compte en banque : " 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 #: core/templates/core/user_base.jinja:7
msgid "Infos" msgid "Infos"
msgstr "Infos" msgstr "Infos"
#: accounting/templates/accounting/bank_account_details.jinja:16 #: accounting/templates/accounting/bank_account_details.jinja:19
msgid "IBAN: " msgid "IBAN: "
msgstr "IBAN : " msgstr "IBAN : "
#: accounting/templates/accounting/bank_account_details.jinja:17 #: accounting/templates/accounting/bank_account_details.jinja:20
msgid "Number: " msgid "Number: "
msgstr "Numéro : " msgstr "Numéro : "
#: accounting/templates/accounting/bank_account_details.jinja:19 #: accounting/templates/accounting/bank_account_details.jinja:22
msgid "New club account" msgid "New club account"
msgstr "Nouveau compte club" 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/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 #: accounting/templates/accounting/journal_details.jinja:66
#: club/templates/club/club_detail.jinja:7 core/templates/core/file.jinja:38 #: 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 #: core/templates/core/page.jinja:31 core/templates/core/user_base.jinja:10
@ -293,16 +331,6 @@ msgstr "Nouveau compte club"
msgid "Edit" msgid "Edit"
msgstr "Éditer" 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:4
#: accounting/templates/accounting/bank_account_list.jinja:17 #: accounting/templates/accounting/bank_account_list.jinja:17
msgid "Bank account list" msgid "Bank account list"
@ -320,7 +348,7 @@ msgstr "Gérer les types comptable"
msgid "New bank account" msgid "New bank account"
msgstr "Nouveau compte en banque" 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." msgid "There is no accounts in this website."
msgstr "Il n'y a pas de comptes dans ce site web." 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:" msgid "Club account:"
msgstr "Compte club : " msgstr "Compte club : "
#: accounting/templates/accounting/club_account_details.jinja:16 #: accounting/templates/accounting/club_account_details.jinja:19
msgid "New journal" msgid "New journal"
msgstr "Nouveau classeur" 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" 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" 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 #: launderette/templates/launderette/launderette_admin.jinja:43
msgid "Name" msgid "Name"
msgstr "Nom" msgstr "Nom"
#: accounting/templates/accounting/club_account_details.jinja:24 #: accounting/templates/accounting/club_account_details.jinja:27
msgid "Start" msgid "Start"
msgstr "Début" msgstr "Début"
#: accounting/templates/accounting/club_account_details.jinja:25 #: accounting/templates/accounting/club_account_details.jinja:28
msgid "End" msgid "End"
msgstr "Fin" 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 #: accounting/templates/accounting/journal_details.jinja:28
#: core/templates/core/user_account.jinja:19 #: core/templates/core/user_account.jinja:19
#: core/templates/core/user_account.jinja:78 #: core/templates/core/user_account.jinja:78
msgid "Amount" msgid "Amount"
msgstr "Montant" msgstr "Montant"
#: accounting/templates/accounting/club_account_details.jinja:27 #: accounting/templates/accounting/club_account_details.jinja:30
msgid "Effective amount" msgid "Effective amount"
msgstr "Montant effectif" msgstr "Montant effectif"
#: accounting/templates/accounting/club_account_details.jinja:28 #: accounting/templates/accounting/club_account_details.jinja:31
msgid "Closed" msgid "Closed"
msgstr "Fermé" 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 #: accounting/templates/accounting/journal_details.jinja:36
msgid "Actions" msgid "Actions"
msgstr "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 #: accounting/templates/accounting/journal_details.jinja:54
msgid "Yes" msgid "Yes"
msgstr "Oui" 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 #: accounting/templates/accounting/journal_details.jinja:56
msgid "No" msgid "No"
msgstr "Non" 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 #: core/templates/core/file.jinja:36 core/templates/core/page.jinja:28
msgid "View" msgid "View"
msgstr "Voir" msgstr "Voir"
@ -440,6 +468,7 @@ msgid "Done"
msgstr "Effectué" msgstr "Effectué"
#: accounting/templates/accounting/journal_details.jinja:34 #: accounting/templates/accounting/journal_details.jinja:34
#: counter/views.py:558
msgid "Comment" msgid "Comment"
msgstr "Commentaire" 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" msgid "A club with that unix_name already exists"
msgstr "Un club avec ce nom UNIX existe déjà." msgstr "Un club avec ce nom UNIX existe déjà."
#: club/models.py:145 eboutic/models.py:13 eboutic/models.py:46 #: club/models.py:145 counter/models.py:280 counter/models.py:294
#: launderette/models.py:89 launderette/models.py:126 #: eboutic/models.py:13 eboutic/models.py:46 launderette/models.py:89
#: launderette/models.py:126
msgid "user" msgid "user"
msgstr "nom d'utilisateur" msgstr "nom d'utilisateur"
@ -860,10 +890,6 @@ msgstr "signature du forum"
msgid "second email address" msgid "second email address"
msgstr "adresse email secondaire" msgstr "adresse email secondaire"
#: core/models.py:166
msgid "phone"
msgstr "téléphone"
#: core/models.py:167 #: core/models.py:167
msgid "parent phone" msgid "parent phone"
msgstr "téléphone des parents" 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." msgstr "Merci de vous identifier pour voir cette page."
#: core/templates/core/login.jinja:28 #: core/templates/core/login.jinja:28
#: counter/templates/counter/counter_main.jinja:52 #: counter/templates/counter/counter_main.jinja:53
msgid "login" msgid "login"
msgstr "login" msgstr "login"
@ -1531,7 +1557,7 @@ msgstr "Gestion de Sith"
msgid "Subscriptions" msgid "Subscriptions"
msgstr "Cotisations" 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" msgid "Counters"
msgstr "Comptoirs" msgstr "Comptoirs"
@ -1661,6 +1687,10 @@ msgstr "groupe d'achat"
msgid "product" msgid "product"
msgstr "produit" msgstr "produit"
#: counter/models.py:113
msgid "products"
msgstr "produits"
#: counter/models.py:114 #: counter/models.py:114
msgid "counter type" msgid "counter type"
msgstr "type de comptoir" msgstr "type de comptoir"
@ -1677,7 +1707,7 @@ msgstr "Bureau"
#: eboutic/templates/eboutic/eboutic_main.jinja:24 #: eboutic/templates/eboutic/eboutic_main.jinja:24
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:8 #: eboutic/templates/eboutic/eboutic_makecommand.jinja:8
#: eboutic/templates/eboutic/eboutic_payment_result.jinja:4 #: 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" msgid "Eboutic"
msgstr "Eboutic" msgstr "Eboutic"
@ -1685,48 +1715,77 @@ msgstr "Eboutic"
msgid "sellers" msgid "sellers"
msgstr "vendeurs" 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" msgid "counter"
msgstr "comptoir" msgstr "comptoir"
#: counter/models.py:218 #: counter/models.py:203
msgid "bank" msgid "bank"
msgstr "banque" msgstr "banque"
#: counter/models.py:220 counter/models.py:264 #: counter/models.py:205 counter/models.py:249
msgid "is validated" msgid "is validated"
msgstr "est validé" msgstr "est validé"
#: counter/models.py:223 #: counter/models.py:208
msgid "refilling" msgid "refilling"
msgstr "rechargement" msgstr "rechargement"
#: counter/models.py:257 eboutic/models.py:102 #: counter/models.py:242 eboutic/models.py:102
msgid "unit price" msgid "unit price"
msgstr "prix unitaire" 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" msgid "quantity"
msgstr "quantité" msgstr "quantité"
#: counter/models.py:263 #: counter/models.py:248
msgid "Sith account" msgid "Sith account"
msgstr "Compte utilisateur" msgstr "Compte utilisateur"
#: counter/models.py:263 sith/settings.py:281 sith/settings.py:286 #: counter/models.py:248 sith/settings.py:282 sith/settings.py:287
#: sith/settings.py:307 sith/settings_sample.py:264 #: sith/settings.py:308 sith/settings_sample.py:264
#: sith/settings_sample.py:269 sith/settings_sample.py:290 #: sith/settings_sample.py:269 sith/settings_sample.py:290
msgid "Credit card" msgid "Credit card"
msgstr "Carte banquaire" msgstr "Carte banquaire"
#: counter/models.py:267 #: counter/models.py:252
msgid "selling" msgid "selling"
msgstr "vente" msgstr "vente"
#: counter/models.py:301 #: counter/models.py:284
msgid "last activity date"
msgstr "dernière activité"
#: counter/models.py:287
msgid "permanency" msgid "permanency"
msgstr "permanence" 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 #: counter/templates/counter/counter_click.jinja:29
msgid "Customer" msgid "Customer"
msgstr "Client" msgstr "Client"
@ -1824,6 +1883,10 @@ msgid "Please, login"
msgstr "Merci de vous identifier" msgstr "Merci de vous identifier"
#: counter/templates/counter/counter_main.jinja:43 #: 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: " msgid "Barman: "
msgstr "Barman : " msgstr "Barman : "
@ -1853,42 +1916,96 @@ msgstr "Nouveau type de produit"
msgid "There is no product types in this website." msgid "There is no product types in this website."
msgstr "Il n'y a pas de types de produit dans ce site web." 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" msgid "Select user"
msgstr "Choisir un utilisateur" msgstr "Choisir un utilisateur"
#: counter/views.py:51 #: counter/views.py:52
msgid "User not found" msgid "User not found"
msgstr "Utilisateur non trouvé" msgstr "Utilisateur non trouvé"
#: counter/views.py:83 #: counter/views.py:84
msgid "Bad credentials" msgid "Bad credentials"
msgstr "Mauvais identifiants" msgstr "Mauvais identifiants"
#: counter/views.py:85 #: counter/views.py:86
msgid "User is not subscriber" msgid "User is not subscriber"
msgstr "L'utilisateur n'est pas cotisant." msgstr "L'utilisateur n'est pas cotisant."
#: counter/views.py:257 #: counter/views.py:258
msgid "END" msgid "END"
msgstr "FIN" msgstr "FIN"
#: counter/views.py:259 #: counter/views.py:260
msgid "CAN" msgid "CAN"
msgstr "ANN" msgstr "ANN"
#: counter/views.py:289 #: counter/views.py:290
msgid "You have not enough money to buy all the basket" msgid "You have not enough money to buy all the basket"
msgstr "Vous n'avez pas assez d'argent pour acheter le panier" msgstr "Vous n'avez pas assez d'argent pour acheter le panier"
#: counter/views.py:467 #: counter/views.py:470
msgid "Parent product" msgid "Parent product"
msgstr "Produit parent" msgstr "Produit parent"
#: counter/views.py:468 #: counter/views.py:471
msgid "Buying groups" msgid "Buying groups"
msgstr "Groupes d'achat" 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 #: eboutic/models.py:48
msgid "validated" msgid "validated"
msgstr "validé" msgstr "validé"
@ -2037,12 +2154,12 @@ msgid "Washing and drying"
msgstr "Lavage et séchage" msgstr "Lavage et séchage"
#: launderette/templates/launderette/launderette_book.jinja:26 #: 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" msgid "Washing"
msgstr "Lavage" msgstr "Lavage"
#: launderette/templates/launderette/launderette_book.jinja:30 #: 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" msgid "Drying"
msgstr "Séchage" msgstr "Séchage"
@ -2097,116 +2214,116 @@ msgstr "L'utilisateur n'a pas réservé de créneau"
msgid "Token not found" msgid "Token not found"
msgstr "Jeton non trouvé" msgstr "Jeton non trouvé"
#: sith/settings.py:172 sith/settings_sample.py:160 #: sith/settings.py:173 sith/settings_sample.py:160
msgid "English" msgid "English"
msgstr "Anglais" msgstr "Anglais"
#: sith/settings.py:173 sith/settings_sample.py:161 #: sith/settings.py:174 sith/settings_sample.py:161
msgid "French" msgid "French"
msgstr "Français" 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:261 sith/settings_sample.py:268
#: sith/settings_sample.py:288 #: sith/settings_sample.py:288
msgid "Check" msgid "Check"
msgstr "Chèque" 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:262 sith/settings_sample.py:270
#: sith/settings_sample.py:289 #: sith/settings_sample.py:289
msgid "Cash" msgid "Cash"
msgstr "Espèces" msgstr "Espèces"
#: sith/settings.py:280 sith/settings_sample.py:263 #: sith/settings.py:281 sith/settings_sample.py:263
msgid "Transfert" msgid "Transfert"
msgstr "Virement" msgstr "Virement"
#: sith/settings.py:293 sith/settings_sample.py:276 #: sith/settings.py:294 sith/settings_sample.py:276
msgid "Belfort" msgid "Belfort"
msgstr "Belfort" msgstr "Belfort"
#: sith/settings.py:294 sith/settings_sample.py:277 #: sith/settings.py:295 sith/settings_sample.py:277
msgid "Sevenans" msgid "Sevenans"
msgstr "Sevenans" msgstr "Sevenans"
#: sith/settings.py:295 sith/settings_sample.py:278 #: sith/settings.py:296 sith/settings_sample.py:278
msgid "Montbéliard" msgid "Montbéliard"
msgstr "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" msgid "One semester"
msgstr "Un semestre" msgstr "Un semestre"
#: sith/settings.py:335 sith/settings_sample.py:318 #: sith/settings.py:336 sith/settings_sample.py:318
msgid "Two semesters" msgid "Two semesters"
msgstr "Deux semestres" 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" msgid "Common core cursus"
msgstr "Cursus tronc commun" 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 #: sith/settings_sample.py:333
msgid "Branch cursus" msgid "Branch cursus"
msgstr "Cursus branche" msgstr "Cursus branche"
#: sith/settings.py:355 sith/settings_sample.py:338 #: sith/settings.py:356 sith/settings_sample.py:338
msgid "Honorary member" msgid "Honorary member"
msgstr "Membre honoraire" msgstr "Membre honoraire"
#: sith/settings.py:360 sith/settings_sample.py:343 #: sith/settings.py:361 sith/settings_sample.py:343
msgid "Assidu member" msgid "Assidu member"
msgstr "Membre d'Assidu" 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" msgid "Amicale/DOCEO member"
msgstr "Membre de l'Amicale/DOCEO" 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" msgid "UT network member"
msgstr "Cotisant du réseau UT" 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" msgid "CROUS member"
msgstr "Membres du CROUS" 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" msgid "Sbarro/ESTA member"
msgstr "Membre de Sbarro ou de l'ESTA" 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" msgid "President"
msgstr "Président" msgstr "Président"
#: sith/settings.py:389 sith/settings_sample.py:372 #: sith/settings.py:390 sith/settings_sample.py:372
msgid "Vice-President" msgid "Vice-President"
msgstr "Vice-Président" msgstr "Vice-Président"
#: sith/settings.py:390 sith/settings_sample.py:373 #: sith/settings.py:391 sith/settings_sample.py:373
msgid "Treasurer" msgid "Treasurer"
msgstr "Trésorier" msgstr "Trésorier"
#: sith/settings.py:391 sith/settings_sample.py:374 #: sith/settings.py:392 sith/settings_sample.py:374
msgid "Communication supervisor" msgid "Communication supervisor"
msgstr "Responsable com" msgstr "Responsable com"
#: sith/settings.py:392 sith/settings_sample.py:375 #: sith/settings.py:393 sith/settings_sample.py:375
msgid "Secretary" msgid "Secretary"
msgstr "Secrétaire" msgstr "Secrétaire"
#: sith/settings.py:393 sith/settings_sample.py:376 #: sith/settings.py:394 sith/settings_sample.py:376
msgid "IT supervisor" msgid "IT supervisor"
msgstr "Responsable info" msgstr "Responsable info"
#: sith/settings.py:394 sith/settings_sample.py:377 #: sith/settings.py:395 sith/settings_sample.py:377
msgid "Board member" msgid "Board member"
msgstr "Membre du bureau" 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" msgid "Active member"
msgstr "Membre actif" msgstr "Membre actif"
#: sith/settings.py:396 sith/settings_sample.py:379 #: sith/settings.py:397 sith/settings_sample.py:379
msgid "Curious" msgid "Curious"
msgstr "Curieux" 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" msgid "You must either choose an existing user or create a new one properly"
msgstr "" msgstr ""
"Vous devez soit choisir un utilisateur existant, ou en créer un proprement." "Vous devez soit choisir un utilisateur existant, ou en créer un proprement."

View File

@ -636,6 +636,7 @@ def migrate_counter():
user=user, user=user,
counter=counter, counter=counter,
start=r['logged_time'].replace(tzinfo=timezone('Europe/Paris')), 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')), end=r['closed_time'].replace(tzinfo=timezone('Europe/Paris')),
) )
new.save() new.save()