From 057aea69e5584b7dffc576e7d1dfa3ab0f2bc7b3 Mon Sep 17 00:00:00 2001 From: Anastasia Date: Fri, 10 Jul 2015 10:11:12 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=9F=D1=80=D0=BE=D0=B8=D0=B7=D0=B2=D0=BE=D0=B4?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=B5=D0=BD=D0=BD=D0=B0=D1=8F=20=D1=82=D0=B0?= =?UTF-8?q?=D0=B1=D0=BB=D0=B8=D1=86=D0=B0.=20=D0=9F=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D1=85=D0=BE=D0=B4=20=D0=BD=D0=B0=20=D1=82=D0=B0=D0=B1=D0=BB?= =?UTF-8?q?=D0=B8=D1=86=D1=83=20=D0=BF=D0=BE=20=D1=81=D1=81=D1=8B=D0=BB?= =?UTF-8?q?=D0=BA=D0=B5=20=D0=B8=D0=B7=20=D0=A2=D0=B0=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=D1=86=D1=8B=20=D0=B2=D1=8B=D1=85=D0=BE=D0=B4=D0=B0=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BA=D0=B0=D0=B7=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asuzr/tables.py | 22 +++++++++++++++++++++- asuzr/views.py | 21 +++++++++++---------- templates/asuzr/table.html | 2 ++ templates/asuzr/totals_table.html | 7 +++++++ 4 files changed, 41 insertions(+), 11 deletions(-) diff --git a/asuzr/tables.py b/asuzr/tables.py index d9b1a8f..4a38a21 100644 --- a/asuzr/tables.py +++ b/asuzr/tables.py @@ -57,7 +57,7 @@ class ThumbnailColumn(tables.TemplateColumn): class OrdersTable(tables.Table): date = tables.DateColumn('d/m/Y', verbose_name = 'Дата') deadline = tables.DateColumn('d/m/Y', verbose_name = 'Срок сдачи') - product = tables.Column(verbose_name = 'Наименование') + product = tables.LinkColumn('asuzr.views.production_table', verbose_name = 'Наименование', args=[tables.utils.A('pk')]) delivery = EditableColumn('delivery', verbose_name = 'Доставка') lifting = EditableColumn('lifting', verbose_name = 'Подъем') address = tables.Column(verbose_name = 'Адрес') @@ -200,3 +200,23 @@ class ProdPlanTable(tables.Table): class Meta: attrs = {'class': 'paleblue'} + +class ProductionTable(tables.Table): + cost_item = tables.Column(verbose_name = 'Комплектующие') + value = tables.Column(verbose_name = 'Стоимость') + + summary = ['Итого затрат', 0] + balance = ['Прибыль', 0] + + def render_value(self, value): + return '%0.2f' % value + + def set_summary(self, value): + self.summary[1] = value + + def set_balance(self, value): + self.balance[1] = value + + class Meta: + attrs = {'class': 'paleblue'} + template = 'asuzr/totals_table.html' diff --git a/asuzr/views.py b/asuzr/views.py index 50af453..0a80a74 100644 --- a/asuzr/views.py +++ b/asuzr/views.py @@ -238,16 +238,17 @@ def desreport(request): @login_required def production_table(request, order_id): - order_list = Order.objects.filter(is_done=False).order_by('-id') - sel_order = Order.objects.filter(id=order_id) - cost_items = sel_order.values('cost_items') - t=loader.get_template('asuzr/order_costs.html') - c=RequestContext(request,{ - 'order_list' : order_list, - 'sel_order' : sel_order, - 'cost_items' : cost_items, - }) - return HttpResponse(t.render(c)) + order_costs = OrderCosts.objects.filter(order=order_id) + table = ProductionTable(order_costs) + curr_order = Order.objects.get(pk = order_id) + title = u'Производственная таблица' + table.verbose_name = u'Заказ: %s' % (', '.join((curr_order.product.name, curr_order.address))) + table.verbose_name2 = u'Стоимость: %s' % str(curr_order.price) + costs_sum = order_costs.aggregate(Sum('value')) + table.set_summary(costs_sum['value__sum'] or 0) + table.set_balance(curr_order.price - costs_sum['value__sum'] or 0) + RequestConfig(request).configure(table) + return render(request, 'asuzr/table.html', {'table': table, 'title': title}) @login_required def prod_plan_view(request): diff --git a/templates/asuzr/table.html b/templates/asuzr/table.html index da835f0..8cf581e 100644 --- a/templates/asuzr/table.html +++ b/templates/asuzr/table.html @@ -3,6 +3,8 @@ {% load render_table from django_tables2 %} {% block page %} +

{{ table.verbose_name }}

+

{{ table.verbose_name2 }}

{% block table %} {% render_table table %} {% endblock %} diff --git a/templates/asuzr/totals_table.html b/templates/asuzr/totals_table.html index d33a002..dbbb6db 100644 --- a/templates/asuzr/totals_table.html +++ b/templates/asuzr/totals_table.html @@ -10,6 +10,13 @@ {% endfor %} {% endif %} + {% if table.balance %} + + {% for balance in table.balance %} + {{ balance }} + {% endfor %} + + {% endif %} {% endblock table.tfoot %}