浏览代码

Добавлена Производственная таблица

Anastasia 10 年之前
父节点
当前提交
1882545308

+ 5 - 0
asuzr/admin.py

@@ -8,6 +8,9 @@ from asuzr.models import AccessProtocol
 from asuzr.models import OrderPlan
 from asuzr.models import Attendance
 from asuzr.models import Schedule
+from asuzr.models import OrderCosts
+from asuzr.models import CostItem
+
 
 # Register your models here.
 #admin.site.register(Product)
@@ -21,6 +24,8 @@ admin.site.register(ProdPlan)
 admin.site.register(AccessProtocol)
 admin.site.register(OrderPlan)
 admin.site.register(Schedule)
+admin.site.register(OrderCosts)
+admin.site.register(CostItem)
 class AttendAdmin(admin.ModelAdmin):
   list_display=('date', 'calls', 'visits')
 admin.site.register(Attendance, AttendAdmin)

+ 10 - 4
asuzr/models.py

@@ -49,6 +49,9 @@ class Attendance(models.Model):
 class CostItem(models.Model):
   name = models.CharField(max_length=150)
   default_item = models.BooleanField(default=False)
+  
+  def __unicode__(self):
+   return self.name
 
 #Заказы  
 class Order(models.Model):
@@ -132,7 +135,10 @@ class OrderPlan(models.Model):
 
 # Затраты по заказам
 class OrderCosts(models.Model):
-  order = models.ForeignKey(Order)
-  cost_item = models.ForeignKey(CostItem)
-  value = models.DecimalField(max_digits=12, decimal_places=2)
-  formula = models.CharField(max_length=150)
+  order = models.ForeignKey(Order, related_name='+')
+  cost_item = models.ForeignKey(CostItem, related_name='+')
+  value = models.DecimalField(max_digits=12, decimal_places=2, null=True, blank = True)
+  formula = models.CharField(max_length=150, null=True, blank = True)
+  
+  def __unicode__(self):
+   return ', '.join((self.order.product.name, self.cost_item.name))

+ 24 - 7
asuzr/views.py

@@ -10,6 +10,7 @@ from datetime import datetime, date, timedelta
 import calendar
 from django.db.models import Count, Sum
 from asuzr.common import custom_date
+from django.contrib.auth.decorators import login_required
 
 def prod_list(request):
   product_list = Product.objects.all()
@@ -99,18 +100,23 @@ def main(request, day, month, year):
     })
   return HttpResponse(t.render(c))
 
+@login_required 
 def orders (request, archive):
   if archive=='0':
-    is_done_value=False
+      is_done_value=False
   else:
-    is_done_value=True
-  
+      is_done_value=True
+  order_id=request.GET.get('order_id',0)
   order_list = Order.objects.filter(is_done=is_done_value).order_by('-id')
+  sel_order = Order.objects.filter(id=order_id)
+  cost_items = sel_order.values('cost_items')
   t=loader.get_template('asuzr/orders.html')
   c=RequestContext(request, {
-    'order_list': order_list,
-    'archive': is_done_value,
-    })
+      'order_list': order_list,
+      'archive': is_done_value,
+      'sel_order' : sel_order,
+      'cost_items' : cost_items,
+      })
   return HttpResponse(t.render(c))
 
 def desreport(request):
@@ -120,13 +126,24 @@ def desreport(request):
   edate = datetime.strptime(end_date, '%d.%m.%y')
   des_list = Order.objects.filter(cancelled=False, date__range=(sdate,edate)).values('designer__first_name','designer__last_name').annotate(Sum('price'),Count('designer'))
   t=loader.get_template('asuzr/desreport.html')
-  c=Context({
+  c=RequestContext(request,{
     'des_list' : des_list,
     'start_date' : start_date,
     'end_date' : end_date,
     })
   return HttpResponse(t.render(c))
 
+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))
 
   
 

+ 4 - 0
record/settings.py

@@ -10,6 +10,7 @@ https://docs.djangoproject.com/en/1.6/ref/settings/
 
 # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
 import os
+from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS
 BASE_DIR = os.path.dirname(os.path.dirname(__file__))
 
 
@@ -36,6 +37,7 @@ INSTALLED_APPS = (
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
+    'inplaceeditform',
     'asuzr'
 )
 
@@ -83,3 +85,5 @@ USE_TZ = True
 STATIC_URL = '/static/'
 
 TEMPLATE_DIRS = ('/home/anastasia/projects/django/record/templates/')
+
+TEMPLATE_CONTEXT_PROCESSORS += ('django.core.context_processors.request',)

+ 2 - 1
record/urls.py

@@ -10,8 +10,9 @@ urlpatterns = patterns('',
     url(r'^product/$', 'asuzr.views.prod_list'),
     url(r'^product/(?P<prod_id>\d+)/$', 'asuzr.views.prod_detail'),
     url(r'^main/(?P<day>\d+)/(?P<month>\d+)/(?P<year>\d+)/$', 'asuzr.views.main', name='asuzr-main'),
-    url(r'^orders/(?P<archive>\d+)/$', 'asuzr.views.orders'),
+    url(r'^orders/(?P<archive>\d+)/$', 'asuzr.views.orders',name='asuzr-orders'),
     url(r'^desreport/$', 'asuzr.views.desreport'),
+    url(r'^production_table/(?P<order_id>\d+)/$', 'asuzr.views.production_table'),
     url(r'^admin/', include(admin.site.urls)),
     url(r'^inplaceeditform/', include('inplaceeditform.urls')),
 )

+ 2 - 2
templates/asuzr/attendance.html

@@ -15,8 +15,8 @@
         <TR bgcolor={{attend.date.weekday_color}}>
 	  <TD>{{ attend.date.date_dd_mm_yy}}</TD>
 	  <TD>{{ attend.date.weekday_name}}</TD>
-	  <TD>{% inplace_edit "attend.attend.calls" %}</TD>
-	  <TD>{% inplace_edit "attend.attend.visits" %}</TD>
+	  <TD>{{attend.attend.calls}}</TD>
+	  <TD>{{attend.attend.visits}}</TD>
 	  <TD><a href="{% url 'asuzr-main' attend.date.day attend.date.month attend.date.year %}">{{ attend.orders_count}}</a></TD>
 	  <TD>{{ attend.orders_price}}</TD>
 	  <TD>{{ attend.designers}}</TD>

+ 26 - 0
templates/asuzr/cost_items.html

@@ -0,0 +1,26 @@
+ <TABLE BORDER WIDTH="100%">
+  {% if cost_items %}
+    <ul>
+    <TR>
+      <TH>{{sel_order.product.name}} <br> Комплектующие</TH>
+      <TH>Стоимость <br> {{sel_order.price}}</TH>
+    </TR>
+    {% for item in cost_items %}
+        <TR>
+	  <TD>{{ item }}</TD>
+	  <TD></TD>
+        </TR>
+    {% endfor %}
+    <TR>
+      <TD> Итого затрат</TD>
+      <TD></TD>
+    </TR>
+    <TR>
+      <TD> Прибыль</TD>
+      <TD></TD>
+    </TR>
+    </ul>
+  {% else %}
+    <p> Список пуст</p>
+  {% endif %}
+  </TABLE>

+ 1 - 1
templates/asuzr/desreport.html

@@ -20,6 +20,6 @@
   {% endfor %}
   </ul>
   {% else %}
-    <p>Список заказов пуст</p>
+    <p>Список пуст</p>
   {% endif %}
 {% endblock %}

+ 12 - 0
templates/asuzr/order_costs.html

@@ -0,0 +1,12 @@
+{% extends "asuzr/base.html" %}
+
+{% block title %} Производственная таблица {% endblock %}
+{% block page %}
+<table WIDTH="100%">
+  <TR VALIGN=top>
+    <TD WIDTH="50%">{% include 'asuzr/production_table.html' %}</TD>
+    <TD WIDTH="5%"></TD>
+    <TD WIDTH="45%">{% include 'asuzr/cost_items.html' %}</TD>
+  </TR>
+</table>
+{% endblock %}

+ 1 - 1
templates/asuzr/orders.html

@@ -28,7 +28,7 @@
       <TR>
 	<TD>{{ order.date_dmy }}</TD>
 	<TD>{{ order.deadline_dmy }}</TD>
-	<TD>{% inplace_edit "order.product.name" %}</TD>
+	<TD>{% inplace_edit "order.product" %}</TD>
 	<TD>{%if order.delivery%} Да {% else %} Нет {% endif %} </TD>
 	<TD>{%if order.lifting%} Да {% else %} Нет {% endif %}</TD>
 	<TD>{% inplace_edit "order.address" %}</TD>

+ 22 - 0
templates/asuzr/production_table.html

@@ -0,0 +1,22 @@
+{% block page %}
+  <TABLE BORDER>
+  {% if order_list %}
+   <ul>
+    <TR>
+      <TH WIDTH="40%">Наименование</TH>
+      <TH>Срок сдачи</TH>
+      <TH>Адрес</TH>
+    </TR>
+  {% for o in order_list %}
+     <TR> 
+	<TD>{{o.product.name}}</TD> 
+	<TD>{{o.date_dmy}}</TD>
+	<TD>{{o.address}}</TD>
+     </TR>
+  {% endfor %}
+  </ul>
+  {% else %}
+    <p>Список заказов пуст</p>
+  {% endif %}
+  </table>
+{% endblock %}