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 }