mirror of
				https://github.com/ae-utbm/sith.git
				synced 2025-10-31 00:53:08 +00:00 
			
		
		
		
	Remake the statement by nature
This commit is contained in:
		| @@ -6,28 +6,27 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| {% block content %} | {% block content %} | ||||||
| 	<h2>{% trans %}Accounting bilan: {% endtrans %} {{ object.name }}</h2> | <h3>{% trans %}Accounting bilan: {% endtrans %} {{ object.name }}</h3> | ||||||
|  |  | ||||||
| 	<h3>{% trans %}Credit{% endtrans %}</h3> | <table> | ||||||
|  |     <thead> | ||||||
| 	<table> |  | ||||||
|         <thead> |  | ||||||
|         <tr> |         <tr> | ||||||
|             <td>{% trans %}Type of operations{% endtrans %}</td> |             <td>{% trans %}Operation type{% endtrans %}</td> | ||||||
|             <td>{% trans %}Sum{% endtrans %}</td> |             <td>{% trans %}Sum{% endtrans %}</td> | ||||||
|         </tr> |         </tr> | ||||||
|         </thead> |     </thead> | ||||||
|         <tbody> |     <tbody> | ||||||
|             {% for key in bilan.keys() %} |         {% for k,v in bilan.items() %} | ||||||
|                 <tr> |         <tr> | ||||||
|                     <td>{{ key }}</td> |             <td>{{ k }}</td> | ||||||
|                 	<td>{{ bilan[key] }}</td> |             <td>{{ v }}</td> | ||||||
|                 </tr> |         </tr> | ||||||
|             {% endfor %} |         {% endfor %} | ||||||
|         </tbody> |     </tbody> | ||||||
|  |  | ||||||
|     </table> | </table> | ||||||
|  |  | ||||||
|     <p>Total : {{ total_credit }}</p> | <p><strong>{% trans %}Amount: {% endtrans %}</strong>{{ object.amount }} €</p> | ||||||
|  | <p><strong>{% trans %}Effective amount: {% endtrans %}</strong>{{ object.effective_amount }} €</p> | ||||||
|  |  | ||||||
| {% endblock %} | {% endblock %} | ||||||
|   | |||||||
| @@ -4,52 +4,53 @@ | |||||||
| {% trans %}General journal:{% endtrans %} {{ object.name }} | {% trans %}General journal:{% endtrans %} {{ object.name }} | ||||||
| {% endblock %} | {% endblock %} | ||||||
|  |  | ||||||
|  | {% macro display_tables(dict) %} | ||||||
|  | <h4>{% trans %}Credit{% endtrans %}</h4> | ||||||
|  | <table> | ||||||
|  |     <thead> | ||||||
|  |         <tr> | ||||||
|  |             <td>{% trans %}Nature of operation{% endtrans %}</td> | ||||||
|  |             <td>{% trans %}Sum{% endtrans %}</td> | ||||||
|  |         </tr> | ||||||
|  |     </thead> | ||||||
|  |     <tbody> | ||||||
|  |         {% for k,v in dict['CREDIT'].items() %} | ||||||
|  |         <tr> | ||||||
|  |             <td>{{ k }}</td> | ||||||
|  |             <td>{{ v }}</td> | ||||||
|  |         </tr> | ||||||
|  |         {% endfor %} | ||||||
|  |     </tbody> | ||||||
|  | </table> | ||||||
|  | {% trans %}Total: {% endtrans %}{{ dict['CREDIT_sum'] }} | ||||||
|  |  | ||||||
|  | <h4>{% trans %}Debit{% endtrans %}</h4> | ||||||
|  | <table> | ||||||
|  |     <thead> | ||||||
|  |         <tr> | ||||||
|  |             <td>{% trans %}Nature of operation{% endtrans %}</td> | ||||||
|  |             <td>{% trans %}Sum{% endtrans %}</td> | ||||||
|  |         </tr> | ||||||
|  |     </thead> | ||||||
|  |     <tbody> | ||||||
|  |         {% for k,v in dict['DEBIT'].items() %} | ||||||
|  |         <tr> | ||||||
|  |             <td>{{ k }}</td> | ||||||
|  |             <td>{{ v }}</td> | ||||||
|  |         </tr> | ||||||
|  |         {% endfor %} | ||||||
|  |     </tbody> | ||||||
|  | </table> | ||||||
|  | {% trans %}Total: {% endtrans %}{{ dict['DEBIT_sum'] }} | ||||||
|  | {% endmacro %} | ||||||
|  |  | ||||||
| {% block content %} | {% block content %} | ||||||
| 	<h2>{% trans %}Nature bilan: {% endtrans %} {{ object.name }}</h2> | <h2>{% trans %}Statement by nature: {% endtrans %} {{ object.name }}</h2> | ||||||
|  |  | ||||||
| 	<h3>{% trans %}Credit{% endtrans %}</h3> | {% for k,v in statement.items() %} | ||||||
|  | <h3>{{ k }}</h3> | ||||||
|  | {{ display_tables(v) }} | ||||||
|  | <hr> | ||||||
|  | {% endfor %} | ||||||
|  |  | ||||||
| 	<table> | {% endblock %} | ||||||
|         <thead> |  | ||||||
|         <tr> |  | ||||||
|             <td>{% trans %}Nature of operation{% endtrans %}</td> |  | ||||||
|             <td>{% trans %}Sum{% endtrans %}</td> |  | ||||||
|         </tr> |  | ||||||
|         </thead> |  | ||||||
|         <tbody> |  | ||||||
|             {% for key in bilan_credit.keys() %} |  | ||||||
|                 <tr> |  | ||||||
|                 	<td>{{key}}</td> |  | ||||||
|                 	<td>{{bilan_credit[key]}}</td> |  | ||||||
|                 </tr> |  | ||||||
|             {% endfor %} |  | ||||||
|         </tbody> |  | ||||||
|  |  | ||||||
|     </table> |  | ||||||
|  |  | ||||||
|     <p>Total : {{total_credit}}</p> |  | ||||||
|  |  | ||||||
| 	<h3>{% trans %}Debit{% endtrans %}</h3> |  | ||||||
|      |  | ||||||
|     <table> |  | ||||||
|         <thead> |  | ||||||
|         <tr> |  | ||||||
|             <td>{% trans %}Nature of operation{% endtrans %}</td> |  | ||||||
|             <td>{% trans %}Sum{% endtrans %}</td> |  | ||||||
|         </tr> |  | ||||||
|         </thead> |  | ||||||
|         <tbody> |  | ||||||
|             {% for key in bilan_debit.keys() %} |  | ||||||
|                 <tr> |  | ||||||
|                     <td>{{key}}</td> |  | ||||||
|                     <td>{{bilan_debit[key]}}</td> |  | ||||||
|                 </tr> |  | ||||||
|             {% endfor %} |  | ||||||
|         </tbody> |  | ||||||
|  |  | ||||||
|     </table> |  | ||||||
|  |  | ||||||
|     <p>Total : {{total_debit}}</p> |  | ||||||
|  |  | ||||||
| {% endblock %} |  | ||||||
|   | |||||||
| @@ -7,12 +7,14 @@ from django.forms.models import modelform_factory | |||||||
| from django.core.exceptions import PermissionDenied | from django.core.exceptions import PermissionDenied | ||||||
| from django.forms import HiddenInput | from django.forms import HiddenInput | ||||||
| from django.db import transaction | from django.db import transaction | ||||||
|  | from django.db.models import Sum | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
| from django import forms | from django import forms | ||||||
| from django.http import HttpResponseRedirect, HttpResponse | from django.http import HttpResponseRedirect, HttpResponse | ||||||
| from django.utils.translation import ugettext as _ | from django.utils.translation import ugettext as _ | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
|  |  | ||||||
|  | import collections | ||||||
|  |  | ||||||
| from ajax_select.fields import AutoCompleteSelectField, AutoCompleteSelectMultipleField | from ajax_select.fields import AutoCompleteSelectField, AutoCompleteSelectMultipleField | ||||||
|  |  | ||||||
| @@ -363,8 +365,6 @@ class OperationPDFView(CanViewMixin, DetailView): | |||||||
|  |  | ||||||
|         pdfmetrics.registerFont(TTFont('DejaVu', 'DejaVuSerif.ttf')) |         pdfmetrics.registerFont(TTFont('DejaVu', 'DejaVuSerif.ttf')) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         self.object = self.get_object() |         self.object = self.get_object() | ||||||
|         amount = self.object.amount |         amount = self.object.amount | ||||||
|         remark = self.object.remark |         remark = self.object.remark | ||||||
| @@ -384,7 +384,6 @@ class OperationPDFView(CanViewMixin, DetailView): | |||||||
|         else: |         else: | ||||||
|             target = self.object.target.get_display_name() |             target = self.object.target.get_display_name() | ||||||
|  |  | ||||||
|  |  | ||||||
|         response = HttpResponse(content_type='application/pdf') |         response = HttpResponse(content_type='application/pdf') | ||||||
|         response['Content-Disposition'] = 'attachment; filename="op-%d(%s_on_%s).pdf"'  %(num, ti, club_name) |         response['Content-Disposition'] = 'attachment; filename="op-%d(%s_on_%s).pdf"'  %(num, ti, club_name) | ||||||
|         p = canvas.Canvas(response) |         p = canvas.Canvas(response) | ||||||
| @@ -396,11 +395,11 @@ class OperationPDFView(CanViewMixin, DetailView): | |||||||
|         im = ImageReader("core/static/core/img/logo.jpg") |         im = ImageReader("core/static/core/img/logo.jpg") | ||||||
|         iw, ih = im.getSize() |         iw, ih = im.getSize() | ||||||
|         p.drawImage(im, 40, height - 50, width=iw/2, height=ih/2) |         p.drawImage(im, 40, height - 50, width=iw/2, height=ih/2) | ||||||
|   |  | ||||||
|         labelStr = [["%s %s - %s %s" % (_("Journal"), ti, _("Operation"), num)]] |         labelStr = [["%s %s - %s %s" % (_("Journal"), ti, _("Operation"), num)]] | ||||||
|  |  | ||||||
|         label = Table(labelStr, colWidths=[150], rowHeights=[20]) |         label = Table(labelStr, colWidths=[150], rowHeights=[20]) | ||||||
|          |  | ||||||
|         label.setStyle(TableStyle([ |         label.setStyle(TableStyle([ | ||||||
|                                 ('ALIGN',(0,0),(-1,-1),'CENTER'), |                                 ('ALIGN',(0,0),(-1,-1),'CENTER'), | ||||||
|                                 ('BOX', (0,0), (-1,-1), 0.25, colors.black), |                                 ('BOX', (0,0), (-1,-1), 0.25, colors.black), | ||||||
| @@ -414,11 +413,11 @@ class OperationPDFView(CanViewMixin, DetailView): | |||||||
|         p.drawString(90, height - 190, _("Date: %(date)s") % {"date": date}) |         p.drawString(90, height - 190, _("Date: %(date)s") % {"date": date}) | ||||||
|  |  | ||||||
|         data = [] |         data = [] | ||||||
|          |  | ||||||
|         data += [["%s" % (_("Credit").upper() if nature == 'CREDIT' else _("Debit").upper())]] |         data += [["%s" % (_("Credit").upper() if nature == 'CREDIT' else _("Debit").upper())]] | ||||||
|  |  | ||||||
|         data += [[_("Amount: %(amount).2f €") % {"amount": amount}]] |         data += [[_("Amount: %(amount).2f €") % {"amount": amount}]] | ||||||
|          |  | ||||||
|         payment_mode = "" |         payment_mode = "" | ||||||
|         for m in settings.SITH_ACCOUNTING_PAYMENT_METHOD: |         for m in settings.SITH_ACCOUNTING_PAYMENT_METHOD: | ||||||
|             if m[0] == mode: |             if m[0] == mode: | ||||||
| @@ -428,11 +427,11 @@ class OperationPDFView(CanViewMixin, DetailView): | |||||||
|             payment_mode += " %s\n" %(m[1]) |             payment_mode += " %s\n" %(m[1]) | ||||||
|  |  | ||||||
|         data += [[payment_mode]] |         data += [[payment_mode]] | ||||||
|          |  | ||||||
|         data += [["%s : %s" % (_("Debtor") if nature == 'CREDIT' else _("Creditor"), target), ""]] |         data += [["%s : %s" % (_("Debtor") if nature == 'CREDIT' else _("Creditor"), target), ""]] | ||||||
|  |  | ||||||
|         data += [["%s \n%s" % (_("Comment:"), remark)]] |         data += [["%s \n%s" % (_("Comment:"), remark)]] | ||||||
|          |  | ||||||
|         t = Table(data, colWidths=[(width-90*2)/2]*2, rowHeights=[20, 20, 70, 20, 80]) |         t = Table(data, colWidths=[(width-90*2)/2]*2, rowHeights=[20, 20, 70, 20, 80]) | ||||||
|         t.setStyle(TableStyle([ |         t.setStyle(TableStyle([ | ||||||
|                         ('ALIGN',(0,0),(-1,-1),'CENTER'), |                         ('ALIGN',(0,0),(-1,-1),'CENTER'), | ||||||
| @@ -464,8 +463,6 @@ class OperationPDFView(CanViewMixin, DetailView): | |||||||
|  |  | ||||||
|         t.drawOn(p, 90, 350) |         t.drawOn(p, 90, 350) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         p.drawCentredString(10.5 * cm, 2 * cm, club_name) |         p.drawCentredString(10.5 * cm, 2 * cm, club_name) | ||||||
|         p.drawCentredString(10.5 * cm, 1 * cm, club_address) |         p.drawCentredString(10.5 * cm, 1 * cm, club_address) | ||||||
|  |  | ||||||
| @@ -475,44 +472,50 @@ class OperationPDFView(CanViewMixin, DetailView): | |||||||
|  |  | ||||||
| class JournalBilanNatureView(JournalTabsMixin, CanViewMixin, DetailView): | class JournalBilanNatureView(JournalTabsMixin, CanViewMixin, DetailView): | ||||||
|     """ |     """ | ||||||
|     Calculate a dictionary with operation code and sum of operations |     Display a statement sorted by labels | ||||||
|     """ |     """ | ||||||
|     model = GeneralJournal |     model = GeneralJournal | ||||||
|     pk_url_kwarg = "j_id" |     pk_url_kwarg = "j_id" | ||||||
|     template_name='accounting/journal_bilan_nature.jinja' |     template_name='accounting/journal_bilan_nature.jinja' | ||||||
|     current_tab='bilan_nature' |     current_tab='bilan_nature' | ||||||
|  |  | ||||||
|     def sum_by_code(self, code): |     def statement(self, queryset, movement_type): | ||||||
|         from decimal import Decimal |         ret = collections.OrderedDict() | ||||||
|         from django.db.models import Sum, DecimalField |         statement = collections.OrderedDict() | ||||||
|         return(list((self.object.operations.filter( |         total_sum = 0 | ||||||
|                 accounting_type__code=code).aggregate(Sum('amount'))).values())[0]) |         for at in AccountingType.objects.order_by('label').all(): | ||||||
|  |             sum = queryset.filter(accounting_type__movement_type=movement_type, | ||||||
|  |                 accounting_type__code__startswith=at.code).aggregate(amount_sum=Sum('amount'))['amount_sum'] | ||||||
|  |             if sum: | ||||||
|  |                 total_sum += sum | ||||||
|  |                 statement[at.label] = sum | ||||||
|  |         ret[movement_type] = statement | ||||||
|  |         ret[movement_type+"_sum"] = total_sum | ||||||
|  |         return ret | ||||||
|  |  | ||||||
|     def bilan_credit(self): |     def big_statement(self): | ||||||
|         bilan = {} |         label_list = self.object.operations.order_by('label').values_list('label').distinct() | ||||||
|         for el in AccountingType.objects.filter(movement_type='CREDIT'): |         labels = Label.objects.filter(id__in=label_list).all() | ||||||
|             bilan["%s - %s" % (el.code, el.label)] = self.sum_by_code(el.code) |         statement = collections.OrderedDict() | ||||||
|         return bilan |         gen_statement = collections.OrderedDict() | ||||||
|  |         no_label_statement = collections.OrderedDict() | ||||||
|     def bilan_debit(self): |         gen_statement.update(self.statement(self.object.operations.all(), "CREDIT")) | ||||||
|         bilan = {} |         gen_statement.update(self.statement(self.object.operations.all(), "DEBIT")) | ||||||
|         for el in AccountingType.objects.filter(movement_type='DEBIT'): |         statement[_("General statement")] = gen_statement | ||||||
|             bilan["%s - %s" % (el.code, el.label)] = self.sum_by_code(el.code) |         no_label_statement.update(self.statement(self.object.operations.filter(label=None).all(), "CREDIT")) | ||||||
|         return bilan |         no_label_statement.update(self.statement(self.object.operations.filter(label=None).all(), "DEBIT")) | ||||||
|  |         statement[_("No label operations")] = no_label_statement | ||||||
|     def total_credit(self): |         for l in labels: | ||||||
|         return sum(self.bilan_credit().values()) |             l_stmt = collections.OrderedDict() | ||||||
|  |             l_stmt.update(self.statement(self.object.operations.filter(label=l).all(), "CREDIT")) | ||||||
|     def total_debit(self): |             l_stmt.update(self.statement(self.object.operations.filter(label=l).all(), "DEBIT")) | ||||||
|         return sum(self.bilan_debit().values()) |             statement[l] = l_stmt | ||||||
|  |         return statement | ||||||
|  |  | ||||||
|     def get_context_data(self, **kwargs): |     def get_context_data(self, **kwargs): | ||||||
|         """ Add journal to the context """ |         """ Add infos to the context """ | ||||||
|         kwargs = super(JournalBilanNatureView, self).get_context_data(**kwargs) |         kwargs = super(JournalBilanNatureView, self).get_context_data(**kwargs) | ||||||
|         kwargs['bilan_credit'] = self.bilan_credit() |         kwargs['statement'] = self.big_statement() | ||||||
|         kwargs['bilan_debit'] = self.bilan_debit() |  | ||||||
|         kwargs['total_credit'] = self.total_credit() |  | ||||||
|         kwargs['total_debit'] = self.total_debit() |  | ||||||
|         return kwargs |         return kwargs | ||||||
|  |  | ||||||
| class JournalBilanPersonView(JournalTabsMixin, CanViewMixin, DetailView): | class JournalBilanPersonView(JournalTabsMixin, CanViewMixin, DetailView): | ||||||
| @@ -530,30 +533,29 @@ class JournalBilanPersonView(JournalTabsMixin, CanViewMixin, DetailView): | |||||||
|         return(list((self.object.operations.filter( |         return(list((self.object.operations.filter( | ||||||
|                 target_id=target_id).aggregate(Sum('amount'))).values())[0]) |                 target_id=target_id).aggregate(Sum('amount'))).values())[0]) | ||||||
|  |  | ||||||
|     def bilan_credit(self): |     def credit_statement(self): | ||||||
|  |         statement = {} | ||||||
|         bilan = {} |  | ||||||
|         for el in Operation.objects.filter(accounting_type__movement_type='CREDIT'): |         for el in Operation.objects.filter(accounting_type__movement_type='CREDIT'): | ||||||
|             bilan[el.target] = self.sum_by_target(el.target_id) |             statement[el.target] = self.sum_by_target(el.target_id) | ||||||
|         return bilan |         return statement | ||||||
|  |  | ||||||
|     def bilan_debit(self): |     def debit_statement(self): | ||||||
|         bilan = {} |         statement = {} | ||||||
|         for el in Operation.objects.filter(accounting_type__movement_type='DEBIT'): |         for el in Operation.objects.filter(accounting_type__movement_type='DEBIT'): | ||||||
|             bilan[el.target] = self.sum_by_target(el.target_id) |             statement[el.target] = self.sum_by_target(el.target_id) | ||||||
|         return bilan |         return statement | ||||||
|  |  | ||||||
|     def total_credit(self): |     def total_credit(self): | ||||||
|         return sum(self.bilan_credit().values()) |         return sum(self.credit_statement().values()) | ||||||
|  |  | ||||||
|     def total_debit(self): |     def total_debit(self): | ||||||
|         return sum(self.bilan_debit().values()) |         return sum(self.debit_statement().values()) | ||||||
|  |  | ||||||
|     def get_context_data(self, **kwargs): |     def get_context_data(self, **kwargs): | ||||||
|         """ Add journal to the context """ |         """ Add journal to the context """ | ||||||
|         kwargs = super(JournalBilanPersonView, self).get_context_data(**kwargs) |         kwargs = super(JournalBilanPersonView, self).get_context_data(**kwargs) | ||||||
|         kwargs['bilan_credit'] = self.bilan_credit() |         kwargs['credit_statement'] = self.credit_statement() | ||||||
|         kwargs['bilan_debit'] = self.bilan_debit() |         kwargs['debit_statement'] = self.debit_statement() | ||||||
|         kwargs['total_credit'] = self.total_credit() |         kwargs['total_credit'] = self.total_credit() | ||||||
|         kwargs['total_debit'] = self.total_debit() |         kwargs['total_debit'] = self.total_debit() | ||||||
|         return kwargs |         return kwargs | ||||||
| @@ -567,38 +569,19 @@ class JournalBilanAccountingView(JournalTabsMixin, CanViewMixin, DetailView): | |||||||
|     template_name='accounting/journal_bilan_accounting.jinja' |     template_name='accounting/journal_bilan_accounting.jinja' | ||||||
|     current_tab = "bilan_accounting" |     current_tab = "bilan_accounting" | ||||||
|  |  | ||||||
|     def recursive_sum(self, max_length): |     def statement(self): | ||||||
|         import collections |         statement = collections.OrderedDict() | ||||||
|         from decimal import Decimal |  | ||||||
|         from django.db.models import Sum, DecimalField |  | ||||||
|         bilan = {} |  | ||||||
|         bilan = collections.OrderedDict(bilan) |  | ||||||
|  |  | ||||||
|         for at in AccountingType.objects.order_by('code').all(): |         for at in AccountingType.objects.order_by('code').all(): | ||||||
|             #bilan[at] = self.object.operations.filter(type__startswith=at.code) |             sum_by_type = self.object.operations.filter( | ||||||
|             sum_by_type = list((self.object.operations.filter( |                 accounting_type__code__startswith=at.code).aggregate(amount_sum=Sum('amount'))['amount_sum'] | ||||||
|                 accounting_type__code__startswith=at.code).aggregate(Sum('amount'))).values())[0] |  | ||||||
|             if sum_by_type != 0: |             if sum_by_type != 0: | ||||||
|                 bilan[at] = sum_by_type |                 statement[at] = sum_by_type | ||||||
|         return bilan |         return statement | ||||||
|  |  | ||||||
|  |  | ||||||
|     def bilan(self): |  | ||||||
|         bilan = self.recursive_sum(3) |  | ||||||
|         return bilan |  | ||||||
|  |  | ||||||
|     def total_credit(self): |  | ||||||
|         return self.bilan().get('6')#sum(self.bilan().values()) |  | ||||||
|  |  | ||||||
|     def total_debit(self): |  | ||||||
|         return self.bilan().get('6')#sum(self.bilan().values()) |  | ||||||
|  |  | ||||||
|     def get_context_data(self, **kwargs): |     def get_context_data(self, **kwargs): | ||||||
|         """ Add journal to the context """ |         """ Add journal to the context """ | ||||||
|         kwargs = super(JournalBilanAccountingView, self).get_context_data(**kwargs) |         kwargs = super(JournalBilanAccountingView, self).get_context_data(**kwargs) | ||||||
|         kwargs['bilan'] = self.bilan() |         kwargs['statement'] = self.statement() | ||||||
|         kwargs['total_credit'] = self.total_credit() |  | ||||||
|         kwargs['total_debit'] = self.total_debit() |  | ||||||
|         return kwargs |         return kwargs | ||||||
|  |  | ||||||
| # Company views | # Company views | ||||||
| @@ -634,7 +617,7 @@ class LabelListView(CanViewMixin, DetailView): | |||||||
|     pk_url_kwarg = "clubaccount_id" |     pk_url_kwarg = "clubaccount_id" | ||||||
|     template_name = 'accounting/label_list.jinja' |     template_name = 'accounting/label_list.jinja' | ||||||
|  |  | ||||||
| class LabelCreateView(CanEditMixin, CreateView): # FIXME we need to check the rights before creating the object | class LabelCreateView(CanCreateMixin, CreateView): # FIXME we need to check the rights before creating the object | ||||||
|     model = Label |     model = Label | ||||||
|     form_class = modelform_factory(Label, fields=['name', 'club_account'], widgets={ |     form_class = modelform_factory(Label, fields=['name', 'club_account'], widgets={ | ||||||
|         'club_account': HiddenInput, |         'club_account': HiddenInput, | ||||||
|   | |||||||
| @@ -161,7 +161,7 @@ msgstr "type comptable" | |||||||
| #: accounting/models.py:205 accounting/models.py:299 accounting/models.py:325 | #: accounting/models.py:205 accounting/models.py:299 accounting/models.py:325 | ||||||
| #: accounting/models.py:348 counter/models.py:282 | #: accounting/models.py:348 counter/models.py:282 | ||||||
| msgid "label" | msgid "label" | ||||||
| msgstr "intitulé" | msgstr "étiquette" | ||||||
|  |  | ||||||
| #: accounting/models.py:206 | #: accounting/models.py:206 | ||||||
| msgid "target type" | msgid "target type" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user