Procházet zdrojové kódy

Добавлена Производственная таблица. Переход на таблицу по ссылке из Таблицы выхода заказов

Anastasia před 10 roky
rodič
revize
057aea69e5
4 změnil soubory, kde provedl 41 přidání a 11 odebrání
  1. 21 1
      asuzr/tables.py
  2. 11 10
      asuzr/views.py
  3. 2 0
      templates/asuzr/table.html
  4. 7 0
      templates/asuzr/totals_table.html

+ 21 - 1
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'

+ 11 - 10
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):

+ 2 - 0
templates/asuzr/table.html

@@ -3,6 +3,8 @@
 {% load render_table from django_tables2 %}
 
 {% block page %}
+  <h3>{{ table.verbose_name }}</h3>
+  <h3>{{ table.verbose_name2 }}</h3>
   {% block table %}
     {% render_table table %}
   {% endblock %}

+ 7 - 0
templates/asuzr/totals_table.html

@@ -10,6 +10,13 @@
       {% endfor %}
       </tr>
    {% endif %}
+   {% if table.balance %}
+      <tr>
+      {% for balance in table.balance %}
+       <td> {{ balance }} </td>
+      {% endfor %}
+      </tr>
+   {% endif %}
    </tfoot>
 {% endblock table.tfoot %}