Esempio n. 1
0
 def get_queryset(self):
     queryset = Product.my_query.active_for_site()
     queryset = queryset.filter(title__icontains=self.search_name
                                ) if self.search_name else queryset
     queryset = Product.filters_data(self.request, queryset)
     queryset = queryset_ordering(self.request, queryset)
     return queryset
Esempio n. 2
0
    def get_queryset(self):
        queryset = Product.my_query.active_for_site().last()[20]
        queryset = Product.filters_data(self.request, queryset)
        queryset = queryset_ordering(self.request, queryset)
        queryset = queryset[:160]

        return queryset
Esempio n. 3
0
 def get_queryset(self):
     queryset = Product.my_query.active_for_site().filter(
         price_discount__gt=0)
     print('queryset count', queryset.count())
     queryset = Product.filters_data(self.request, queryset)
     queryset = queryset_ordering(self.request, queryset)
     return queryset
Esempio n. 4
0
    def get_queryset(self):
        search_name = self.request.GET.get('search_name', None)
        queryset = Product.objects.none()
        if search_name:
            queryset = Product.my_query.active_for_site(
            ) if len(search_name) > 2 else Product.objects.none()
        queryset = Product.filters_data(self.request, queryset)
        queryset = Product.queryset_ordering(self.request, queryset)

        return queryset
Esempio n. 5
0
 def get_queryset(self):
     self.category = get_object_or_404(CategorySite,
                                       slug=self.kwargs['slug'])
     self.categories = self.category.get_childrens()
     result_list = self.categories | CategorySite.objects.filter(
         id=self.category.id)
     queryset = Product.my_query.get_site_queryset().category_queryset(
         cate=result_list)
     queryset = Product.filters_data(self.request, queryset)
     queryset = queryset_ordering(self.request, queryset)
     return queryset
Esempio n. 6
0
def ajax_products_analysis(request):
    data = dict()
    switcher = request.GET.get('analysis')
    queryset = Product.my_query.active_warehouse()
    queryset = Product.filters_data(request, queryset)
    queryset_analysis = [
        0, 0, 0
    ]  # total_qty, #total_warehouse_value, #total_sell_value
    if switcher == 'warehouse_analysis':
        queryset_analysis[0] = queryset.aggregate(
            Sum('qty'))['qty__sum'] if queryset else 0
        queryset_analysis[1] = queryset.aggregate(
            total=Sum(F('qty') * F('price_buy')))['total'] if queryset else 0
        queryset_analysis[2] = queryset.aggregate(
            total=Sum(F('qty') * F('final_price')))['total'] if queryset else 0
        data['results'] = render_to_string(
            request=request,
            template_name='report/ajax/warehouse/ajax_warehouse_analysis.html',
            context={
                'queryset_analysis': queryset_analysis,
                'currency': CURRENCY,
                'switcher': switcher
            })
    if switcher == 'vendor_analysis':
        vendor_analysis = queryset.values('supply__title').annotate(
            total_ware_price=Sum(F('qty') * F('final_price')),
            total_sell_price=Sum(F('qty') *
                                 F('price_buy'))).order_by('supply__title')
        data['results'] = render_to_string(
            request=request,
            template_name='report/ajax/warehouse/ajax_warehouse_analysis.html',
            context={
                'vendor_analysis': vendor_analysis,
                'currency': CURRENCY,
                'switcher': switcher,
            })
    if switcher == "sells_analysis":
        sells_items = RetailOrderItem.objects.filter(
            title__in=queryset) if queryset else None
        sells_analysis = sells_items.values('title__title').annotate(
            total_sells=Sum(F('qty')),
            incomes=Sum(F('qty') * F('final_price'))).order_by('-incomes')[:30]
        data['results'] = render_to_string(
            request=request,
            template_name='report/ajax/warehouse/ajax_warehouse_analysis.html',
            context={
                'sells_analysis': sells_analysis,
                'currency': CURRENCY,
                'switcher': switcher
            })
    if switcher == 'buy_analysis':
        pass

    return JsonResponse(data)
Esempio n. 7
0
def ajax_search_warehouse_view(request, pk):
    vendor = get_object_or_404(Vendor, id=pk)
    search_name = request.GET.get('search_name', '')
    if len(search_name) > 2:
        qs = Product.filters_data(request, Product.objects.all())[:20]
    else:
        qs = Product.objects.none()
    data = dict()
    data['result'] = render_to_string(
        template_name='vendors/ajax_views/ajax_product_container.html',
        request=request,
        context={
            'queryset_table': ProductVendorTable(qs),
            'vendor': vendor
        })
    return JsonResponse(data)
Esempio n. 8
0
def ajax_search_products(request):
    data = {}
    search_name, instance_id = request.GET.get('search_name',
                                               None), request.GET.get(
                                                   'instance_id', None)
    instance = get_object_or_404(Order, id=instance_id)
    vendor = instance.vendor
    queryset = Product.my_query.active().filter(vendor=vendor)
    queryset = Product.filters_data(request, queryset)[:10]
    data['results'] = render_to_string(
        template_name='inventory_manager/ajax/product_container.html',
        request=request,
        context={
            'products': queryset,
            'instance': instance
        })
    return JsonResponse(data)
Esempio n. 9
0
def ajax_products_analysis(request):
    data = dict()
    switcher = request.GET.get('analysis')
    queryset = Product.my_query.active_warehouse()
    queryset = Product.filters_data(request, queryset)
    queryset_analysis = [0, 0, 0] # total_qty, #total_warehouse_value, #total_sell_value
    if switcher == 'warehouse_analysis':
        queryset_analysis[0] = queryset.aggregate(Sum('qty'))['qty__sum'] if queryset else 0
        queryset_analysis[1] = queryset.aggregate(total=Sum(F('qty') * F('price_buy')))['total'] if queryset else 0
        queryset_analysis[2] = queryset.aggregate(total=Sum(F('qty') * F('final_price')))['total'] if queryset else 0
        data['results'] = render_to_string(request=request,
                                           template_name='report/ajax/warehouse/ajax_warehouse_analysis.html',
                                           context={'queryset_analysis': queryset_analysis,
                                                    'currency': CURRENCY,
                                                    'switcher': switcher
                                                    }
                                            )
    if switcher == 'vendor_analysis':
        vendor_analysis = queryset.values('supply__title').annotate(total_ware_price=Sum(F('qty')*F('final_price')),
                                                                    total_sell_price=Sum(F('qty')*F('price_buy'))
                                                                    ).order_by('supply__title')
        data['results'] = render_to_string(request=request,
                                           template_name='report/ajax/warehouse/ajax_warehouse_analysis.html',
                                           context={'vendor_analysis': vendor_analysis,
                                                    'currency': CURRENCY,
                                                    'switcher': switcher,
                                                    }
                                           )
    if switcher == "sells_analysis":
        sells_items = RetailOrderItem.objects.filter(title__in=queryset) if queryset else None
        sells_analysis = sells_items.values('title__title').annotate(total_sells=Sum(F('qty')),
                                                                     incomes=Sum(F('qty')*F('final_price'))
                                                                     ).order_by('-incomes')[:30]
        data['results'] = render_to_string(request=request,
                                          template_name='report/ajax/warehouse/ajax_warehouse_analysis.html',
                                          context={ 'sells_analysis': sells_analysis,
                                                    'currency': CURRENCY,
                                                    'switcher': switcher
                                                  }
                                          )
    if switcher == 'buy_analysis':
        pass
    
    return JsonResponse(data)
Esempio n. 10
0
    def post(self, *args, **kwargs):
        get_products = self.request.POST.getlist('choice_name', None)
        new_brand = get_object_or_404(Brands, id=self.request.POST.get('change_brand')) \
            if self.request.POST.get('change_brand') else None
        new_category = get_object_or_404(Category, id=self.request.POST.get('change_cate')) \
            if self.request.POST.get('change_cate') else None
        new_cate_site = get_object_or_404(CategorySite, id=self.request.POST.get('change_cate_site')) \
            if self.request.POST.get('change_cate_site') else None
        new_vendor = get_object_or_404(Vendor, id=self.request.POST.get('change_vendor')) \
            if self.request.POST.get('change_vendor') else None
        if new_brand and get_products:
            for product_id in get_products:
                product = get_object_or_404(Product, id=product_id)
                product.brand = new_brand
                product.save()
            messages.success(
                self.request,
                'The brand %s added on the products' % new_brand.title)
            return redirect('dashboard:products')
        if new_category and get_products:
            for product_id in get_products:
                product = get_object_or_404(Product, id=product_id)
                product.category = new_category
                product.save()
            messages.success(
                self.request,
                'The brand %s added on the products' % new_category.title)
            return redirect('dashboard:products')
        if new_cate_site and get_products:
            for product_id in get_products:
                product = get_object_or_404(Product, id=product_id)
                product.category_site.add(new_cate_site)
                product.save()
            messages.success(
                self.request,
                'The category %s added in the products' % new_cate_site.title)

        if new_vendor:
            queryset = Product.objects.all()
            queryset = Product.filters_data(self.request, queryset)
            queryset.update(vendor=new_vendor)
            messages.success(self.request, 'The Vendor Updated!')
        return render(self.request, self.template_name)
Esempio n. 11
0
def ajax_products_search(request, pk):
    data = dict()
    order = get_object_or_404(RetailOrder, id=pk)
    is_sale = True if order.order_type == 'r' else False
    search_name = request.GET.get('search_name', None)
    products = Product.objects.none()
    if search_name:
        products = Product.my_query.active()
        products = Product.filters_data(request, products)[:10]
    print(products.count())
    data['products'] = render_to_string(request=request,
                                        template_name='PoS/ajax/products_search.html',
                                        context={'object_list': products,
                                                 'instance': order,
                                                 'is_sale': is_sale
                                                 }
                                        )

    return JsonResponse(data)
Esempio n. 12
0
def ajax_size_analysis(request):
    data = dict()
    products = Product.my_query.active_warehouse_with_attr()
    products = Product.filters_data(request, products)
    queryset = SizeAttribute.objects.filter(product_related__in=products)
    analysis_per_size = queryset.values('title__title').annotate(
        total_qty=Sum('qty'),
        total_value=Sum(
            F('qty') *
            F('product_related__final_price'))).order_by('title__title')
    for ele in analysis_per_size:
        ele['title'] = ele['title__title']
    data['results'] = render_to_string(
        template_name='report/ajax/warehouse/ajax_product_size.html',
        context={
            'analysis': analysis_per_size,
            'currency': CURRENCY,
        },
        request=request)

    return JsonResponse(data)
Esempio n. 13
0
def ajax_warehouse_category_analysis(request):
    data = {}
    queryset = Product.objects.all()
    for ele in queryset:
        print(ele, ele.category)
    queryset = Product.filters_data(request, queryset)
    results = queryset.values('category__title').annotate(
        total_qty=Sum('qty'), total_value=Sum(
            F('qty') * F('final_price'))).order_by('category__title')
    for ele in queryset:
        print(ele.category)
    for ele in results:
        ele['title'] = ele['category__title']
    data['results'] = render_to_string(
        request=request,
        template_name='report/ajax/warehouse/ajax_product_size.html',
        context={
            'analysis': results,
            'currency': CURRENCY,
        })
    return JsonResponse(data)
Esempio n. 14
0
    def get_queryset(self):
        self.category = get_object_or_404(CategorySite,
                                          slug=self.kwargs['slug'])
        '''
        generate_ancestors = cache.get(f'cache_generate_cate_ancestors_{self.category.id}', 'has_expired')
        if generate_ancestors == 'has_expired':
            generate_ancestors = cache.add(f'cache_generate_cate_ancestors_{self.category.id}',
                                           self.category.get_childrens_and_grandchilds()
                                           )
            family = self.category.get_childrens_and_grandchilds()|CategorySite.objects.filter(id=self.category.id)
        else:
            family = generate_ancestors|CategorySite.objects.filter(id=self.category.id)
        '''

        queryset = cache.get(f'cache_cate_queryset_{self.category.id}',
                             'has_expired')
        if queryset == 'has_expired':
            queryset = Product.objects.filter(
                category_site=self.category).distinct()
            cache.set(f'cache_cate_queryset_{self.category.id}', queryset)

        queryset = Product.filters_data(self.request, queryset)
        queryset = Product.queryset_ordering(self.request, queryset)
        return queryset
Esempio n. 15
0
 def get_queryset(self, *args, **kwargs):
     instance = get_object_or_404(Brands, slug=self.kwargs['slug'])
     queryset = Product.my_query.active_for_site().filter(brand=instance)
     queryset = Product.filters_data(self.request, queryset)
     queryset = queryset_ordering(self.request, queryset)
     return queryset
Esempio n. 16
0
 def get_queryset(self):
     queryset = Product.objects.all()
     queryset = Product.filters_data(self.request, queryset)
     self.total_products = queryset.count() if queryset else 0
     return queryset
Esempio n. 17
0
 def get_queryset(self):
     self.category = get_object_or_404(Category, id=self.kwargs['pk'])
     qs = Product.objects.filter(categories=self.category)
     qs = Product.filters_data(self.request, qs)
     return qs