def cancelar_trato(request, id_producto): if request.method == "POST": producto = Productos.objects.get(pk=id_producto) f_p = FinTratoForm(request.POST, instance=producto) if f_p.is_valid(): p = f_p.save() p.estado = "CT" p.save() clientes = Historial.objects.filter(producto_id=p.pk) cliente_id = 1 if len(clientes) > 0: cliente_id = clientes[0].cliente_id #guardamos un historial de la accion realizada save_historial(request.user.id, p.id, cliente_id, "Rechazada la compra del producto..") vaciar_sesison_compra(request) return HttpResponse(reverse("tienda")) else: p = Productos.objects.get(pk=id_producto) p.estado = "CT" p.save() clientes = Historial.objects.filter(producto_id=p.pk) cliente_id = 1 if len(clientes) > 0: cliente_id = clientes[0].cliente_id #guardamos un historial de la accion realizada save_historial(request.user.id, p.id, cliente_id, "Rechazada la compra del producto..") vaciar_sesison_compra(request) return redirect("lista_productos", estado="TD")
def facturar(request): if request.method == "POST": venta = Ventas() if request.session["accion_ventas_dni"] == "ticket": venta.cliente = None else: venta.cliente_id = request.session["accion_ventas_pk_cliente"] venta.empleado_id = request.user.pk venta.empleado = request.user.get_full_name() venta.forma_pago = request.POST["forma_pago"] venta.entrega = request.POST["entrega"] venta.save() lineas = json.loads(request.POST["lineas"]) for l in lineas: producto = Productos.objects.get(ns_imei=l["imei"]) producto.set_vendido() producto.save() if producto.es_unico: #guardar historial del producto unico save_historial(request.user.pk, request.session["accion_ventas_pk_cliente"], producto.pk, "Producto vendido") linea = LineasVentas() linea.venta_id = venta.id linea.ns_imei = l["imei"] linea.can = l["can"] linea.detalle = producto.get_detalle_factura() linea.codigo_compra = l["codigo_compra"] linea.descuento = l["descuento"] linea.p_unidad = l["total_unidad"] linea.save() vaciar_session_ventas(request) return HttpResponse(reverse("get_factura_by_id", args=[venta.pk]))
def cancelar_compra(request): if request.method == "POST": try: producto = Productos.objects.get( pk=request.session["accion_comprar_pk_producto"]) producto.tipo_id = request.POST["tipo"] producto.precio_compra = request.POST["precio_compra"] producto.estado = "CT" producto.save() except: return HttpResponse(reverse("tienda")) estan_todos = True estan_todos = estan_todos and "accion_comprar_pk_cliente" in request.session estan_todos = estan_todos and "accion_comprar_pk_producto" in request.session estan_todos = estan_todos and "accion_comprar_pk_modelo" in request.session if estan_todos: #Guardamos historial de la cancelacion de la comprar save_historial( request.user.id, request.session["accion_comprar_pk_cliente"], request.session["accion_comprar_pk_producto"], "Compra cancelada, producto en posesion del cliente") vaciar_sesison_compra(request) return HttpResponse(reverse("tienda")) else: return HttpResponse(reverse("en_construccion"))
def cp_productos(request, id_modelo=-1): if "accion_comprar_dni" in request.session: if request.method != "POST" and id_modelo < 0: f_modelo = ModelosForm() return render(request, 'tienda/compras/find_modelos.html', {"form": f_modelo}) elif request.method != "POST" and id_modelo > 0: request.session["accion_comprar_pk_modelo"] = id_modelo try: modelo = Modelos.objects.get(pk=id_modelo) except: modelo = Modelos() tipo = "no_existe" form = CPProductosForm() return render( request, 'tienda/compras/productos.html', { 'form': form, 'titulo': "Datos del producto", 'modelo': modelo, 'tipo': tipo }) else: try: producto = Productos.objects.get( ns_imei=request.POST.get("ns_imei")) form = CPProductosForm(request.POST, instance=producto) except Exception as p: form = CPProductosForm(request.POST) if form.is_valid(): producto = form.save(commit=False) if "accion_comprar_pk_modelo" not in request.session: vaciar_sesison_compra(request) return redirect("tienda") producto.modelo_id = request.session[ "accion_comprar_pk_modelo"] producto.estado = "TD" #tipos = Tipos.objects.all() #if len(tipos) > 0: # tipo = tipos[0].pk #else: # tipo = -1 #producto.tipo_id = tipo producto.precio_compra = producto.modelo.precio_usado producto.save() request.session["accion_comprar_pk_producto"] = producto.pk save_historial(request.user.pk, request.session["accion_comprar_pk_cliente"], request.session["accion_comprar_pk_producto"], "Producto comprado sin testear") form = ProductosForm(instance=producto) return render( request, 'tienda/compras/compras.html', { 'form': form, 'titulo': "Datos del producto", "form_error": form.errors, "id_modelo": request.session["accion_comprar_pk_modelo"] }) else: return redirect("tienda")
def send_para_tester(request, id_modelo): if "accion_comprar_dni" in request.session: try: producto = Productos.objects.get( ns_imei=request.POST.get("ns_imei")) form = CPProductosForm(request.POST, instance=producto) except Exception as p: form = CPProductosForm(request.POST) if form.is_valid(): producto = form.save(commit=False) producto.modelo_id = request.session["accion_comprar_pk_modelo"] producto.estado = "OS" producto.tipo_id = 1 producto.precio_compra = producto.modelo.precio_usado producto.save() request.session["accion_comprar_pk_producto"] = producto.pk #Guardamos el histarial de la accion Realizada save_historial(request.user.pk, request.session["accion_comprar_pk_cliente"], producto.pk, "Entrada para testeo posible compra") #Creamos el documento de recepción de terminal. doc = save_doc_testeo(request.user.pk, request.session["accion_comprar_pk_cliente"], producto.pk) #Guradamos el documen to para firmar save_doc_firmas(request.user.pk, doc.id, "OS") vaciar_sesison_compra(request) return JsonResponse({"result": True}) else: return redirect("tienda")
def cambiar_estado(request, id): if request.method == "POST": producto = Productos.objects.get(pk=id) form = EstadoProductosForm(request.POST, instance=producto) producto = form.save() filter_query = Productos.objects.filter(pk=id) estado = producto.estado h = Historial.objects.filter(producto__id=id)[0] save_historial(request.user.pk, h.cliente_id, producto.pk, "Cambio de estado del producto.") if estado in ["VT", "ST"]: ch = "disponibles" elif estado in ["OK", "PD", "RP"]: ch = "taller" else: ch = None return render( request, "almacen/productos/lista_productos.html", { 'query': filter_query, "estado": 'all', "form_estado": EstadoProductosForm(), "ch": ch }) else: return redirect("tienda")
def guardar_compra(cliente_id, producto_id, user_id, detalle): compra = Compras() compra.vendedor_id = cliente_id compra.tipo_vendedor = 'CL' compra.producto_id = producto_id compra.usuario_id = user_id compra.save() #Guardamos el historial save_historial(user_id, cliente_id, user_id, detalle) return compra
def modificar_lineas_ventas(request, venta): lineas = LineasVentas.objects.filter(venta__pk=venta.pk) for l in lineas: try: producto = Productos.objects.get(ns_imei=l.ns_imei) producto.estado = 'VT' producto.save() if producto.es_unico: #guardar historial del producto unico save_historial(request.user.pk, venta.cliente_id, producto.pk, "Producto modificado en factura o devuelto") except: pass l.delete()
def set_reparado(request, id_producto, estado='OK'): pres = Presupuesto.objects.filter(producto__pk=id_producto) if len(pres) > 0: pres = pres[0] cliente = pres.cliente producto = Productos.objects.get(pk=id_producto) producto.estado = "OK" producto.save() #Guardamos el historial de la accion save_historial(request.user.pk, cliente.pk, id_producto, "Producto reparado...") threading.Thread(target=send_men_rep, args=(cliente, estado,)).start() return redirect("lista_productos", estado='RP')
def modificar_factura(request, id_venta): if request.method == "POST": lineas = json.loads(request.POST["lineas"]) venta = Ventas.objects.get(pk=id_venta) modificar_lineas_ventas(request, venta) if len(lineas) <= 0: LineasVentas.objects.filter(venta__pk=venta.pk).delete() venta.delete() else: venta = Ventas.objects.get(pk=id_venta) venta.cliente_id = request.POST["cliente_id"] venta.forma_pago = request.POST["forma_pago"] venta.save() for l in lineas: try: producto = Productos.objects.get(ns_imei=l["imei"]) producto.set_vendido() producto.save() detalle = producto.get_detalle_factura() if producto.es_unico: #guardar historial del producto unico save_historial(request.user.pk, request.POST["cliente_id"], producto.pk, "Producto vendido") except: if "detalle" in l: detalle = l['detalle'] else: detalle = "" linea = LineasVentas() linea.venta_id = venta.id linea.ns_imei = l["imei"] linea.can = l["can"] linea.detalle = detalle linea.codigo_compra = l["codigo_compra"] linea.descuento = l["descuento"] linea.p_unidad = l["total_unidad"] linea.save() return HttpResponse(reverse("listado_facturas"))
def cp_productos_proveedor(request, id_modelo=-1): if "accion_comprar_cif" in request.session: if request.method != "POST" and id_modelo < 0: f_modelo = ModelosForm() return render(request, 'proveedor/find_modelos.html', {"form": f_modelo}) elif request.method != "POST" and id_modelo > 0: request.session["accion_comprar_pro_pk_modelo"] = id_modelo try: modelo = Modelos.objects.get(pk=id_modelo) except: modelo = Modelos() tipo = "no_existe" producto = Productos() producto.modelo_id = modelo.pk producto.precio_compra = modelo.precio_usado tipos = Tipos.objects.all() #producto.tipo_id = tipos[0].pk if len(tipos) > 0 else -1 form = ProductosForm(instance=producto) return render( request, 'proveedor/productos.html', { 'form': form, 'titulo': "Datos del producto", 'modelo': modelo, 'tipo': tipo }) else: try: producto = Productos.objects.get( ns_imei=request.POST.get("ns_imei")) form = ProductosForm(request.POST, instance=producto) except Exception as p: form = ProductosForm(request.POST) producto_str = "" if form.is_valid(): producto = form.save(commit=False) if "accion_comprar_pro_pk_modelo" not in request.session: vaciar_sesison_compra_proveedor(request) return redirect("tienda") producto.modelo_id = request.session[ "accion_comprar_pro_pk_modelo"] producto.estado = "ST" producto.save() request.session["accion_comprar_pro_pk_producto"] = producto.pk save_historial( request.user.pk, request.session["accion_comprar_pk_proveedor"], request.session["accion_comprar_pro_pk_producto"], "Producto comprado a un proveedor") producto_str = Productos.objects.get( pk=producto.pk).modelo.nombre form = ProveedorCompra() return render( request, 'proveedor/compras.html', { 'form': form, 'titulo': "Datos del producto", "form_error": form.errors, "producto_str": producto_str, "id_modelo": request.session["accion_comprar_pro_pk_modelo"] }) else: return redirect("tienda")