예제 #1
0
def crear(request):
    data = {}
    if request.method == 'POST':
        datos = json.loads(request.POST['compras'])
        if datos:
            with transaction.atomic():
                c = Compra()
                c.fecha_compra = datos['fecha_compra']
                c.proveedor_id = datos['proveedor']
                c.empleado_id = request.user.id
                c.subtotal = float(datos['subtotal'])
                c.iva = float(datos['iva'])
                c.total = float(datos['total'])
                c.save()
                for i in datos['productos']:
                    dv = Detalle_compra()
                    dv.compra_id = c.id
                    dv.producto_id = i['id']
                    dv.cantidad = int(i['cantidad'])
                    dv.subtotal = int(i['subtotal'])
                    dv.save()
                    x = Producto.objects.get(pk=i['id'])
                    x.stock = x.stock + int(i['cantidad'])
                    x.save()
                    data['id'] = c.id
                    data['resp'] = True
        else:
            data['resp'] = False
            data['error'] = "Datos Incompletos"
    return HttpResponse(json.dumps(data), content_type="application/json")
예제 #2
0
    def post(self, request, *args, **kwargs):
        cuenta = str(request.POST['numero_de_cuenta'])
        ping = str(request.POST['ping'])
        context = self.get_context_data(**kwargs)

        if len(cuenta) == 16 and len(ping) == 4:
            time = datetime.datetime.now()
            comprador = self.request.user
            tienda = context['tienda']
            stock = context['stock']
            cantidad = context['cantidad']

            if stock.cantidad - int(cantidad) < 0:
                context['error_message'] = f'Solo quedan {stock.cantidad} de unidades de este producto en la tienda'
                return self.render_to_response(context)

            Compra(fecha_hora=time,
                   tienda=tienda,
                   comprador=comprador,
                   producto=stock.producto,
                   cantidad=cantidad).save()

            form = StockForm({'cantidad': stock.cantidad - int(cantidad)}, instance=stock)
            if form.is_valid():
                form.save()

            return redirect(self.get_success_url())

        context['error_message'] = 'Clave o numero de cuenta incorrecto'
        return self.render_to_response(context)
예제 #3
0
    def __pay(self, pedido, **kwargs):
        fecha = datetime.datetime.now()
        comprador = pedido.usuario
        tienda = pedido.tienda
        stock = pedido.stock
        cantidad = pedido.cantidad

        if stock.cantidad - int(cantidad) < 0:
            context = self.get_context_data(**kwargs)
            context['error_message'] = f'Esta pidiendo mas unidades de {stock.producto.nombre} que las que hay ' \
                                       f'en la tienda {tienda.nombre}'
            return self.render_to_response(context)

        Compra(fecha_hora=fecha, tienda=tienda, comprador=comprador, producto=stock.producto, cantidad=cantidad).save()

        form = StockForm({'cantidad': stock.cantidad - cantidad}, instance=stock)
        if form.is_valid():
            form.save()
예제 #4
0
 def post(self, request, *args, **kwargs):
     data = {}
     action = request.POST['action']
     try:
         if action == 'add':
             datos = json.loads(request.POST['compras'])
             if datos:
                 with transaction.atomic():
                     c = Compra()
                     c.fecha_compra = datos['fecha']
                     c.comprobante = int(datos['comprobante'])
                     c.proveedor_id = int(datos['proveedor'])
                     c.subtotal = float(datos['subtotal'])
                     c.tasa_iva = float(datos['tasa_iva'])
                     c.iva_generado = c.subtotal-c.total
                     c.total = float(datos['total'])
                     c.save()
                     for i in datos['productos']:
                         dv = Detalle_compra()
                         dv.compra_id = c.id
                         dv.producto_id = int(i['id'])
                         dv.precio_compra = float(i['precio'])
                         dv.precio_venta = float(i['pvp'])
                         dv.cantidad = int(i['cantidad'])
                         dv.stock_compra = int(i['cantidad'])
                         dv.stock_actual = int(i['cantidad'])
                         dv.subtotal = float(i['subtotal'])
                         dv.save()
                     data['id'] = c.id
                     data['resp'] = True
             else:
                 data['resp'] = False
                 data['error'] = "Datos Incompletos"
         elif action == 'get_prov':
             data = []
             id = request.POST['id']
             query = Proveedor.objects.get(id=id)
             data.append(query.toJSON())
         else:
             data['error'] = 'No ha seleccionado ninguna opción'
     except Exception as e:
         data['error'] = str(e)
     return HttpResponse(json.dumps(data), content_type='application/json')
예제 #5
0
 def post(self, request, *args, **kwargs):
     data = {}
     action = request.POST['action']
     try:
         if action == 'add':
             datos = json.loads(request.POST['compras'])
             if datos:
                 with transaction.atomic():
                     c = Compra()
                     c.fecha_compra = datos['fecha_compra']
                     c.proveedor_id = datos['proveedor']
                     c.user_id = request.user.id
                     c.subtotal = float(datos['subtotal'])
                     c.iva = float(datos['iva'])
                     c.total = float(datos['total'])
                     c.save()
                     for i in datos['productos']:
                         dv = Detalle_compra()
                         dv.compra_id = c.id
                         dv.producto_id = i['id']
                         dv.cantidad = int(i['cantidad'])
                         dv.subtotal = float(i['subtotal'])
                         x = Producto.objects.get(pk=i['id'])
                         dv.p_compra_actual = float(x.pcp)
                         x.stock += int(i['cantidad'])
                         x.save()
                         dv.save()
                     data['id'] = c.id
                     data['resp'] = True
             else:
                 data['resp'] = False
                 data['error'] = "Datos Incompletos"
         elif action == 'list_list':
             data = []
             ids = json.loads(request.POST['ids'])
             for c in Producto.objects.all().exclude(id__in=ids):
                 data.append(c.toJSON())
         elif action == 'search_no_stock':
             ids = json.loads(request.POST['ids'])
             data = []
             term = request.POST['term']
             query = Producto.objects.filter(
                 producto_base__nombre__icontains=term)
             for a in query.exclude(id__in=ids)[0:10]:
                 result = {
                     'id':
                     a.id,
                     'text':
                     str(a.producto_base.nombre) + ' / ' +
                     str(a.presentacion.nombre)
                 }
                 data.append(result)
         elif action == 'get':
             data = []
             id = request.POST['id']
             producto = Producto.objects.filter(pk=id)
             empresa = Empresa.objects.first()
             for i in producto:
                 item = i.toJSON()
                 item['cantidad'] = 1
                 item['subtotal'] = 0.00
                 item['iva_emp'] = empresa.iva
                 data.append(item)
         else:
             data['error'] = 'No ha seleccionado ninguna opción'
     except Exception as e:
         data['error'] = str(e)
     return HttpResponse(json.dumps(data), content_type='application/json')
예제 #6
0
 def post(self, request, *args, **kwargs):
     data = {}
     action = request.POST['action']
     try:
         if action == 'add':
             datos = json.loads(request.POST['compras'])
             if datos:
                 with transaction.atomic():
                     c = Compra()
                     c.comprobante = datos['comprobante']
                     c.fecha_compra = datos['fecha_compra']
                     c.proveedor_id = datos['proveedor']
                     c.user_id = request.user.id
                     c.subtotal = float(datos['subtotal'])
                     c.tasa_iva = float(datos['tasa_iva']) / float(100)
                     c.iva = float(datos['iva'])
                     c.total = float(datos['total'])
                     c.jpg = self.base64_file(str(datos['jpg']))
                     c.save()
                     if datos['medicinas']:
                         for m in datos['medicinas']:
                             dv = Detalle_compra()
                             dv.compra_id = c.id
                             dv.insumo_id = int(m['insumo']['id'])
                             dv.cantidad = int(m['cantidad'])
                             dv.stock_inicial = int(m['cantidad'])
                             dv.stock_actual = int(m['cantidad'])
                             dv.subtotal = float(m['subtotal'])
                             dv.p_compra = float(m['precio'])
                             dv.save()
                     if datos['alimentos']:
                         for a in datos['alimentos']:
                             dv = Detalle_compra()
                             dv.compra_id = c.id
                             dv.insumo_id = int(a['insumo']['id'])
                             dv.cantidad = int(a['cantidad'])
                             dv.stock_inicial = int(a['cantidad'])
                             dv.stock_actual = int(a['cantidad'])
                             dv.subtotal = float(a['subtotal'])
                             dv.p_compra = float(a['precio'])
                             dv.save()
                     data['resp'] = True
             else:
                 data['resp'] = False
                 data['error'] = "Datos Incompletos"
         else:
             data['error'] = 'No ha seleccionado ninguna opción'
     except Exception as e:
         data['error'] = str(e)
     return HttpResponse(json.dumps(data), content_type='application/json')
예제 #7
0
 def post(self, request, *args, **kwargs):
     data = {}
     action = request.POST['action']
     pk = request.POST['id']
     try:
         if action == 'add':
             datos = json.loads(request.POST['compras'])
             if datos:
                 with transaction.atomic():
                     c = Compra()
                     c.fecha_compra = datos['fecha_compra']
                     c.comprobante = int(datos['comprobante'])
                     c.proveedor_id = datos['proveedor']
                     c.user_id = request.user.id
                     c.subtotal = float(datos['subtotal'])
                     c.iva = float(datos['iva'])
                     c.total = float(datos['total'])
                     c.save()
                     for i in datos['productos']:
                         dv = Detalle_compra()
                         dv.compra_id = c.id
                         dv.material_id = i['id']
                         dv.cantidad = int(i['cantidad'])
                         dv.subtotal = float(i['subtotal'])
                         x = Material.objects.get(pk=i['id'])
                         dv.p_compra_actual = float(x.p_compra)
                         dv.save()
                         mat = Material.objects.get(id=i['id'])
                         mat.stock_actual += int(i['cantidad'])
                         mat.save()
                     data['id'] = c.id
                     data['resp'] = True
             else:
                 data['resp'] = False
                 data['error'] = "Datos Incompletos"
         else:
             data['error'] = 'No ha seleccionado ninguna opción'
     except Exception as e:
         data['error'] = str(e)
     return HttpResponse(json.dumps(data), content_type='application/json')