# language: es
# Fuente: album/book/ops-templates/backoffice/03-gestion-servicios.md
# Drive: 08. IT y Producto/Catalogo Servicios
# Tests Backend: pytest tests/contracts/productos/test_services.py
# Tests Frontend: npx playwright test admin-services.spec.ts

Característica: Gestion de servicios y precios

  Como administrador
  Quiero gestionar el catalogo de servicios
  Para mantener la oferta actualizada

  Antecedentes:
    Dado que estoy logueado como administrador
    Y estoy en la seccion "Servicios"

  # ============================================
  # VER CATALOGO DE SERVICIOS
  # ============================================

  Escenario: Ver listado de servicios
    Cuando cargo la pagina de servicios
    Entonces deberia ver todos los servicios organizados por categoria
    Y cada servicio deberia mostrar:
      | campo           |
      | Nombre          |
      | Categoria       |
      | Tipo mascota    |
      | Precio actual   |
      | Estado          |

  Esquema del escenario: Filtrar servicios
    Cuando filtro por <filtro> "<valor>"
    Entonces solo deberia ver servicios que coincidan

    Ejemplos:
      | filtro         | valor       |
      | categoria      | Vacunacion  |
      | tipo_mascota   | Gato        |
      | estado         | Activo      |

  # ============================================
  # CREAR Y EDITAR SERVICIOS
  # ============================================

  Escenario: Agregar nuevo servicio
    Cuando hago click en "Agregar servicio"
    Y completo los datos:
      | campo            | valor                           |
      | Nombre           | Vacuna Quintuple Felina         |
      | Descripcion      | Protege contra 5 enfermedades   |
      | Categoria        | Vacunacion                      |
      | Tipo mascota     | Gato                            |
      | Precio           | 15000                           |
      | Duracion         | 30 minutos                      |
    Y guardo el servicio
    Entonces el servicio deberia crearse
    Y deberia aparecer en el turnero para gatos

  Escenario: Editar servicio existente
    Dado que existe el servicio "Consulta clinica"
    Cuando abro el servicio
    Y cambio la descripcion
    Y guardo
    Entonces la descripcion deberia actualizarse
    Y las solicitudes existentes no deberian afectarse

  Escenario: Desactivar servicio
    Dado que existe el servicio "Servicio Antiguo"
    Cuando abro el servicio
    Y hago click en "Desactivar"
    Y confirmo
    Entonces el servicio no deberia aparecer en el turnero
    Y las solicitudes existentes deberian mantenerse

  # ============================================
  # GESTION DE PRECIOS
  # ============================================

  Escenario: Actualizar precio de servicio
    Dado que "Consulta clinica" tiene precio actual de 10000
    Cuando abro el servicio
    Y voy a la seccion "Precios"
    Y hago click en "Agregar precio"
    Y ingreso nuevo precio 12000
    Y selecciono fecha de vigencia "01/02/2024"
    Y guardo
    Entonces deberia crearse el nuevo precio
    Y el precio anterior deberia quedar en historial
    Y el nuevo precio deberia aplicar desde la fecha indicada

  Escenario: Ver historial de precios
    Dado que un servicio tuvo varios cambios de precio
    Cuando veo la seccion "Precios"
    Entonces deberia ver historial con:
      | campo         |
      | Precio        |
      | Fecha desde   |
      | Fecha hasta   |
      | Usuario       |

  Regla: El precio se congela al crear la solicitud

    Escenario: Cambio de precio no afecta solicitudes existentes
      Dado que hay una solicitud pendiente con "Consulta clinica" a 10000
      Cuando cambio el precio de "Consulta clinica" a 12000
      Entonces la solicitud deberia mantener el precio de 10000

  # ============================================
  # CONFIGURAR COMBOS Y DEPENDENCIAS
  # ============================================

  Escenario: Crear combo de servicios
    Cuando voy a "Combos"
    Y hago click en "Agregar combo"
    Y configuro:
      | campo            | valor                    |
      | Nombre           | Plan Preventivo Felino   |
      | Servicios        | Vacunacion, Desparasitacion, Antipulgas |
      | Precio combo     | 25000                    |
      | Descuento        | 20%                      |
    Y guardo
    Entonces el combo deberia crearse
    Y deberia aplicarse automaticamente cuando se seleccionen esos servicios

  Escenario: Configurar servicio dependiente
    Dado que "Vacunacion" requiere "Consulta clinica"
    Cuando configuro la dependencia
    Entonces al seleccionar "Vacunacion" en el turnero
    Y "Consulta clinica" deberia agregarse automaticamente
    Y no deberia poder quitarse
