commit inicial

This commit is contained in:
2026-06-01 10:14:22 -04:00
commit ec253bd419
39 changed files with 4545 additions and 0 deletions

188
src/services/envioGuia.js Normal file
View File

@@ -0,0 +1,188 @@
import ParametrosGuia from '../database/UC/models/central/parametrosNuevaGuiaEntrega.js';
import RespuestaGuia from '../database/UC/models/central/respuestaNuevaGuiaEntrega.js';
import PedidosHeader from '../database/UC/models/central/pedidosHeader.js';
import { sendData } from '../utils/utils.js';
import moment from 'moment-timezone';
import config from './config.json' assert {type: 'json'};
const dataUrbano = config.dataUrbano;
const enviarGuias = async (idGuia) => {
const url = dataUrbano.url;
const idContrato = dataUrbano.id_contrato;
const linea = dataUrbano.linea;
// console.log(url, idContrato);
const guias = await ParametrosGuia.findAll({
where: {
id: idGuia,
// estado: 0
}
});
if (!guias) {
return false;
}
if (guias && guias.length > 0) {
let date = new Date(guias[0].fecharegistro)
let mes = `${date.getMonth() + 1}`.padStart(2, "0")
let fecha = `${date.getDate().toString().padStart(2, "0")}/${mes}/${date.getFullYear()}`;
// let dataDireccion = guias[0].direcciondestinatario.split(':');
// let direccionEntrega = dataDireccion[0];
let direccionEntrega = guias[0].direcciondestinatario;
let numeroPedido = guias[0].numeropedido;
let cantidad = guias.length;
let telefonoMovil = guias[0].telefonodestinatario.slice(-9);
let emailDestinatario = guias[0].informacionadicional;
const dataPedidosHeader = await PedidosHeader.findOne({
where: {
NROPED_PH: numeroPedido
}
})
let referenciaDireccion = '';
if (dataPedidosHeader) {
referenciaDireccion = dataPedidosHeader.referencia_ph;
}
let dataGuia = {
// Identificador del Servicio
linea: linea,
id_contrato: idContrato,
// Identificador del Envío
cod_rastreo: `URB${numeroPedido}`,
cod_barra: '',//no requerido
fech_emi_vent: fecha,//no requerido
nro_o_compra: '',//no requerido
nro_guia_trans: idGuia,//no requerido
// Datos del Seller / Vendedor
venta_seller: '', //no requerido
sell_codigo: '', //no requerido
sell_nombre: '', //no requerido
sell_direcc: '', //no requerido
sell_ubigeo: '', //no requerido
// Datos del receptor (Cliente)
cod_cliente: guias[0].codcliente,
nom_cliente: guias[0].nombredestinatario,
nom_empresa: '', //no requerido
nro_telf: '', //no requerido
nro_telf_mobil: telefonoMovil,//no requerido
correo_elec: emailDestinatario,//no requerido
// Dirección de entrega
dir_entrega: direccionEntrega,
nro_via: '',
nro_int: '',
nro_urb: '',//no requerido
ubi_direc: guias[0].ubigeodestino,
ref_direc: referenciaDireccion,//no requerido
id_direc: '',//no requerido
// Datos para despachos
peso_total: guias[0].pesopaquetes,
// pieza_total: cantidad,
pieza_total: 1,
urgente: '',//no requerido
picking: '',//no requerido
asegurado: '',//no requerido
monto_asegurado: '',//no requerido
via_aereo: '',//no requerido
// Datos para la entrega
// de aqui en adelante no son requeridos
fech_pro: '',
arco_hor: '',
fech_venc: '',
// Datos autorizados para entrega
nom_autorizado: '',
nro_doc_autorizado: '',
nom_autorizado_2: '',
nro_doc_autorizado_2: '',
// Datos para Cobranza
med_pago: '',
descripcion: '',
anotacion: '',
moneda: '',
importe: '',
tipo_empaque: '',
};
guias.forEach(async entry => {
entry.set({
estado: 1
});
await entry.save();
})
const payload = dataGuia;
console.log(JSON.stringify(payload, null, 2))
try {
const res = await sendData(url, null, payload);
await guardarRespuesta(idGuia, 1, res, payload);
return true;
} catch (error) {
console.error("Error en el envío de guía:", error);
await guardarRespuesta(idGuia, 0, { error: -1, mensaje: "Error en el envío de guía" }, payload);
}
}
}
const guardarRespuesta = async (idGuia, estado = 1, respuesta, payloadRequest) => {
const date = moment().tz("America/Santiago").utc().format();
let dataRespuesta;
if (respuesta.error >= 0) {
console.log("aca")
console.log(respuesta)
dataRespuesta = {
numeroguia: respuesta.guia,
id: idGuia,
fecha: date,
descripcion: respuesta.etiqueta,
mensajeerror: JSON.stringify(respuesta),
json_guia: JSON.stringify(payloadRequest),
estado: estado
}
} else {
dataRespuesta = {
numeroguia: respuesta.numeroguia,
id: idGuia,
fecha: date,
mensajeerror: JSON.stringify(respuesta),
estado: estado,
json_guia: JSON.stringify(payloadRequest),
}
}
await RespuestaGuia.create(dataRespuesta);
}
export {
enviarGuias
}