ff7c28789e
feat(api): RubrosController + integration tests e2e + audit verification (CAT-001)
2026-04-18 20:05:20 -03:00
cc3108dfdb
feat(infrastructure): RubroRepository Dapper + DI + integration tests (CAT-001)
2026-04-18 20:00:51 -03:00
b1be4a5573
fix(tests): propagar Rubro_History + permisos 25 a integration tests (CAT-001)
...
- SqlTestFixture: agrega EnsureV016SchemaAsync + seed del permiso catalogo:rubros:gestionar + Rubro_History al TablesToIgnore
- 6 test files con Respawner propio: agrega Rubro_History al TablesToIgnore
- 2 tests con count hardcoded (Permiso/RolPermiso): 24 -> 25 + rename
- 3 Api tests con count hardcoded (Auth/Permisos): 24 -> 25 + rename
2026-04-18 19:48:33 -03:00
d4c05cc364
feat(application): Rubros commands/queries + RubroTreeBuilder + audit (CAT-001)
2026-04-18 19:25:35 -03:00
4c9b7eabaf
feat(domain): Rubro entity + domain exceptions (CAT-001)
2026-04-18 19:17:33 -03:00
4a88cb4319
fix(bd): V016 COLLATE order — SQL Server requiere COLLATE antes de NOT NULL (CAT-001)
2026-04-18 19:10:03 -03:00
d3ed8300f0
feat(bd): V016 create Rubro table con SYSTEM_VERSIONING (CAT-001)
...
- dbo.Rubro: adjacency list, self-FK, soft-delete, temporal retention 10y
- Filtered unique index UQ_Rubro_ParentId_Nombre_Activo + covering IX_Rubro_ParentId_Activo
- Permission catalogo:rubros:gestionar seeded + assigned to admin role
- V016_ROLLBACK.sql: full reversal script
- RubrosOptions class (MaxDepth=10) + appsettings.json Rubros section
- services.Configure<RubrosOptions> registered in Infrastructure DI
- database/README.md updated with V013-V016 entries
2026-04-18 19:04:24 -03:00
8353f73230
Merge pull request 'refactor(udt-011): Quartz jobs usan TimeProvider ( closes #24 )' ( #28 ) from fix/UDT-011-quartz-jobs-timeprovider into main
2026-04-18 14:08:11 +00:00
01ad4cbfbc
test(udt-011): Quartz jobs verifican TimeProvider injection
2026-04-18 11:07:47 -03:00
67da544bb4
refactor(udt-011): AuditRetentionEnforcerJob usa TimeProvider inyectado
2026-04-18 11:07:43 -03:00
b79dfb2f34
refactor(udt-011): AuditPartitionManagerJob usa TimeProvider inyectado
2026-04-18 11:07:40 -03:00
ff912cc6a9
refactor(udt-011): AuditIntegrityCheckJob usa TimeProvider inyectado
2026-04-18 11:07:36 -03:00
8d2618e6e5
Merge pull request 'UDT-011: Localización Temporal Argentina (infra transversal)' ( #25 ) from feature/UDT-011 into main
2026-04-18 13:57:49 +00:00
a5fd3e90fb
Merge branch 'main' into feature/UDT-011
2026-04-18 10:56:09 -03:00
50f713dc10
Merge pull request 'fix(web): cleanup 25 TS errors preexistentes en main ( closes #26 )' ( #27 ) from fix/ADM-011-web-ts-cleanup into main
...
fix(web): cleanup 25 TS errors preexistentes en main (closes #26 )
2026-04-18 13:55:33 +00:00
b5ec0c25a9
fix(web/tests): alinear updateUserPermisosOverrides mock con UsuarioPermisos shape (TS2339)
2026-04-18 10:54:44 -03:00
a39427865f
fix(web/tests): eliminar imports no usados en tests (TS6133)
2026-04-18 10:54:40 -03:00
202d267e16
fix(web): migrar SeccionForm a sintaxis Zod v4 (errorMap → error, coerce.number<number>())
2026-04-18 10:54:28 -03:00
8b369b69ee
fix(web): migrar MedioForm a sintaxis Zod v4 (TS2322 — coerce.number<number>())
2026-04-18 10:54:23 -03:00
d16da502f4
fix(web): corregir import type-only de ButtonProps en pagination.tsx (TS1484)
2026-04-18 10:54:19 -03:00
408c97559b
chore(web/udt-011): grep final confirma 0 anti-patterns en src/web/src fuera de dateFormat.ts
2026-04-18 10:27:13 -03:00
ef4b02be3b
fix(web/udt-011): AuditFilters datetime-local usa parseArgentinaDateTimeToUtc (fix BUG-FE-05)
2026-04-18 10:26:56 -03:00
03a02c63d5
refactor(web/udt-011): eliminar 4 funciones formatDate duplicadas y formatOccurredAt, usar dateFormat utility (fix BUG-FE-01, BUG-FE-02)
2026-04-18 10:26:29 -03:00
71d0928389
fix(web/udt-011): NuevaVigenciaModal preview usa prevCivilDate+formatCivilDate sin Date() (fix BUG-FE-04)
2026-04-18 10:24:15 -03:00
20b5863908
fix(web/udt-011): IngresosBrutosFormModal default vigenciaDesde usa todayArgentina
2026-04-18 10:22:47 -03:00
7e23a16062
fix(web/udt-011): TipoDeIvaFormModal default vigenciaDesde usa todayArgentina (fix BUG-FE-03)
2026-04-18 10:22:43 -03:00
2ea7678129
feat(web/udt-011): dateFormat.ts utility (formatInstant, formatCivilDate, todayArgentina, etc.)
2026-04-18 10:17:47 -03:00
bc3e5d99a1
test(web/udt-011): dateFormat.ts utility tests (Red — 6 funciones + edge cases)
2026-04-18 10:17:43 -03:00
9bc191c3ae
test(udt-011): T400.40 — update tests for TimeProvider injection and explicit now params
...
Fix all test compilation errors caused by T400.10/T400.20/T400.30:
- Handler constructors: add TimeProvider.System as last argument
- Domain mutator calls: add DateTime.UtcNow as explicit 'now' argument
- AuditLogger/SecurityEventLogger Build() helpers: add TimeProvider.System
- JwtService test constructors: add TimeProvider.System
Cat2 coverage already present in TimeProviderArgentinaExtensionsTests.cs:
FakeTimeProvider proves GetArgentinaToday() returns ART civil date, not UTC.
2026-04-18 10:12:32 -03:00
a9838427a4
feat(udt-011): T400.30 — inject TimeProvider into Infrastructure critical services
...
AuditLogger, SecurityEventLogger: inject TimeProvider and use
_timeProvider.GetUtcNow().UtcDateTime for occurredAt timestamps.
JwtService: inject TimeProvider; use GetUtcNow() for token IssuedAt/Expires.
DI: update JwtService factory to pass sp.GetRequiredService<TimeProvider>().
Repositories: remove ?? DateTime.UtcNow fallback in UpdateAsync since callers
always provide FechaModificacion via domain mutators.
2026-04-18 10:12:24 -03:00
d69da5ff4c
feat(udt-011): T400.10 — inject TimeProvider into all Application handlers
...
All command handlers that call domain mutators now inject TimeProvider
via constructor and use _timeProvider.GetUtcNow().UtcDateTime as the
explicit 'now' argument. Replaces previous direct DateTime.UtcNow usage.
2026-04-18 10:12:17 -03:00
4e1d8f69ab
feat(udt-011): T400.20 — domain mutators accept explicit DateTime now param
...
Remove DateTime.UtcNow calls from all With*/Deactivate/Reactivate/
CerrarVigencia/NuevaVersion domain methods. Caller (Application layer)
is now responsible for passing the UTC timestamp obtained via
_timeProvider.GetUtcNow().UtcDateTime.
2026-04-18 10:12:03 -03:00
3c264aa7a1
chore(udt-011): register DateOnlyJsonConverter in Program.cs AddJsonOptions
2026-04-18 09:47:19 -03:00
a75d2f75a0
feat(udt-011): DateOnlyJsonConverter as yyyy-MM-dd
2026-04-18 09:47:16 -03:00
8dd668d5c5
test(udt-011): DateOnlyJsonConverter serialization tests (Red)
2026-04-18 09:47:13 -03:00
54d2340bb9
feat(udt-011): register TimeProvider.System in AddApplication DI
2026-04-18 09:44:21 -03:00
4e70b0f847
feat(udt-011): TimeProviderArgentinaExtensions.GetArgentinaToday cross-platform
2026-04-18 09:43:35 -03:00
03d51d4310
chore(udt-011): add Microsoft.Extensions.TimeProvider.Testing NuGet
2026-04-18 09:43:31 -03:00
7e4a096f24
test(udt-011): TimeProvider Argentina extension tests with FakeTimeProvider (Red)
2026-04-18 09:43:28 -03:00
cc4efe9ef2
chore(udt-011): SqlTestFixture.EnsureV015SchemaAsync for timezone views
2026-04-18 09:39:04 -03:00
7913dd8bb9
chore(udt-011): V015_ROLLBACK script for timezone views
2026-04-18 09:39:00 -03:00
a51a7bc07e
feat(udt-011): V015 create v_AuditEvent_Local + v_SecurityEvent_Local views
2026-04-18 09:39:00 -03:00
be6f76d107
test(udt-011): V015 migration tests for timezone views (Red)
2026-04-18 09:38:55 -03:00
d4b2183628
Merge pull request 'fix(web): migrar PuntoDeVentaForm a sintaxis Zod v4 ( closes #21 )' ( #23 ) from fix/ADM-008-zod-v4 into main
2026-04-18 11:47:39 +00:00
0863ed8682
fix(web/adm-008): migrar PuntoDeVentaForm a sintaxis Zod v4 ( closes #21 )
2026-04-18 08:47:20 -03:00
a804ef3c7b
Merge pull request 'ADM-009: Tablas Fiscales (IVA + IIBB) — append-only versioned ref data' ( #22 ) from feature/ADM-009 into main
2026-04-18 11:45:13 +00:00
30b55e60ea
fix(web/adm-009): migrar componentes fiscales a sintaxis Zod v4
2026-04-18 08:37:10 -03:00
8c08a706f0
test(adm-009): V014MigrationTests con filtros especificos por seed (no count total)
2026-04-17 19:11:55 -03:00
600ff52dd2
refactor(infra): eliminar LegacySeedMap/NormalizeUpperSnakeToPascal de IngresosBrutosRepository
2026-04-17 19:11:51 -03:00
882f947765
chore(db): V014 seed Provincia en PascalCase (cleanup tech debt)
2026-04-17 19:11:47 -03:00