First upload

This commit is contained in:
2026-03-17 14:12:37 +01:00
commit c857900860
46 changed files with 3343 additions and 0 deletions

View File

@@ -0,0 +1,112 @@
import * as soap from 'soap';
import { HttpClient } from 'soap';
import { trx } from './db.service.js';
import { actions } from '../actions/soap.actions.js';
// --- Helpers de Fecha ---
const fmt = (d) => (!isNaN(d.getTime()) ? d.toLocaleDateString('sv-SE') : null);
const getFirstMonth = (m = 0) => {
const now = new Date();
return fmt(new Date(now.getFullYear(), now.getMonth() + m, 1));
};
const getDate = (d = 0) => {
const t = new Date();
t.setDate(t.getDate() + d);
return fmt(t);
};
const SOAP_SERVICES = {
DescargaPolizas: "https://lba.realeonline.net/Reale.B2b.Services.Multitarificadores.IisHost/DescargaPolizas.svc?wsdl",
LiquidacionMediador: "https://lba.realeonline.net/Reale.B2b.Services.Multitarificadores.IisHost/LiquidacionMediador.svc?wsdl",
DescargaSiniestros: "https://lba.realeonline.net/Reale.B2b.Services.Multitarificadores.IisHost/DescargaSiniestros.svc?wsdl",
DescargaCompletaRecibos: "https://lba.realeonline.net/Reale.B2b.Services.Multitarificadores.IisHost/DescargaCompletaRecibos.svc?wsdl",
DescargaCartera: "https://lba.realeonline.net/Reale.B2b.Services.Multitarificadores.IisHost/DescargaCartera.svc?wsdl",
ConsultaPolizas: "https://lba.realeonline.net/Reale.B2b.Services.Multitarificadores.IisHost/ConsultaPolizas.svc?wsdl",
ConsultaRecibos: "https://lba.realeonline.net/Reale.B2b.Services.Multitarificadores.IisHost/ConsultaRecibos.svc?wsdl",
ConsultaAgendaTramitacion: "https://lba.realeonline.net/Reale.B2b.Services.Multitarificadores.IisHost/ConsultaAgendaTramitacion.svc?wsdl",
TramitacionSiniestro: "https://lba.realeonline.net/Reale.B2b.Services.Multitarificadores.IisHost/TramitacionSiniestro.svc?wsdl",
};
export const soapCall = async (params, query, save = true) => {
const { CodigoMediador, service, method } = params;
const url = SOAP_SERVICES[service];
if (!url) throw new Error(`Servicio SOAP '${service}' no encontrado`);
// --- Identificador desde ENV o Query ---
const Identificador = query.Identificador || process.env[`SOAP_${CodigoMediador}`];
if (!Identificador) throw new Error(`Identificador no configurado para mediador ${CodigoMediador}`);
// --- Normalización de Argumentos ---
const Mediador = query.Mediador || CodigoMediador;
const CodigoPoliza = query.CodigoPoliza || "0";
const CodigoSiniestro = query.CodigoSiniestro || "0";
const CodigoExpediente = query.CodigoExpediente || "0";
const Observaciones = query.Observaciones || "";
const CodigoRecibo = query.CodigoRecibo || "0";
const CodigoSuplemento = query.CodigoSuplemento || "1000";
const Clave = query.Clave || "10000";
const Empresa = query.Empresa || "4";
const CodigoEmpresa = query.CodigoEmpresa || Empresa;
const Plataforma = query.Plataforma || "10000";
const CodigoRamo = query.CodigoRamo || "0";
const FechaFinal = query.FechaFinal || getDate();
const FechaRenovacion = query.FechaRenovacion || getFirstMonth(-1);
const FechaInicial = query.FechaInicial || getFirstMonth(-1);
const FechaLiquidacion = query.FechaLiquidacion || getDate();
const HEADER = `<int:Plataforma xmlns:int="http://reale.net/wcf/internalServices">${Plataforma}</int:Plataforma><int:Identificador xmlns:int="http://reale.net/wcf/internalServices">${Identificador}</int:Identificador>`;
// --- Diccionario de Configuración ---
const SOAP_CONFIG = {
DescargaPolizas: { Descargar: { args: { Clave, CodigoRamo, Empresa, FechaFinal, FechaInicial, Identificador, Plataforma, TipoSuplemento1: "NP", TipoSuplemento2: "AN", TipoSuplemento3: "RE", TipoSuplemento4: "SP" }, header: null } },
LiquidacionMediador: {
Consulta: { args: { CodigoMediador, Empresa, FechaLiquidacion }, header: HEADER },
ObtenerFechasLiquidacion: { args: { CodigoMediador, Empresa }, header: HEADER }
},
DescargaSiniestros: { Descargar: { args: { AceptarCicos: true, AceptarSdm: true, Clave, CodigoRamo, Empresa, FechaFinal, FechaInicial, Identificador, IncluirAperturas: true, IncluirAperturasCicos: true, IncluirAperturasSdm: true, IncluirPagosImdemnizacion: true, IncluirTerminados: true, Plataforma }, header: HEADER } },
DescargaCompletaRecibos: { DescargarNew: { args: { Clave, CodigoRamo, Empresa, FechaFinal, FechaInicial, Identificador, Plataforma, IncluirAnulados: true, IncluirCobrados: true, IncluirDevueltos: true, IncluirNuevos: true }, header: null } },
DescargaCartera: {
DescargarCartera: { args: { CodigoMediador, Empresa, FechaRenovacion, Identificador, Plataforma }, header: null },
ObtenerListaRamos: { args: { Empresa }, header: null },
ObtenerListaRenovaciones: { args: { Empresa, Mediador }, header: null }
},
ConsultaPolizas: {
ConsultarPoliza: { args: { CodigoPoliza, CodigoRamo, CodigoSuplemento, Empresa, Identificador, Plataforma }, header: null },
ObtenerListaPolizasMediador: { args: { CodigoMediador, Empresa, Identificador }, header: null },
ObtenerListaSuplementosPoliza: { args: { CodigoPoliza, CodigoRamo, Empresa, Identificador }, header: null }
},
ConsultaRecibos: {
ConsultarRecibo: { args: { CodigoPoliza, CodigoRamo, CodigoRecibo, CodigoSuplemento, Empresa, Identificador, Plataforma }, header: null },
ObtenerListaRecibosPoliza: { args: { CodigoPoliza, CodigoRamo, Empresa, Identificador }, header: null }
},
ConsultaAgendaTramitacion: { ConsultaTramitacion: { args: { Datos: { CodigoExpediente, CodigoPoliza, CodigoSiniestro, Empresa } }, header: HEADER } },
TramitacionSiniestro: { InsertarTramite: { args: { CodigoEmpresa, CodigoExpediente, CodigoSiniestro, Identificador, Observaciones, Plataforma }, header: null } }
};
const config = SOAP_CONFIG[service]?.[method];
if (!config) throw new Error(`Método '${method}' no configurado para el servicio '${service}'`);
try {
const client = await soap.createClientAsync(url, {
httpClient: new HttpClient(),
request: { timeout: 120000 }
});
if (config.header) client.addSoapHeader(config.header);
const methodName = `${method}Async`;
const [result] = await client[methodName](config.args);
if (save) {
await trx({ action: service, data: result }, actions);
}
return result;
} catch (error) {
console.error(`[SOAP ERROR] ${service}/${method}:`, error.message);
throw error;
}
};