@albertomarturelo/sii-core 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/dist/auth/auth.d.ts.map +1 -1
  3. package/dist/auth/auth.js +7 -5
  4. package/dist/auth/auth.js.map +1 -1
  5. package/dist/auth/datos-cntr.d.ts +9 -0
  6. package/dist/auth/datos-cntr.d.ts.map +1 -1
  7. package/dist/auth/datos-cntr.js +22 -0
  8. package/dist/auth/datos-cntr.js.map +1 -1
  9. package/dist/errors/errors.d.ts +5 -0
  10. package/dist/errors/errors.d.ts.map +1 -1
  11. package/dist/errors/errors.js +5 -0
  12. package/dist/errors/errors.js.map +1 -1
  13. package/dist/index.d.ts +6 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +3 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/portal/f22/index.d.ts +1 -0
  18. package/dist/portal/f22/index.d.ts.map +1 -1
  19. package/dist/portal/f22/index.js +1 -0
  20. package/dist/portal/f22/index.js.map +1 -1
  21. package/dist/portal/f22/shared.d.ts +10 -1
  22. package/dist/portal/f22/shared.d.ts.map +1 -1
  23. package/dist/portal/f22/shared.js +13 -11
  24. package/dist/portal/f22/shared.js.map +1 -1
  25. package/dist/portal/f22/terceros.d.ts +58 -0
  26. package/dist/portal/f22/terceros.d.ts.map +1 -0
  27. package/dist/portal/f22/terceros.js +323 -0
  28. package/dist/portal/f22/terceros.js.map +1 -0
  29. package/dist/portal/f29-rfi-form.d.ts +50 -0
  30. package/dist/portal/f29-rfi-form.d.ts.map +1 -0
  31. package/dist/portal/f29-rfi-form.js +637 -0
  32. package/dist/portal/f29-rfi-form.js.map +1 -0
  33. package/dist/portal/f29-rfi.d.ts +66 -0
  34. package/dist/portal/f29-rfi.d.ts.map +1 -0
  35. package/dist/portal/f29-rfi.js +258 -0
  36. package/dist/portal/f29-rfi.js.map +1 -0
  37. package/dist/portal/f29.d.ts +9 -0
  38. package/dist/portal/f29.d.ts.map +1 -1
  39. package/dist/portal/f29.js +55 -1
  40. package/dist/portal/f29.js.map +1 -1
  41. package/dist/portal/gwt.d.ts +99 -0
  42. package/dist/portal/gwt.d.ts.map +1 -1
  43. package/dist/portal/gwt.js +647 -2
  44. package/dist/portal/gwt.js.map +1 -1
  45. package/dist/portal/rfi-schema.d.ts +7 -0
  46. package/dist/portal/rfi-schema.d.ts.map +1 -0
  47. package/dist/portal/rfi-schema.js +429 -0
  48. package/dist/portal/rfi-schema.js.map +1 -0
  49. package/dist/tasks/alertas.d.ts +65 -0
  50. package/dist/tasks/alertas.d.ts.map +1 -0
  51. package/dist/tasks/alertas.js +339 -0
  52. package/dist/tasks/alertas.js.map +1 -0
  53. package/dist/tasks/f22.d.ts +38 -2
  54. package/dist/tasks/f22.d.ts.map +1 -1
  55. package/dist/tasks/f22.js +126 -6
  56. package/dist/tasks/f22.js.map +1 -1
  57. package/dist/tasks/f29-submit.d.ts +83 -0
  58. package/dist/tasks/f29-submit.d.ts.map +1 -0
  59. package/dist/tasks/f29-submit.js +215 -0
  60. package/dist/tasks/f29-submit.js.map +1 -0
  61. package/dist/tasks/f29.d.ts +7 -1
  62. package/dist/tasks/f29.d.ts.map +1 -1
  63. package/dist/tasks/f29.js +9 -13
  64. package/dist/tasks/f29.js.map +1 -1
  65. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alertas.d.ts","sourceRoot":"","sources":["../../src/tasks/alertas.ts"],"names":[],"mappings":"AAOA,OAAO,EAAQ,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAML,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAU5B,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEhE,eAAO,MAAM,eAAe,uCAAwC,CAAC;AACrE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,MAAM,UAAU,GAClB,iBAAiB,GACjB,eAAe,GACf,cAAc,GACd,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CAAC;AAEtB,+FAA+F;AAC/F,MAAM,WAAW,MAAM;IACrB;qFACiF;IACjF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;KACzB,CAAC;CACH;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,eAAe,GAAG,OAAO,GAAG,SAAS,CAAC;AAExE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,gGAAgG;IAChG,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACvE;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,kEAAkE;IAClE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC1D,wEAAwE;IACxE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AA+CD;;;;;4FAK4F;AAC5F,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,GAAG,GAAE,EAAE,GAAG,EAAO,GAChB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,CAQlC;AA0OD,sFAAsF;AACtF,wBAAsB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAyE9F"}
@@ -0,0 +1,339 @@
1
+ // `alertas` — one read of what SII holds against the taxpayer but does not push (ADR-030).
2
+ // A composite: ONE `withSession` over the existing portal facades (never the other tasks, which
3
+ // would each open a session), every call paced, one audit receipt. SESSION-KEYED (ADR-005): it
4
+ // reads the session principal, takes no `--rut`, and refuses a representing pointer up front.
5
+ // Stateless: each alerta has an id built from what it is, so a caller diffs runs by id.
6
+ import { assertOperatingSelf, withSession } from '../auth/index.js';
7
+ import { recordAudit } from '../audit/index.js';
8
+ import { Anio, Periodo } from '../periodo/index.js';
9
+ import { Rut } from '../rut/index.js';
10
+ import { NotAuthenticatedError, RateLimitError, SiiError, ValidationError, classifyError, } from '../errors/index.js';
11
+ import { DEFAULT_SETTINGS, HOSTS } from '../config/index.js';
12
+ import { parseDatosCntrNow } from '../auth/datos-cntr.js';
13
+ import { fetchF22Declaraciones, fetchF22Observaciones, pickVigenteFolio, } from '../portal/f22/index.js';
14
+ import { fetchF29Estado } from '../portal/f29.js';
15
+ import { fetchPeticiones } from '../portal/peticiones.js';
16
+ export const FUENTES_ALERTAS = ['f22', 'f29', 'peticiones'];
17
+ /** F22: años tributarios read, the current one first (3 ⇒ the prescription window). */
18
+ const F22_ANIOS = 3;
19
+ /** F29: períodos read, ending at the previous month (the current one is not due yet). */
20
+ const F29_PERIODOS = 12;
21
+ const pacingMs = () => Math.round(1000 / DEFAULT_SETTINGS.rateLimitRps);
22
+ const pad = (n) => String(n).padStart(2, '0');
23
+ const isoDate = (d) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
24
+ function parseFuentes(input) {
25
+ if (input === undefined)
26
+ return [...FUENTES_ALERTAS];
27
+ const raw = typeof input === 'string' ? input.split(',') : [...input];
28
+ const names = raw.map((s) => s.trim().toLowerCase()).filter((s) => s !== '');
29
+ if (names.length === 0) {
30
+ throw new ValidationError(`Indica al menos una fuente: ${FUENTES_ALERTAS.join(', ')}.`);
31
+ }
32
+ for (const n of names) {
33
+ if (!FUENTES_ALERTAS.includes(n)) {
34
+ throw new ValidationError(`Fuente desconocida: "${n}". Las fuentes son ${FUENTES_ALERTAS.join(', ')}.`);
35
+ }
36
+ }
37
+ // Keep the canonical order, so the result does not depend on how the caller listed them.
38
+ return FUENTES_ALERTAS.filter((f) => names.includes(f));
39
+ }
40
+ function parseDesde(input) {
41
+ if (input === undefined)
42
+ return null;
43
+ const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(input.trim());
44
+ const d = m ? new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3])) : null;
45
+ if (!m || !d || d.getMonth() !== Number(m[2]) - 1 || d.getDate() !== Number(m[3])) {
46
+ throw new ValidationError(`Fecha inválida en --desde: "${input}" (formato AAAA-MM-DD).`);
47
+ }
48
+ return `${m[1]}-${m[2]}-${m[3]}`;
49
+ }
50
+ /** SII's `DD/MM/YYYY` (F29 `declFechaCreacion`, observed) as YYYY-MM-DD; anything else ⇒ null. */
51
+ function fechaSii(s) {
52
+ const m = s ? /^(\d{2})\/(\d{2})\/(\d{4})/.exec(s) : null;
53
+ return m ? `${m[3]}-${m[2]}-${m[1]}` : null;
54
+ }
55
+ /** The F29 due dates of `periodo`, from SII's own FAQ (www.sii.cl/preguntas_frecuentes/
56
+ * impuestos_mensuales/001_130_1060.htm, updated 17/06/2025, read 2026-10-23): the 12th of the
57
+ * next month in general; the 20th for an Internet declaration WITH payment by an eligible
58
+ * taxpayer; the 28th for one "sin pago" or sin movimiento. A due date with payment on a
59
+ * Saturday or holiday moves to the next business day: we move it off a weekend, holidays are not
60
+ * known (hence `estimado`). `dia` is the taxpayer's regime (`autorizadoDeclararDia20`). */
61
+ export function vencimientoF29(periodo, dia = 20) {
62
+ const year = periodo.month === 12 ? periodo.year + 1 : periodo.year;
63
+ const month = periodo.month === 12 ? 0 : periodo.month; // JS month index of the NEXT month
64
+ const conPago = new Date(year, month, dia);
65
+ const dow = conPago.getDay();
66
+ if (dow === 6)
67
+ conPago.setDate(dia + 2);
68
+ if (dow === 0)
69
+ conPago.setDate(dia + 1);
70
+ return { conPago, sinPago: new Date(year, month, 28) };
71
+ }
72
+ // SII's FAQ: F29 is mandatory every month, sin movimiento included, for "todos aquellos
73
+ // contribuyentes afectos a la Ley de Impuestos a las Ventas y Servicios" from the « Inicio de
74
+ // Actividades en la primera categoría » (preguntas_frecuentes/impuestos_mensuales/
75
+ // 001_130_1051.htm and 001_130_1053.htm, updated 05/06/2025, read 2026-10-23), until the término
76
+ // de giro (001_130_2312.htm). The `atributos` codes of a primera-categoría regime, as observed:
77
+ // only exact codes, a new one joins with its citation. A persona with only honorarios has an
78
+ // inicio de actividades too but none of these (observed 2026-10-23: `NOTI`, `SGPE`).
79
+ const REGIMEN_PRIMERA_CATEGORIA = new Set([
80
+ '14D1', // « REGIMEN PRO PYME GENERAL (14D) », observed 2026-10-23 on an empresa
81
+ ]);
82
+ /** `"2026-03-26 00:00:00.0"` (observed) ⇒ that month; anything else ⇒ null (no bound). */
83
+ function mesDe(s) {
84
+ const m = s ? /^(\d{4})-(\d{2})-\d{2}/.exec(s) : null;
85
+ return m ? Periodo.of(Number(m[1]), Number(m[2])) : null;
86
+ }
87
+ /** An atributo's `fechaInicio`, `"26-03-2026"` (observed) ⇒ that month; anything else ⇒ null. */
88
+ function mesDeAtributo(s) {
89
+ const m = s ? /^\d{2}-(\d{2})-(\d{4})$/.exec(s.trim()) : null;
90
+ return m ? Periodo.of(Number(m[2]), Number(m[1])) : null;
91
+ }
92
+ const antes = (a, b) => a.year < b.year || (a.year === b.year && a.month < b.month);
93
+ /** The month the account entered an observed primera-categoría regime, and the inicio de
94
+ * actividades, whichever is later: an account that moved from honorarios into the regime owed
95
+ * nothing before it (#209 review). Either one unknown ⇒ null. */
96
+ function obligadoDesde(inicio, atributos) {
97
+ if (!inicio)
98
+ return null; // no lower bound: "due every month" would reach before the account
99
+ const desde = atributos
100
+ .filter((a) => REGIMEN_PRIMERA_CATEGORIA.has(a.atrCodigo?.trim() ?? '') &&
101
+ a.fechaTermino == null &&
102
+ a.eliminado == null)
103
+ .map((a) => mesDeAtributo(a.fechaInicio));
104
+ const meses = desde.filter((p) => p !== null);
105
+ // An active regime whose start does not parse is not proof of when the obligation began.
106
+ if (meses.length === 0 || meses.length < desde.length)
107
+ return null;
108
+ const regimen = meses.reduce((a, b) => (antes(a, b) ? a : b));
109
+ return antes(regimen, inicio) ? inicio : regimen;
110
+ }
111
+ async function leerRegimen(session) {
112
+ // A dead jar bounces here and the seam raises SessionExpiredError (aborts the read). A live
113
+ // page without the object only loses the bounds: no window, and the later day-20 deadline.
114
+ const { body } = await session.requestText(HOSTS.miSii, { method: 'GET' });
115
+ const datos = parseDatosCntrNow(body);
116
+ const c = datos?.contribuyente;
117
+ const inicio = mesDe(c?.fechaInicioActividades);
118
+ return {
119
+ inicio,
120
+ obligadoDesde: obligadoDesde(inicio, datos?.atributos ?? []),
121
+ termino: mesDe(c?.fechaTerminoGiro),
122
+ // `"S"` observed. A day-12 taxpayer says "N"; an unknown value keeps the 20th, the later of
123
+ // the two, so the alerta is never early.
124
+ dia: c?.autorizadoDeclararDia20?.trim().toUpperCase() === 'N' ? 12 : 20,
125
+ };
126
+ }
127
+ const base = (origen) => ({
128
+ origen,
129
+ periodo: null,
130
+ anio: null,
131
+ folio: null,
132
+ peticion: null,
133
+ codigo: null,
134
+ estado: null,
135
+ mensaje: null,
136
+ url: null,
137
+ fecha: null,
138
+ });
139
+ async function leerF22(runtime, session, rut, push) {
140
+ const current = runtime.clock.now().getFullYear();
141
+ for (let i = 0; i < F22_ANIOS; i++) {
142
+ const anio = Anio.of(current - i);
143
+ if (i > 0)
144
+ await runtime.clock.sleep(pacingMs());
145
+ const decls = await fetchF22Declaraciones(session, { rut, anio });
146
+ const folio = pickVigenteFolio(decls.declaraciones);
147
+ if (folio === null)
148
+ continue; // no declaración that año: nothing to observe
149
+ await runtime.clock.sleep(pacingMs());
150
+ for (const o of await fetchF22Observaciones(session, { rut, anio, folio })) {
151
+ push({
152
+ ...base('f22'),
153
+ id: `f22:${anio.canonical}:${folio}:${o.codigo}`,
154
+ tipo: 'f22_observacion',
155
+ anio: anio.canonical,
156
+ folio,
157
+ codigo: o.codigo,
158
+ mensaje: o.descripcion,
159
+ url: o.url,
160
+ });
161
+ }
162
+ }
163
+ return 'ok';
164
+ }
165
+ const ESTADO_VIGENTE = 1;
166
+ const ESTADO_GUARDADA = 10; // observed (sii-contract/f29.md)
167
+ const ESTADO_RECHAZADA = 70; // "Rechazada por pago inconcluso", observed
168
+ const isVigente = (d) => d.estadoId === ESTADO_VIGENTE || (d.estado ?? '').toLowerCase().includes('vigente');
169
+ async function leerF29(runtime, session, rut, push) {
170
+ const now = runtime.clock.now();
171
+ const today = isoDate(now);
172
+ const periodos = Array.from({ length: F29_PERIODOS }, (_, i) => {
173
+ const d = new Date(now.getFullYear(), now.getMonth() - F29_PERIODOS + i, 1);
174
+ return Periodo.of(d.getFullYear(), d.getMonth() + 1);
175
+ });
176
+ const regimen = await leerRegimen(session);
177
+ const sinDeclarar = [];
178
+ let declarante = false;
179
+ for (let i = 0; i < periodos.length; i++) {
180
+ const periodo = periodos[i];
181
+ await runtime.clock.sleep(pacingMs()); // after the Mi SII read too (ADR-004)
182
+ const { declaraciones } = await fetchF29Estado(session, { rut, periodo });
183
+ if (declaraciones.some(isVigente)) {
184
+ declarante = true;
185
+ continue;
186
+ }
187
+ const rec = declaraciones.find((d) => d.estadoId === ESTADO_RECHAZADA) ??
188
+ declaraciones.find((d) => d.estadoId === ESTADO_GUARDADA) ??
189
+ declaraciones[0];
190
+ if (rec) {
191
+ const tipo = rec.estadoId === ESTADO_RECHAZADA
192
+ ? 'f29_rechazada'
193
+ : rec.estadoId === ESTADO_GUARDADA
194
+ ? 'f29_guardada'
195
+ : 'f29_otro_estado';
196
+ // A Guardada borrador carries folio 0 (observed): not a folio of anything.
197
+ const folio = rec.folio ? String(rec.folio) : null;
198
+ const suffix = tipo === 'f29_otro_estado' ? `otro_estado:${rec.estadoId ?? 'null'}` : tipo.slice(4);
199
+ push({
200
+ ...base('f29'),
201
+ id: `f29:${periodo.formatted}:${suffix}${folio ? `:${folio}` : ''}`,
202
+ tipo,
203
+ periodo: periodo.formatted,
204
+ folio,
205
+ estado: rec.estado,
206
+ fecha: fechaSii(rec.fecha),
207
+ });
208
+ continue;
209
+ }
210
+ // Outside the account's own obligation window nothing was due: a month before the empresa
211
+ // existed is not a missing F29 (observed live: five false alertas before ADR-030's fix).
212
+ if (regimen.inicio && antes(periodo, regimen.inicio))
213
+ continue;
214
+ if (regimen.termino && antes(regimen.termino, periodo))
215
+ continue;
216
+ const venc = vencimientoF29(periodo, regimen.dia);
217
+ if (today <= isoDate(venc.conPago))
218
+ continue; // due date not passed: still on time
219
+ sinDeclarar.push({
220
+ periodo,
221
+ alerta: {
222
+ ...base('f29'),
223
+ id: `f29:${periodo.formatted}:sin_declarar`,
224
+ tipo: 'f29_sin_declarar',
225
+ periodo: periodo.formatted,
226
+ fecha: isoDate(venc.conPago),
227
+ vencimiento: {
228
+ conPago: isoDate(venc.conPago),
229
+ sinPago: isoDate(venc.sinPago),
230
+ estimado: true,
231
+ },
232
+ },
233
+ });
234
+ }
235
+ // An account with no Vigente F29 in the window does not file F29 (a persona without giro):
236
+ // twelve "sin declarar" would be noise, not alertas (ADR-030). Unless SII holds it in a
237
+ // primera-categoría regime: then a new business that never filed is exactly the case (#208),
238
+ // from the month its obligation began.
239
+ const desde = declarante ? null : regimen.obligadoDesde;
240
+ if (!declarante && !desde)
241
+ return 'no_declarante';
242
+ for (const { periodo, alerta } of sinDeclarar) {
243
+ if (desde && antes(periodo, desde))
244
+ continue;
245
+ push(alerta);
246
+ }
247
+ return 'ok';
248
+ }
249
+ async function leerPeticiones(session, rut, push) {
250
+ const { peticiones } = await fetchPeticiones(session, { rut });
251
+ for (const p of peticiones) {
252
+ const ultimo = p.timeline[0] ?? null; // most-recent-first (portal/peticiones.ts)
253
+ push({
254
+ ...base('peticiones'),
255
+ // The latest transition is in the id, so a petición resurfaces only when it moves.
256
+ id: `peticion:${p.numero}:${ultimo?.fecha ?? p.estadoActual}`,
257
+ tipo: 'peticion_estado',
258
+ peticion: p.numero,
259
+ estado: p.estadoActual,
260
+ mensaje: ultimo?.mensaje ?? null,
261
+ fecha: ultimo?.fecha ? ultimo.fecha.slice(0, 10) : null,
262
+ });
263
+ }
264
+ return 'ok';
265
+ }
266
+ /** Read the alertas of the session principal from the requested sources (ADR-030). */
267
+ export async function alertas(runtime, args = {}) {
268
+ const fuentes = parseFuentes(args.fuentes); // fail fast — no session opened
269
+ const desde = parseDesde(args.desde);
270
+ await assertOperatingSelf(runtime, (empresa) => new ValidationError(`alertas es session-keyed: lee las alertas del titular de la sesión, no del RUT operado ` +
271
+ `(${empresa}). Para las de esa empresa, inicia sesión como ella ` +
272
+ '(`sii auth logout` y luego `sii auth login`).'));
273
+ const start = runtime.clock.now().getTime();
274
+ try {
275
+ const result = await withSession(runtime, async (session, ctx) => {
276
+ const rut = Rut.parse(ctx.sessionRut); // session-keyed: ALWAYS the principal
277
+ const found = [];
278
+ const push = (a) => {
279
+ found.push(a);
280
+ };
281
+ const estados = [];
282
+ for (let i = 0; i < FUENTES_ALERTAS.length; i++) {
283
+ const origen = FUENTES_ALERTAS[i];
284
+ if (!fuentes.includes(origen)) {
285
+ estados.push({ origen, estado: 'omitida' });
286
+ continue;
287
+ }
288
+ if (estados.some((e) => e.estado !== 'omitida'))
289
+ await runtime.clock.sleep(pacingMs());
290
+ try {
291
+ const estado = origen === 'f22'
292
+ ? await leerF22(runtime, session, rut, push)
293
+ : origen === 'f29'
294
+ ? await leerF29(runtime, session, rut, push)
295
+ : await leerPeticiones(session, rut, push);
296
+ estados.push({ origen, estado });
297
+ }
298
+ catch (e) {
299
+ // A dead session or SII's rate limit ends the whole read: going on would mean asking
300
+ // again against a block (ADR-004). A bug (not a SiiError) must not hide as a source
301
+ // error either. Any other SII failure stops that source only; what it read stays.
302
+ if (e instanceof NotAuthenticatedError || e instanceof RateLimitError)
303
+ throw e;
304
+ if (!(e instanceof SiiError))
305
+ throw e;
306
+ estados.push({
307
+ origen,
308
+ estado: 'error',
309
+ error: { type: classifyError(e).type, error: e.message },
310
+ });
311
+ }
312
+ }
313
+ const alertasFiltradas = desde
314
+ ? found.filter((a) => a.fecha === null || a.fecha >= desde)
315
+ : found;
316
+ return {
317
+ rut: rut.canonical,
318
+ alertas: alertasFiltradas,
319
+ fuentes: estados,
320
+ incompleto: estados.some((e) => e.estado === 'error'),
321
+ };
322
+ });
323
+ // Counts only: the alertas carry SII's free text about the taxpayer (ADR-006).
324
+ recordAudit(runtime, {
325
+ action: 'alertas',
326
+ result: result.incompleto ? 'partial' : 'ok',
327
+ rut: result.rut,
328
+ count: result.alertas.length,
329
+ fuentes: Object.fromEntries(result.fuentes.map((f) => [f.origen, f.estado])),
330
+ durationMs: runtime.clock.now().getTime() - start,
331
+ });
332
+ return result;
333
+ }
334
+ catch (e) {
335
+ recordAudit(runtime, { action: 'alertas', result: 'failed' });
336
+ throw e;
337
+ }
338
+ }
339
+ //# sourceMappingURL=alertas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alertas.js","sourceRoot":"","sources":["../../src/tasks/alertas.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import type { EventoF22, F22Declaraciones, F22Estado, ObservacionF22 } from '../portal/f22/index.js';
1
+ import type { DeclaracionTercero, EventoF22, FilaTercero, F22Declaraciones, F22Estado, ObservacionF22 } from '../portal/f22/index.js';
2
2
  import type { Runtime } from '../seams/index.js';
3
- export type { DeclaracionF22, CodigoF22, EventoF22, ObservacionF22, F22Declaraciones, F22Estado, F22Grupos, } from '../portal/f22/index.js';
3
+ export type { CampoTercero, DeclaracionF22, DeclaracionTercero, FilaTercero, ValorTercero, CodigoF22, EventoF22, ObservacionF22, F22Declaraciones, F22Estado, F22Grupos, } from '../portal/f22/index.js';
4
4
  /** One year of F22 status overview (estado, no código grid). */
5
5
  export interface F22Overview {
6
6
  readonly rut: string;
@@ -66,4 +66,40 @@ export declare function f22Historial(runtime: Runtime, args: {
66
66
  anio: string | number;
67
67
  folio?: string;
68
68
  }): Promise<F22Historial>;
69
+ /** The per-DJ resumen of the información de terceros for an año tributario: ONE call. Each ítem
70
+ * carries its aggregate rows (informantes, montos informados); the rows themselves are
71
+ * `f22TercerosDetalle`, one DJ at a time. */
72
+ export interface F22Terceros {
73
+ readonly rut: string;
74
+ readonly anio: string;
75
+ readonly declaraciones: readonly DeclaracionTercero[];
76
+ }
77
+ export declare function f22Terceros(runtime: Runtime, args: {
78
+ anio: string | number;
79
+ }): Promise<F22Terceros>;
80
+ /** One DJ's rows. Without `pagina` it reads every page (⌈registros/10⌉, paced, capped at
81
+ * `MAX_PAGINAS_TERCEROS`); with `pagina`, exactly that page (one call).
82
+ *
83
+ * PER-PAGE RESILIENCE, like `f22Historial`'s folios: a page SII fails is recorded verbatim in
84
+ * `paginasConError` and the other pages are kept; `incompleto` says some page was not read.
85
+ * Page 1 carries the total, so its failure, like a session-level one, aborts the read. */
86
+ export interface F22TercerosDetalle {
87
+ readonly rut: string;
88
+ readonly anio: string;
89
+ readonly dj: string;
90
+ readonly registros: number;
91
+ readonly paginas: number;
92
+ readonly paginasLeidas: readonly number[];
93
+ readonly filas: readonly FilaTercero[];
94
+ readonly paginasConError: readonly {
95
+ pagina: number;
96
+ error: string;
97
+ }[];
98
+ readonly incompleto: boolean;
99
+ }
100
+ export declare function f22TercerosDetalle(runtime: Runtime, args: {
101
+ anio: string | number;
102
+ dj: string | number;
103
+ pagina?: string | number;
104
+ }): Promise<F22TercerosDetalle>;
69
105
  //# sourceMappingURL=f22.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"f22.d.ts","sourceRoot":"","sources":["../../src/tasks/f22.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,cAAc,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE7D,YAAY,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,SAAS,GACV,MAAM,wBAAwB,CAAC;AAYhC,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC7C;AAED;;;;qEAIqE;AACrE,wBAAsB,SAAS,CAC7B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9D,OAAO,CAAC,SAAS,CAAC,CA2BpB;AAED;;+FAE+F;AAC/F,wBAAsB,WAAW,CAC/B,OAAO,EAAE,OAAO,EAChB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5B,OAAO,CAAC,WAAW,CAAC,CA4BtB;AAED;;;oDAGoD;AACpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,SAAS,cAAc,EAAE,CAAC;CACnD;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,gBAAgB,CAAC,CAoC3B;AAED;;;;;;;;;;;;mDAYmD;AACnD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACtE;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,YAAY,CAAC,CAiEvB"}
1
+ {"version":3,"file":"f22.d.ts","sourceRoot":"","sources":["../../src/tasks/f22.ts"],"names":[],"mappings":"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"}
package/dist/tasks/f22.js CHANGED
@@ -1,16 +1,18 @@
1
1
  // Public F22 task API the surfaces call (ADR-003). Wraps the portal facade in
2
2
  // `withSession` and writes one audit receipt. F22 is SESSION-KEYED (ADR-005): it
3
- // authorizes by the session principal, IGNORES the operate pointer, and takes NO
4
- // `--rut` — a represented empresa's F22 is reached by being in the empresa's session
5
- // (logout→login), confirmed live (the body RUT returns a clean negative, not the
6
- // empresa's F22). The año is validated locally BEFORE any session.
7
- import { withSession } from '../auth/index.js';
3
+ // authorizes by the session principal and takes NO `--rut` — a represented empresa's F22
4
+ // is reached by being in the empresa's session (logout→login), confirmed live (the body RUT
5
+ // returns a clean negative, not the empresa's F22). The older verbs IGNORE the operate
6
+ // pointer; `f22Terceros*` refuse it up front (`assertOperatingSelf`, CONVENTIONS). The año is
7
+ // validated locally BEFORE any session.
8
+ import { assertOperatingSelf, withSession } from '../auth/index.js';
9
+ import { readOperateState } from '../identity/index.js';
8
10
  import { recordAudit } from '../audit/index.js';
9
11
  import { Anio } from '../periodo/index.js';
10
12
  import { Rut } from '../rut/index.js';
11
13
  import { F22Error, ValidationError } from '../errors/index.js';
12
14
  import { DEFAULT_SETTINGS } from '../config/index.js';
13
- import { eventoDateKey, fetchF22Declaraciones, fetchF22Grid, fetchF22Historial, fetchF22Observaciones, groupCodigos, pickVigenteFolio, } from '../portal/f22/index.js';
15
+ import { eventoDateKey, fetchF22Declaraciones, fetchF22Grid, fetchF22Historial, fetchF22Observaciones, fetchF22TercerosDetalle, fetchF22TercerosResumen, groupCodigos, pickVigenteFolio, TERCEROS_PAGE_SIZE, } from '../portal/f22/index.js';
14
16
  const DEFAULT_OVERVIEW_YEARS = 5;
15
17
  const MAX_OVERVIEW_YEARS = 10;
16
18
  /** Inter-request pace (ms) for multi-POST fan-outs — never hammer SII (ADR-004). */
@@ -186,4 +188,122 @@ export async function f22Historial(runtime, args) {
186
188
  throw e;
187
189
  }
188
190
  }
191
+ // --- Información de terceros (#183; contract: sii-contract/f22.md « Terceros ») ----------
192
+ /** At most this many detalle pages per call (300 rows, ~30 s paced). A bigger DJ comes back
193
+ * `incompleto` with `paginasLeidas`, and the rest is read with `pagina`: one unattended call
194
+ * never turns into hundreds of POSTs (ADR-004: never hammer SII). */
195
+ const MAX_PAGINAS_TERCEROS = 30;
196
+ // Session-keyed (ADR-005): the shared guard, with this surface's own error + wording. The other
197
+ // F22 tasks predate it and read the principal silently; this one refuses, so an `operate`
198
+ // pointer at an empresa never answers with the persona's data under the empresa's header.
199
+ const assertSelfOperatingTerceros = (runtime) => assertOperatingSelf(runtime, (empresa) => new F22Error(`La información de terceros (F22) es session-keyed: el SII autoriza por el titular de la ` +
200
+ `sesión, no por el RUT operado (${empresa}). Para la de esa empresa, inicia sesión como ` +
201
+ 'ella (`sii auth logout` y luego `sii auth login`).'));
202
+ /** The principal's own identity, dropped from every row by value. The name is the razón social
203
+ * cached at login (local, no SII call); a login that could not read it stored the RUT there. */
204
+ async function identidadPropia(runtime, sessionRut) {
205
+ const rut = Rut.parse(sessionRut);
206
+ const op = await readOperateState(runtime.store);
207
+ const nombre = op?.operable.find((o) => o.isSelf)?.razonSocial ?? null;
208
+ return { rut, nombre: nombre !== null && Rut.tryParse(nombre) === null ? nombre : null };
209
+ }
210
+ function parseDj(dj) {
211
+ const s = String(dj).trim();
212
+ if (!/^\d{1,5}$/.test(s)) {
213
+ throw new ValidationError(`Código de DJ inválido: "${s}" (debe ser numérico, p. ej. 1887).`);
214
+ }
215
+ return String(Number(s));
216
+ }
217
+ function parsePagina(pagina) {
218
+ const n = Number(String(pagina).trim());
219
+ if (!Number.isInteger(n) || n < 1) {
220
+ throw new ValidationError(`Página inválida: "${String(pagina)}" (debe ser un entero ≥ 1).`);
221
+ }
222
+ return n;
223
+ }
224
+ export async function f22Terceros(runtime, args) {
225
+ const anio = Anio.parse(args.anio); // fail fast on a bad year — no session opened
226
+ await assertSelfOperatingTerceros(runtime);
227
+ const start = runtime.clock.now().getTime();
228
+ try {
229
+ const result = await withSession(runtime, async (session, ctx) => {
230
+ const propio = await identidadPropia(runtime, ctx.sessionRut);
231
+ const declaraciones = await fetchF22TercerosResumen(session, { anio, propio });
232
+ return { rut: propio.rut.canonical, anio: anio.canonical, declaraciones };
233
+ });
234
+ audit(runtime, 'f22_terceros', 'ok', {
235
+ rut: result.rut,
236
+ period: anio.canonical,
237
+ count: result.declaraciones.length,
238
+ durationMs: runtime.clock.now().getTime() - start,
239
+ });
240
+ return result;
241
+ }
242
+ catch (e) {
243
+ audit(runtime, 'f22_terceros', 'failed', { period: anio.canonical });
244
+ throw e;
245
+ }
246
+ }
247
+ export async function f22TercerosDetalle(runtime, args) {
248
+ const anio = Anio.parse(args.anio); // all three validated before any session opens
249
+ const dj = parseDj(args.dj);
250
+ const pagina = args.pagina !== undefined ? parsePagina(args.pagina) : undefined;
251
+ await assertSelfOperatingTerceros(runtime);
252
+ const start = runtime.clock.now().getTime();
253
+ try {
254
+ const result = await withSession(runtime, async (session, ctx) => {
255
+ const propio = await identidadPropia(runtime, ctx.sessionRut);
256
+ const read = (p) => fetchF22TercerosDetalle(session, { rut: propio.rut, anio, dj, pagina: p, propio });
257
+ const first = await read(pagina ?? 1);
258
+ // A page past the end answers `cantRegistros: 0` (observed), so with an out-of-range
259
+ // `pagina` the totals read 0 too.
260
+ const paginas = Math.ceil(first.registros / TERCEROS_PAGE_SIZE);
261
+ const filas = [...first.filas];
262
+ const paginasLeidas = [pagina ?? 1];
263
+ const paginasConError = [];
264
+ if (pagina === undefined) {
265
+ for (let p = 2; p <= Math.min(paginas, MAX_PAGINAS_TERCEROS); p++) {
266
+ await runtime.clock.sleep(pacingMs()); // pace each page (ADR-004)
267
+ try {
268
+ filas.push(...(await read(p)).filas);
269
+ paginasLeidas.push(p);
270
+ }
271
+ catch (e) {
272
+ // One page's SII error is recorded verbatim and skipped; a session-level failure is
273
+ // not an F22Error and aborts the read.
274
+ if (e instanceof F22Error) {
275
+ paginasConError.push({ pagina: p, error: e.message });
276
+ continue;
277
+ }
278
+ throw e;
279
+ }
280
+ }
281
+ }
282
+ return {
283
+ rut: propio.rut.canonical,
284
+ anio: anio.canonical,
285
+ dj,
286
+ registros: first.registros,
287
+ paginas,
288
+ paginasLeidas,
289
+ filas,
290
+ paginasConError,
291
+ // With `pagina` the one page was read or the call threw, so only a full read can fall short.
292
+ incompleto: paginasConError.length > 0 || (pagina === undefined && paginas > MAX_PAGINAS_TERCEROS),
293
+ };
294
+ });
295
+ audit(runtime, 'f22_terceros_detalle', 'ok', {
296
+ rut: result.rut,
297
+ period: anio.canonical,
298
+ dj,
299
+ count: result.filas.length,
300
+ durationMs: runtime.clock.now().getTime() - start,
301
+ });
302
+ return result;
303
+ }
304
+ catch (e) {
305
+ audit(runtime, 'f22_terceros_detalle', 'failed', { period: anio.canonical, dj });
306
+ throw e;
307
+ }
308
+ }
189
309
  //# sourceMappingURL=f22.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"f22.js","sourceRoot":"","sources":["../../src/tasks/f22.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"f22.js","sourceRoot":"","sources":["../../src/tasks/f22.ts"],"names":[],"mappings":"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"}