@devlas/dte-sii 2.14.2 → 2.14.3
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.
- package/cert/CertRunner.js +43 -5
- package/package.json +1 -1
package/cert/CertRunner.js
CHANGED
|
@@ -3944,12 +3944,43 @@ class CertRunner {
|
|
|
3944
3944
|
const listaParaDeclarar = estadoResp.includes('P90');
|
|
3945
3945
|
const estadoMatch = estadoResp.match(/"(P\d+)"/);
|
|
3946
3946
|
const listaVacia = /\/\/OK\[0,\[\]/.test(estadoResp);
|
|
3947
|
-
const estado = listaParaDeclarar ? 'P90'
|
|
3948
|
-
: estadoMatch ? estadoMatch[1]
|
|
3949
|
-
: listaVacia ? 'sin_estado_sok_pendiente'
|
|
3950
|
-
: 'desconocido';
|
|
3951
3947
|
|
|
3952
|
-
|
|
3948
|
+
// ⚠️ La consulta pregunta puntualmente por el estado 90, así que una lista vacía
|
|
3949
|
+
// significa "no está en P90" — y eso pasa en DOS situaciones opuestas:
|
|
3950
|
+
// a) todavía no llegó (el SII no emitió el SOK del set), o
|
|
3951
|
+
// b) YA lo pasó: declaró cumplimiento y avanzó a P91.
|
|
3952
|
+
//
|
|
3953
|
+
// Darlas por (a) siempre hacía que, después de una declaración exitosa, se
|
|
3954
|
+
// informara "esperando aprobación del SII (SOK)". La pantalla le pedía al usuario
|
|
3955
|
+
// esperar una etapa que ya había superado (visto el 17/08/2026, RUT 78441936-3:
|
|
3956
|
+
// declaró a las 14:01 con DECLARACION EFECTUADA y a las 14:5x seguía diciendo que
|
|
3957
|
+
// faltaba el SOK).
|
|
3958
|
+
//
|
|
3959
|
+
// Se desempata preguntando por el 91, que es el estado al que mueve
|
|
3960
|
+
// `autorizarEmpresaBolProd`.
|
|
3961
|
+
let estado = listaParaDeclarar ? 'P90'
|
|
3962
|
+
: estadoMatch ? estadoMatch[1]
|
|
3963
|
+
: listaVacia ? 'sin_estado_sok_pendiente'
|
|
3964
|
+
: 'desconocido';
|
|
3965
|
+
let yaDeclarada = false;
|
|
3966
|
+
|
|
3967
|
+
if (estado === 'sin_estado_sok_pendiente') {
|
|
3968
|
+
try {
|
|
3969
|
+
const resp91 = await gwtPost(
|
|
3970
|
+
`7|0|7|${CBE_BASE}|${CBE_POLICY}|${CBE_SVC}|obtenerEstadoAutorizaEmp|java.lang.Integer/3438268394|java.lang.String/2004016611|${dvUp}|1|2|3|4|4|5|6|5|6|5|${rutNum}|7|5|91|0|`
|
|
3971
|
+
);
|
|
3972
|
+
if (resp91.includes('P91')) {
|
|
3973
|
+
estado = 'P91';
|
|
3974
|
+
yaDeclarada = true;
|
|
3975
|
+
}
|
|
3976
|
+
} catch (e) {
|
|
3977
|
+
// Si la segunda consulta falla se conserva la lectura original: es un dato de
|
|
3978
|
+
// más, no una dependencia.
|
|
3979
|
+
console.log(` [!] No se pudo desempatar el estado con P91: ${e.message}`);
|
|
3980
|
+
}
|
|
3981
|
+
}
|
|
3982
|
+
|
|
3983
|
+
return { success: true, inscrita: true, listaParaDeclarar, estado, yaDeclarada };
|
|
3953
3984
|
}
|
|
3954
3985
|
|
|
3955
3986
|
async completarDeclaracionBoletaPortal({
|
|
@@ -3973,6 +4004,13 @@ class CertRunner {
|
|
|
3973
4004
|
if (!estadoActual.inscrita) {
|
|
3974
4005
|
return { success: false, error: 'No se pudo obtener representante vigente (facade CBE)' };
|
|
3975
4006
|
}
|
|
4007
|
+
// Ya declaró y avanzó a P91: la etapa está cumplida, no pendiente. Sin este caso,
|
|
4008
|
+
// reintentar la declaración sobre una empresa ya declarada devolvía `pendingSok` y
|
|
4009
|
+
// la etapa quedaba "esperando" para siempre, esperando un SOK que ya había llegado
|
|
4010
|
+
// y ya se había usado.
|
|
4011
|
+
if (estadoActual.yaDeclarada) {
|
|
4012
|
+
return { success: true, yaDeclarada: true, mensaje: 'La declaración de cumplimiento ya estaba efectuada (P91)' };
|
|
4013
|
+
}
|
|
3976
4014
|
if (!estadoActual.listaParaDeclarar) {
|
|
3977
4015
|
const legible = estadoActual.estado === 'sin_estado_sok_pendiente'
|
|
3978
4016
|
? 'sin estado registrado (SOK aún no emitido)'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devlas/dte-sii",
|
|
3
|
-
"version": "2.14.
|
|
3
|
+
"version": "2.14.3",
|
|
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",
|