@devlas/dte-sii 2.5.12 → 2.5.14

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.
@@ -302,11 +302,11 @@ class BoletaCert {
302
302
  const { DOMParser: XMLParser } = require('@xmldom/xmldom');
303
303
 
304
304
  console.log('\n' + '═'.repeat(60));
305
- console.log('📊 REENVÍO RCOF (ConsumoFolio)');
305
+ console.log('REENVÍO RCOF (ConsumoFolio)');
306
306
  console.log('═'.repeat(60));
307
307
 
308
308
  // 1. Parsear el EnvioBOLETA existente para extraer info
309
- console.log('\n📄 Leyendo EnvioBOLETA...');
309
+ console.log('\nLeyendo EnvioBOLETA...');
310
310
  const envioBOLETAXml = fs.readFileSync(options.envioBOLETAPath, 'utf-8');
311
311
  const parser = new XMLParser();
312
312
  const doc = parser.parseFromString(envioBOLETAXml, 'text/xml');
@@ -333,11 +333,11 @@ class BoletaCert {
333
333
  Totales: { MntNeto: mntNeto, MntExe: mntExe, IVA: iva, MntTotal: mntTotal }
334
334
  }
335
335
  });
336
- console.log(` - Folio ${folio}: Neto=${mntNeto}, Exento=${mntExe}, IVA=${iva}, Total=${mntTotal}`);
336
+ console.log(` - Folio ${folio}: Neto=${mntNeto}, Exento=${mntExe}, IVA=${iva}, Total=${mntTotal}`);
337
337
  }
338
338
 
339
339
  // 2. Crear RCOF
340
- console.log(`\n📊 Generando RCOF con SecEnvio=${options.secEnvio}...`);
340
+ console.log(`\nGenerando RCOF con SecEnvio=${options.secEnvio}...`);
341
341
  const { ConsumoFolio } = this._lib();
342
342
  const consumoFolio = new ConsumoFolio(this.certificado);
343
343
 
@@ -354,26 +354,26 @@ class BoletaCert {
354
354
  });
355
355
 
356
356
  consumoFolio.generar();
357
- console.log(` ✓ XML generado: ${consumoFolio.xml.length} bytes`);
357
+ console.log(` ✓ XML generado: ${consumoFolio.xml.length} bytes`);
358
358
 
359
359
  // Guardar debug
360
360
  if (this.debugDir) {
361
361
  const debugPath = path.join(this.debugDir, 'boleta-cert');
362
362
  fs.mkdirSync(debugPath, { recursive: true });
363
363
  fs.writeFileSync(path.join(debugPath, `ConsumoFolio-sec${options.secEnvio}.xml`), consumoFolio.xml, 'utf-8');
364
- console.log(` 📄 Guardado en: ${path.join(debugPath, `ConsumoFolio-sec${options.secEnvio}.xml`)}`);
364
+ console.log(` Guardado en: ${path.join(debugPath, `ConsumoFolio-sec${options.secEnvio}.xml`)}`);
365
365
  }
366
366
 
367
367
  // 3. Enviar RCOF
368
- console.log('\n📤 Enviando RCOF al SII...');
368
+ console.log('\nEnviando RCOF al SII...');
369
369
  const enviador = new EnviadorSII(this.certificado, this.ambiente);
370
370
  const resultadoRCOF = await enviador.enviarConsumoFolios(consumoFolio);
371
371
 
372
372
  if (!resultadoRCOF.ok) {
373
- console.log(` Error: ${resultadoRCOF.error}`);
373
+ console.log(` [ERR] Error: ${resultadoRCOF.error}`);
374
374
  return { success: false, error: resultadoRCOF.error };
375
375
  }
376
- console.log(` Enviado - TrackId: ${resultadoRCOF.trackId}`);
376
+ console.log(` [OK] Enviado - TrackId: ${resultadoRCOF.trackId}`);
377
377
 
378
378
  return { success: true, trackIdRCOF: resultadoRCOF.trackId };
379
379
  }
@@ -390,71 +390,71 @@ class BoletaCert {
390
390
  const { EnviadorSII } = this._lib();
391
391
 
392
392
  console.log('\n' + '═'.repeat(60));
393
- console.log('🎫 CERTIFICACIÓN BOLETAS ELECTRÓNICAS');
393
+ console.log('CERTIFICACIÓN BOLETAS ELECTRÓNICAS');
394
394
  console.log('═'.repeat(60));
395
395
 
396
396
  // 1. Parsear set de pruebas
397
- console.log('\n📋 Parseando set de pruebas...');
397
+ console.log('\nParseando set de pruebas...');
398
398
  const casos = this.parseSetPruebas(options.setPath);
399
- console.log(` ✓ ${casos.length} casos encontrados`);
399
+ console.log(` ✓ ${casos.length} casos encontrados`);
400
400
 
401
401
  // 2. Generar boletas
402
- console.log('\n📝 Generando boletas...');
402
+ console.log('\nGenerando boletas...');
403
403
  const { boletas, foliosUsados, folioInicial, folioFinal } = await this.generarBoletasSet(
404
404
  casos,
405
405
  options.cafBoleta,
406
406
  options.folioInicial
407
407
  );
408
- console.log(` ✓ ${boletas.length} boletas generadas (folios ${folioInicial}-${folioFinal})`);
408
+ console.log(` ✓ ${boletas.length} boletas generadas (folios ${folioInicial}-${folioFinal})`);
409
409
 
410
410
  for (const b of boletas) {
411
411
  const monto = b.dte.montoTotal || 0;
412
- console.log(` - CASO-${b.caso}: Folio ${b.folio} - $${monto.toLocaleString('es-CL')}`);
412
+ console.log(` - CASO-${b.caso}: Folio ${b.folio} - $${monto.toLocaleString('es-CL')}`);
413
413
  }
414
414
 
415
415
  // 3. Generar EnvioBOLETA
416
- console.log('\n📦 Generando EnvioBOLETA...');
416
+ console.log('\nGenerando EnvioBOLETA...');
417
417
  const envioBoleta = this.generarEnvioBoleta(boletas);
418
- console.log(` ✓ XML generado: ${envioBoleta.xml.length} bytes`);
418
+ console.log(` ✓ XML generado: ${envioBoleta.xml.length} bytes`);
419
419
 
420
420
  // Guardar debug
421
421
  if (this.debugDir) {
422
422
  const debugPath = path.join(this.debugDir, 'boleta-cert');
423
423
  fs.mkdirSync(debugPath, { recursive: true });
424
424
  fs.writeFileSync(path.join(debugPath, 'EnvioBOLETA.xml'), envioBoleta.xml, 'utf-8');
425
- console.log(` 📄 Guardado en: ${path.join(debugPath, 'EnvioBOLETA.xml')}`);
425
+ console.log(` Guardado en: ${path.join(debugPath, 'EnvioBOLETA.xml')}`);
426
426
  }
427
427
 
428
428
  // 4. Enviar EnvioBOLETA
429
- console.log('\n📤 Enviando EnvioBOLETA al SII...');
429
+ console.log('\nEnviando EnvioBOLETA al SII...');
430
430
  const enviador = new EnviadorSII(this.certificado, this.ambiente);
431
431
  const resultadoBoleta = await enviador.enviarBoletaSoap(envioBoleta);
432
432
 
433
433
  if (!resultadoBoleta.ok) {
434
- console.log(` Error: ${resultadoBoleta.error}`);
434
+ console.log(` [ERR] Error: ${resultadoBoleta.error}`);
435
435
  return { success: false, error: resultadoBoleta.error, fase: 'EnvioBOLETA' };
436
436
  }
437
- console.log(` Enviado - TrackId: ${resultadoBoleta.trackId}`);
437
+ console.log(` [OK] Enviado - TrackId: ${resultadoBoleta.trackId}`);
438
438
 
439
439
  // 5. Generar RCOF
440
- console.log('\n📊 Generando RCOF (ConsumoFolio)...');
440
+ console.log('\nGenerando RCOF (ConsumoFolio)...');
441
441
  const consumoFolio = this.generarConsumoFolio(envioBoleta);
442
442
  consumoFolio.generar(); // generar() ya incluye firmar() internamente
443
- console.log(` ✓ XML generado: ${consumoFolio.xml.length} bytes`);
443
+ console.log(` ✓ XML generado: ${consumoFolio.xml.length} bytes`);
444
444
 
445
445
  // Guardar debug
446
446
  if (this.debugDir) {
447
447
  const debugPath = path.join(this.debugDir, 'boleta-cert');
448
448
  fs.writeFileSync(path.join(debugPath, 'ConsumoFolio.xml'), consumoFolio.xml, 'utf-8');
449
- console.log(` 📄 Guardado en: ${path.join(debugPath, 'ConsumoFolio.xml')}`);
449
+ console.log(` Guardado en: ${path.join(debugPath, 'ConsumoFolio.xml')}`);
450
450
  }
451
451
 
452
452
  // 6. Enviar RCOF
453
- console.log('\n📤 Enviando RCOF al SII...');
453
+ console.log('\nEnviando RCOF al SII...');
454
454
  const resultadoRCOF = await enviador.enviarConsumoFolios(consumoFolio);
455
455
 
456
456
  if (!resultadoRCOF.ok) {
457
- console.log(` Error: ${resultadoRCOF.error}`);
457
+ console.log(` [ERR] Error: ${resultadoRCOF.error}`);
458
458
  return {
459
459
  success: false,
460
460
  error: resultadoRCOF.error,
@@ -462,16 +462,16 @@ class BoletaCert {
462
462
  trackIdBoleta: resultadoBoleta.trackId
463
463
  };
464
464
  }
465
- console.log(` Enviado - TrackId: ${resultadoRCOF.trackId}`);
465
+ console.log(` [OK] Enviado - TrackId: ${resultadoRCOF.trackId}`);
466
466
 
467
467
  // Resumen
468
468
  console.log('\n' + '═'.repeat(60));
469
- console.log(' CERTIFICACIÓN BOLETAS COMPLETADA');
469
+ console.log('[OK] CERTIFICACIÓN BOLETAS COMPLETADA');
470
470
  console.log('═'.repeat(60));
471
- console.log(` 📄 EnvioBOLETA: ${resultadoBoleta.trackId}`);
472
- console.log(` 📊 RCOF: ${resultadoRCOF.trackId}`);
473
- console.log(` 📦 Boletas: ${boletas.length}`);
474
- console.log(` 📑 Folios: ${folioInicial} - ${folioFinal}`);
471
+ console.log(` EnvioBOLETA: ${resultadoBoleta.trackId}`);
472
+ console.log(` RCOF: ${resultadoRCOF.trackId}`);
473
+ console.log(` Boletas: ${boletas.length}`);
474
+ console.log(` Folios: ${folioInicial} - ${folioFinal}`);
475
475
 
476
476
  return {
477
477
  success: true,
@@ -494,9 +494,9 @@ class BoletaCert {
494
494
  const forge = require('node-forge');
495
495
 
496
496
  console.log('\n' + '═'.repeat(60));
497
- console.log('📋 DECLARAR AVANCE BOLETAS');
497
+ console.log('DECLARAR AVANCE BOLETAS');
498
498
  console.log('═'.repeat(60));
499
- console.log(` TrackId: ${trackId}`);
499
+ console.log(` TrackId: ${trackId}`);
500
500
 
501
501
  const host = this.ambiente === 'produccion' ? 'palena.sii.cl' : 'maullin.sii.cl';
502
502
  const endpoint = '/cgi_dte/UPL/DTEauth?3';
@@ -548,7 +548,7 @@ class BoletaCert {
548
548
  req.end();
549
549
  });
550
550
 
551
- console.log(` 🔗 URL: ${url}`);
551
+ console.log(` URL: ${url}`);
552
552
 
553
553
  try {
554
554
  const response = await requestWithCert({
@@ -561,7 +561,7 @@ class BoletaCert {
561
561
  },
562
562
  }, body);
563
563
 
564
- console.log(` 📥 Status: ${response.status}`);
564
+ console.log(` Status: ${response.status}`);
565
565
 
566
566
  // Guardar respuesta para debug
567
567
  if (this.debugDir) {
@@ -583,24 +583,24 @@ class BoletaCert {
583
583
  const enRevision = /EN REVISION|PROCESANDO/i.test(html);
584
584
 
585
585
  if (esAprobado) {
586
- console.log(' BOLETAS APROBADAS');
586
+ console.log(' [OK] BOLETAS APROBADAS');
587
587
  return { success: true, estado: 'APROBADO', html };
588
588
  } else if (esRechazado) {
589
- console.log(' BOLETAS RECHAZADAS');
589
+ console.log(' [ERR] BOLETAS RECHAZADAS');
590
590
  // Extraer mensaje de error si existe
591
591
  const errorMatch = html.match(/<font[^>]*color[^>]*red[^>]*>([^<]+)</i);
592
592
  const errorMsg = errorMatch ? errorMatch[1].trim() : 'Error desconocido';
593
593
  return { success: false, estado: 'RECHAZADO', error: errorMsg, html };
594
594
  } else if (enRevision) {
595
- console.log(' 🔄 EN REVISIÓN');
595
+ console.log(' [...] EN REVISIÓN');
596
596
  return { success: true, estado: 'EN_REVISION', html };
597
597
  } else {
598
- console.log(' 📋 Respuesta recibida (verificar manualmente)');
598
+ console.log(' Respuesta recibida (verificar manualmente)');
599
599
  return { success: true, estado: 'DESCONOCIDO', html };
600
600
  }
601
601
 
602
602
  } catch (error) {
603
- console.error(` Error: ${error.message}`);
603
+ console.error(` [ERR] Error: ${error.message}`);
604
604
  return { success: false, error: error.message };
605
605
  }
606
606
  }
@@ -614,8 +614,8 @@ class BoletaCert {
614
614
  const https = require('https');
615
615
  const forge = require('node-forge');
616
616
 
617
- console.log(`\n Consultando estado del set...`);
618
- console.log(` TrackId: ${trackId}`);
617
+ console.log(`\n Consultando estado del set...`);
618
+ console.log(` TrackId: ${trackId}`);
619
619
 
620
620
  const host = this.ambiente === 'produccion' ? 'www4.sii.cl' : 'www4.sii.cl';
621
621
 
@@ -718,7 +718,7 @@ class BoletaCert {
718
718
  }
719
719
 
720
720
  } catch (error) {
721
- console.error(` ⚠️ Error consultando estado: ${error.message}`);
721
+ console.error(` [!] Error consultando estado: ${error.message}`);
722
722
  return {
723
723
  success: true,
724
724
  estado: 'DESCONOCIDO',