@devlas/dte-sii 2.12.21 → 2.12.22

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 (2) hide show
  1. package/CafSolicitor.js +35 -1
  2. package/package.json +1 -1
package/CafSolicitor.js CHANGED
@@ -244,6 +244,19 @@ class CafSolicitor {
244
244
  this.session.saveSession(this.sessionPath);
245
245
  }
246
246
 
247
+ // Rechazo duro por falta de Verificación de Actividades: debe detectarse ANTES de
248
+ // _processMultiStepFlow. La página de rechazo también contiene el string
249
+ // "of_solicita_folios_dcto" dentro del JS changeRegregion(), lo que hace que
250
+ // _processMultiStepFlow la confunda con el paso 2 normal y siga de largo el flujo
251
+ // multi-paso en vez de detectar el rechazo aquí, terminando en errorCode UNKNOWN.
252
+ if (response.body && response.body.includes('no registra Verificacion de Actividades')) {
253
+ return {
254
+ success: false,
255
+ errorCode: 'VERIFICACION_ACTIVIDADES_PENDIENTE',
256
+ error: 'SII: El RUT no tiene registrada la Verificación de Actividades para este tipo de documento. Solicítala en el sitio SII → Peticiones Administrativas → Verificación de actividad, o en oficinas del SII.',
257
+ };
258
+ }
259
+
247
260
  // Procesar flujo multi-paso del SII
248
261
  response = await this._processMultiStepFlow(response, rut, dv, tipoDte, cantidad, debugDir);
249
262
 
@@ -269,6 +282,16 @@ class CafSolicitor {
269
282
  return { success: false, errorCode: 'TIMBRAJE_BLOQUEADO', error: 'SII: No se autoriza timbraje. Folios acumulados excesivos o situaciones tributarias pendientes. Revisa el portal SII → Factura Electrónica → Solicitud de Timbraje.' };
270
283
  }
271
284
 
285
+ // Rechazo por Verificación de Actividades detectado en un paso posterior del flujo
286
+ // multi-paso (ver guarda defensiva en _processMultiStepFlow).
287
+ if (response.body && response.body.includes('no registra Verificacion de Actividades')) {
288
+ return {
289
+ success: false,
290
+ errorCode: 'VERIFICACION_ACTIVIDADES_PENDIENTE',
291
+ error: 'SII: El RUT no tiene registrada la Verificación de Actividades para este tipo de documento. Solicítala en el sitio SII → Peticiones Administrativas → Verificación de actividad, o en oficinas del SII.',
292
+ };
293
+ }
294
+
272
295
  if (response.body && response.body.includes('Autenticaci')) {
273
296
  return { success: false, errorCode: 'SESSION_EXPIRED', error: 'El SII devolvió página de autenticación' };
274
297
  }
@@ -375,6 +398,13 @@ class CafSolicitor {
375
398
  */
376
399
  async _processMultiStepFlow(response, rut, dv, tipoDte, cantidad, debugDir) {
377
400
  let currentHtml = response.body || '';
401
+
402
+ // Defensivo: mismo rechazo por Verificación de Actividades puede aparecer si el SII
403
+ // lo entrega recién en un paso posterior en vez del response inicial de solicitar().
404
+ if (currentHtml.includes('no registra Verificacion de Actividades')) {
405
+ return response; // solicitar() detectará el rechazo en response.body
406
+ }
407
+
378
408
  const realFormAction = SiiSession.extractFormAction(currentHtml);
379
409
 
380
410
  // Si el <form> real ya apunta a of_confirma_folio, el SII preseleccionó
@@ -447,7 +477,11 @@ class CafSolicitor {
447
477
  */
448
478
  async _processStep3(response, rut, dv, tipoDte, cantidad, debugDir) {
449
479
  let currentHtml = response.body || '';
450
-
480
+
481
+ if (currentHtml.includes('no registra Verificacion de Actividades')) {
482
+ return response; // solicitar() detectará el rechazo en response.body
483
+ }
484
+
451
485
  const formAction3 = SiiSession.extractFormAction(currentHtml) || '/cvc_cgi/dte/of_confirma_folio';
452
486
  const inputs3 = SiiSession.extractInputValues(currentHtml);
453
487
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devlas/dte-sii",
3
- "version": "2.12.21",
3
+ "version": "2.12.22",
4
4
  "description": "Facturación y boletas electrónicas para el SII de Chile. Genera, timbra, firma y envía DTEs, libros electrónicos y automatiza la certificación.",
5
5
  "main": "index.js",
6
6
  "types": "dte-sii.d.ts",