fix(tz): servidor en America/Panama + edit/delete de horas registradas

TIMEZONE
* OS: timedatectl set-timezone America/Panama (era UTC). El reporte
  de horas salía vacío para entries creados después de las 19:00 hora
  Panama porque el filtro "este mes" del frontend usa local time pero
  los datos se guardaban en UTC del día siguiente.
* MariaDB y PHP ahora corren en hora Panamá:
  - src/Db.php hace SET time_zone='-05:00' por conexión.
  - src/Config.php hace date_default_timezone_set('America/Panama').
* Migración 009: convierte timestamps existentes UTC → Panama usando
  CONVERT_TZ en todas las tablas con DATETIME (users, escrituras_*,
  tramites_*).

EDIT/DELETE DE HORAS
* Backend tramites/api.php: nuevos endpoints
  - PUT  ?action=update_hours: cambia abogado, hrs y descripción
  - DELETE ?action=delete_hours
  Permisos: solo el autor_email original (quien registró) o un
  Socio/Admin puede editar/eliminar. También se valida canView().
* Frontend tramites.html: cada entrada de horas ahora muestra botones
  ✎ (editar) y ✕ (eliminar) al lado de la fecha, visibles solo para
  quien tiene permiso. Editar abre un modal pequeño dedicado con los
  mismos campos (abogado dropdown, horas dropdown 15-min, descripción).
This commit is contained in:
Soporte ZH Consultores
2026-06-04 20:10:49 -05:00
parent 72c04ad594
commit e98d791cb8
5 changed files with 203 additions and 4 deletions
+5
View File
@@ -3,8 +3,13 @@ declare(strict_types=1);
final class Config {
private static ?array $env = null;
private static bool $tzSet = false;
public static function load(string $path = '/etc/donna/donna.env'): void {
if (!self::$tzSet) {
date_default_timezone_set('America/Panama');
self::$tzSet = true;
}
if (self::$env !== null) return;
if (!is_readable($path)) {
http_response_code(500);
+2
View File
@@ -19,6 +19,8 @@ final class Db {
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]);
// Hora de Panamá (UTC-5, sin DST) — defensivo aunque el OS ya esté en Panamá
self::$pdo->exec("SET time_zone = '-05:00'");
return self::$pdo;
}
}