Funciones y Procedimientos para la Gestión de Clientes y Ventas
Estructura de Búsqueda de Clientes
La función buscar_cliente
permite localizar un cliente específico en una lista (clientes
) basándose en su número de documento.
def buscar_cliente(doc):
cliente_buscado = None
for cliente in clientes:
if cliente["documento"] == doc:
cliente_buscado = cliente
break
return cliente_buscado
Estructura de Registro de Clientes
La función ingresar_cliente
solicita al usuario el número de documento y verifica si ya existe un cliente con ese documento. Si no existe, solicita el nombre y el teléfono, crea un nuevo registro de cliente y lo agrega a la lista clientes
. Si ya existe, muestra un mensaje indicando que el cliente ya está registrado.
def ingresar_cliente():
doc = input("Ingrese el documento: ")
cliente = buscar_cliente(doc)
if cliente == None:
# Registro del nuevo cliente. AGREGAR TODOS LOS REQUISITOS.
nom = input("Ingrese el nombre: ")
tel = input("Ingrese el telefono: ")
nuevo_cliente = {"nombre": nom, "documento": doc, "telefono": tel}
clientes.append(nuevo_cliente)
print("Registro exitoso")
else:
print("Ya existe un cliente con el documento", doc)
Selección de Paquete (con Validación)
La función paquete
solicita al usuario que ingrese el tipo de paquete (premium o basico). Valida la entrada y solo continúa si el tipo de paquete es válido. Luego, solicita el nombre del paquete.
def paquete():
tipo_de_paquete = input("Tipo de Paquete: ").lower()
if tipo_de_paquete not in ["premium", "basico"]:
print("Tipo de paquete inválido.")
return
nombre_del_paquete = input("Nombre del Paquete: ")
Solicitud de Fecha
La función solicitar_fecha
pide al usuario que ingrese el año, mes y día, y devuelve un objeto date
.
from datetime import date
def solicitar_fecha():
anio = int(input("Ingrese el año: "))
mes = int(input("Ingrese el mes: "))
dia = int(input("Ingrese el día: "))
fecha = date(anio, mes, dia)
return fecha
Filtrado de Pedidos entre Fechas
La función pedidos_entre_fechas
filtra los pedidos de un cliente específico dentro de un rango de fechas proporcionado por el usuario. Muestra las fechas de los pedidos encontrados y el total de pedidos en ese rango. Si no hay pedidos, o si el cliente no existe, muestra un mensaje apropiado.
def pedidos_entre_fechas():
doc = input("Ingrese documento: ")
cliente = buscar_cliente(doc)
if cliente != None:
cont = 0
lista_pedidos = []
print("Ingrese fecha desde: ")
fecha_desde = solicitar_fecha()
print("Ingrese fecha hasta: ")
fecha_hasta = solicitar_fecha()
for pedido in pedidos:
if pedido["cliente"]["documento"] == doc and fecha_desde <= pedido["fecha"] and pedido["fecha"] <= fecha_hasta:
cont += 1
lista_pedidos.append(pedido)
if len(lista_pedidos) == 0:
print("No hay pedidos registrados para el cliente de documento", doc, "entre las fechas", fecha_desde, "y", fecha_hasta)
else:
print("Fechas de sus pedidos: ")
for pedido in lista_pedidos:
print(pedido["fecha"])
print("Total de pedidos realizados:", cont)
else:
print("No existe un cliente con el documento", doc)
Clientes con Pedidos Superiores a un Monto
La función mostrar_clientes_pedidos_mayor_monto
muestra la información (nombre y teléfono) de los clientes cuyos pedidos superan un monto especificado por el usuario.
def mostrar_clientes_pedidos_mayor_monto():
monto = int(input("Ingrese un monto: "))
lista_clientes = []
for pedido in pedidos:
if pedido["total"] >= monto:
if pedido["cliente"] not in lista_clientes:
lista_clientes.append(pedido["cliente"])
if not lista_clientes:
print("No hay clientes con pedidos cuyo monto sea superior a", monto)
else:
print("Clientes con pedidos superiores al monto:")
for cliente in lista_clientes:
print("Nombre:", cliente["nombre"])
print("Teléfono:", cliente["telefono"])
Consultas Pendientes de Resolución
La función consultas_sin_resolver
identifica y muestra los nombres de los clientes que tienen consultas en estado «pendiente».
def consultas_sin_resolver():
lista_clientes = []
for consulta in consultas:
if consulta["estado"] == "pendiente":
lista_clientes.append(consulta["cliente"])
if len(lista_clientes) != 0:
cont = 0
for cliente in lista_clientes:
cont += 1
print(cont, "----", cliente["nombre"])
else:
print("No hay ningún cliente con consultas pendientes")
Cálculo de Porcentaje de Vehículos Usados y 0km
La función porcentaje_usados_0km
calcula y muestra el porcentaje de vehículos usados y 0km en una lista de automóviles (automoviles
).
def porcentaje_usados_0km():
print("Porcentajes de usados y de nuevos")
# Inicializa variables para contar la cantidad de vehículos usados y con 0 kilómetros
cantidad_usados = 0
cantidad_cero_km = 0
for vehiculo in automoviles:
if vehiculo["kms"] == 0:
# Incrementa la cantidad de vehículos con 0 kilómetros
cantidad_cero_km += 1
else:
# Incrementa la cantidad de vehículos usados
cantidad_usados += 1
# Calcula el porcentaje de vehículos con 0 kilómetros respecto al total de vehículos
porcentaje_cero_km = cantidad_cero_km * 100 / len(automoviles)
# Calcula el porcentaje de vehículos usados respecto al total de vehículos
porcentaje_usados = cantidad_usados * 100 / len(automoviles)
print("El porcentaje de vehiculos usados es:", porcentaje_usados)
print("El porcentaje de vehiculos cero kilometro es:", porcentaje_cero_km)
Cálculo del Monto Total de Ventas por Mes y Año
La función monto_total_ventas
calcula el monto total de las ventas de vehículos 0km realizadas en un mes y año específicos, proporcionados por el usuario.
def monto_total_ventas():
mes = int(input("Ingrese el mes: "))
anio = int(input("Ingrese el anio"))
monto_total = 0
for venta in ventas:
if venta["fecha"].month == mes and venta["fecha"].year == anio and venta["vehiculo"]["kms"] == 0:
monto_total += venta["monto"]
print("El monto total de las ventas ocurridas en el año", anio, "y en el mes", mes, "fue de:", monto_total)