# API REST - Fivent Taller para Flutter

Versión: `3.0-flutter-roles`

Esta carpeta API está preparada para una app Flutter multirol:

- `superadmin`: controla todos los talleres.
- `admin_taller`: controla solo su taller y puede ver costos/totales.
- `recepcion`, `mecanico`, `cajero`: roles operativos con acceso limitado.
- `cliente`: solo ve sus propios vehículos, órdenes e historial.

## Regla importante de seguridad

Los costos y totales globales se entregan solo a:

```text
superadmin
admin_taller
```

Los trabajadores y clientes no reciben reportes financieros globales desde la API.
Esto no se oculta solo en Flutter: se bloquea desde PHP.

## Instalación

Reemplaza completa esta carpeta:

```text
C:\xampp\htdocs\fivent_taller\api
```

por la carpeta `api` de este ZIP.

## Probar API

```text
http://localhost/fivent_taller/api/test.php
```

## Login

```http
POST /fivent_taller/api/login.php
Content-Type: application/json

{
  "login": "superadmin",
  "password": "Admin12345",
  "dispositivo": "Flutter Android"
}
```

Respuesta:

```json
{
  "ok": true,
  "message": "Login correcto",
  "data": {
    "token": "...",
    "token_type": "Bearer",
    "usuario": {
      "rol": "superadmin",
      "permisos": {
        "ver_totales": true
      }
    }
  }
}
```

## Header para endpoints protegidos

```http
Authorization: Bearer TU_TOKEN
```

## Endpoints incluidos

```text
GET  /api/test.php
POST /api/login.php
POST /api/logout.php
GET  /api/perfil.php
GET  /api/dashboard.php
GET  /api/talleres.php           Solo superadmin
GET  /api/clientes.php
GET  /api/vehiculos.php
GET  /api/historial.php?placa=P123ABC
GET  /api/ordenes.php
GET  /api/ordenes.php?id=1
POST /api/actualizar_estado.php
GET  /api/cotizaciones.php
GET  /api/pagos.php              Admin/superadmin/cajero
GET  /api/inventario.php
GET  /api/reportes.php           Solo superadmin/admin_taller
```

## Ejemplo actualizar estado

```http
POST /api/actualizar_estado.php
Authorization: Bearer TU_TOKEN
Content-Type: application/json

{
  "orden_id": 1,
  "estado": "reparacion",
  "comentario": "Actualizado desde Flutter"
}
```

## Filtros útiles

```text
/api/vehiculos.php?placa=P123ABC
/api/ordenes.php?activas=1
/api/ordenes.php?estado=listo
/api/cotizaciones.php?estado=pendiente
/api/inventario.php?tipo=bajo_stock
/api/inventario.php?tipo=movimientos
/api/reportes.php?tipo=ingresos_dia&fecha=2026-05-25
/api/reportes.php?tipo=ingresos_mes&mes=2026-05
```

## Nota

Para que `inventario.php?tipo=movimientos` funcione, debes tener importada la tabla:

```text
movimientos_repuestos
```

que se creó con el módulo de inventario.
