Esempio n. 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")
Esempio n. 2
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')
Esempio n. 3
0
	def get_user_template(self,request):
		if request.user.empleado.tipo == GERENTE:

			sucursales = Venta.objects.values(
				'sucursal_vehiculo__sucursal__nombre','sucursal_vehiculo__sucursal__ciudad').annotate(total=Sum('precio_venta'))

			#print "sucursales", sucursales

			num_empleados = Empleado.objects.all().count()

			valor_ventas = Venta.dinero_acumulado(Venta)

			valor_ordenes_de_trabajo = FacturaOrdenDeTrabajo.dinero_en_facturas(FacturaOrdenDeTrabajo)

			vendedores = Empleado.objects.filter(tipo=VENDEDOR).annotate(
				num_ventas=Count('ventas')).order_by('-num_ventas')

			sucursales_vehiculos = SucursalVehiculo.objects.annotate(
				num_ventas=Count('ventas')).order_by('-num_ventas')
			
			context = {
				'ventas':sucursales,
				'valor_ordenes_de_trabajo':valor_ordenes_de_trabajo,
				'valor_ventas':valor_ventas,
				'num_empleados':num_empleados,
				'vendedores':vendedores,
				'sucursales_vehiculos':sucursales_vehiculos
				}
			
			return render_to_response(
				'cuenta/perfil_gerente.html',
				context,
				context_instance=RequestContext(request))

		elif request.user.empleado.tipo == VENDEDOR:
			ventasVendedor = Venta.objects.filter(empleado=request.user.empleado).values("empleado").annotate(cantidad=Count('empleado_id')).order_by(Coalesce('cantidad', 'cantidad').desc())
		 	cantidadVentas=ventasVendedor[0]['cantidad']
		 	cantidadCotizacion=Cotizacion.objects.filter(empleado=request.user.empleado).values("empleado").annotate(cantidadCo= Count('empleado_id')).order_by(Coalesce('cantidadCo', 'cantidadCo').desc())
		 	numeroCotizaciones=cantidadCotizacion[0]['cantidadCo']
		 	sucursalEmpleado=request.user.empleado.sucursal
		 	cantidadVehiculos= SucursalVehiculo.objects.filter(sucursal=sucursalEmpleado).values("sucursal").annotate(cantidad= Sum('cantidad')).order_by(Coalesce('cantidad', 'cantidad').desc())
		 	numeroVehiculos=cantidadVehiculos[0]['cantidad']
		 	cotizacionesEmpleado= Cotizacion.objects.filter(empleado=request.user.empleado)

		 	#print cotizaciones.cliente

		 	context = {
				'cantidadVentas':cantidadVentas,
				'numeroCotizaciones':numeroCotizaciones,
				'numeroVehiculos':numeroVehiculos,
				'cotizacionesEmpleado':cotizacionesEmpleado

				}
			return render_to_response(
				'cuenta/perfil_vendedor.html',
				context,
				context_instance=RequestContext(request))
		
		elif request.user.empleado.tipo == JEFE_TALLER: 
		
			return render_to_response(
				'cuenta/perfil_jefe_taller.html',
				context_instance=RequestContext(request))
Esempio n. 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()
                 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')
Esempio n. 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_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')
Esempio n. 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')
Esempio n. 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")
Esempio n. 8
0
	def get_user_template(self,request):
		if request.user.empleado.tipo == GERENTE:

			sucursales = Venta.objects.values(
				'sucursal_vehiculo__sucursal__nombre','sucursal_vehiculo__sucursal__ciudad').annotate(total=Sum('precio_venta'))

			#print "sucursales", sucursales

			num_empleados = Empleado.objects.all().count()

			valor_ventas = Venta.dinero_acumulado(Venta)

			valor_ordenes_de_trabajo = FacturaOrdenDeTrabajo.dinero_en_facturas(FacturaOrdenDeTrabajo)

			vendedores = Empleado.objects.filter(tipo=VENDEDOR).annotate(
				num_ventas=Count('ventas')).order_by('-num_ventas')

			sucursales_vehiculos = SucursalVehiculo.objects.annotate(
				num_ventas=Count('ventas')).order_by('-num_ventas')

			context = {
				'ventas':sucursales,
				'valor_ordenes_de_trabajo':valor_ordenes_de_trabajo,
				'valor_ventas':valor_ventas,
				'num_empleados':num_empleados,
				'vendedores':vendedores,
				'sucursales_vehiculos':sucursales_vehiculos
				}

			return render_to_response(
				'cuenta/perfil_gerente.html',
				context,
				context_instance=RequestContext(request))

		elif request.user.empleado.tipo == VENDEDOR:
			ventasVendedor=None
			cantidadVentas=0
			cantidadCotizacion=None
			numeroCotizaciones=0
			cantidadVehiculos=None
			numeroVehiculos=0

			try:
				ventasVendedor = Venta.objects.filter(empleado=request.user.empleado).values("empleado").annotate(cantidad=Count('empleado_id')).order_by(Coalesce('cantidad', 'cantidad').desc())
		 		cantidadVentas=ventasVendedor[0]['cantidad']
			except IndexError:
				cantidadVentas=0
			try:
				cantidadCotizacion=Cotizacion.objects.filter(empleado=request.user.empleado).values("empleado").annotate(cantidadCo= Count('empleado_id')).order_by(Coalesce('cantidadCo', 'cantidadCo').desc())
		 		numeroCotizaciones=cantidadCotizacion[0]['cantidadCo']
			except IndexError:
				numeroCotizaciones=0
			try:
				sucursalEmpleado=request.user.empleado.sucursal
		 		cantidadVehiculos= SucursalVehiculo.objects.filter(sucursal=sucursalEmpleado).values("sucursal").annotate(cantidad= Sum('cantidad')).order_by(Coalesce('cantidad', 'cantidad').desc())
		 		numeroVehiculos=cantidadVehiculos[0]['cantidad']
			except IndexError:
				numeroVehiculos=0
			cotizacionesEmpleado= Cotizacion.objects.filter(empleado=request.user.empleado)

		 	#print cotizaciones.cliente

		 	context = {
				'cantidadVentas':cantidadVentas,
				'numeroCotizaciones':numeroCotizaciones,
				'numeroVehiculos':numeroVehiculos,
				'cotizacionesEmpleado':cotizacionesEmpleado

				}
			return render_to_response(
				'cuenta/perfil_vendedor.html',
				context,
				context_instance=RequestContext(request))

		elif request.user.empleado.tipo == JEFE_TALLER:

			return HttpResponseRedirect(reverse('orden_de_trabajo:listar'))