Ejemplo n.º 1
0
class ClienteView(View):
    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(ClienteView, self).dispatch(request, *args, **kwargs)

    def get(self, request, *args, **kwargs):
        clientes = Cliente.objects.all()
        list_data = []
        for c in clientes:
            list_data.append({
                "nombre":
                c.nombres,
                "campo_search":
                "%s %s %s" % (c.nombres, c.apellidos, c.nro_documento),
                "apellidos":
                c.apellidos,
                "tipo_documento":
                c.tipo_documento.descripcion,
                "nro_documento":
                c.nro_documento,
                "direccion":
                c.direccion,
                "distrito":
                c.lugar.nombre,
                "provicia":
                c.lugar.provincia.nombre,
                "departamento":
                c.lugar.provincia.departamento.nombre,
                "lugar":
                "%s - %s - %s" % (c.lugar.provincia.departamento.nombre,
                                  c.lugar.provincia.nombre, c.lugar.nombre)
            })
        dump = json.dumps(list_data)
        return HttpResponse(dump, status=200, content_type="application/json")
Ejemplo n.º 2
0
class ProductoListGetView(View):
    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(ProductoListGetView,
                     self).dispatch(request, *args, **kwargs)

    def get(self, request, *args, **kwargs):
        producto_general_codigo = self.request.GET.get(
            "producto_general_codigo")
        if producto_general_codigo:
            productos = Producto.objects.filter(
                producto_general__codigo=producto_general_codigo)
            data = []
            for p in productos:
                data.append({
                    "codigo": p.codigo,
                    "codigo_general": p.codigo_general,
                    "marca": p.producto_general.marca.nombre
                })
            dump = json.dumps(data)
            return HttpResponse(dump,
                                status=200,
                                content_type="application/json")
        productos = Producto.objects.all()
        data = []
        for p in productos:
            data.append({
                "codigo": p.codigo,
                "codigo_general": p.codigo_general,
                "marca": p.producto_general.marca
            })
        dump = json.dumps(data)
        return HttpResponse(dump, status=200, content_type="application/json")
Ejemplo n.º 3
0
class UserListView(ListView):
    model = User
    template_name = "auths/user/list.html"
    paginate_by = settings.PER_PAGE

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(UserListView, self).dispatch(request, *args, **kwargs)

    def get_paginate_by(self, queryset):
        if 'all' in self.request.GET:
            return None
        return ListView.get_paginate_by(self, queryset)

    def get_queryset(self):
        self.o = empty(self.request, 'o', '-id')
        self.f = empty(self.request, 'f', 'username')
        self.q = empty(self.request, 'q', '')
        column_contains = u'%s__%s' % (self.f, 'contains')
        return self.model.objects.filter(**{
            column_contains: self.q
        }).order_by(self.o)

    def get_context_data(self, **kwargs):
        context = super(UserListView, self).get_context_data(**kwargs)
        context['opts'] = self.model._meta
        context['cmi'] = 'user'
        context['title'] = ('Seleccione %s para cambiar') % 'Usuario'

        context['o'] = self.o
        context['f'] = self.f
        context['q'] = self.q.replace('/', '-')
        return context
Ejemplo n.º 4
0
class ProductoListView(ListView):
    model = Producto
    template_name = "almacen/producto/list.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(ProductoListView, self).dispatch(request, *args, **kwargs)

    def get_queryset(self):
        agrupar = self.request.GET.get("agrupar")
        query = self.model.objects.all()
        if agrupar:
            q = """
            select 'af415e59-2185-4e5b-85a6-b23544355bdf' as id,
       producto_producto.codigo_general,
       count(almacen_equipo.id)               as cantidad_almacen,
       pm.nombre                              as marca_nombre
from producto_producto,
     almacen_equipo,
     producto_marca pm
where almacen_equipo.producto_id = producto_producto.id
  and almacen_equipo.estado = 'ALMACEN'
  and pm.id = producto_producto.marca_id
group by producto_producto.codigo_general, pm.nombre
            """
            query = Producto.objects.raw(q)
        else:
            query = self.model.objects.all()
        return query

    def get_context_data(self, **kwargs):
        context = super(ProductoListView, self).get_context_data(**kwargs)
        context['title'] = "productos"
        context['opts'] = self.model._meta
        return context
Ejemplo n.º 5
0
class ArqueoSalidaEquipoUpdateView(View):
    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(ArqueoSalidaEquipoUpdateView,
                     self).dispatch(request, *args, **kwargs)

    def update(self, *args, **kwargs):
        salida_detalle = SalidaDetalle.objects.get(
            id=self.kwargs['salida_detalle_pk'])
        equipo = salida_detalle.equipo

        equipo.estado = ALMACEN
        equipo.save()
        messages.success(self.request, "Equipo de en almacen")

        return HttpResponseRedirect(self.get_url_redirect(*args, **kwargs))

    def get(self, *args, **kwargs):
        return self.update(*args, **kwargs)

    def get_url_redirect(self, *args, **kwargs):
        salida_detalle_id = self.kwargs['salida_detalle_pk']
        salida = Salida.objects.get(salidadetalle__id=salida_detalle_id)

        return reverse("almacen:arqueo_salida_detail",
                       kwargs={'salida_pk': salida.id})
Ejemplo n.º 6
0
class ComprobanteEstadoUpdateView(BaseUpdateView):
    """Acutaliza el estado de la compra para que ya este verificador completamente"""
    model = Compra
    fields = [
        '',
    ]
    success_url = reverse_lazy("almacen:compra_list")

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(ComprobanteEstadoUpdateView,
                     self).dispatch(request, *args, **kwargs)

    def update(self, request, *args, **kwargs):
        """Acutaliza el estado de la compra para que ya este verificador completamente"""
        # validamos que todos los detalles esten completados
        comprobate = self.get_object()
        flag = True
        comprobate_detalles = CompraDetalle.objects.filter(compra=comprobate)
        for com_det in comprobate_detalles:
            if len(com_det.equipo_set.all()) != com_det.cantidad:
                flag = False

        if not flag:
            messages.error(request, "Aun no se completan los equipos")
            return HttpResponseRedirect(
                reverse("almacen:compra_detail", kwargs={'pk': comprobate.id}))
        comprobate.estado = True
        comprobate.save()
        messages.success(request, "Comprobaten totalmente ingresado")

        return HttpResponseRedirect(self.success_url)

    def get(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)
Ejemplo n.º 7
0
class UserView(View):
    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(UserView, self).dispatch(request, *args, **kwargs)

    def get(self, request, *args, **kwargs):
        users = User.objects.all()
        rol = self.request.GET.get("rol")
        if rol:
            users = users.filter(groups__name=rol)
        data = []
        for user in users:
            if user.person:
                data.append({
                    "username":
                    user.username,
                    "nombres":
                    user.person.first_name if user.person else user.username,
                    "apellidos":
                    user.person.last_name if user.person else user.username,
                    "nro_documento":
                    user.person.identity_num if user.person else "SN",
                })
        dump = json.dumps(data)
        return HttpResponse(dump, status=201, content_type="application/json")
Ejemplo n.º 8
0
class SalidaUpdateView(BaseUpdateView):
    model = Salida
    form_class = SalidaModelForm

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(SalidaUpdateView, self).dispatch(request, *args, **kwargs)

    def update(self, request, *args, **kwargs):
        d = self.get_object()
        d.estado = True
        print("update")
        d.save()
        msg = "La salida se acepto exitosamente"
        messages.success(self.request, msg)

        return HttpResponseRedirect(self.get_success_url())

    def get(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)

    def get_success_url(self):
        d = self.get_object()

        return reverse("vendedor:salida_detail", kwargs={"pk": d.id})
Ejemplo n.º 9
0
class ArqueoSalidaCerrar(View):
    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(ArqueoSalidaCerrar,
                     self).dispatch(request, *args, **kwargs)

    def update(self, *args, **kwargs):
        salida = Salida.objects.get(id=self.kwargs['salida_pk'])
        self.vendedor = salida.vendedor

        salida_detalles = SalidaDetalle.objects.filter(salida=salida,
                                                       equipo__estado=SALIDA)
        if salida_detalles:
            messages.error(self.request, "Tiene Equipos sin areglar")
            return HttpResponseRedirect(
                reverse("almacen:arqueo_salida_detail",
                        kwargs={"salida_pk": salida.id}))

        else:
            salida.arqueado = True
            messages.success(self.request, "Salida Cerrada")
            salida.save()

        return HttpResponseRedirect(self.get_url_redirect(*args, **kwargs))

    def get(self, *args, **kwargs):
        return self.update(*args, **kwargs)

    def get_url_redirect(self, *args, **kwargs):
        return reverse("almacen:arqueo_salida_list",
                       kwargs={'user_pk': self.vendedor.id})
Ejemplo n.º 10
0
class PedidoListView(ListView):
    model = Pedido
    template_name = "vendedor/pedido/list.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(PedidoListView, self).dispatch(request, *args, **kwargs)

    def get_paginate_by(self, queryset):
        if 'all' in self.request.GET:
            return None
        return ListView.get_paginate_by(self, queryset)

    def get_queryset(self):
        self.o = empty(self.request, 'o', 'codigo')
        self.f = empty(self.request, 'f', 'ruta')
        self.q = empty(self.request, 'q', '')
        column_contains = u'%s__%s' % (self.f, 'contains')
        return self.model.objects.filter(**{column_contains: self.q}, distribuidor=self.request.user) \
            .order_by('-estado')

    def get_context_data(self, **kwargs):
        context = super(PedidoListView, self).get_context_data(**kwargs)
        context['opts'] = self.model._meta
        context['cmi'] = 'marca'
        context['title'] = ('Seleccione %s para Cambiar') % ('marca')

        context['o'] = self.o
        context['f'] = self.f
        context['q'] = self.q.replace('/', '-')
        return context
Ejemplo n.º 11
0
class EquipoListView(ListView):
    model = Equipo
    template_name = "reporte/equipo/list.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(EquipoListView, self).dispatch(request, *args, **kwargs)

    def get_queryset(self):
        self.o = empty(self.request, 'o', 'imei')
        self.f = empty(self.request, 'f', 'estado')
        self.q = empty(self.request, 'q', '')
        column_contains = u'%s__%s' % (self.f, 'contains')
        estado = self.request.GET.get('estado')
        contable = self.request.GET.get('contable')
        query = self.model.objects.all()
        print(query)
        print(estado)
        print(contable)
        if estado != "all":
            query = query.filter(estado=estado)
        if contable != 'all':
            if contable == 'true':
                query = query.filter(contable=True)
            else:
                query = query.filter(contable=False)

        return query.filter(**{column_contains: self.q}).order_by(self.o)

    def get_context_data(self, **kwargs):
        context = super(EquipoListView, self).get_context_data(**kwargs)
        context['opts'] = self.model._meta
        context['estados'] = ESTADO_EQUIPO_CHOICES
        context['title'] = "reporte Equipo"
        return context
Ejemplo n.º 12
0
class PedidoStateUpdate(BaseUpdateView):
    model = Pedido
    success_url = reverse_lazy('vendedor:pedido_list')

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(PedidoStateUpdate, self).dispatch(request, *args,
                                                       **kwargs)

    def update(self, request, *args, **kwargs):
        try:
            d = self.get_object()
            d.estado = False
            d.save()
            msg = 'El %(name)s "%(obj)s" fue dado de baja satisfactoriamente.' % {
                'name': self.model._meta.verbose_name,
                'obj': d
            }
            messages.success(self.request, msg)
        except Exception as e:
            messages.error(request, e)
        return HttpResponseRedirect(self.success_url)

    def get(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)
Ejemplo n.º 13
0
class CompraDetalleServiceView(DetailView):
    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(CompraDetalleServiceView,
                     self).dispatch(request, *args, **kwargs)

    def get(self, request, *args, **kwargs):
        compra_detalle_id = self.request.GET.get("compra_detalle_id")
        compra_detalle = CompraDetalle.objects.get(id=compra_detalle_id)
        equipos = Equipo.objects.filter(compra_detalle=compra_detalle)
        equipos_dic = []
        for equipo in equipos:
            equipos_dic.append({
                "producto_codigo": equipo.producto.codigo,
                "imei": equipo.imei
            })
        registrados = len(equipos)

        data = {
            "registrados": registrados,
            "equipos": equipos_dic,
            "cantidad": compra_detalle.cantidad,
            "contable": compra_detalle.compra.contable
        }

        dump = json.dumps(data)
        print(dump)

        return HttpResponse(dump, status=200, content_type="application/json")
Ejemplo n.º 14
0
class EquipoMenuListView(ListView):
    model = Equipo
    template_name = "almacen/equipo/list_menu.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(EquipoMenuListView,
                     self).dispatch(request, *args, **kwargs)

    def get_paginate_by(self, queryset):
        if 'all' in self.request.GET:
            return None

        return ListView.get_paginate_by(self, queryset)

    def get_queryset(self):
        self.o = empty(self.request, 'o', 'imei')
        self.f = empty(self.request, 'f', 'producto__id')
        self.q = empty(self.request, 'q', '')
        column_contains = u'%s__%s' % (self.f, 'contains')
        return self.model.objects.filter(**{
            column_contains: self.q
        }).order_by(self.o)

    def get_context_data(self, **kwargs):
        context = super(EquipoMenuListView, self).get_context_data(**kwargs)
        context['opts'] = self.model._meta
        context['title'] = "equipos"
        return context
Ejemplo n.º 15
0
class EquiposAddServicioView(View):
    u"""Ingreso directo"""
    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(EquiposAddServicioView,
                     self).dispatch(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        data = json.loads(request.body)
        producto = Producto.objects.get(id=data['producto_id'])
        try:
            compra_detalle_id = data['compra_detalle_id']
        except:
            compra_detalle_id = False
        cantidad = 0
        for e in data['equipos']:
            equipo = Equipo()
            equipo.user = self.request.user
            equipo.estado = ALMACEN
            if compra_detalle_id:
                equipo.compra_detalle_id = compra_detalle_id
            equipo.imei = e['imei']
            equipo.producto = producto
            equipo.contable = data['contable']
            equipo.save()
            cantidad = cantidad + 1

        messages.success(self.request,
                         "%s Equipos agregados satisfactoriamente" % cantidad)

        return HttpResponse({
            "ss": "222",
        })
Ejemplo n.º 16
0
class EquipoDeleteView(BaseDeleteView):
    u"""Eliminar Equipo"""
    model = Equipo
    success_url = reverse_lazy("almacen:equipo_list_menu")

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        user = self.request.user

        # buscando si es superadmin
        flag = False

        for g in user.groups.all():

            if g.name == SUPERADMIN or user.is_staff == True:
                flag = True
        if user.is_staff:
            flag = True

        if not flag:
            messages.error(self.request, "Ud. No es administrador")
            return HttpResponseRedirect(reverse("almacen:equipo_list_menu"))

        pk = self.kwargs['pk']
        if not pk:
            return HttpResponseRedirect(self.success_url)
        self.kwargs['pk'] = pk
        try:
            self.get_object()
        except Exception as e:
            messages.error(self.request, e)
            return HttpResponseRedirect(self.success_url)
        return super(EquipoDeleteView, self).dispatch(request, *args, **kwargs)

    def delete(self, request, *args, **kwargs):
        try:
            d = self.get_object()

            deps, msg = get_dep_objects(d)
            if deps:
                messages.warning(
                    self.request, 'No se Puede eliminar %(name)s' %
                    {"name": self.model._meta.verbose_name + ' "' + (d) + '"'})
                raise Exception(msg)

            d.delete()
            msg = 'The %(name)s "%(obj)s" was deleted successfully.' % {
                'name': self.model._meta.verbose_name,
                'obj': d
            }
            if not d.id:
                messages.success(self.request, msg)

        except Exception as e:
            messages.error(request, e)
        return HttpResponseRedirect(self.success_url)

    def get(self, request, *args, **kwargs):
        return self.delete(request, *args, **kwargs)
Ejemplo n.º 17
0
class SalidaCreateTemplateView(TemplateView):
    model = Salida
    template_name = "almacen/salida/form.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(SalidaCreateTemplateView,
                     self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(SalidaCreateTemplateView,
                        self).get_context_data(**kwargs)
        distribuidores = User.objects.filter(groups__name=DISTRIBUIDOR)
        rutas = RUTA_CHOICES
        print(distribuidores)
        context['title'] = 'Salida de Productos'
        context['opts'] = self.model._meta
        context['distribuidores'] = distribuidores
        context['rutas'] = rutas

        return context

    def post(self, request, *args, **kwargs):
        try:
            with transaction.atomic():
                data = json.loads(request.body)
                user = self.request.user
                username = data['distribuidor']
                ruta = data['ruta']
                distribuidor = User.objects.get(username=username)
                salida = Salida()
                salida.vendedor = distribuidor
                salida.ruta = ruta
                salida.user = user
                salida.save()

                # cargando detalles
                for e in data['equipos']:
                    sd = SalidaDetalle()
                    sd.salida = salida
                    equipo = Equipo.objects.get(imei=e['imei'])
                    sd.equipo = equipo
                    sd.save()
                    equipo.estado = SALIDA
                    equipo.save()

                salida_data = {
                    'id': salida.id,
                }
                dump = json.dumps(salida_data, cls=UUIDEncoder)

                return HttpResponse(dump,
                                    content_type="application/json",
                                    status=201)

        except IntegrityError as e:
            print("error", e)
Ejemplo n.º 18
0
class TipoComprobantesJson(View):
    u"""Lista de comprobantes"""

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(TipoComprobantesJson, self).dispatch(request, *args, **kwargs)

    def get(self, *args, **kwargs):
        tipo_comprobantes = TipoComprobantePago.objects.all()
        dump = serializers.serialize('json', tipo_comprobantes)
        return HttpResponse(dump, content_type="application/json")
Ejemplo n.º 19
0
class SalidaDetailView(DetailView):
    model = Salida
    template_name = "vendedor/salida/detail.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(SalidaDetailView, self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(SalidaDetailView, self).get_context_data(**kwargs)
        context['opts'] = self.model._meta
        context['title'] = "Salida Detalle"
        return context
Ejemplo n.º 20
0
class UserDetailView(DetailView):
    model = User
    template_name = "almacen/user/detail.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(UserDetailView, self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(UserDetailView, self).get_context_data(**kwargs)
        salidas = Salida.objects.filter(vendedor=self.object)
        context['salidas'] = salidas
        return context
Ejemplo n.º 21
0
class VentaListView(ListView):
    model = Venta
    template_name = "venta/venta/list.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(VentaListView, self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(VentaListView, self).get_context_data(**kwargs)
        context['opts'] = self.model._meta
        context['title'] = "Comprobante Electronico"
        return context
Ejemplo n.º 22
0
class VentaDetailView(DetailView):
    model = Venta
    template_name = "venta/venta/detail.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(VentaDetailView, self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(VentaDetailView, self).get_context_data(**kwargs)

        productos_generales = VentaDetalle.objects.values(
            'equipo__producto__producto_general',
            'equipo__producto__producto_general__codigo',
            'precio_unitario').annotate(
                precio_total=Sum('precio_total'),
                base_imponible=Sum('base_imponible'),
                cantidad=Sum('cantidad')).filter(venta=self.get_object())

        for pr in productos_generales:
            equipos = Equipo.objects.filter(
                ventadetalle__venta=self.get_object(),
                producto__producto_general__id=pr[
                    'equipo__producto__producto_general'])

            pr['equipos'] = equipos

        qr_url = qr_url_from_text(self.object.qr,
                                  version=5,
                                  image_format="png",
                                  error_correction="L")

        context['opts'] = self.model._meta
        context['qr_url'] = qr_url

        context['productos_generales'] = productos_generales
        context['empresa'] = Empresa.objects.get(estado=True)

        context['title'] = "Venta"
        return context

    def get_template_names(self):
        if self.get_object().tipo_comprobante.codigo == "01":
            return ['venta/venta/factura.html']

        if self.get_object().tipo_comprobante.codigo == "03":
            return ['venta/venta/boleta.html']

        if self.get_object().tipo_comprobante.codigo == "99":
            return ['venta/venta/boleta.html']
Ejemplo n.º 23
0
class SalidaDetailView(DetailView):
    u"""Metodo para imprimir la salida"""
    model = Salida
    template_name = "almacen/salida/detail.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(SalidaDetailView, self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(SalidaDetailView, self).get_context_data(**kwargs)
        context['opts'] = self.model._meta
        context['title'] = "salida"
        return context
Ejemplo n.º 24
0
class ArqueoSalidaDetailView(DetailView):
    u"""Formulario para reingresar productos al almacen"""
    model = Salida
    pk_url_kwarg = 'salida_pk'
    template_name = "almacen/arqueo/salida_detail.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(ArqueoSalidaDetailView,
                     self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(ArqueoSalidaDetailView,
                        self).get_context_data(**kwargs)
        detalles = SalidaDetalle.objects.filter(
            salida=self.get_object()).order_by("equipo__estado")
        context['title'] = "%s" % self.get_object().codigo
        context['opts'] = self.model._meta
        context['detalles'] = detalles
        return context

    def post(self, request, *args, **kwargs):
        imei = self.request.POST.get('imei')
        salida_pk = self.kwargs['salida_pk']

        try:
            salida_detalle = SalidaDetalle.objects.get(salida__id=salida_pk,
                                                       equipo__imei=imei)
            if salida_detalle.equipo.estado == ALMACEN:
                messages.info(request, "Equipo ya se encuentra en almacen")
                return HttpResponseRedirect(
                    self.get_url_redirect(*args, **kwargs))

        except:
            messages.error(request, "Equipo no se encuentra en esta salida")
            return HttpResponseRedirect(self.get_url_redirect(*args, **kwargs))

        equipo = salida_detalle.equipo

        equipo.estado = ALMACEN
        equipo.save()
        messages.success(self.request, "Equipo Ingresado a almacen")

        return HttpResponseRedirect(self.get_url_redirect(*args, **kwargs))

    def get_url_redirect(self, *args, **kwargs):

        return reverse("almacen:arqueo_salida_detail",
                       kwargs={'salida_pk': self.kwargs['salida_pk']})
Ejemplo n.º 25
0
class EquipoDetailView(DetailView):
    u"""
    Vista para realizar manenimiento de equipo
    """
    model = Equipo
    template_name = "almacen/equipo/detail.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(EquipoDetailView, self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(EquipoDetailView, self).get_context_data(**kwargs)
        context['opts'] = self.model._meta
        context['title'] = "Equipo"
        return context
Ejemplo n.º 26
0
class CompraDetalleDetailView(DetailView):
    template_name = "almacen/compra_detalle/detail.html"
    model = CompraDetalle

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(CompraDetalleDetailView,
                     self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(CompraDetalleDetailView,
                        self).get_context_data(**kwargs)
        producto = Producto.objects.get(id=self.kwargs['producto_pk'])

        context['producto'] = producto
        context['opts'] = self.model._meta
        context['title'] = "Producto"
        return context
Ejemplo n.º 27
0
class ProductoDetailView(DetailView):
    u"""
    Vista para agregar productos directamente
    """
    model = Producto
    template_name = "almacen/producto/detail.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(ProductoDetailView,
                     self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(ProductoDetailView, self).get_context_data(**kwargs)
        context['opts'] = self.model._meta

        context['title'] = "Producto"
        return context
Ejemplo n.º 28
0
class EquipoGetJson(View):
    u"""Equipos Get
    retorna equipos cargados en almacen a un usuario"""

    # modificar este metodo para realizar la venta directa del almacen

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(EquipoGetJson, self).dispatch(request, *args, **kwargs)

    def get(self, *args, **kwargs):
        ruta = self.request.GET.get("ruta")
        estado = self.request.GET.get("estado")
        imei = self.request.GET.get("imei")

        if imei:

            try:
                equipo = Equipo.objects.get(imei=imei, estado=estado)
                try:
                    precio_venta = PrecioVenta.objects.get(
                        producto_general__producto__equipo=equipo, ruta=ruta)
                except Exception as e:
                    data = {"message": e}
                    dump = json.dumps(data)
                    return HttpResponse(dump,
                                        status=400,
                                        content_type="application/json")

                data = {
                    'imei': equipo.imei,
                    'precio_venta': Decimal(precio_venta.precio),
                    'model': equipo.producto.codigo,
                }
                dump = json.dumps(data)
                return HttpResponse(dump,
                                    status=200,
                                    content_type="application/json")
            except Exception as e:
                data = {"message": e}
                dump = json.dumps(data)
                return HttpResponse(dump,
                                    status=400,
                                    content_type="application/json")
Ejemplo n.º 29
0
class EquipoUpdateView(UpdateView):
    u"""Actualizar equipo"""
    model = Equipo
    form_class = EquipoUpdateModelForm
    template_name = "almacen/equipo/update.html"

    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        user = self.request.user

        # buscando si es superadmin
        flag = False

        for g in user.groups.all():

            if g.name == SUPERADMIN:
                flag = True
        if user.is_staff:
            flag = True

        if not flag:
            messages.error(self.request, "Ud. No es administrador")
            return HttpResponseRedirect(reverse("almacen:equipo_list_menu"))
        return super(EquipoUpdateView, self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(EquipoUpdateView, self).get_context_data(**kwargs)
        context['opts'] = self.model._meta
        context['title'] = "Actualiza Equipo"
        return context

    def form_valid(self, form):
        self.object = form.save(commit=False)
        msg = ('La %(name)s "%(obj)s" fue modificado satisfactoriamente.') % {
            'name': self.model._meta.verbose_name,
            'obj': self.object
        }

        messages.success(self.request, msg)
        return super(EquipoUpdateView, self).form_valid(form)

    def get_success_url(self):
        return reverse("almacen:equipo_detail",
                       kwargs={'pk': self.get_object().id})
Ejemplo n.º 30
0
class ProductoDetailCountAlmacenServiceView(View):
    @method_decorator(permission_resource_required())
    def dispatch(self, request, *args, **kwargs):
        return super(ProductoDetailCountAlmacenServiceView,
                     self).dispatch(request, *args, **kwargs)

    def get(self, *args, **kwargs):
        producto = Producto.objects.get(id=self.kwargs["pk"])
        almacen = Equipo.objects.filter(producto=producto, estado=ALMACEN)
        vendidos = Equipo.objects.filter(producto=producto, estado=VENDIDO)
        salida = Equipo.objects.filter(producto=producto, estado=SALIDA)

        data = {
            'almacen': len(almacen),
            'vendidos': len(vendidos),
            'salida': len(salida),
        }
        dump = json.dumps(data)

        return HttpResponse(dump, content_type="application/json")