Exemplo n.º 1
0
 def get_queryset(self):
     qs = User.get_moderator_qs(self.request.user)
     if self.request.GET.get('email'):
         qs = qs.filter(email=self.request.GET.get('email'))
     if self.request.GET.get('last_name'):
         qs = qs.filter(last_name=self.request.GET.get('last_name'))
     if self.request.GET.get('first_name'):
         qs = qs.filter(first_name=self.request.GET.get('first_name'))
     if self.request.GET.get('patronymic'):
         qs = qs.filter(patronymic=self.request.GET.get('patronymic'))
     if self.request.GET.get('phone'):
         qs = qs.filter(phone=self.request.GET.get('phone'))
     return qs
Exemplo n.º 2
0
def manager_report(request):
    context = {}
    user = request.user
    manager_qs = Manager.objects.get_qs(user)
    moderator_qs = User.get_moderator_qs(user)
    r_email = request.GET.get('email')
    r_moderator = request.GET.get('moderator')
    r_last_name = request.GET.get('last_name')
    r_first_name = request.GET.get('first_name')
    r_phone = request.GET.get('phone')
    r_date_s = request.GET.get('date_s')
    r_date_e = request.GET.get('date_e')
    if r_moderator and int(r_moderator) != 0:
        manager_qs = manager_qs.filter(moderator=int(r_moderator))
        context.update({
            'r_moderator': int(r_moderator)
        })
    if r_email:
        manager_qs = manager_qs.filter(user__email__icontains=r_email)
        context.update({
            'r_email': r_email
        })
    if r_last_name:
        manager_qs = manager_qs.filter(user__last_name__icontains=r_last_name)
        context.update({
            'r_last_name': r_last_name
        })
    if r_first_name:
        manager_qs = manager_qs.filter(user__first_name__icontains=r_first_name)
        context.update({
            'r_first_name': r_first_name
        })
    if r_date_s:
        context.update({
            'r_date_s': r_date_s
        })
    if r_date_e:
        context.update({
            'r_date_e': r_date_e
        })
    for manager in manager_qs:
        manager.client_count = manager.incomingclient_set.count()
        task_qs = manager.incomingtask_set.all()
        sale_qs = ClientJournal.objects.filter(client__manager=manager)
        payment_qs = ClientJournalPayment.objects.filter(client__manager=manager)
        if r_date_s:
            task_qs = task_qs.filter(date__gte=datetime.datetime.strptime(r_date_s, '%d.%m.%Y'))
            sale_qs = sale_qs.filter(created__gte=datetime.datetime.strptime(r_date_s, '%d.%m.%Y'))
            payment_qs = payment_qs.filter(created__gte=datetime.datetime.strptime(r_date_s, '%d.%m.%Y'))
        if r_date_e:
            task_qs = task_qs.filter(date__lte=datetime.datetime.strptime(r_date_e, '%d.%m.%Y'))
            sale_qs = sale_qs.filter(created__lte=datetime.datetime.strptime(r_date_e, '%d.%m.%Y'))
            payment_qs = payment_qs.filter(created__lte=datetime.datetime.strptime(r_date_e, '%d.%m.%Y'))
        manager.task_count = task_qs.count()
        manager.call_count = task_qs.filter(type=1).count()
        manager.meet_count = task_qs.filter(type=0).count()
        manager.sale_count = task_qs.filter(type=2).count()
        manager.deny_count = task_qs.filter(type=3).count()
        manager.total_sale = 0
        for sale in sale_qs:
            manager.total_sale += sale.total_cost()
        manager.total_payment = payment_qs.aggregate(Sum('sum'))['sum__sum'] or 0
    if r_phone:
        manager_qs = manager_qs.filter(user__phone__icontains=r_phone)
        context.update({
            'r_phone': r_phone
        })
    context.update({
        'moderator_list': moderator_qs,
        'object_list': manager_qs
    })
    return render(request, 'manager/manager_report.html', context)