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

This commit is contained in:
Anastasia
2015-06-07 15:05:08 +05:00
parent ea5270b295
commit 1882545308
11 changed files with 109 additions and 16 deletions

View File

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

View File

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

View File

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

View File

@@ -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, ...) # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os import os
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) BASE_DIR = os.path.dirname(os.path.dirname(__file__))
@@ -36,6 +37,7 @@ INSTALLED_APPS = (
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'inplaceeditform',
'asuzr' 'asuzr'
) )
@@ -83,3 +85,5 @@ USE_TZ = True
STATIC_URL = '/static/' STATIC_URL = '/static/'
TEMPLATE_DIRS = ('/home/anastasia/projects/django/record/templates/') TEMPLATE_DIRS = ('/home/anastasia/projects/django/record/templates/')
TEMPLATE_CONTEXT_PROCESSORS += ('django.core.context_processors.request',)

View File

@@ -10,8 +10,9 @@ urlpatterns = patterns('',
url(r'^product/$', 'asuzr.views.prod_list'), url(r'^product/$', 'asuzr.views.prod_list'),
url(r'^product/(?P<prod_id>\d+)/$', 'asuzr.views.prod_detail'), 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'^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'^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'^admin/', include(admin.site.urls)),
url(r'^inplaceeditform/', include('inplaceeditform.urls')), url(r'^inplaceeditform/', include('inplaceeditform.urls')),
) )

View File

@@ -15,8 +15,8 @@
<TR bgcolor={{attend.date.weekday_color}}> <TR bgcolor={{attend.date.weekday_color}}>
<TD>{{ attend.date.date_dd_mm_yy}}</TD> <TD>{{ attend.date.date_dd_mm_yy}}</TD>
<TD>{{ attend.date.weekday_name}}</TD> <TD>{{ attend.date.weekday_name}}</TD>
<TD>{% inplace_edit "attend.attend.calls" %}</TD> <TD>{{attend.attend.calls}}</TD>
<TD>{% inplace_edit "attend.attend.visits" %}</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><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.orders_price}}</TD>
<TD>{{ attend.designers}}</TD> <TD>{{ attend.designers}}</TD>

View File

@@ -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>

View File

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

View File

@@ -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 %}

View File

@@ -28,7 +28,7 @@
<TR> <TR>
<TD>{{ order.date_dmy }}</TD> <TD>{{ order.date_dmy }}</TD>
<TD>{{ order.deadline_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.delivery%} Да {% else %} Нет {% endif %} </TD>
<TD>{%if order.lifting%} Да {% else %} Нет {% endif %}</TD> <TD>{%if order.lifting%} Да {% else %} Нет {% endif %}</TD>
<TD>{% inplace_edit "order.address" %}</TD> <TD>{% inplace_edit "order.address" %}</TD>

View File

@@ -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 %}