diff --git a/src/api/SIGCM2.Infrastructure/Persistence/IngresosBrutosRepository.cs b/src/api/SIGCM2.Infrastructure/Persistence/IngresosBrutosRepository.cs
index f516f21..742dd20 100644
--- a/src/api/SIGCM2.Infrastructure/Persistence/IngresosBrutosRepository.cs
+++ b/src/api/SIGCM2.Infrastructure/Persistence/IngresosBrutosRepository.cs
@@ -12,9 +12,11 @@ namespace SIGCM2.Infrastructure.Persistence;
///
/// Dapper implementation of .
/// Provincia is persisted as the enum member name (PascalCase, e.g. "BuenosAires") via ToString().
-/// On read, it is parsed back via Enum.Parse<ProvinciaArgentina>.
+/// On read, it is parsed back via Enum.Parse<ProvinciaArgentina> (strict PascalCase only).
/// Alicuota and Provincia are NEVER updated by cosmetic methods.
/// GetHistorialAsync uses a recursive CTE to walk the PredecesorId chain.
+/// Note: As of V014 T700 cleanup, seed values are stored in PascalCase — legacy UPPER_SNAKE_CASE
+/// support (LegacySeedMap / NormalizeUpperSnakeToPascal) has been removed.
///
public sealed class IngresosBrutosRepository : IIngresosBrutosRepository
{
@@ -254,60 +256,19 @@ public sealed class IngresosBrutosRepository : IIngresosBrutosRepository
///
/// Parses a Provincia string from DB to ProvinciaArgentina enum.
- /// Handles both PascalCase (e.g. "BuenosAires" — written by this repo) and
- /// UPPER_SNAKE_CASE legacy seed values (e.g. "BUENOS_AIRES" — written by V014 seed).
- /// Strategy: try direct Enum.Parse first, then normalize UPPER_SNAKE_CASE → PascalCase.
+ /// Since T700 cleanup, the seed stores PascalCase values matching enum.ToString().
+ /// All values written by this repo are also PascalCase.
///
private static ProvinciaArgentina ParseProvincia(string value)
{
- // Fast path: PascalCase written by this repo (e.g. "BuenosAires")
if (Enum.TryParse(value, ignoreCase: false, out var result))
return result;
- // Slow path: UPPER_SNAKE_CASE from V014 seed (e.g. "BUENOS_AIRES" → "BuenosAires")
- // Also handles CABA → CiudadAutonomaDeBuenosAires via explicit mapping
- var normalized = NormalizeUpperSnakeToPascal(value);
- if (Enum.TryParse(normalized, ignoreCase: false, out result))
- return result;
-
throw new ArgumentException(
$"Cannot parse '{value}' as ProvinciaArgentina. " +
- $"Expected PascalCase enum name (e.g. 'BuenosAires') or UPPER_SNAKE_CASE seed name (e.g. 'BUENOS_AIRES').");
+ $"Expected PascalCase enum name (e.g. 'BuenosAires', 'CiudadAutonomaDeBuenosAires').");
}
- // Maps UPPER_SNAKE_CASE seed values to PascalCase enum names.
- // Explicit mappings for non-trivial conversions (CABA, multi-word with articles).
- private static readonly Dictionary LegacySeedMap = new(StringComparer.Ordinal)
- {
- ["BUENOS_AIRES"] = nameof(ProvinciaArgentina.BuenosAires),
- ["CABA"] = nameof(ProvinciaArgentina.CiudadAutonomaDeBuenosAires),
- ["CATAMARCA"] = nameof(ProvinciaArgentina.Catamarca),
- ["CHACO"] = nameof(ProvinciaArgentina.Chaco),
- ["CHUBUT"] = nameof(ProvinciaArgentina.Chubut),
- ["CORDOBA"] = nameof(ProvinciaArgentina.Cordoba),
- ["CORRIENTES"] = nameof(ProvinciaArgentina.Corrientes),
- ["ENTRE_RIOS"] = nameof(ProvinciaArgentina.EntreRios),
- ["FORMOSA"] = nameof(ProvinciaArgentina.Formosa),
- ["JUJUY"] = nameof(ProvinciaArgentina.Jujuy),
- ["LA_PAMPA"] = nameof(ProvinciaArgentina.LaPampa),
- ["LA_RIOJA"] = nameof(ProvinciaArgentina.LaRioja),
- ["MENDOZA"] = nameof(ProvinciaArgentina.Mendoza),
- ["MISIONES"] = nameof(ProvinciaArgentina.Misiones),
- ["NEUQUEN"] = nameof(ProvinciaArgentina.Neuquen),
- ["RIO_NEGRO"] = nameof(ProvinciaArgentina.RioNegro),
- ["SALTA"] = nameof(ProvinciaArgentina.Salta),
- ["SAN_JUAN"] = nameof(ProvinciaArgentina.SanJuan),
- ["SAN_LUIS"] = nameof(ProvinciaArgentina.SanLuis),
- ["SANTA_CRUZ"] = nameof(ProvinciaArgentina.SantaCruz),
- ["SANTA_FE"] = nameof(ProvinciaArgentina.SantaFe),
- ["SANTIAGO_DEL_ESTERO"] = nameof(ProvinciaArgentina.SantiagoDelEstero),
- ["TIERRA_DEL_FUEGO"] = nameof(ProvinciaArgentina.TierraDelFuego),
- ["TUCUMAN"] = nameof(ProvinciaArgentina.Tucuman),
- };
-
- private static string NormalizeUpperSnakeToPascal(string value)
- => LegacySeedMap.TryGetValue(value, out var pascal) ? pascal : value;
-
private static bool IsUniqueViolation(SqlException ex)
=> ex.Number is 2627 or 2601;