183 lines
4.7 KiB
JavaScript
183 lines
4.7 KiB
JavaScript
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;
|
|
|
|
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;
|
|
|
|
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) {
|
|
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
|
|
} |