Exemple #1
0
 def post(self, request):
     serializer = ProductoSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return redirect('producto_crear')
     else:
         return Response(serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
Exemple #2
0
    def tienda(self, request, *args, **kwargs):
        # id = request.GET["id"
        vendedor = request.user.id
        productos = Producto.objects.exclude(vendedor=vendedor)
        page = self.paginate_queryset(productos)
        if page is not None:
            serializer = ProductoSerializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = ProductoSerializer(productos, many=True)
        # RegistroBitacora.crearEmpresa(request.user, serializer.data)
        return Response({"results": serializer.data},
                        status=status.HTTP_201_CREATED)
Exemple #3
0
    def list(self, request, *args, **kwargs):
        user = request.user.profile.id
        data = request.query_params
        queryset = Producto.objects.filter(vendedor=user, activo=True)
        serializer = ProductoSerializer(queryset, many=True)

        page = request.GET.get('page')

        try:
            page = self.paginate_queryset(queryset)
            print('page', page)
        except Exception as e:
            page = []
            data = page
            return Response({
                "status": status.HTTP_404_NOT_FOUND,
                "message": 'No more record.',
                "data": data
            })

        if page is not None:
            serializer = self.get_serializer(page, many=True)
            data = serializer.data
            return self.get_paginated_response(data)

        return Response(serializer.data, status=status.HTTP_200_OK)
    def listadoCatalogoVendedores(self, request):
        try:
            # Obtener el usuario no registrado
            usuarioNoRegistrado = request.user.is_anonymous
            print("anonimo: ", usuarioNoRegistrado)

            if (usuarioNoRegistrado != True):
                # Obtenemos el vendedor
                idVendedor = request.user.profile.vendedor_profile
            else:
                idVendedor = 0

            # Obtenemos todos los productos de los otros vendedores excluyendo los productos
            # del usuario autenticado
            datos = Producto.objects.filter(activo=True).exclude(
                vendedor=idVendedor, )
            # Especificamos que datos nos va a devolver el serializer
            serializer = ProductoSerializer(datos, many=True)
            page = request.GET.get("page")
            try:
                page = self.paginate_queryset(datos)
            except Exception as e:
                page = []
                data = page
            #
            return Response(serializer.data, status=status.HTTP_200_OK)
        except Exception as e:
            return Response({'detail', str(e)},
                            status=status.HTTP_400_BAD_REQUEST)
Exemple #5
0
 def get(self, request, pk):
     prod = get_object_or_404(
         Producto,
         pk=pk
     )
     data = ProductoSerializer(prod).data
     return Response(data)
    def listMyProducts(self, request):
        user = request.user
        try:

            with transaction.atomic():

                if user.profile is not None:
                    queryset = Producto.objects.filter(
                        activo=True,
                        profile=user.profile.id
                    ).annotate(
                        total = models.Sum(
                            'lote_producto__cantidad',
                            filter=models.Q(lote_producto__activo=True)
                        )
                    )

                    productos = ProductoSerializer(queryset, many=True)

                    data = {
                        "count": len(productos.data),
                        "results": productos.data
                    }

                    return Response({"productos": data}, status=status.HTTP_200_OK)
                else:
                    return Response({"detail": "No envio todos los datos necesarios"}, status=status.HTTP_400_BAD_REQUEST)

            return Response({"detail": "Hubo un error al actualizar el producto"}, status=status.HTTP_400_BAD_REQUEST)
        except KeyError as e:
            return Response({"detail": "{} is a required field".format(str(e))}, status=status.HTTP_400_BAD_REQUEST)
    def listProductBySeller(self, request):
        data = request.data
        try:
            with transaction.atomic():

                profile = Profile.objects.get(id=data.get("profileId"),
                                              activo=True)

                productos = Producto.objects.filter(
                    profile=data.get("profileId"), activo=True).annotate(
                        total=models.Sum('lote_producto__cantidad',
                                         filter=models.Q(
                                             lote_producto__activo=True)))

                productData = ProductoSerializer(productos, many=True)
                user = UserReadSerializer(profile.user)

                return Response(
                    {
                        "productos": productData.data,
                        "vendedor": user.data
                    },
                    status=status.HTTP_200_OK)

            return Response(
                {"detail": "Hubo un error al actualizar el producto"},
                status=status.HTTP_400_BAD_REQUEST)
        except KeyError as e:
            return Response(
                {"detail": "{} is a required field".format(str(e))},
                status=status.HTTP_400_BAD_REQUEST)
    def listByProduct(self, request):
        data = request.data
        try:
            user = request.user

            with transaction.atomic():
                queryset = Producto.objects.filter(
                    id=data.get("idProducto"),
                    activo=True
                ).prefetch_related(
                    'lote_producto'
                )

                producto = ProductoSerializer(queryset[0])
                activeLotes = queryset[0].lote_producto.filter(activo=True).order_by('fechaVencimiento')
                serializerLote = LoteSerializer(activeLotes, many=True)

                lotes = {
                    "count": queryset[0].lote_producto.count(),
                    "results": serializerLote.data
                }                

                return Response({"producto": producto.data, "lotes": lotes}, status=status.HTTP_200_OK)

            return Response({"detail": "Hubo un error al actualizar el producto"}, status=status.HTTP_400_BAD_REQUEST)
        except KeyError as e:
            return Response({"detail": "{} is a required field".format(str(e))}, status=status.HTTP_400_BAD_REQUEST)
Exemple #9
0
    def catalogo_productos(self, request):
        productos = Producto.objects.filter(activo=True)

        #paginando el resultado
        paginador = PageNumberPagination()
        resultado_pagina = paginador.paginate_queryset(productos, request)
        serializer = ProductoSerializer(resultado_pagina, many=True)
        return paginador.get_paginated_response(serializer.data)
Exemple #10
0
    def list(self, request):
        user = request.user.id
        productos = Producto.objects.filter(usuario=user, activo=True)

        #paginando el resultado
        paginador = PageNumberPagination()
        resultado_pagina = paginador.paginate_queryset(productos, request)
        serializer = ProductoSerializer(resultado_pagina, many=True)
        return paginador.get_paginated_response(serializer.data)
 def mis_productos(self, request, *args, **kwargs):
     try:
         user = request.user
         productos_usuario = Producto.objects.filter(user=user, activo=True)
         page = self.paginate_queryset(productos_usuario)
         if page is not None:
             serializer = ProductoSerializer(page, many=True)
         #return Response(serializer.data, status=status.HTTP_200_OK)
         return self.get_paginated_response(serializer.data)
     except Exception as e:
         return Response({'detail': str(e)},
                         status=status.HTTP_400_BAD_REQUEST)
Exemple #12
0
    def create(self, request, *args, **kwargs):
        try:
            with transaction.atomic():
                data = request.data
                serializer = ProductoSerializer(data=request.data)
                print("imprimiendo", data)
                if (serializer.is_valid()):
                    empresa = None
                    print("es valido")
                    if (data.get('idEmpresa').get('__isNew__')):
                        empresa = Empresa.objects.create(
                            nombre=data.get('idEmpresa').get('label'))
                    else:
                        idEmpresa = data.get('idEmpresa').get('value')
                        empresa = Empresa.objects.get(pk=idEmpresa)

                    precio = data.get('precio')
                    vendedor = request.user.id
                    vendedorF = User.objects.get(pk=vendedor)
                    print(precio, vendedorF, "hola")

                    proyecto = Producto.objects.create(
                        idEmpresa=empresa,
                        nombre=data.get('nombre'),
                        precio=precio,
                        vendedor=vendedorF,
                    )
                    print("holassdf")
                    proyectoCompleto = ProductoSerializer(proyecto)
                    # RegistroBitacora.crearEmpresa(request.user, serializer.data)
                    return Response(proyectoCompleto.data,
                                    status=status.HTTP_201_CREATED)
                else:
                    Response(serializer.errors,
                             status=status.HTTP_400_BAD_REQUEST)
        except Exception as e:
            return Response({'detail': str(e)},
                            status=status.HTTP_400_BAD_REQUEST)
 def listadoProductos(self, request):
     try:
         # Obtenemos el vendedor
         idVendedor = request.user.profile.vendedor_profile
         # Obtenemos todos los productos de los otros vendedores exculyendo los productos
         # del usuario autenticado
         datos = Producto.objects.filter(vendedor=idVendedor, activo=True)
         # Especificamos que datos nos va a devolver el serializer
         serializer = ProductoSerializer(datos, many=True)
         #
         return Response(serializer.data, status=status.HTTP_200_OK)
     except Exception as e:
         return Response({'detail', str(e)},
                         status=status.HTTP_400_BAD_REQUEST)
Exemple #14
0
    def infCatalogo(self, request):
        try:
            # Productos
            productos = Producto.objects.all().filter(activo=True)
            total_de_productos = User.objects.all().count()

            data = {
                'productos': ProductoSerializer(productos, many=True).data,
                'total_de_productos': total_de_productos
            }
            return Response(data, status=status.HTTP_200_OK)

        except Exception as e:
            return Response({'detail': str(e)},
                            status=status.HTTP_400_BAD_REQUEST)
    def totalVentasPorProducto(self, request):
        try:
            # Obtenemos el vendedor
            idVendedor = request.user.profile.vendedor_profile

            queryset = Producto.objects.filter(
                vendedor=idVendedor, activo=True).annotate(
                    total_ventas=Sum('compra_producto__total'),
                    cantidad_vendida=Sum('compra_producto__cantidad'))
            # Especificamos que datos nos va a devolver el serializer
            serializer = ProductoSerializer(queryset, many=True)
            #
            return Response(serializer.data, status=status.HTTP_200_OK)
        except Exception as e:
            return Response({'detail', str(e)},
                            status=status.HTTP_400_BAD_REQUEST)
    def resultados(self, request):
        data = request.data
        user = request.user
        try:
            with transaction.atomic():

                querysetTotal = DetalleVenta.objects.filter(
                    activo=True,
                    lote__producto__profile=user.profile.id).aggregate(
                        total=models.Sum('subtotal'))

                querysetPromedio = Producto.objects.filter(
                    activo=True, profile=user.profile.id).aggregate(
                        promedio=models.Avg('precioVenta'))

                queryPorProducto = Producto.objects.filter(
                    activo=True,
                    profile=user.profile.id).annotate(vendido=models.Sum(
                        'lote_producto__detalleventa_lote__subtotal'))

                serializer = ProductoSerializer(queryPorProducto, many=True)

                return Response(
                    {
                        "total": querysetTotal.get("total"),
                        "promedioPrecio": querysetPromedio.get("promedio"),
                        "porProducto": serializer.data
                    },
                    status=status.HTTP_200_OK)

            return Response(
                {"detail": "Hubo un error al actualizar el producto"},
                status=status.HTTP_400_BAD_REQUEST)
        except KeyError as e:
            return Response(
                {"detail": "{} is a required field".format(str(e))},
                status=status.HTTP_400_BAD_REQUEST)
Exemple #17
0
    def list(self, request, *args, **kwargs):

        validacion = request.user.is_anonymous
        if (validacion == True):
            user = 0
        elif (validacion == False):
            user = request.user.profile.id

        print('USER', user)
        data = request.query_params

        queryset = Producto.objects.filter(
            existencias__gt=0,
            activo=True).exclude(vendedor=user).order_by('nombre')
        serializer = ProductoSerializer(queryset, many=True)

        page = request.GET.get('page')

        try:
            page = self.paginate_queryset(queryset)
            print('page', page)
        except Exception as e:
            page = []
            data = page
            return Response({
                "status": status.HTTP_404_NOT_FOUND,
                "message": 'No more record.',
                "data": data
            })

        if page is not None:
            serializer = self.get_serializer(page, many=True)
            data = serializer.data
            return self.get_paginated_response(data)

        return Response(serializer.data, status=status.HTTP_200_OK)
Exemple #18
0
 def get(self, request, *args, **kwargs):
     queryset = Producto.objects.all()
     serializer = ProductoSerializer(queryset, many=True)
     return Response({'productos': serializer.data})
Exemple #19
0
 def get(self, request):
     prod = Producto.objects.all()[:20]
     data = ProductoSerializer(prod, many=True).data
     return Response(data)
Exemple #20
0
 def get(self, request, format=None):
     productos = Producto.objects.all()
     serializer = ProductoSerializer(productos, many=True)
     return Response(serializer.data)