Пример #1
0
def crear(request):
    data = {}
    if request.method == 'POST':
        datos = json.loads(request.POST['ventas'])
        if datos:
            with transaction.atomic():
                c = Venta()
                c.fecha_venta = datos['fecha_venta']
                c.cliente_id = datos['cliente']
                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_venta()
                    dv.venta_id = c.id
                    dv.producto_id = i['id']
                    dv.cantidad = int(i['cantidad'])
                    dv.subtotal = float(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 editar_save(request):
    data = {}
    datos = json.loads(request.POST['ventas'])
    if request.POST['action'] == 'edit':

        with transaction.atomic():
            # c = Compra.objects.get(pk=self.get_object().id)
            c = Venta.objects.get(pk=request.POST['key'])
            c.fecha_venta = datos['fecha_venta']
            c.cliente_id = datos['cliente']
            c.subtotal = float(datos['subtotal'])
            c.iva = float(datos['iva'])
            c.total = float(datos['total'])
            c.save()
            c.detalle_venta_set.all().delete()
            for i in datos['productos']:
                dv = Detalle_venta()
                dv.venta_id = c.id
                dv.producto_id = i['id']
                dv.cantidad = int(i['cantidad'])
                dv.save()
                data['resp'] = True
    else:
        data['resp'] = False
        data['error'] = "Datos Incompletos"
    return HttpResponse(json.dumps(data), content_type="application/json")
Пример #3
0
 def post(self, request, *args, **kwargs):
     data = {}
     action = request.POST['action']
     try:
         if action == 'add':
             datos = json.loads(request.POST['ventas'])
             if datos:
                 with transaction.atomic():
                     c = Venta()
                     c.fecha = datos['fecha_venta']
                     c.cliente_id = datos['cliente']
                     c.subtotal = float(datos['subtotal'])
                     c.iva = float(datos['iva'])
                     c.total = float(datos['total'])
                     c.save()
                     if datos['productos']:
                         for i in datos['productos']:
                             dv = Detalle_venta()
                             dv.venta_id = c.id
                             dv.producto_id = int(i['id'])
                             dv.cantidad = int(i['cantidad'])
                             dv.pvp_actual = float(i['pvp'])
                             dv.subtotal = float(i['subtotal'])
                             dv.save()
                             stock = Producto.objects.get(id=i['id'])
                             stock.stock -= int(i['cantidad'])
                             stock.save()
                 data['id'] = c.id
                 data['resp'] = True
             else:
                 data['resp'] = False
                 data['error'] = "Datos Incompletos"
         elif action == 'reserva':
             datos = json.loads(request.POST['ventas'])
             if datos:
                 with transaction.atomic():
                     c = Venta()
                     c.fecha = datos['fecha_venta']
                     c.cliente_id = datos['cliente']
                     c.subtotal = float(datos['subtotal'])
                     c.iva = float(datos['iva'])
                     c.total = float(datos['total'])
                     c.estado = 2
                     c.save()
                     if datos['productos']:
                         for i in datos['productos']:
                             dv = Detalle_venta()
                             dv.venta_id = c.id
                             dv.producto_id = int(i['id'])
                             dv.cantidad = int(i['cantidad'])
                             dv.pvp_actual = float(i['pvp'])
                             dv.subtotal = float(i['subtotal'])
                             dv.save()
                             stock = Producto.objects.get(id=i['id'])
                             stock.stock -= int(i['cantidad'])
                             stock.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')
Пример #4
0
 def post(self, request, *args, **kwargs):
     data = {}
     action = request.POST['action']
     try:
         if action == 'add':
             datos = json.loads(request.POST['ventas'])
             if datos:
                 with transaction.atomic():
                     c = Venta()
                     c.fecha = datos['fecha_venta']
                     c.cliente_id = datos['cliente']
                     c.subtotal = float(datos['subtotal'])
                     c.iva = float(datos['iva'])
                     c.total = float(datos['total'])
                     c.save()
                     if datos['productos']:
                         for i in datos['productos']:
                             dv = Detalle_venta()
                             dv.venta_id = c.id
                             dv.producto_id = int(i['id'])
                             dv.cantidad = int(i['cantidad'])
                             dv.pvp_actual = float(i['pvp'])
                             dv.subtotal = float(i['subtotal'])
                             dv.save()
                             stock = Producto.objects.get(id=i['id'])
                             stock.stock -= int(i['cantidad'])
                             stock.save()
                     if int(datos['forma_pago']) == 1:
                         verf = Cta_x_cobrar.objects.filter(
                             venta__cliente_id=c.cliente_id,
                             estado=0).count()
                         if verf <= 2:
                             cta = Cta_x_cobrar()
                             cta.venta_id = c.id
                             cta.valor = float(datos['total'])
                             cta.interes = float(datos['interes'])
                             cta.tolal_deuda = float(datos['total_deuda'])
                             cta.saldo = float(datos['total_deuda'])
                             cta.nro_cuotas = int(datos['nro_cuotas'])
                             cta.save()
                             c.tipo_pago = 1
                             c.save()
                             x = 1
                             ahora = datetime.now()
                             debito = (float(datos['letra']) *
                                       float(datos['nro_cuotas']))
                             calculo = (float(debito) -
                                        float(datos['total_deuda']))
                             for n in range(0, int(datos['nro_cuotas'])):
                                 fech = ahora + relativedelta(months=x)
                                 let = Pago_cta_x_cobrar()
                                 let.cta_cobrar_id = cta.id
                                 if fech.weekday() == 5:
                                     let.fecha = fech + dt.timedelta(days=2)
                                 elif fech.weekday() == 6:
                                     let.fecha = fech + dt.timedelta(days=1)
                                 else:
                                     let.fecha = fech
                                 if x == int(datos['nro_cuotas']):
                                     let.valor = float(
                                         datos['letra']) - float(calculo)
                                     let.saldo = float(
                                         datos['letra']) - float(calculo)
                                     print('valor ultimo')
                                     print(let.valor)
                                 else:
                                     let.valor = float(datos['letra'])
                                     let.saldo = float(datos['letra'])
                                 let.save()
                                 x = x + 1
                         else:
                             data['error'] = 'Este cliente tiene mas de dos creditos activos, Por favor intenta ' \
                                             'con otro cliente'
                     data['id'] = c.id
                     data['resp'] = True
             else:
                 data['resp'] = False
                 data['error'] = "Datos Incompletos"
         elif action == 'reserva':
             datos = json.loads(request.POST['ventas'])
             if datos:
                 with transaction.atomic():
                     c = Venta()
                     c.fecha = datos['fecha_venta']
                     c.cliente_id = datos['cliente']
                     c.subtotal = float(datos['subtotal'])
                     c.iva = float(datos['iva'])
                     c.total = float(datos['total'])
                     c.estado = 2
                     c.tipo_pago = 2
                     c.save()
                     if datos['productos']:
                         for i in datos['productos']:
                             dv = Detalle_venta()
                             dv.venta_id = c.id
                             dv.producto_id = int(i['id'])
                             dv.cantidad = int(i['cantidad'])
                             dv.pvp_actual = float(i['pvp'])
                             dv.subtotal = float(i['subtotal'])
                             dv.save()
                             stock = Producto.objects.get(id=i['id'])
                             stock.stock -= int(i['cantidad'])
                             stock.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().select_related(
                     'producto_base').select_related(
                         'presentacion').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.values('id', 'producto_base__nombre', 'presentacion__nombre'). \
                 filter(producto_base__nombre__icontains=term).select_related('producto_base').select_related('presentacion')
             for a in query.exclude(id__in=ids):
                 result = {
                     'id':
                     int(a['id']),
                     'text':
                     str(a['producto_base__nombre']) + ' / ' +
                     str(a['presentacion__nombre'])
                 }
                 data.append(result)
         elif action == 'search':
             data = []
             ids = json.loads(request.POST['ids'])
             term = request.POST['term']
             query = Producto.objects.filter(
                 producto_base__nombre__icontains=term,
                 stock__gte=1).select_related(
                     'producto_base').select_related('presentacion')
             for a in query.exclude(id__in=ids)[0:10]:
                 result = {
                     'id':
                     int(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)
         elif action == 'search_cli':
             data = []
             term = request.POST['term']
             query = User.objects.filter(Q(first_name__icontains=term)
                                         | Q(last_name__icontains=term)
                                         | Q(cedula__icontains=term),
                                         tipo=0)[0:10]
             for a in query:
                 item = a.toJSON()
                 item['text'] = a.get_full_name()
                 data.append(item)
         else:
             data['error'] = 'No ha seleccionado una opcion'
     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['ventas'])
             if datos:
                 with transaction.atomic():
                     c = Venta()
                     c.fecha = datos['fecha']
                     c.cliente_id = datos['cliente']
                     c.subtotal = float(datos['subtotal'])
                     c.iva = float(datos['iva'])
                     c.total = float(datos['total'])
                     c.save()
                     if datos['lotes']:
                         for i in datos['lotes']:
                             dv = Detalle_venta()
                             dv.venta_id = c.id
                             dv.lote_id = int(i['lote']['id'])
                             dv.cantidad = int(i['cantidad'])
                             dv.valor_libra = float(i['valor_libra'])
                             dv.peso = float(i['peso_promedio'])
                             dv.pvp_actual = float(i['valor_ave'])
                             dv.subtotal = float(i['subtotal'])
                             dv.save()
                             dist = Distribucion.objects.get(
                                 id=int(i['id']))
                             dist.stock_actual -= int(i['cantidad'])
                             dist.save()
                             lot = Lote.objects.get(id=int(i['lote']['id']))
                             lot.stock_actual -= int(i['cantidad'])
                             lot.save()
                     data['id'] = c.id
                     data['resp'] = True
             else:
                 data['resp'] = False
                 data['error'] = "Datos Incompletos"
         else:
             data['error'] = 'No ha seleccionado una opcion'
     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 = {}
     try:
         action = request.POST['action']
         if action == 'get':
             data = []
             id = request.POST['id']
             producto = Producto.objects.get(id=id)
             item = producto.toJSON()
             item['cantidad'] = 1
             item['subtotal'] = 0
             item['iva_emp'] = empresa.iva
             data.append(item)
         elif action == 'add':
             datos = json.loads(request.POST['ventas'])
             if datos:
                 print(datos)
                 with transaction.atomic():
                     c = Venta()
                     c.cliente_id = datos['cliente']
                     c.subtotal = float(datos['subtotal'])
                     c.iva = float(datos['iva'])
                     c.total = float(datos['total'])
                     c.save()
                     if datos['productos']:
                         for i in datos['productos']:
                             dv = Detalle_venta()
                             dv.venta_id = c.id
                             dv.producto_id = int(i['id'])
                             dv.cantidad = int(i['cantidad'])
                             dv.pvp_actual = float(i['pvp'])
                             dv.subtotal = float(i['subtotal'])
                             dv.save()
                             stock = Producto.objects.get(id=i['id'])
                             stock.stock -= int(i['cantidad'])
                             stock.save()
                         data['id'] = c.id
                         data['resp'] = True
                     else:
                         data['resp'] = False
                         data['error'] = "Datos Incompletos"
         elif action == 'reserva':
             datos = json.loads(request.POST['ventas'])
             if datos:
                 with transaction.atomic():
                     c = Venta()
                     c.cliente_id = datos['cliente']
                     c.subtotal = float(datos['subtotal'])
                     c.iva = float(datos['iva'])
                     c.total = float(datos['total'])
                     c.estado = 2
                     c.save()
                     if datos['productos']:
                         for i in datos['productos']:
                             dv = Detalle_venta()
                             dv.venta_id = c.id
                             dv.producto_id = int(i['id'])
                             dv.cantidad = int(i['cantidad'])
                             dv.pvp_actual = float(i['pvp'])
                             dv.subtotal = float(i['subtotal'])
                             dv.save()
                             stock = Producto.objects.get(id=i['id'])
                             stock.stock -= int(i['cantidad'])
                             stock.save()
                     data['id'] = c.id
                     data['resp'] = True
             else:
                 data['resp'] = False
                 data['error'] = "Datos Incompletos"
     except Exception as e:
         data['error'] = str(e)
     return HttpResponse(json.dumps(data), content_type='application/json')
Пример #7
0
def crear(request):
    data = {}
    if request.method == 'POST':
        datos = json.loads(request.POST['ventas'])
        if datos:
            with transaction.atomic():
                c = Venta()
                c.fecha_venta = datos['fecha_venta']
                c.cliente_id = datos['cliente']
                c.empleado_id = request.user.id
                c.subtotal = float(datos['subtotal'])
                c.iva = float(datos['iva'])
                c.total = float(datos['total'])
                c.save()
                if datos['productos'] and datos['servicios']:
                    for i in datos['productos']:
                        dv = Detalle_venta()
                        dv.venta_id = c.id
                        dv.producto_id = i['producto']['id']
                        dv.cantidadp = int(i['cantidad'])
                        x = Producto.objects.get(pk=i['producto']['id'])
                        dv.pvp_actual = float(x.pvp)
                        x.stock = x.stock - int(i['cantidad'])
                        dv.subtotalp = float(i['subtotal'])
                        x.save()
                        dv.save()
                        inv = Inventario.objects.filter(
                            producto_id=i['producto']['id'],
                            estado=1)[:i['cantidad']]
                        for itr in inv:
                            w = Inventario.objects.get(pk=itr.id)
                            w.estado = 0
                            w.venta_id = c.id
                            w.save()
                        for s in datos['servicios']:
                            dvs = Detalle_venta_servicios()
                            dvs.venta_id = c.id
                            dvs.servicio_id = s['id']
                            dvs.cantidads = int(s['cantidad'])
                            dvs.subtotals = float(s['subtotal'])
                            dvs.pvp_actual_s = float(s['pvp'])
                            dvs.save()
                        data['id'] = c.id
                        data['resp'] = True
                elif datos['productos']:
                    for i in datos['productos']:
                        dv = Detalle_venta()
                        dv.venta_id = c.id
                        dv.producto_id = i['producto']['id']
                        dv.cantidadp = int(i['cantidad'])
                        dv.subtotalp = float(i['subtotal'])
                        x = Producto.objects.get(pk=i['producto']['id'])
                        dv.pvp_actual = float(x.pvp)
                        x.stock = x.stock - int(i['cantidad'])
                        x.save()
                        inv = Inventario.objects.filter(
                            producto_id=i['producto']['id'],
                            estado=1)[:i['cantidad']]
                        for itr in inv:
                            x = Inventario.objects.get(pk=itr.id)
                            x.estado = 0
                            x.venta_id = c.id
                            x.save()
                            dv.save()
                    data['id'] = c.id
                    data['resp'] = True
                else:
                    for i in datos['servicios']:
                        dvs = Detalle_venta_servicios()
                        dvs.venta_id = c.id
                        dvs.servicio_id = s['id']
                        dvs.cantidads = int(s['cantidad'])
                        dvs.subtotals = float(s['subtotal'])
                        dvs.pvp_actual_s = float(s['pvp'])
                        dvs.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")