views.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. from django.shortcuts import render
  2. from django.http import HttpResponse
  3. from django.template import RequestContext, Context, loader
  4. from asuzr.models import Product
  5. from asuzr.models import Attendance
  6. from asuzr.models import Order
  7. from asuzr.models import OrderPlan
  8. from asuzr.models import Schedule
  9. from datetime import datetime, date, timedelta
  10. import calendar
  11. from django.db.models import Count, Sum
  12. from asuzr.common import custom_date
  13. from django.contrib.auth.decorators import login_required
  14. @login_required
  15. def prod_list(request):
  16. product_list = Product.objects.all()
  17. t = loader.get_template('asuzr/prod_list.html')
  18. c = Context({
  19. 'product_list': product_list,
  20. })
  21. return HttpResponse(t.render(c))
  22. @login_required
  23. def prod_detail(request, prod_id):
  24. return HttpResponse("This is %s" % prod_id)
  25. def get_filtered_list(p_list, year, month):
  26. filtered_list=[]
  27. for a in p_list:
  28. a_date = a.date
  29. if a_date.strftime('%m/%Y').lstrip('0') == '/'.join((month,year)).lstrip('0'):
  30. filtered_list.append(a)
  31. return filtered_list
  32. def get_orders_by_date(dt):
  33. order_list = Order.objects.filter(date=dt).order_by('id')
  34. return order_list
  35. @login_required
  36. def main(request, day, month, year):
  37. d,m,y=int(day),int(month), int(year)
  38. attend_list = Attendance.objects.all().order_by('date')
  39. filtered_attend_list=get_filtered_list(attend_list, year, month)
  40. p_date = datetime.strptime(day+'/'+month+'/'+year, '%d/%m/%Y')
  41. order_list = Order.objects.filter(date=p_date).order_by('id')
  42. month_order_list=Order.objects.filter(date__range=(date(y,m,1),date(y,m,calendar.monthrange(y,m)[1]))).values('date').annotate(Count('product'),Sum('price'))
  43. plan = OrderPlan.objects.all()
  44. filtered_plan = get_filtered_list(plan, year, month)
  45. month_plan=0
  46. if len(filtered_plan) > 0:
  47. month_plan=filtered_plan[0].plan
  48. schedule = Schedule.objects.all().order_by('date')
  49. filtered_schedule = get_filtered_list(schedule, year, month)
  50. month_days={i: {'date': custom_date(int(year),int(month),i)} for i in range(1,calendar.monthrange(int(year),int(month))[1]+1)}
  51. for l in filtered_attend_list:
  52. month_days[l.date.day]['attend']=l
  53. for s in filtered_schedule:
  54. if 'designers' in month_days[s.date.day]:
  55. des=', '.join((month_days[s.date.day]['designers'], ' '.join((s.designer.first_name, s.designer.last_name))))
  56. month_days[s.date.day]['designers'] = des
  57. else:
  58. month_days[s.date.day]['designers'] = ' '.join((s.designer.first_name, s.designer.last_name))
  59. for order in month_order_list:
  60. month_days[order['date'].day]['orders_count'] = order['product__count']
  61. month_days[order['date'].day]['orders_price'] = order['price__sum']
  62. month_days_values = month_days.values()
  63. sum_calls = sum(l.calls for l in filtered_attend_list)
  64. sum_visits = sum(l.visits for l in filtered_attend_list)
  65. sum_orders = sum(l['orders_count'] for l in month_days_values if 'orders_count' in l)
  66. sum_price = sum(l['orders_price'] for l in month_days_values if 'orders_price' in l)
  67. sum_order_price = sum(l.price for l in order_list)
  68. plan_balance = month_plan-sum_price
  69. d_date = p_date.strftime("%d/%m/%Y")
  70. t = loader.get_template('asuzr/attend_order.html')
  71. c = RequestContext(request,{
  72. 'attend_list': month_days_values,
  73. 'order_list': order_list,
  74. 'sum_calls': sum_calls,
  75. 'sum_visits': sum_visits,
  76. 'sum_orders': sum_orders,
  77. 'sum_price': sum_price,
  78. 'sum_order_price': sum_order_price,
  79. 'plan': month_plan,
  80. 'balance': plan_balance,
  81. 'd_date': d_date,
  82. })
  83. return HttpResponse(t.render(c))
  84. @login_required
  85. def orders (request, archive):
  86. if archive=='0':
  87. is_done_value=False
  88. else:
  89. is_done_value=True
  90. order_id=request.GET.get('order_id',0)
  91. order_list = Order.objects.filter(is_done=is_done_value).order_by('-id')
  92. sel_order = Order.objects.filter(id=order_id)
  93. cost_items = sel_order.values('cost_items')
  94. t=loader.get_template('asuzr/orders.html')
  95. c=RequestContext(request, {
  96. 'order_list': order_list,
  97. 'archive': is_done_value,
  98. 'sel_order' : sel_order,
  99. 'cost_items' : cost_items,
  100. })
  101. return HttpResponse(t.render(c))
  102. @login_required
  103. def desreport(request):
  104. start_date = request.GET.get('sdate', date.today().strftime('%d.%m.%y'))
  105. sdate = datetime.strptime(start_date, '%d.%m.%y')
  106. end_date = request.GET.get('edate', date.today().strftime('%d.%m.%y'))
  107. edate = datetime.strptime(end_date, '%d.%m.%y')
  108. des_list = Order.objects.filter(cancelled=False, date__range=(sdate,edate)).values('designer__first_name','designer__last_name').annotate(Sum('price'),Count('designer'))
  109. t=loader.get_template('asuzr/desreport.html')
  110. c=RequestContext(request,{
  111. 'des_list' : des_list,
  112. 'start_date' : start_date,
  113. 'end_date' : end_date,
  114. })
  115. return HttpResponse(t.render(c))
  116. @login_required
  117. def production_table(request, order_id):
  118. order_list = Order.objects.filter(is_done=False).order_by('-id')
  119. sel_order = Order.objects.filter(id=order_id)
  120. cost_items = sel_order.values('cost_items')
  121. t=loader.get_template('asuzr/order_costs.html')
  122. c=RequestContext(request,{
  123. 'order_list' : order_list,
  124. 'sel_order' : sel_order,
  125. 'cost_items' : cost_items,
  126. })
  127. return HttpResponse(t.render(c))