@albertomarturelo/sii-core 0.14.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 (41) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/auth/datos-cntr.d.ts +9 -0
  3. package/dist/auth/datos-cntr.d.ts.map +1 -1
  4. package/dist/auth/datos-cntr.js +22 -0
  5. package/dist/auth/datos-cntr.js.map +1 -1
  6. package/dist/errors/errors.d.ts +5 -0
  7. package/dist/errors/errors.d.ts.map +1 -1
  8. package/dist/errors/errors.js +5 -0
  9. package/dist/errors/errors.js.map +1 -1
  10. package/dist/index.d.ts +4 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/portal/f29-rfi-form.d.ts +10 -0
  15. package/dist/portal/f29-rfi-form.d.ts.map +1 -1
  16. package/dist/portal/f29-rfi-form.js +10 -0
  17. package/dist/portal/f29-rfi-form.js.map +1 -1
  18. package/dist/portal/f29-rfi.d.ts +54 -1
  19. package/dist/portal/f29-rfi.d.ts.map +1 -1
  20. package/dist/portal/f29-rfi.js +224 -3
  21. package/dist/portal/f29-rfi.js.map +1 -1
  22. package/dist/portal/f29.d.ts +9 -0
  23. package/dist/portal/f29.d.ts.map +1 -1
  24. package/dist/portal/f29.js +55 -1
  25. package/dist/portal/f29.js.map +1 -1
  26. package/dist/portal/gwt.d.ts.map +1 -1
  27. package/dist/portal/gwt.js +30 -1
  28. package/dist/portal/gwt.js.map +1 -1
  29. package/dist/tasks/alertas.d.ts +65 -0
  30. package/dist/tasks/alertas.d.ts.map +1 -0
  31. package/dist/tasks/alertas.js +339 -0
  32. package/dist/tasks/alertas.js.map +1 -0
  33. package/dist/tasks/f29-submit.d.ts +83 -0
  34. package/dist/tasks/f29-submit.d.ts.map +1 -0
  35. package/dist/tasks/f29-submit.js +215 -0
  36. package/dist/tasks/f29-submit.js.map +1 -0
  37. package/dist/tasks/f29.d.ts +7 -1
  38. package/dist/tasks/f29.d.ts.map +1 -1
  39. package/dist/tasks/f29.js +9 -13
  40. package/dist/tasks/f29.js.map +1 -1
  41. package/package.json +1 -1
@@ -5,9 +5,11 @@
5
5
  // the type signatures come from the live permutation (`loadGwtPermutation`), the field layouts
6
6
  // from `rfi-schema.ts`. The chain itself (which calls, in which order) is #161's.
7
7
  import { HOSTS } from '../config/index.js';
8
- import { F29Error } from '../errors/index.js';
9
- import { Gwt7Codec, postGwt7 } from './gwt.js';
8
+ import { F29Error, F29RechazoError } from '../errors/index.js';
9
+ import { Gwt7Codec, postGwt7, } from './gwt.js';
10
10
  import { RFI_READ_LAYOUT, RFI_WRITE_LAYOUT } from './rfi-schema.js';
11
+ import { F29_TIPO_PROPUESTA } from './f29.js';
12
+ import { f29CampoValores, fillF29Form } from './f29-rfi-form.js';
11
13
  /** rfiInternet's module and the form service's entry point (observed 2026-10-19). */
12
14
  export const RFI_FORMULARIO = {
13
15
  moduleBase: `${HOSTS.portalApi}/rfiInternet/`,
@@ -32,6 +34,225 @@ export async function callFormularioFacade(session, method, params, opts = {}) {
32
34
  params,
33
35
  });
34
36
  }, f29Error, opts.heal === undefined ? {} : { heal: opts.heal });
35
- return codec.decodeResponse(text, opts.returns);
37
+ try {
38
+ return codec.decodeResponse(text, opts.returns);
39
+ }
40
+ catch (e) {
41
+ // Only SII's own exception proves the call had no effect; a body we cannot decode does not.
42
+ if (e instanceof F29Error && text.trimStart().startsWith('//EX')) {
43
+ throw new F29RechazoError(e.message);
44
+ }
45
+ throw e;
46
+ }
47
+ }
48
+ export const rfiCaller = (session) => (method, params, opts) => callFormularioFacade(session, method, params, opts ?? {});
49
+ const CLS = {
50
+ string: 'java.lang.String',
51
+ integer: 'java.lang.Integer',
52
+ boolean: 'java.lang.Boolean',
53
+ hashMap: 'java.util.HashMap',
54
+ formulario: 'cl.sii.sdi.dim.rfi.to.Formulario',
55
+ periodo: 'cl.sii.sdi.dim.rfi.to.Periodo',
56
+ contribuyente: 'cl.sii.sdi.core.web.shared.to.SdiContribuyenteTo',
57
+ resultadoContribuyente: 'cl.sii.sdi.dim.rfi.web.client.to.ResultadoRecuperarContribuyenteTo',
58
+ layout: 'cl.sii.sdi.difm.rcs.web.client.to.FormularioLayoutTO',
59
+ borradorRfi: 'cl.sii.sdi.dim.rfi.to.BorradorRfi',
60
+ borrador: 'cl.sii.sdi.dim.rfi.to.Borrador',
61
+ };
62
+ /** rfi `Formulario`: 0 a Boolean the client sets before reading the borrador, 10 the form código
63
+ * (`"029"`), 27 the int tipo de propuesta. */
64
+ const FORMULARIO = { flag: 0, codigo: 10, tipo: 27 };
65
+ const F29_CODIGO = '029';
66
+ /** rfi `Periodo`: [año, mes] as Integers. */
67
+ const PERIODO = { anno: 0, mes: 1 };
68
+ /** `Borrador`: 9 the FormularioRfi XML SII would file, 27 the tipo (Integer; 40 validated, 41 to
69
+ * save), 28 an integrity value that is never touched. */
70
+ const BORRADOR = { xml: 9, tipo: 27 };
71
+ /** `guardarBorradorRfiValidado` takes the validated borrador with its tipo 40 → 41. */
72
+ const TIPO_GUARDAR = 41;
73
+ const box = (cls, v) => ({ cls, values: [v] });
74
+ const roto = (what) => new F29Error(`No se pudo interpretar el formulario de SII (scraper roto): ${what}.`);
75
+ const isNode = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
76
+ function nodeOf(v, cls, what) {
77
+ if (!isNode(v) || v.cls !== cls)
78
+ throw roto(`${what} no es ${cls.split('.').pop()}`);
79
+ return v;
80
+ }
81
+ /** A Java array node's elements of class `cls`. */
82
+ function arrayOf(v, cls, what) {
83
+ if (!isNode(v) || v.cls !== `[L${cls};`)
84
+ throw roto(`${what} no es una lista`);
85
+ return v.values.map((x, k) => nodeOf(x, cls, `${what}[${k}]`));
86
+ }
87
+ const boxed = (v) => isNode(v) && v.values.length === 1 ? v.values[0] : v;
88
+ /** A HashMap<String, String> (consultarHijoToken's answer) as a plain record. */
89
+ function stringMap(v, what) {
90
+ const m = nodeOf(v, CLS.hashMap, what);
91
+ const entries = m.values[0];
92
+ if (!Array.isArray(entries))
93
+ throw roto(what);
94
+ const out = new Map();
95
+ for (const e of entries) {
96
+ if (!Array.isArray(e) || e.length !== 2)
97
+ throw roto(what);
98
+ const k = boxed(e[0]);
99
+ const val = boxed(e[1]);
100
+ if (typeof k !== 'string')
101
+ throw roto(what);
102
+ out.set(k, typeof val === 'string' ? val : null);
103
+ }
104
+ return out;
105
+ }
106
+ /** Open the form app at the URL `enviarDatosFlujo` answered (a 302 into rfiInternet). A landing
107
+ * on the login raises `SessionExpiredError` in the seam. */
108
+ export async function abrirFormularioF29(session, url) {
109
+ const r = await session.requestText(url, { method: 'GET' });
110
+ if (r.status !== 200) {
111
+ throw new F29Error(`SII no abrió el formulario del F29 (HTTP ${r.status}).`);
112
+ }
113
+ }
114
+ /** Run the form app from the handoff to SII's validation, as the browser does in mode
115
+ * PPTA-F29-COMPLETA. It stops BEFORE `guardarBorradorRfiValidado`: nothing is filed or saved
116
+ * past the propuesta's borrador. `hoy` is the moment of the fill (the `Clock`'s now). */
117
+ export async function validarBorradorF29(call, params) {
118
+ const { rut, periodo, hoy } = params;
119
+ const periodoYm = `${periodo.year}${String(periodo.month).padStart(2, '0')}`;
120
+ // The flow's parameters, stored by the handoff. idBorrador is new for every flow.
121
+ const hijo = stringMap(await call('consultarHijoToken', [{ type: CLS.string, value: 'PARAM_PROPUESTA' }]), 'consultarHijoToken');
122
+ if (hijo.get('rut') !== String(rut.body) || hijo.get('periodo') !== periodoYm) {
123
+ throw new F29Error('SII abrió el formulario para otro contribuyente o período; no se continuó. ' +
124
+ 'Vuelve a intentarlo desde `sii f29 submit`.');
125
+ }
126
+ const idBorrador = Number(hijo.get('idBorrador'));
127
+ if (!Number.isSafeInteger(idBorrador) || idBorrador <= 0)
128
+ throw roto('idBorrador');
129
+ const resultado = nodeOf(await call('getContribuyente', [
130
+ { type: CLS.integer, value: box(CLS.integer, rut.body) },
131
+ { type: CLS.string, value: rut.dv },
132
+ ]), CLS.resultadoContribuyente, 'getContribuyente');
133
+ const contribuyente = nodeOf(resultado.values[0], CLS.contribuyente, 'contribuyente');
134
+ const formulario = arrayOf(await call('findAllFormulario', []), CLS.formulario, 'findAllFormulario').find((f) => f.values[FORMULARIO.codigo] === F29_CODIGO);
135
+ if (formulario === undefined)
136
+ throw roto('SII no ofrece el Formulario 29');
137
+ const periodoRfi = arrayOf(await call('findPeriodoHabilitado', [{ type: CLS.formulario, value: formulario }]), CLS.periodo, 'findPeriodoHabilitado').find((p) => boxed(p.values[PERIODO.anno]) === periodo.year &&
138
+ boxed(p.values[PERIODO.mes]) === periodo.month);
139
+ if (periodoRfi === undefined) {
140
+ throw new F29Error(`SII no habilita el período ${periodo.formatted} para declarar.`);
141
+ }
142
+ // The client marks the Formulario before it reads the borrador (both captures).
143
+ formulario.values[FORMULARIO.flag] = box(CLS.boolean, 1);
144
+ formulario.values[FORMULARIO.tipo] = F29_TIPO_PROPUESTA;
145
+ const layout = nodeOf(await call('findVersionBorradorById', [
146
+ { type: CLS.formulario, value: formulario },
147
+ { type: CLS.periodo, value: periodoRfi },
148
+ { type: CLS.contribuyente, value: contribuyente },
149
+ { type: CLS.contribuyente, value: contribuyente },
150
+ { type: CLS.integer, value: box(CLS.integer, idBorrador) },
151
+ ]), CLS.layout, 'findVersionBorradorById');
152
+ const { reglasFallidas } = fillF29Form(layout, hoy);
153
+ if (reglasFallidas.length > 0) {
154
+ // SII's client stops here and shows its rules' messages; so do we, verbatim, before
155
+ // validating anything.
156
+ throw new F29Error(`El formulario no cumple las reglas de SII: ${reglasFallidas.map((r) => r.mensaje).join(' ')}`);
157
+ }
158
+ const campos = f29CampoValores(layout, hoy);
159
+ // The client sets these two flow parameters right before it validates (both captures).
160
+ await call('crearHijoToken', [
161
+ { type: CLS.string, value: 'URL_RETORNO' },
162
+ { type: CLS.string, value: '-' },
163
+ ]);
164
+ await call('crearHijoToken', [
165
+ { type: CLS.string, value: 'ORIGEN' },
166
+ { type: CLS.string, value: 'PROPUESTA' },
167
+ ]);
168
+ const validado = nodeOf(await call('getBorradorRfiValidado', [
169
+ { type: CLS.integer, value: box(CLS.integer, F29_TIPO_PROPUESTA) },
170
+ { type: CLS.formulario, value: formulario },
171
+ { type: CLS.periodo, value: periodoRfi },
172
+ { type: CLS.contribuyente, value: contribuyente },
173
+ { type: CLS.contribuyente, value: contribuyente },
174
+ { type: CLS.layout, value: layout },
175
+ ]), CLS.borradorRfi, 'getBorradorRfiValidado');
176
+ // BorradorRfi holds two Borrador; the browser saves the first (run6).
177
+ const borrador = nodeOf(validado.values[0], CLS.borrador, 'BorradorRfi');
178
+ const xml = borrador.values[BORRADOR.xml];
179
+ if (typeof xml !== 'string')
180
+ throw roto('el borrador no trae el formulario');
181
+ const declarados = codigosDeclarados(xml);
182
+ return { borrador, declarados, total: declarados.get('91') ?? 0, campos };
183
+ }
184
+ /** The FormularioRfi XML's declared códigos: `<Codigos tipo="D|R"><Codigo>…<Valor>…`. Only D
185
+ * (montos) and R (the result, 91) are read; E (the header: nombre, RUT, dirección) and N
186
+ * (SII-internal) are never read. Observed in the validated borrador, 2026-10-19. */
187
+ export function codigosDeclarados(xml) {
188
+ const out = new Map();
189
+ const bloques = [...xml.matchAll(/<Codigos\b([^>]*)>([\s\S]*?)<\/Codigos>/g)];
190
+ if (bloques.length === 0)
191
+ throw roto('el borrador no trae códigos');
192
+ for (const m of bloques) {
193
+ const tipo = /\btipo="([A-Z])"/.exec(m[1])?.[1];
194
+ if (tipo !== 'D' && tipo !== 'R')
195
+ continue;
196
+ const codigo = /<Codigo>\s*(\d+)\s*<\/Codigo>/.exec(m[2])?.[1];
197
+ const valor = /<Valor>\s*([^<]*?)\s*<\/Valor>/.exec(m[2])?.[1] ?? '';
198
+ if (codigo === undefined)
199
+ throw roto('un código sin número');
200
+ const n = valor === '' ? 0 : Number(valor);
201
+ if (!Number.isFinite(n))
202
+ throw roto(`el valor del código ${Number(codigo)}`);
203
+ if (n !== 0)
204
+ out.set(String(Number(codigo)), n);
205
+ }
206
+ return out;
207
+ }
208
+ /** ADR-029's safety rule: SII's "no presenta errores" is not proof of completeness. Compare the
209
+ * códigos SII validated against the propuesta and the formulas' results. Any entry refuses the
210
+ * submit. Amounts never leave this function. */
211
+ export function verificarBorradorF29(propuesta, campos, declarados) {
212
+ const out = [];
213
+ const esperado = new Map();
214
+ for (const c of campos) {
215
+ if (!c.formula || !/^\d+$/.test(c.codigo) || c.valor.trim() === '')
216
+ continue;
217
+ const v = Number(c.valor);
218
+ if (Number.isFinite(v) && v !== 0)
219
+ esperado.set(String(Number(c.codigo)), v);
220
+ }
221
+ for (const c of propuesta) {
222
+ if (!/^\d+$/.test(c.codigo) || c.valor === null || c.valor === 0)
223
+ continue;
224
+ const codigo = String(Number(c.codigo));
225
+ const f = esperado.get(codigo);
226
+ if (f !== undefined && f !== c.valor)
227
+ out.push({ codigo, motivo: 'formula_vs_propuesta' });
228
+ esperado.set(codigo, c.valor);
229
+ }
230
+ for (const [codigo, v] of esperado) {
231
+ const d = declarados.get(codigo);
232
+ if (d === undefined)
233
+ out.push({ codigo, motivo: 'falta' });
234
+ else if (d !== v)
235
+ out.push({ codigo, motivo: 'distinto' });
236
+ }
237
+ for (const codigo of declarados.keys()) {
238
+ if (!esperado.has(codigo))
239
+ out.push({ codigo, motivo: 'sobra' });
240
+ }
241
+ return out.sort((a, b) => Number(a.codigo) - Number(b.codigo));
242
+ }
243
+ /** Submit, call 1: save the validated borrador with tipo 41. Saves, does NOT file. Returns the
244
+ * `Borrador` SII answers, which call 2 sends unchanged. */
245
+ export async function guardarBorradorF29(call, borrador) {
246
+ borrador.values[BORRADOR.tipo] = box(CLS.integer, TIPO_GUARDAR);
247
+ return nodeOf(await call('guardarBorradorRfiValidado', [{ type: CLS.borrador, value: borrador }]), CLS.borrador, 'guardarBorradorRfiValidado');
248
+ }
249
+ /** Submit, call 2: `inyectarBorradorRfi` FILES the declaración. Called once, never retried. SII
250
+ * answered `//OK[1,1,["java.lang.Boolean/…"],0,7]` (true) on the filing of 2026-09. An
251
+ * `F29RechazoError` means SII refused it; any other failure leaves the outcome unknown. */
252
+ export async function inyectarBorradorF29(call, guardado) {
253
+ const r = await call('inyectarBorradorRfi', [{ type: CLS.borrador, value: guardado }]);
254
+ if (boxed(r ?? undefined) !== 1) {
255
+ throw new F29Error('SII no confirmó la presentación del F29.');
256
+ }
36
257
  }
37
258
  //# sourceMappingURL=f29-rfi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"f29-rfi.js","sourceRoot":"","sources":["../../src/portal/f29-rfi.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,yFAAyF;AACzF,iFAAiF;AACjF,+FAA+F;AAC/F,+FAA+F;AAC/F,kFAAkF;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAqD,QAAQ,EAAE,MAAM,UAAU,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEpE,qFAAqF;AACrF,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,UAAU,EAAE,GAAG,KAAK,CAAC,SAAS,eAAe;IAC7C,OAAO,EAAE,gBAAgB;IACzB,UAAU,EAAE,kBAAkB;CAC/B,CAAC;AACF,MAAM,kBAAkB,GAAG,wDAAwD,CAAC;AAEpF,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAS,EAAE,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;AAEnE;;;uFAGuF;AACvF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAsB,EACtB,MAAc,EACd,MAA4B,EAC5B,OAA6C,EAAE;IAE/C,IAAI,KAA4B,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,QAAQ,CACzB,OAAO,EACP,cAAc,EACd,CAAC,IAAI,EAAE,EAAE;QACP,KAAK,GAAG,IAAI,SAAS,CACnB,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe,EAAE,EAClD,IAAI,CAAC,IAAI,EACT,QAAQ,CACT,CAAC;QACF,OAAO,KAAK,CAAC,aAAa,CAAC;YACzB,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAE;YACjD,OAAO,EAAE,kBAAkB;YAC3B,MAAM;YACN,MAAM;SACP,CAAC,CAAC;IACL,CAAC,EACD,QAAQ,EACR,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CACnD,CAAC;IACF,OAAO,KAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"f29-rfi.js","sourceRoot":"","sources":["../../src/portal/f29-rfi.ts"],"names":[],"mappings":"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"}
@@ -59,4 +59,13 @@ export declare function fetchF29Estado(session: PortalSession, params: {
59
59
  rut: Rut;
60
60
  periodo: Periodo;
61
61
  }): Promise<F29Estado>;
62
+ /** The propuesta type of mode PPTA-F29-COMPLETA, the one `f29 submit` files (observed). */
63
+ export declare const F29_TIPO_PROPUESTA = 40;
64
+ /** Save the propuesta and hand the flow to the form app: `guardarPropuesta` then
65
+ * `enviarDatosFlujo`. Returns the rfiInternet entry URL SII answered. This WRITES a borrador
66
+ * "Guardada" (non-filing, ADR-029 amendment). */
67
+ export declare function iniciarFlujoPropuestaF29(session: PortalSession, params: {
68
+ rut: Rut;
69
+ periodo: Periodo;
70
+ }): Promise<string>;
62
71
  //# sourceMappingURL=f29.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"f29.d.ts","sourceRoot":"","sources":["../../src/portal/f29.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAsBpE;;kGAEkG;AAClG,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;yFAGyF;AACzF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2FAA2F;IAC3F,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,sBAAsB,EAAE,SAAS,SAAS,EAAE,CAAC;CACvD;AAED;;;2EAG2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;wFACwF;AACxF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACzD;AA+HD;;0FAE0F;AAC1F,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,YAAY,CAAC,CAuCvB;AAED;;;wDAGwD;AACxD,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,SAAS,CAAC,CAwBpB"}
1
+ {"version":3,"file":"f29.d.ts","sourceRoot":"","sources":["../../src/portal/f29.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAsBpE;;kGAEkG;AAClG,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;yFAGyF;AACzF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2FAA2F;IAC3F,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,sBAAsB,EAAE,SAAS,SAAS,EAAE,CAAC;CACvD;AAED;;;2EAG2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;wFACwF;AACxF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACzD;AA+HD;;0FAE0F;AAC1F,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,YAAY,CAAC,CAuCvB;AAED;;;wDAGwD;AACxD,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,SAAS,CAAC,CAwBpB;AAWD,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAoBrC;;kDAEkD;AAClD,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,MAAM,CAAC,CAoCjB"}
@@ -1,4 +1,5 @@
1
- // F29 — Declaración Mensual de IVA (read-only). Typed facade over `PortalSession.requestJson`.
1
+ // F29 — Declaración Mensual de IVA. Typed facade over `PortalSession.requestJson`: the read
2
+ // facades, plus the submit's propuesta handoff at the end of this file (two writes, #161).
2
3
  // Ported from the proven Python sii-cli (portal/f29.py + docs/sii-contract/f29.md); the wire
3
4
  // contract is first-hand-observed there (live capture 2026-06-12, prod), NOT a third-party
4
5
  // library (ADR-004). Full contract: docs/sii-contract/f29.md.
@@ -241,4 +242,57 @@ export async function fetchF29Estado(session, params) {
241
242
  declaraciones,
242
243
  };
243
244
  }
245
+ // --- The submit's propuesta handoff (ADR-029 amendment, sii-contract/f29.md § Submit) ----------
246
+ // Observed 2026-10-18/19 (spike #138): before the form app opens, the propuesta SPA saves the
247
+ // propuesta and hands the flow over with two SDI writes on `facadeService`. `guardarPropuesta`
248
+ // leaves a borrador "Guardada" at SII; nothing is filed. `enviarDatosFlujo` answers the
249
+ // rfiInternet entry URL the browser then opens.
250
+ const FACADE_BASE = `${HOSTS.portalApi}/propuestaf29ui/services/data/facadeService`;
251
+ const FACADE_NAMESPACE = 'cl.sii.sdi.lob.iva.propuestaf29.data.api.interfaces.FacadeService';
252
+ /** The form número as these two ops send it (`"29"`, not the facades' internal `"2"`). */
253
+ const FORM_NUMERO = '29';
254
+ /** The propuesta type of mode PPTA-F29-COMPLETA, the one `f29 submit` files (observed). */
255
+ export const F29_TIPO_PROPUESTA = 40;
256
+ /** Where the flow must lead: the rfiInternet form app on the portal host. */
257
+ const RFI_ENTRY = `${HOSTS.portalApi}/rfiInternet`;
258
+ /** One handoff step. SII's client reports a failure of each step with its own code
259
+ * (`[mod-gdrpro-rfi3]`, `[mod-envdf-rfi3]`); the message keeps SII's text and adds the code. */
260
+ async function handoffStep(session, op, data, codigoError) {
261
+ try {
262
+ return await postSdi(session, `${FACADE_BASE}/${op}`, `${FACADE_NAMESPACE}/${op}`, data);
263
+ }
264
+ catch (e) {
265
+ if (e instanceof F29Error)
266
+ throw new F29Error(`${e.message} [${codigoError}]`);
267
+ throw e;
268
+ }
269
+ }
270
+ /** Save the propuesta and hand the flow to the form app: `guardarPropuesta` then
271
+ * `enviarDatosFlujo`. Returns the rfiInternet entry URL SII answered. This WRITES a borrador
272
+ * "Guardada" (non-filing, ADR-029 amendment). */
273
+ export async function iniciarFlujoPropuestaF29(session, params) {
274
+ const { rut, periodo } = params;
275
+ const { mes, anno } = mesAnno(periodo);
276
+ await handoffStep(session, 'guardarPropuesta', {
277
+ rutCntr: String(rut.body),
278
+ dvCntr: rut.dv,
279
+ formCodigo: FORM_NUMERO,
280
+ tipoPropuestaInicial: F29_TIPO_PROPUESTA,
281
+ periodo: { anno, mes },
282
+ }, 'mod-gdrpro-rfi3');
283
+ const env = await handoffStep(session, 'enviarDatosFlujo', {
284
+ rut: String(rut.body),
285
+ dv: rut.dv,
286
+ periodo: `${anno}${mes}`,
287
+ form: FORM_NUMERO,
288
+ tipo: F29_TIPO_PROPUESTA,
289
+ }, 'mod-envdf-rfi3');
290
+ // Observed: `data` is `https://www4.sii.cl/rfiInternet?origen=PROPUESTA&accionPpta=…`. Follow
291
+ // it only when it leads to the form app on SII's own host.
292
+ const url = env.data;
293
+ if (typeof url !== 'string' || !(url === RFI_ENTRY || url.startsWith(`${RFI_ENTRY}?`))) {
294
+ throw new F29Error('SII no entregó el acceso al formulario del F29 (scraper roto) [mod-envdf-rfi3].');
295
+ }
296
+ return url;
297
+ }
244
298
  //# sourceMappingURL=f29.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"f29.js","sourceRoot":"","sources":["../../src/portal/f29.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"f29.js","sourceRoot":"","sources":["../../src/portal/f29.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gwt.d.ts","sourceRoot":"","sources":["../../src/portal/gwt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gwt.d.ts","sourceRoot":"","sources":["../../src/portal/gwt.ts"],"names":[],"mappings":"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"}
@@ -226,6 +226,24 @@ const arrayElementOp = (cls) => cls === '[Ljava.lang.String;'
226
226
  ? 'o'
227
227
  : PRIMITIVE_OP[cls[1]];
228
228
  const GWT7_ROTO = 'No se pudo interpretar el formulario de SII (scraper roto)';
229
+ // The boxes GWT's JRE caches in `valueOf`, with the range it caches (GWT 2.x `Boolean`,
230
+ // `Byte`, `Short`, `Integer`, `Character` emulation). `Long` is left out: its value travels as
231
+ // a base64 token and no shared Long has been observed.
232
+ const BOX_CACHE = {
233
+ 'java.lang.Boolean': () => true,
234
+ 'java.lang.Byte': () => true,
235
+ 'java.lang.Short': (n) => n >= -128 && n <= 127,
236
+ 'java.lang.Integer': (n) => n >= -128 && n <= 127,
237
+ 'java.lang.Character': (n) => n >= 0 && n <= 127,
238
+ };
239
+ /** The identity key of a box the client's `valueOf` would share, or null. */
240
+ function cachedBoxKey(v) {
241
+ const cached = BOX_CACHE[v.cls];
242
+ const n = v.values[0];
243
+ if (cached === undefined || v.values.length !== 1 || typeof n !== 'number')
244
+ return null;
245
+ return cached(n) ? `${v.cls}:${n}` : null;
246
+ }
229
247
  /** The protocol-7 codec over one set of layouts and one permutation's signatures. `fail` builds
230
248
  * the error the caller's surface raises (the F29 facade passes `F29Error`). */
231
249
  export class Gwt7Codec {
@@ -249,6 +267,14 @@ export class Gwt7Codec {
249
267
  // the browser's validation request shares them; without this the layout re-encodes ~11 KB
250
268
  // larger). Other objects keep reference identity.
251
269
  const seenStrings = new Map();
270
+ // The client's JRE boxes through `valueOf`, which hands out ONE instance per value for
271
+ // Boolean, and for Byte / Short / Integer / Character inside its cache (-128..127; 0..127
272
+ // for Character). The deserializers use `valueOf` too, so two equal small boxes the browser
273
+ // re-sends are one object, written once and then back-referenced. Observed (#161): the
274
+ // browser's `findVersionBorradorById` shares one Integer between the Formulario and the
275
+ // contribuyente, and one Boolean across the Formulario's flags; without this the request
276
+ // has the same values but different bytes.
277
+ const seenBoxes = new Map();
252
278
  let count = 0;
253
279
  const ref = (s) => {
254
280
  if (s === null)
@@ -289,13 +315,16 @@ export class Gwt7Codec {
289
315
  if (typeof v !== 'object' || Array.isArray(v))
290
316
  throw this.err(`${at} debe ser objeto`);
291
317
  const text = v.cls === STRING_CLASS && typeof v.values[0] === 'string' ? v.values[0] : null;
292
- const back = text !== null ? seenStrings.get(text) : seen.get(v);
318
+ const box = cachedBoxKey(v);
319
+ const back = text !== null ? seenStrings.get(text) : box !== null ? seenBoxes.get(box) : seen.get(v);
293
320
  if (back !== undefined) {
294
321
  out.push(String(-(back + 1)));
295
322
  return;
296
323
  }
297
324
  if (text !== null)
298
325
  seenStrings.set(text, count);
326
+ if (box !== null)
327
+ seenBoxes.set(box, count);
299
328
  seen.set(v, count++);
300
329
  out.push(ref(this.sig(v.cls)));
301
330
  if (v.cls.startsWith('[')) {