Skip to content

Commit 2811fb4

Browse files
committed
refactor(bulk): map parser columns via named COLUMN index table
Replace the inline magic indices (fields[8]/[9]/[10]) in parseBulkFile with a single COLUMN map so the column->field layout has one source of truth in code. The non-contiguous jumps (3 -> 8, skipping reserved cols 4-7) are now self-documenting and a future column shift only needs one edit. Behavior unchanged: indices map 1:1 to the previous positions.
1 parent ca34c72 commit 2811fb4

1 file changed

Lines changed: 22 additions & 7 deletions

File tree

src/bulk/parser.ts

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,21 @@ const KNOWN_ESTADOS: ReadonlySet<string> = new Set(DGII_ESTADOS);
1010
/** Número exacto de columnas del layout actual del archivo masivo. */
1111
const EXPECTED_COLUMNS = 11;
1212

13+
/**
14+
* Índice de cada campo dentro de la fila pipe-delimited. Única fuente de
15+
* verdad del mapeo columna→campo: las columnas 4–7 quedan reservadas/vacías
16+
* en el archivo actual, de ahí el salto de 3 a 8.
17+
*/
18+
const COLUMN = {
19+
rnc: 0,
20+
nombre: 1,
21+
nombreComercial: 2,
22+
actividad: 3,
23+
fechaConstitucion: 8,
24+
estado: 9,
25+
regimen: 10,
26+
} as const;
27+
1328
/** Cuántas filas se muestrean para validar el formato antes de aceptarlo. */
1429
const ESTADO_SAMPLE_SIZE = 1000;
1530

@@ -98,13 +113,13 @@ export async function parseBulkFile(
98113
if (fields.length !== EXPECTED_COLUMNS) continue;
99114

100115
results.push({
101-
rnc: collapseSpaces(fields[0]!),
102-
nombre: collapseSpaces(fields[1]!),
103-
nombreComercial: collapseSpaces(fields[2]!),
104-
actividad: collapseSpaces(fields[3]!),
105-
fechaConstitucion: collapseSpaces(fields[8]!),
106-
estado: collapseSpaces(fields[9]!).toUpperCase(),
107-
regimen: collapseSpaces(fields[10]!),
116+
rnc: collapseSpaces(fields[COLUMN.rnc]!),
117+
nombre: collapseSpaces(fields[COLUMN.nombre]!),
118+
nombreComercial: collapseSpaces(fields[COLUMN.nombreComercial]!),
119+
actividad: collapseSpaces(fields[COLUMN.actividad]!),
120+
fechaConstitucion: collapseSpaces(fields[COLUMN.fechaConstitucion]!),
121+
estado: collapseSpaces(fields[COLUMN.estado]!).toUpperCase(),
122+
regimen: collapseSpaces(fields[COLUMN.regimen]!),
108123
});
109124
}
110125

0 commit comments

Comments
 (0)