@albertomarturelo/sii-core 0.18.1 → 0.19.1

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 (66) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/config/config.d.ts +4 -0
  3. package/dist/config/config.d.ts.map +1 -1
  4. package/dist/config/config.js +4 -0
  5. package/dist/config/config.js.map +1 -1
  6. package/dist/errors/errors.d.ts +6 -0
  7. package/dist/errors/errors.d.ts.map +1 -1
  8. package/dist/errors/errors.js +6 -0
  9. package/dist/errors/errors.js.map +1 -1
  10. package/dist/format/text.d.ts +9 -0
  11. package/dist/format/text.d.ts.map +1 -0
  12. package/dist/format/text.js +27 -0
  13. package/dist/format/text.js.map +1 -0
  14. package/dist/index.d.ts +2 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/portal/bienes-raices-misii.d.ts +46 -0
  19. package/dist/portal/bienes-raices-misii.d.ts.map +1 -0
  20. package/dist/portal/bienes-raices-misii.js +175 -0
  21. package/dist/portal/bienes-raices-misii.js.map +1 -0
  22. package/dist/portal/bte.d.ts +3 -0
  23. package/dist/portal/bte.d.ts.map +1 -1
  24. package/dist/portal/bte.js +2 -0
  25. package/dist/portal/bte.js.map +1 -1
  26. package/dist/portal/dte-mipyme.d.ts +0 -8
  27. package/dist/portal/dte-mipyme.d.ts.map +1 -1
  28. package/dist/portal/dte-mipyme.js +1 -24
  29. package/dist/portal/dte-mipyme.js.map +1 -1
  30. package/dist/portal/f22/declaraciones.d.ts.map +1 -1
  31. package/dist/portal/f22/declaraciones.js +3 -2
  32. package/dist/portal/f22/declaraciones.js.map +1 -1
  33. package/dist/portal/f22/historial.d.ts.map +1 -1
  34. package/dist/portal/f22/historial.js +3 -1
  35. package/dist/portal/f22/historial.js.map +1 -1
  36. package/dist/portal/f22/observaciones.d.ts.map +1 -1
  37. package/dist/portal/f22/observaciones.js +2 -1
  38. package/dist/portal/f22/observaciones.js.map +1 -1
  39. package/dist/portal/f22/terceros.d.ts.map +1 -1
  40. package/dist/portal/f22/terceros.js +6 -19
  41. package/dist/portal/f22/terceros.js.map +1 -1
  42. package/dist/portal/f29-rfi-form.d.ts +7 -1
  43. package/dist/portal/f29-rfi-form.d.ts.map +1 -1
  44. package/dist/portal/f29-rfi-form.js +95 -28
  45. package/dist/portal/f29-rfi-form.js.map +1 -1
  46. package/dist/portal/f29-rfi.d.ts +12 -6
  47. package/dist/portal/f29-rfi.d.ts.map +1 -1
  48. package/dist/portal/f29-rfi.js +62 -19
  49. package/dist/portal/f29-rfi.js.map +1 -1
  50. package/dist/portal/f29.d.ts +7 -0
  51. package/dist/portal/f29.d.ts.map +1 -1
  52. package/dist/portal/f29.js +19 -0
  53. package/dist/portal/f29.js.map +1 -1
  54. package/dist/tasks/alertas.d.ts +11 -3
  55. package/dist/tasks/alertas.d.ts.map +1 -1
  56. package/dist/tasks/alertas.js +82 -6
  57. package/dist/tasks/alertas.js.map +1 -1
  58. package/dist/tasks/bienes-raices.d.ts +13 -0
  59. package/dist/tasks/bienes-raices.d.ts.map +1 -0
  60. package/dist/tasks/bienes-raices.js +39 -0
  61. package/dist/tasks/bienes-raices.js.map +1 -0
  62. package/dist/tasks/f29-submit.d.ts +20 -8
  63. package/dist/tasks/f29-submit.d.ts.map +1 -1
  64. package/dist/tasks/f29-submit.js +97 -19
  65. package/dist/tasks/f29-submit.js.map +1 -1
  66. package/package.json +1 -1
@@ -7,17 +7,21 @@ import { assertOperatingSelf, withSession } from '../auth/index.js';
7
7
  import { recordAudit } from '../audit/index.js';
8
8
  import { Anio, Periodo } from '../periodo/index.js';
9
9
  import { Rut } from '../rut/index.js';
10
- import { NotAuthenticatedError, RateLimitError, SiiError, ValidationError, classifyError, } from '../errors/index.js';
10
+ import { BteError, NotAuthenticatedError, RateLimitError, SiiError, ValidationError, classifyError, } from '../errors/index.js';
11
11
  import { DEFAULT_SETTINGS, HOSTS } from '../config/index.js';
12
12
  import { parseDatosCntrNow } from '../auth/datos-cntr.js';
13
13
  import { fetchF22Declaraciones, fetchF22Observaciones, pickVigenteFolio, } from '../portal/f22/index.js';
14
14
  import { fetchF29Estado } from '../portal/f29.js';
15
15
  import { fetchPeticiones } from '../portal/peticiones.js';
16
- export const FUENTES_ALERTAS = ['f22', 'f29', 'peticiones'];
16
+ import { fetchPredios } from '../portal/bienes-raices-misii.js';
17
+ import { fetchBteMensual } from '../portal/bte.js';
18
+ export const FUENTES_ALERTAS = ['f22', 'f29', 'peticiones', 'bienes_raices'];
17
19
  /** F22: años tributarios read, the current one first (3 ⇒ the prescription window). */
18
20
  const F22_ANIOS = 3;
19
21
  /** F29: períodos read, ending at the previous month (the current one is not due yet). */
20
22
  const F29_PERIODOS = 12;
23
+ /** Bienes raíces: a vigente cuota due within this many days is « por vencer » (ADR-032). */
24
+ const CONTRIBUCIONES_DIAS = 30;
21
25
  const pacingMs = () => Math.round(1000 / DEFAULT_SETTINGS.rateLimitRps);
22
26
  const pad = (n) => String(n).padStart(2, '0');
23
27
  const isoDate = (d) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
@@ -90,6 +94,8 @@ function mesDeAtributo(s) {
90
94
  return m ? Periodo.of(Number(m[2]), Number(m[1])) : null;
91
95
  }
92
96
  const antes = (a, b) => a.year < b.year || (a.year === b.year && a.month < b.month);
97
+ /** An atributo still in force: no end date, not deleted. */
98
+ const activo = (a) => a.fechaTermino == null && a.eliminado == null;
93
99
  /** The month the account entered an observed primera-categoría regime, and the inicio de
94
100
  * actividades, whichever is later: an account that moved from honorarios into the regime owed
95
101
  * nothing before it (#209 review). Either one unknown ⇒ null. */
@@ -97,9 +103,7 @@ function obligadoDesde(inicio, atributos) {
97
103
  if (!inicio)
98
104
  return null; // no lower bound: "due every month" would reach before the account
99
105
  const desde = atributos
100
- .filter((a) => REGIMEN_PRIMERA_CATEGORIA.has(a.atrCodigo?.trim() ?? '') &&
101
- a.fechaTermino == null &&
102
- a.eliminado == null)
106
+ .filter((a) => REGIMEN_PRIMERA_CATEGORIA.has(a.atrCodigo?.trim() ?? '') && activo(a))
103
107
  .map((a) => mesDeAtributo(a.fechaInicio));
104
108
  const meses = desde.filter((p) => p !== null);
105
109
  // An active regime whose start does not parse is not proof of when the obligation began.
@@ -108,6 +112,26 @@ function obligadoDesde(inicio, atributos) {
108
112
  const regimen = meses.reduce((a, b) => (antes(a, b) ? a : b));
109
113
  return antes(regimen, inicio) ? inicio : regimen;
110
114
  }
115
+ // Segunda categoría owes no F29 « sin movimiento » (preguntas_frecuentes/impuestos_mensuales/
116
+ // 001_130_1154.htm, read 2026-10-29); it owes the F29 of a month whose boletas carry retención del
117
+ // emisor (ayudas/nuevos_contribuyentes/boleta-honorarios.html, read 2026-10-29). SII registers the
118
+ // category in the `SGPE` atributo's `valor`, observed 2026-10-23 on a honorarios-only persona as
119
+ // « Tipo contribuyente=1 y Categoría Contribuyente = 2 ». Only that exact category counts: « = 1 y
120
+ // 2 » or any other text is unknown and keeps the activity rule. `valor` is read for SGPE only:
121
+ // under NOTI it is the email. SII's own `valor` carries three U+001A where the « í » goes, and two
122
+ // spaces before the « y » (observed 2026-10-29, live #245). That is in SII's body, not a decoding
123
+ // artefact: a TextDecoder never yields U+001A (an undecodable byte becomes U+FFFD, #224). So
124
+ // whatever stands for the accent is accepted; the anchor on « = 2 » keeps « = 1 y 2 » out.
125
+ const SEGUNDA_CATEGORIA = /Categor\S*a\s+Contribuyente\s*=\s*2\s*$/i;
126
+ function segundaCategoria(atributos) {
127
+ const activos = atributos.filter(activo);
128
+ if (activos.some((a) => REGIMEN_PRIMERA_CATEGORIA.has(a.atrCodigo?.trim() ?? '')))
129
+ return false;
130
+ return activos.some((a) => {
131
+ const valor = a['valor'];
132
+ return (a.atrCodigo?.trim() === 'SGPE' && typeof valor === 'string' && SEGUNDA_CATEGORIA.test(valor));
133
+ });
134
+ }
111
135
  async function leerRegimen(session) {
112
136
  // A dead jar bounces here and the seam raises SessionExpiredError (aborts the read). A live
113
137
  // page without the object only loses the bounds: no window, and the later day-20 deadline.
@@ -118,6 +142,7 @@ async function leerRegimen(session) {
118
142
  return {
119
143
  inicio,
120
144
  obligadoDesde: obligadoDesde(inicio, datos?.atributos ?? []),
145
+ segundaCategoria: segundaCategoria(datos?.atributos ?? []),
121
146
  termino: mesDe(c?.fechaTerminoGiro),
122
147
  // `"S"` observed. A day-12 taxpayer says "N"; an unknown value keeps the 20th, the later of
123
148
  // the two, so the alerta is never early.
@@ -232,6 +257,27 @@ async function leerF29(runtime, session, rut, push) {
232
257
  },
233
258
  });
234
259
  }
260
+ // Segunda categoría: a month is due only when its issued boletas carry retención del emisor
261
+ // (#245). The activity rule would get it wrong both ways: one such month filed made every other
262
+ // month « sin declarar ». SII's month total leaves anuladas out, so page 0 is enough.
263
+ if (regimen.segundaCategoria) {
264
+ // With no known inicio there is no lower bound: a month before the account issued any boleta
265
+ // may answer BTE's « no informe » and end the source as an error (not observed; noted, #254).
266
+ let debido = false;
267
+ for (const { periodo, alerta } of sinDeclarar) {
268
+ await runtime.clock.sleep(pacingMs());
269
+ const { totales } = await fetchBteMensual(session, { rut, periodo, side: 'EMITIDAS' }, () => runtime.clock.sleep(pacingMs()), { soloTotales: true });
270
+ // Unknown is never "not obligated": a missing total ends the source as an error.
271
+ if (totales.retencionEmisor === null) {
272
+ throw new BteError(`El SII no entregó la suma de retención del emisor de las boletas de ${periodo.formatted}.`);
273
+ }
274
+ if (totales.retencionEmisor > 0) {
275
+ debido = true;
276
+ push(alerta);
277
+ }
278
+ }
279
+ return declarante || debido ? 'ok' : 'no_declarante';
280
+ }
235
281
  // An account with no Vigente F29 in the window does not file F29 (a persona without giro):
236
282
  // twelve "sin declarar" would be noise, not alertas (ADR-030). Unless SII holds it in a
237
283
  // primera-categoría regime: then a new business that never filed is exactly the case (#208),
@@ -263,6 +309,34 @@ async function leerPeticiones(session, rut, push) {
263
309
  }
264
310
  return 'ok';
265
311
  }
312
+ async function leerBienesRaices(runtime, session, push) {
313
+ const now = runtime.clock.now();
314
+ const limite = isoDate(new Date(now.getFullYear(), now.getMonth(), now.getDate() + CONTRIBUCIONES_DIAS));
315
+ for (const p of await fetchPredios(session)) {
316
+ for (const c of p.cuotas) {
317
+ // A vigente cuota whose date did not parse is shown, not hidden (ADR-032).
318
+ const porVencer = !c.vencida && (c.fechaVencimiento === null || c.fechaVencimiento <= limite);
319
+ if (!c.vencida && !porVencer)
320
+ continue;
321
+ const estado = c.vencida ? 'vencida' : 'por_vencer';
322
+ push({
323
+ ...base('bienes_raices'),
324
+ id: `bienes_raices:${p.comuna.codigo}-${p.manzana}-${p.predio}:` +
325
+ `${c.anio ?? 'null'}-${c.semestre ?? 'null'}-${c.cuota ?? 'null'}:${estado}`,
326
+ tipo: c.vencida ? 'contribuciones_vencida' : 'contribuciones_por_vencer',
327
+ estado: c.condicion,
328
+ fecha: c.fechaVencimiento,
329
+ contribucion: {
330
+ rol: p.rol,
331
+ comuna: p.comuna.nombre,
332
+ cuota: `${c.anio ?? '?'}-${c.cuota ?? '?'}`,
333
+ monto: c.totalPago,
334
+ },
335
+ });
336
+ }
337
+ }
338
+ return 'ok';
339
+ }
266
340
  /** Read the alertas of the session principal from the requested sources (ADR-030). */
267
341
  export async function alertas(runtime, args = {}) {
268
342
  const fuentes = parseFuentes(args.fuentes); // fail fast — no session opened
@@ -292,7 +366,9 @@ export async function alertas(runtime, args = {}) {
292
366
  ? await leerF22(runtime, session, rut, push)
293
367
  : origen === 'f29'
294
368
  ? await leerF29(runtime, session, rut, push)
295
- : await leerPeticiones(session, rut, push);
369
+ : origen === 'peticiones'
370
+ ? await leerPeticiones(session, rut, push)
371
+ : await leerBienesRaices(runtime, session, push);
296
372
  estados.push({ origen, estado });
297
373
  }
298
374
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"alertas.js","sourceRoot":"","sources":["../../src/tasks/alertas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alertas.js","sourceRoot":"","sources":["../../src/tasks/alertas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type Predio } from '../portal/bienes-raices-misii.js';
2
+ import type { Runtime } from '../seams/index.js';
3
+ export type { CuotaContribucion, Predio } from '../portal/bienes-raices-misii.js';
4
+ export interface BienesRaicesResult {
5
+ readonly rut: string;
6
+ readonly predios: readonly Predio[];
7
+ /** Totals over every predio, as Mi SII's table counts them. */
8
+ readonly cuotasVencidas: number;
9
+ readonly cuotasVigentes: number;
10
+ }
11
+ /** The predios whose contribuciones the session's RUT pays, with their unpaid cuotas. */
12
+ export declare function bienesRaicesList(runtime: Runtime): Promise<BienesRaicesResult>;
13
+ //# sourceMappingURL=bienes-raices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bienes-raices.d.ts","sourceRoot":"","sources":["../../src/tasks/bienes-raices.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAElF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,+DAA+D;IAC/D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,yFAAyF;AACzF,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiCpF"}
@@ -0,0 +1,39 @@
1
+ // Public bienes-raíces task the surfaces call (ADR-003 / ADR-032). Wraps the Mi SII facade in
2
+ // `withSession` and writes ONE audit receipt. SESSION-KEYED (ADR-005): Mi SII answers for the
3
+ // principal, so the task takes no `--rut` and refuses a representing pointer up front.
4
+ // The audit records the read only (rut + counts), never a rol, an address or an amount (ADR-006).
5
+ import { assertOperatingSelf, withSession } from '../auth/index.js';
6
+ import { recordAudit } from '../audit/index.js';
7
+ import { BienesRaicesError } from '../errors/index.js';
8
+ import { fetchPredios } from '../portal/bienes-raices-misii.js';
9
+ /** The predios whose contribuciones the session's RUT pays, with their unpaid cuotas. */
10
+ export async function bienesRaicesList(runtime) {
11
+ await assertOperatingSelf(runtime, (empresa) => new BienesRaicesError(`Bienes raíces es session-keyed: Mi SII responde por el titular de la sesión, no por el ` +
12
+ `RUT operado (${empresa}). Para los de esa empresa, inicia sesión como ella ` +
13
+ '(`sii auth logout` y luego `sii auth login`).'));
14
+ const start = runtime.clock.now().getTime();
15
+ try {
16
+ const result = await withSession(runtime, async (session, ctx) => {
17
+ const predios = await fetchPredios(session);
18
+ return {
19
+ rut: ctx.sessionRut,
20
+ predios,
21
+ cuotasVencidas: predios.reduce((n, p) => n + p.cuotasVencidas, 0),
22
+ cuotasVigentes: predios.reduce((n, p) => n + p.cuotasVigentes, 0),
23
+ };
24
+ });
25
+ recordAudit(runtime, {
26
+ action: 'bienes_raices_list',
27
+ result: 'ok',
28
+ rut: result.rut,
29
+ count: result.predios.length,
30
+ durationMs: runtime.clock.now().getTime() - start,
31
+ });
32
+ return result;
33
+ }
34
+ catch (e) {
35
+ recordAudit(runtime, { action: 'bienes_raices_list', result: 'failed' });
36
+ throw e;
37
+ }
38
+ }
39
+ //# sourceMappingURL=bienes-raices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bienes-raices.js","sourceRoot":"","sources":["../../src/tasks/bienes-raices.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,8FAA8F;AAC9F,uFAAuF;AACvF,kGAAkG;AAClG,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAe,MAAM,kCAAkC,CAAC;AAa7E,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAgB;IACrD,MAAM,mBAAmB,CACvB,OAAO,EACP,CAAC,OAAO,EAAE,EAAE,CACV,IAAI,iBAAiB,CACnB,yFAAyF;QACvF,gBAAgB,OAAO,sDAAsD;QAC7E,+CAA+C,CAClD,CACJ,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;YAC/D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAC5C,OAAO;gBACL,GAAG,EAAE,GAAG,CAAC,UAAU;gBACnB,OAAO;gBACP,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;gBACjE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;aAClE,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,WAAW,CAAC,OAAO,EAAE;YACnB,MAAM,EAAE,oBAAoB;YAC5B,MAAM,EAAE,IAAI;YACZ,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;YAC5B,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK;SAClD,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzE,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { Periodo } from '../periodo/index.js';
2
2
  import { Rut } from '../rut/index.js';
3
3
  import { type F29Estado, type F29Propuesta } from '../portal/f29.js';
4
- import { type F29BorradorValidado, type F29Desacuerdo } from '../portal/f29-rfi.js';
4
+ import { type F29BorradorValidado, type F29Desacuerdo, type F29Ruta } from '../portal/f29-rfi.js';
5
5
  import type { Gwt7Node } from '../portal/gwt.js';
6
6
  import { type F29Grupo } from '../portal/f29-codigos.js';
7
7
  import type { PortalSession, Runtime } from '../seams/index.js';
@@ -21,8 +21,9 @@ export interface F29SubmitPreview {
21
21
  readonly desacuerdos: readonly F29Desacuerdo[];
22
22
  /** True when nothing blocks the submit. */
23
23
  readonly listoParaPresentar: boolean;
24
- /** Always true: the preview leaves a borrador "Guardada" at SII (non-filing). */
25
- readonly borradorGuardado: true;
24
+ /** True on the propuesta route, whose handoff leaves a borrador "Guardada" at SII
25
+ * (non-filing). The sin movimiento route saves nothing (run3, #221). */
26
+ readonly borradorGuardado: boolean;
26
27
  }
27
28
  /** A filed declaración. `pagoUrl` stays null until SII's payment link is observed (ADR-029
28
29
  * amendment); when `total` > 0 the user pays at SII themselves. */
@@ -45,16 +46,21 @@ export interface F29SubmitChain {
45
46
  rut: Rut;
46
47
  periodo: Periodo;
47
48
  }): Promise<F29Propuesta>;
48
- /** The propuesta handoff, the form app and SII's validation. Writes a borrador "Guardada". */
49
+ /** The handoff of `ruta`, the form app and SII's validation. The propuesta route writes a
50
+ * borrador "Guardada". */
49
51
  validar(session: PortalSession, p: {
50
52
  rut: Rut;
51
53
  periodo: Periodo;
52
54
  hoy: Date;
55
+ ruta: F29Ruta;
53
56
  }): Promise<F29BorradorValidado>;
54
57
  /** Saves the validated borrador; does not file. */
55
- guardar(session: PortalSession, borrador: Gwt7Node): Promise<Gwt7Node>;
58
+ guardar(session: PortalSession, borrador: Gwt7Node, ruta: F29Ruta): Promise<Gwt7Node>;
56
59
  /** FILES the declaración. */
57
60
  inyectar(session: PortalSession, guardado: Gwt7Node): Promise<void>;
61
+ /** The month of the account's inicio de actividades (Mi SII `DatosCntrNow`), null when SII
62
+ * does not say. Read only on the sin movimiento route, for its first month. */
63
+ inicioActividades(session: PortalSession): Promise<Periodo | null>;
58
64
  }
59
65
  export declare const SII_F29_SUBMIT: F29SubmitChain;
60
66
  /** The two tasks over a given chain. Tests pass a fake one; the barrel exports only the pair
@@ -62,22 +68,28 @@ export declare const SII_F29_SUBMIT: F29SubmitChain;
62
68
  export declare function f29SubmitTasks(chain: F29SubmitChain): {
63
69
  f29SubmitPreview: (runtime: Runtime, args: {
64
70
  periodo: string;
71
+ sinMovimiento?: boolean;
65
72
  }) => Promise<F29SubmitPreview>;
66
73
  f29Submit: (runtime: Runtime, args: {
67
74
  periodo: string;
68
75
  total: number | string;
76
+ sinMovimiento?: boolean;
69
77
  }) => Promise<F29SubmitResult>;
70
78
  };
71
79
  /** The preview: SII's propuesta, what SII's formulas compute, SII's validated total and every
72
- * disagreement. Files nothing; leaves a borrador "Guardada" at SII. */
80
+ * disagreement. Files nothing; the propuesta route leaves a borrador "Guardada" at SII.
81
+ * `sinMovimiento` takes SII's « Declarar sin movimiento » route (ADR-029 amendment, #221). */
73
82
  export declare function f29SubmitPreview(runtime: Runtime, args: {
74
83
  periodo: string;
84
+ sinMovimiento?: boolean;
75
85
  }): Promise<F29SubmitPreview>;
76
86
  /** FILE the declaración. Refuses, without saving or filing, when SII's total today is not
77
- * `total`, or when the borrador SII validated disagrees with the propuesta. Then saves and
78
- * files once. If the filing call fails, SII's state decides what happened; it is never resent. */
87
+ * `total`, or when the borrador SII validated disagrees with the propuesta (with
88
+ * `sinMovimiento`: when it declares anything). Then saves and files once. If the filing call
89
+ * fails, SII's state decides what happened; it is never resent. */
79
90
  export declare function f29Submit(runtime: Runtime, args: {
80
91
  periodo: string;
81
92
  total: number | string;
93
+ sinMovimiento?: boolean;
82
94
  }): Promise<F29SubmitResult>;
83
95
  //# sourceMappingURL=f29-submit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"f29-submit.d.ts","sourceRoot":"","sources":["../../src/tasks/f29-submit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"f29-submit.d.ts","sourceRoot":"","sources":["../../src/tasks/f29-submit.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAML,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAQL,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,OAAO,EACb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAc,aAAa,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAgC,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEvE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC;IAC1D,0FAA0F;IAC1F,QAAQ,CAAC,UAAU,EAAE,SAAS,QAAQ,EAAE,CAAC;IACzC,wFAAwF;IACxF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8FAA8F;IAC9F,QAAQ,CAAC,WAAW,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/C,2CAA2C;IAC3C,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC;6EACyE;IACzE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED;oEACoE;AACpE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;sCACsC;AACtC,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACtF,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5F;+BAC2B;IAC3B,OAAO,CACL,OAAO,EAAE,aAAa,EACtB,CAAC,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAC1D,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC,mDAAmD;IACnD,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtF,6BAA6B;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE;oFACgF;IAChF,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CACpE;AAED,eAAO,MAAM,cAAc,EAAE,cAoB5B,CAAC;AAqSF;qEACqE;AACrE,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG;IACrD,gBAAgB,EAAE,CAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,KAC/C,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/B,SAAS,EAAE,CACT,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,KACvE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC/B,CAKA;AAED;;+FAE+F;AAC/F,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACjD,OAAO,CAAC,gBAAgB,CAAC,CAE3B;AAED;;;oEAGoE;AACpE,wBAAgB,SAAS,CACvB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACzE,OAAO,CAAC,eAAe,CAAC,CAE1B"}
@@ -9,26 +9,42 @@
9
9
  // borrador), refuses on a total that is not the confirmed one or on any disagreement, then
10
10
  // saves (guardarBorradorRfiValidado) and files (inyectarBorradorRfi) once, never retried.
11
11
  //
12
- // The audit records the RUT, the período, the duration and the folio. Never amounts or códigos.
12
+ // `sinMovimiento` (#221, ADR-029 amendment 2026-10-29) takes SII's « Declarar sin movimiento »
13
+ // route instead: no propuesta required (one refuses), every código SII validates must be zero.
14
+ //
15
+ // The audit records the RUT, the período, the route, the duration and the folio. Never amounts or
16
+ // códigos.
13
17
  import { withSession } from '../auth/index.js';
18
+ import { parseDatosCntrNow } from '../auth/datos-cntr.js';
19
+ import { HOSTS } from '../config/index.js';
14
20
  import { recordAudit } from '../audit/index.js';
15
21
  import { F29Error, F29RechazoError, ValidationError } from '../errors/index.js';
16
22
  import { Periodo } from '../periodo/index.js';
17
23
  import { Rut } from '../rut/index.js';
18
- import { fetchF29Estado, fetchF29Propuesta, iniciarFlujoPropuestaF29, } from '../portal/f29.js';
24
+ import { fetchF29Estado, fetchF29Propuesta, iniciarFlujoPropuestaF29, iniciarFlujoSinMovimientoF29, } from '../portal/f29.js';
19
25
  import { abrirFormularioF29, guardarBorradorF29, inyectarBorradorF29, recargosDeclarados, rfiCaller, validarBorradorF29, verificarBorradorF29, } from '../portal/f29-rfi.js';
26
+ import { mesActual } from '../portal/f29-rfi-form.js';
20
27
  import { F29_CODIGOS, glosaF29 } from '../portal/f29-codigos.js';
21
28
  import { agrupar, assertSelfOperating } from './f29.js';
22
29
  export const SII_F29_SUBMIT = {
23
30
  estado: fetchF29Estado,
24
31
  propuesta: fetchF29Propuesta,
25
32
  async validar(session, p) {
26
- const url = await iniciarFlujoPropuestaF29(session, p);
33
+ const url = p.ruta === 'sinMovimiento'
34
+ ? await iniciarFlujoSinMovimientoF29(session, p)
35
+ : await iniciarFlujoPropuestaF29(session, p);
27
36
  await abrirFormularioF29(session, url);
28
37
  return validarBorradorF29(rfiCaller(session), p);
29
38
  },
30
- guardar: (session, borrador) => guardarBorradorF29(rfiCaller(session), borrador),
39
+ guardar: (session, borrador, ruta) => guardarBorradorF29(rfiCaller(session), borrador, ruta),
31
40
  inyectar: (session, guardado) => inyectarBorradorF29(rfiCaller(session), guardado),
41
+ async inicioActividades(session) {
42
+ // The same read `alertas` makes (ADR-030 / #195): `"2022-09-26…"` (observed) ⇒ that month.
43
+ const { body } = await session.requestText(HOSTS.miSii, { method: 'GET' });
44
+ const s = parseDatosCntrNow(body)?.contribuyente?.fechaInicioActividades;
45
+ const m = s ? /^(\d{4})-(\d{2})-\d{2}/.exec(s) : null;
46
+ return m ? Periodo.of(Number(m[1]), Number(m[2])) : null;
47
+ },
32
48
  };
33
49
  function audit(runtime, action, result, extra) {
34
50
  recordAudit(runtime, { action, result, ...extra });
@@ -40,7 +56,13 @@ const esVigente = (d) => d.estadoId === 1 || d.estado?.trim().toLowerCase() ===
40
56
  class Rehusado extends F29Error {
41
57
  }
42
58
  /** The part both phases share, from fresh SII responses each time. */
43
- async function preparar(chain, session, rut, periodo, hoy) {
59
+ async function preparar(chain, session, rut, periodo, hoy, ruta) {
60
+ if (ruta === 'sinMovimiento' && periodo.canonical >= mesActual(hoy)) {
61
+ // The customizado flow opens any período SII is asked for, this month's and future ones
62
+ // included, and nobody can assert that a month not yet over had no movement.
63
+ throw new Rehusado(`El período ${periodo.formatted} todavía no termina: un mes se declara sin movimiento ` +
64
+ 'una vez terminado.');
65
+ }
44
66
  const estado = await chain.estado(session, { rut, periodo });
45
67
  const vigente = estado.declaraciones.find(esVigente);
46
68
  if (vigente) {
@@ -48,13 +70,21 @@ async function preparar(chain, session, rut, periodo, hoy) {
48
70
  `${vigente.folio ? ` (folio ${vigente.folio})` : ''}. Presentar otra sería una ` +
49
71
  'rectificatoria, que `sii f29 submit` no hace.');
50
72
  }
73
+ if (ruta === 'sinMovimiento')
74
+ await assertMesAnteriorPresentado(chain, session, rut, periodo);
51
75
  const propuesta = await chain.propuesta(session, { rut, periodo });
52
- if (!propuesta.tienePropuesta) {
76
+ if (ruta === 'propuesta' && !propuesta.tienePropuesta) {
53
77
  throw new Rehusado(`SII no tiene una propuesta de F29 para ${periodo.formatted}, y \`sii f29 submit\` solo ` +
54
- 'presenta la propuesta de SII. Si el período no tuvo movimiento, igual hay que ' +
55
- 'declararlo: hazlo en SII.');
78
+ 'presenta la propuesta de SII. Si el período no tuvo movimiento, decláralo con ' +
79
+ `\`sii f29 submit ${periodo.formatted} --sin-movimiento\`.`);
80
+ }
81
+ if (ruta === 'sinMovimiento' && propuesta.tienePropuesta) {
82
+ // The flag must never file zeros over SII's data.
83
+ throw new Rehusado(`SII tiene una propuesta de F29 para ${periodo.formatted}: el período tuvo movimiento ` +
84
+ 'según SII, o arrastra el remanente de crédito del mes anterior (504). Revísala con ' +
85
+ `\`sii f29 submit ${periodo.formatted}\`, sin --sin-movimiento.`);
56
86
  }
57
- const validado = await chain.validar(session, { rut, periodo, hoy });
87
+ const validado = await chain.validar(session, { rut, periodo, hoy, ruta });
58
88
  const recargos = recargosDeclarados(validado);
59
89
  if (recargos.length > 0) {
60
90
  throw new Rehusado(`SII agrega recargos a ${periodo.formatted} (códigos ${recargos.join(', ')}): el plazo ` +
@@ -63,8 +93,45 @@ async function preparar(chain, session, rut, periodo, hoy) {
63
93
  'No se presentó nada.');
64
94
  }
65
95
  const desacuerdos = verificarBorradorF29(propuesta.codigos, validado.campos, validado.declarados, validado.textos);
96
+ if (ruta === 'sinMovimiento') {
97
+ // Stricter than the propuesta's rule: a sin movimiento declaración is all zeros, so any
98
+ // código SII declares with a value blocks it, even one a formula explains.
99
+ const listados = new Set(desacuerdos.map((d) => d.codigo));
100
+ for (const codigo of [...validado.declarados.keys(), ...validado.textos.keys()]) {
101
+ if (!listados.has(codigo))
102
+ desacuerdos.push({ codigo, motivo: 'sobra' });
103
+ }
104
+ desacuerdos.sort((a, b) => Number(a.codigo) - Number(b.codigo));
105
+ }
66
106
  return { propuesta, validado, desacuerdos };
67
107
  }
108
+ const mesAnterior = (p) => p.month === 1 ? Periodo.of(p.year - 1, 12) : Periodo.of(p.year, p.month - 1);
109
+ const antes = (a, b) => a.canonical < b.canonical;
110
+ /** A month sin movimiento follows the previous one (ADR-029 amendment, #221). SII's propuesta
111
+ * carries the previous month's remanente de crédito as 504 (run5/run6), and that refuses the
112
+ * flag; but SII only knows it once the previous month is filed. Declaring a month in zeros
113
+ * before then would drop the remanente the earlier month may leave. So the previous month
114
+ * must be Vigente, unless it falls before the account's inicio de actividades. */
115
+ async function assertMesAnteriorPresentado(chain, session, rut, periodo) {
116
+ const anterior = mesAnterior(periodo);
117
+ const estado = await chain.estado(session, { rut, periodo: anterior });
118
+ if (estado.declaraciones.some(esVigente))
119
+ return;
120
+ const inicio = await chain.inicioActividades(session);
121
+ if (inicio !== null && antes(periodo, inicio)) {
122
+ throw new Rehusado(`${periodo.formatted} es anterior al inicio de actividades de la cuenta: no hay F29 que ` +
123
+ 'declarar.');
124
+ }
125
+ if (inicio !== null && antes(anterior, inicio))
126
+ return; // the first month of activity
127
+ throw new Rehusado(`El F29 de ${anterior.formatted} no está presentado. Un mes sin movimiento se declara ` +
128
+ `después del anterior: si ${anterior.formatted} deja remanente de crédito, ` +
129
+ `${periodo.formatted} lo arrastra (código 504) y ya no es sin movimiento. Presenta ` +
130
+ `${anterior.formatted} primero.`);
131
+ }
132
+ const rutaDe = (sinMovimiento) => sinMovimiento === true ? 'sinMovimiento' : 'propuesta';
133
+ /** The route in the audit receipt, only when it is not the default. */
134
+ const rutaAudit = (ruta) => ruta === 'sinMovimiento' ? { ruta } : {};
68
135
  function calculados(validado) {
69
136
  const out = [];
70
137
  for (const c of validado.campos) {
@@ -81,6 +148,7 @@ function calculados(validado) {
81
148
  const describirDesacuerdos = (ds) => ds.map((d) => `${d.codigo} (${d.motivo.replace(/_/g, ' ')})`).join(', ');
82
149
  async function previewWith(chain, runtime, args) {
83
150
  const periodo = Periodo.parse(args.periodo);
151
+ const ruta = rutaDe(args.sinMovimiento);
84
152
  await assertSelfOperating(runtime);
85
153
  const start = runtime.clock.now().getTime();
86
154
  let rut;
@@ -88,7 +156,7 @@ async function previewWith(chain, runtime, args) {
88
156
  const res = await withSession(runtime, async (session, ctx) => {
89
157
  const principal = Rut.parse(ctx.sessionRut);
90
158
  rut = principal.canonical;
91
- const p = await preparar(chain, session, principal, periodo, runtime.clock.now());
159
+ const p = await preparar(chain, session, principal, periodo, runtime.clock.now(), ruta);
92
160
  const preview = {
93
161
  rut: principal.canonical,
94
162
  periodo: periodo.formatted,
@@ -97,13 +165,14 @@ async function previewWith(chain, runtime, args) {
97
165
  total: p.validado.total,
98
166
  desacuerdos: p.desacuerdos,
99
167
  listoParaPresentar: p.desacuerdos.length === 0,
100
- borradorGuardado: true,
168
+ borradorGuardado: ruta === 'propuesta',
101
169
  };
102
170
  return preview;
103
171
  });
104
172
  audit(runtime, 'f29_submit_preview', 'ok', {
105
173
  rut: res.rut,
106
174
  period: periodo.canonical,
175
+ ...rutaAudit(ruta),
107
176
  durationMs: runtime.clock.now().getTime() - start,
108
177
  });
109
178
  return res;
@@ -112,6 +181,7 @@ async function previewWith(chain, runtime, args) {
112
181
  audit(runtime, 'f29_submit_preview', e instanceof Rehusado ? 'refused' : 'failed', {
113
182
  ...(rut ? { rut } : {}),
114
183
  period: periodo.canonical,
184
+ ...rutaAudit(ruta),
115
185
  durationMs: runtime.clock.now().getTime() - start,
116
186
  });
117
187
  throw e;
@@ -128,6 +198,7 @@ function parseTotal(total) {
128
198
  async function submitWith(chain, runtime, args) {
129
199
  const periodo = Periodo.parse(args.periodo);
130
200
  const totalEcho = parseTotal(args.total);
201
+ const ruta = rutaDe(args.sinMovimiento);
131
202
  await assertSelfOperating(runtime);
132
203
  const start = runtime.clock.now().getTime();
133
204
  let rut;
@@ -137,7 +208,7 @@ async function submitWith(chain, runtime, args) {
137
208
  const res = await withSession(runtime, async (session, ctx) => {
138
209
  const principal = Rut.parse(ctx.sessionRut);
139
210
  rut = principal.canonical;
140
- const p = await preparar(chain, session, principal, periodo, runtime.clock.now());
211
+ const p = await preparar(chain, session, principal, periodo, runtime.clock.now(), ruta);
141
212
  if (p.validado.total !== totalEcho) {
142
213
  result = 'refused';
143
214
  throw new ValidationError(`El TOTAL A PAGAR que SII valida hoy para ${periodo.formatted} es ${p.validado.total}, ` +
@@ -145,11 +216,14 @@ async function submitWith(chain, runtime, args) {
145
216
  'confirma con ese total. No se presentó nada.');
146
217
  }
147
218
  if (p.desacuerdos.length > 0) {
148
- throw new Rehusado('El borrador que SII validó no coincide con la propuesta en los códigos ' +
149
- `${describirDesacuerdos(p.desacuerdos)}. No se presentó nada. Que SII diga ` +
150
- '"no presenta errores" no basta: revisa la propuesta en SII.');
219
+ throw new Rehusado(ruta === 'sinMovimiento'
220
+ ? `El borrador que SII validó para ${periodo.formatted} no es sin movimiento: declara ` +
221
+ `los códigos ${describirDesacuerdos(p.desacuerdos)}. No se presentó nada.`
222
+ : 'El borrador que SII validó no coincide con la propuesta en los códigos ' +
223
+ `${describirDesacuerdos(p.desacuerdos)}. No se presentó nada. Que SII diga ` +
224
+ '"no presenta errores" no basta: revisa la propuesta en SII.');
151
225
  }
152
- const guardado = await chain.guardar(session, p.validado.borrador);
226
+ const guardado = await chain.guardar(session, p.validado.borrador, ruta);
153
227
  try {
154
228
  await chain.inyectar(session, guardado);
155
229
  }
@@ -185,6 +259,7 @@ async function submitWith(chain, runtime, args) {
185
259
  audit(runtime, 'f29_submit', 'ok', {
186
260
  rut: res.rut,
187
261
  period: periodo.canonical,
262
+ ...rutaAudit(ruta),
188
263
  durationMs: runtime.clock.now().getTime() - start,
189
264
  ...(res.folio !== null ? { folio: res.folio } : {}),
190
265
  });
@@ -194,6 +269,7 @@ async function submitWith(chain, runtime, args) {
194
269
  audit(runtime, 'f29_submit', e instanceof Rehusado ? 'refused' : result, {
195
270
  ...(rut ? { rut } : {}),
196
271
  period: periodo.canonical,
272
+ ...rutaAudit(ruta),
197
273
  durationMs: runtime.clock.now().getTime() - start,
198
274
  ...(folio !== null ? { folio } : {}),
199
275
  });
@@ -209,13 +285,15 @@ export function f29SubmitTasks(chain) {
209
285
  };
210
286
  }
211
287
  /** The preview: SII's propuesta, what SII's formulas compute, SII's validated total and every
212
- * disagreement. Files nothing; leaves a borrador "Guardada" at SII. */
288
+ * disagreement. Files nothing; the propuesta route leaves a borrador "Guardada" at SII.
289
+ * `sinMovimiento` takes SII's « Declarar sin movimiento » route (ADR-029 amendment, #221). */
213
290
  export function f29SubmitPreview(runtime, args) {
214
291
  return previewWith(SII_F29_SUBMIT, runtime, args);
215
292
  }
216
293
  /** FILE the declaración. Refuses, without saving or filing, when SII's total today is not
217
- * `total`, or when the borrador SII validated disagrees with the propuesta. Then saves and
218
- * files once. If the filing call fails, SII's state decides what happened; it is never resent. */
294
+ * `total`, or when the borrador SII validated disagrees with the propuesta (with
295
+ * `sinMovimiento`: when it declares anything). Then saves and files once. If the filing call
296
+ * fails, SII's state decides what happened; it is never resent. */
219
297
  export function f29Submit(runtime, args) {
220
298
  return submitWith(SII_F29_SUBMIT, runtime, args);
221
299
  }