# 🚩 Ejercicio 1 · El recibo en cero

**Clase 1 — La web y los fundamentos de PHP 8**
· Dificultad: 🟢 introductorio · Tiempo estimado: 30–45 min

---

## La situación

El Liquidador tiene que emitir el recibo de sueldo de Ana Gómez. El programa está
armado: lee los conceptos, arma el recibo y lo imprime prolijo.

Pero **sale todo en cero**.

```
  Total haberes                                   $0,00
  Total descuentos                                $0,00
  NETO A COBRAR                                   $0,00
```

Alguien dejó las cuatro funciones que hacen las cuentas sin implementar. Tu trabajo
es completarlas para que el recibo dé bien.

## Tu misión

Editar **un solo archivo**: `src/calculos.php`. Nada más.

Cuando las cuatro funciones estén bien, el programa te va a entregar una **bandera**
así:

```
ipap{c01-xxxxxxxxxx}
```

Esa bandera es tu comprobante: **no está escrita en ningún archivo**. Se calcula a
partir de los resultados de *tus* funciones, así que la única forma de obtenerla es
que las cuentas den bien de verdad. Podés leer todo el código del verificador —de
hecho, está buenísimo que lo hagas— y aun así no vas a poder inventarla.

## Cómo correrlo

Desde esta carpeta:

```bash
docker compose run --rm ejercicio
```

Corrélo las veces que quieras. Cada vez te dice qué pasos ya están bien:

```
  ✔  Paso 1 · total_haberes()     suma solo los 'haber'
  ✘  Paso 2 · total_descuentos()  suma solo los 'descuento'
```

> **Sin Docker:** si tenés PHP instalado, funciona igual con
> `cd src && php recibo.php`

## Antes de empezar: leé los datos

`src/datos.php` tiene los siete conceptos del recibo. **Miralos con atención antes de
escribir una línea.** Ahí está la mitad del ejercicio: hay algo que no es ni un haber
ni un descuento, y si lo tratás como si lo fuera, las cuentas te van a dar mal aunque
el código parezca correcto.

## Lo que vas a practicar

Todo salió de la Clase 1, nada más:

| Paso | Concepto de la clase |
|------|----------------------|
| 1 y 2 | Recorrer un **array** con `foreach` y comparar con `===` |
| 3 | **Reutilizar** funciones en vez de repetir código |
| 4 | **`match`**, la novedad de PHP 8 — y por qué el `default` importa |

## Si te trabás

1. Empezá por el paso 1 y no sigas hasta verlo en ✔. Los pasos son acumulativos.
2. Para ver qué está devolviendo tu función mientras la escribís:
   `var_dump($conceptos);` al principio, y mirá la salida.
3. El paso 4 se resuelve en 5 líneas. Si estás escribiendo `if` encadenados,
   volvé a la diapositiva de `match` de la Clase 1.
4. El signo del tercer caso (`?`) no es un capricho: es lo que devuelve `match`
   cuando el tipo no es ninguno de los dos esperados. Fijate en `datos.php` cuál es.

## Cuando lo resuelvas

Guardá tu bandera. Si el curso lleva registro de ejercicios resueltos, es lo único
que hay que entregar: no hace falta mandar el código.

---

> 💡 **Por qué este ejercicio y no otro:** el recibo de sueldo es el corazón del
> proyecto que vamos a construir durante las 12 clases. Estas cuatro funciones son,
> en versión mínima, la lógica que en la Clase 7 va a terminar siendo un
> `LiquidacionService` hecho y derecho. Empezamos por el final del hilo.
