mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-25 10:34:21 +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(Refilling)
|
||||||
admin.site.register(Selling)
|
admin.site.register(Selling)
|
||||||
admin.site.register(Permanency)
|
admin.site.register(Permanency)
|
||||||
|
admin.site.register(CashRegisterSummary)
|
||||||
|
|
||||||
|
@ -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")
|
||||||
|
|
||||||
|
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 %}
|
{% 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 -%}
|
||||||
|
@ -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 %}
|
{% 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() }}
|
||||||
|
@ -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'),
|
||||||
|
@ -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.
@ -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."
|
||||||
|
|
||||||
|
@ -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()
|
||||||
|
Loading…
Reference in New Issue
Block a user