# Vencimiento original y último día de presentación

La fecha del ente de control (`due_date`) se conserva exactamente como se ingresa, incluso si cae en sábado, domingo o festivo. La fecha de presentación (`presentation_due_date`) toma el primer día laborable desde esa fecha, según el calendario de la cuenta.

- Sábado o domingo → lunes, si es laborable.
- Lunes festivo → martes, si es laborable.
- Viernes festivo → lunes, si es laborable.
- Varios festivos consecutivos → primer día laborable posterior.

El formulario muestra inmediatamente la fecha de presentación. La ficha muestra ambas cuando difieren. Avisos, vencidas, filtros, calendario y resúmenes utilizan presentación. La fecha interna continúa independiente y laborable, salvo tareas Extra; debe estar entre inicio y presentación. Las recurrencias conservan la fecha nominal del ente, sin sustituirla por el día laborable.

Al guardar festivos se recalculan las tareas abiertas de esa cuenta. Las tareas cerradas conservan su fecha de presentación registrada. El cálculo usa los festivos configurados en el sistema.

## Publicación

Archivos:

- `database/migrations/2026_09_13_000006_add_task_presentation_deadline.php`
- `app/Services/Work/BusinessCalendar.php`
- `app/Models/Work/WorkTask.php`
- `app/Services/Work/WorkTaskService.php`
- `app/Services/Work/WorkTaskDailyCapacity.php`
- `app/Services/Work/WorkTaskDashboard.php`
- `app/Services/Work/PersonalTaskDashboard.php`
- `app/Services/Work/WorkTaskNotifier.php`
- `app/Services/Dashboard/DashboardGeneralService.php`
- `app/Filament/Pages/UserTasks.php`
- `app/Filament/Pages/Holidays.php`
- `resources/views/filament/pages/user-tasks.blade.php`
- `resources/views/filament/pages/partials/user-task-detail.blade.php`
- `resources/views/filament/pages/partials/user-tasks-board.blade.php`
- `resources/views/filament/pages/partials/personal-task-dashboard.blade.php`
- `resources/views/filament/pages/partials/task-labels.blade.php`
- `resources/views/mail/work-task-notice.blade.php`

```sh
php artisan migrate --path=database/migrations/2026_09_13_000006_add_task_presentation_deadline.php --force
php artisan view:clear
php artisan queue:restart
```
