/** * Contenido: Interfase de Brokers * Autor: Rodrigo Sobrero **/ /*jslint browser: true*/ /*global $, jQuery, alert, console, oGen, oGlobal, MessageAlert, FileReader, Base64*/ // Objeto oInterfaseBrokers var oInterfaseBrokers = oInterfaseBrokers || {}; oInterfaseBrokers.sUsuarCod = oGlobal.cUsuario; oInterfaseBrokers.fnTriggerClick = function(){ $("#subirArchivo").val(""); $("#subirArchivo_lbl").find('div').text(""); $("#uploadFileBtn").addClass('disabled'); $("#subirArchivo").trigger("click"); }; // Valida extensión, nombre y contenido del archivo oInterfaseBrokers.fnValidaExtension = function () { "use strict"; // Variables de inicialización var uploadFileBtn = $("#uploadFileBtn"), subirArchivo = $("#subirArchivo"), subirArchivo_lbl = $("#subirArchivo_lbl"), extension = "LBA", yearMinimo = new Date(1980, 0, 1).getFullYear(); // oInterfaseBrokers.sMensajeError = ""; oInterfaseBrokers.sMensajeErrorCont = ""; // uploadFileBtn.addClass('disabled'); subirArchivo.on('change', function(e){ if(e.target.files.length > 0){ $("#subirArchivo_lbl").find('div').text(e.target.files[0].name); uploadFileBtn.removeClass('disabled'); }else{ $("#subirArchivo_lbl").find('div').text(""); uploadFileBtn.addClass('disabled'); } }); // uploadFileBtn.click(function (e) { // var element = document.getElementById('subirArchivo'); if(element.files.length == 0){ return false; } var getArchivo = element.files, archivoNombre = getArchivo[0].name.split(".")[0], archivoExtension = getArchivo[0].name.split(".")[1], archivoNombreNB = archivoNombre.slice(0, 2), archivoNombreYear = parseInt(archivoNombre.slice(2, 6), 10), archivoNombreMonth = parseInt(archivoNombre.slice(6, 8), 10), archivoNombreDay = parseInt(archivoNombre.slice(8, 10), 10), archivoNombreHour = parseInt(archivoNombre.slice(10, 12), 10), archivoNombreMinute = parseInt(archivoNombre.slice(12, 14), 10), archivoNombreSecond = parseInt(archivoNombre.slice(14, 16), 10), archivoNB = archivoNombreNB === "NB", // Chequea año en el nombre del archivo fechaHoyYear = new Date(oGlobal.sys_date).getFullYear(), fechaArchivoYear = new Date(archivoNombreYear, 0, 1).getFullYear(), archivoYear = fechaArchivoYear > fechaHoyYear || fechaArchivoYear < yearMinimo ? false : true, archivoYearMin = fechaArchivoYear < yearMinimo, // archivoMonth = archivoNombreMonth > 0 && archivoNombreMonth <= 12, archivoDay = archivoNombreDay > 0 && archivoNombreDay <= 31, archivoHour = archivoNombreHour >= 0 && archivoNombreHour <= 24, archivoMinute = archivoNombreMinute >= 0 && archivoNombreMinute <= 59, archivoSecond = archivoNombreSecond >= 0 && archivoNombreSecond <= 59; if (archivoExtension !== extension) { oInterfaseBrokers.sMensajeError = "Error en el nombre de la extensión del archivo. Debe ser .LBA"; } else if (!archivoNB) { oInterfaseBrokers.sMensajeError = "Error en los primeros dos caracteres 'NB'."; } else if (!archivoYear) { oInterfaseBrokers.sMensajeError = "Error en el rango del año de ingreso."; } else if (!archivoMonth) { oInterfaseBrokers.sMensajeError = "Error en el rango del mes de ingreso."; } else if (!archivoDay) { oInterfaseBrokers.sMensajeError = "Error en el rango del día de ingreso."; } else if (!archivoHour) { oInterfaseBrokers.sMensajeError = "Error en el rango de la hora de ingreso."; } else if (!archivoMinute) { oInterfaseBrokers.sMensajeError = "Error en el rango de los minutos de ingreso."; } else if (!archivoSecond) { oInterfaseBrokers.sMensajeError = "Error en el rango de los segundos de ingreso."; } // Abre modal oInterfaseBrokers.fnModalInfo(); //Valida Step 1 if (oInterfaseBrokers.sMensajeError === "" || oInterfaseBrokers.sMensajeError === undefined) { console.info("#1", "Step 1 is OK"); oInterfaseBrokers.fnCambiarEstado("1", true); } else { console.warn("#1", oInterfaseBrokers.sMensajeError); oInterfaseBrokers.fnCambiarEstado("1", false, oInterfaseBrokers.sMensajeError); oInterfaseBrokers.fnCambiarEstado("2", false); oInterfaseBrokers.fnCambiarEstado("3", false); oInterfaseBrokers.fnCambiarEstado("4", false); oInterfaseBrokers.fnCambiarEstado("5", false); return false; } // Funcion que procesa archivo var procesarArchivo = function (archivo) { var archivoContenido = archivo, archivoSplit = archivoContenido.split("\n"), archivoSecuenciaHead = archivoSplit[0].trim(), //archivoSecuenciaFoot = archivoSplit[archivoSplit.length - 2].trim(); /* Fecha: 09/03/2017 Modificado: Felipe Desc: En la Ov vieja se toma el registro(99NOBK) considerando cualquier posicón. */ archivoSecuenciaFoot = archivoContenido.substring(archivoContenido.indexOf("99NOBK"), archivoContenido.length).split("\n")[0]; //oInterfaseBrokers.sUsuarCod = archivoSecuenciaHead.slice(6, 16); // Valida secuencia if (!archivoContenido.includes("00NOBK")) { oInterfaseBrokers.sMensajeErrorCont = "No encontró los caracteres 00NOBK de cabecera de resgistro."; } if (!archivoContenido.includes("99NOBK")) { oInterfaseBrokers.sMensajeErrorCont = "No encontró los caracteres 99NOBK de pie de resgistro."; } // Control de registro header var controlRegistro = archivoSecuenciaHead.slice(0, 2); if (!/^\d{2}$/.test(controlRegistro)) { oInterfaseBrokers.sMensajeErrorCont = "Error, el archivo no posee el registro de cabecera o tiene un formato incorrecto."; } // Secuencia var secuencia = archivoSecuenciaHead.slice(16, 25); if (!/^\d{9}$/.test(secuencia)) { oInterfaseBrokers.sMensajeErrorCont = "Error, la secuencia del encabezado debe ser numérico."; } // Fecha de proceso var fechaProceso = archivoSecuenciaHead.slice(25, 33); if (!/^\d{8}$/.test(fechaProceso)) { oInterfaseBrokers.sMensajeErrorCont = "Error, la fecha de proceso del encabezado es inválida."; } // Hora de proceso var horaProceso = archivoSecuenciaHead.slice(33, 39); if (!/^\d{6}$/.test(horaProceso)) { oInterfaseBrokers.sMensajeErrorCont = "Error, la hora de proceso del encabezado es inválida."; } // Control de registro footer var controlRegistroFoot = archivoSecuenciaFoot.slice(0, 2); if (!/^\d{2}$/.test(controlRegistroFoot)) { oInterfaseBrokers.sMensajeErrorCont = "Error, el código de registro del pie debe ser mumérico."; } // Secuencia footer var secuenciaFoot = archivoSecuenciaFoot.slice(16, 25); if (!/^\d{9}$/.test(secuenciaFoot)) { oInterfaseBrokers.sMensajeErrorCont = "Error, en el registro del pie, el campo secuencia debe ser numérico."; } // Cantidad de registros var cantidad = archivoSecuenciaFoot.slice(25, 31); if (!/^\d{6}$/.test(cantidad)) { oInterfaseBrokers.sMensajeErrorCont = "Error, en el registro del pie, el campo cantidad de registros debe ser numérico."; } // Hora de proceso footer var horaProcesoFoot = archivoSecuenciaFoot.slice(31, 45); if (!/^\d{14}$/.test(horaProcesoFoot)) { oInterfaseBrokers.sMensajeErrorCont = "Error, la hora de proceso del pie es inválida."; } var next = function () { // Muestra mensajes de error if (oInterfaseBrokers.sMensajeErrorCont === "" || oInterfaseBrokers.sMensajeErrorCont === undefined) { console.info("#3", "Step 3 is OK"); oInterfaseBrokers.fnCambiarEstado("3", true); //Next step - 4 oInterfaseBrokers.fnSubirArchivo(); } else { //oInterfaseBrokers.fnStep2Fail(oInterfaseBrokers.sMensajeErrorCont); console.warn("#3", oInterfaseBrokers.sMensajeErrorCont); oInterfaseBrokers.fnCambiarEstado("3", false, oInterfaseBrokers.sMensajeErrorCont); oInterfaseBrokers.fnCambiarEstado("4", false); oInterfaseBrokers.fnCambiarEstado("5", false); } }; oInterfaseBrokers.sArchivo = archivoContenido; oInterfaseBrokers.sNombreArchivo = archivoNombre + ".LBA"; oInterfaseBrokers.sSecuencia = archivoSecuenciaHead.slice(17, 25); oInterfaseBrokers.fnValidaSequencia(next); }; //Next step - 2 oInterfaseBrokers.fnNombreCarpeta(function(){ //Valida charset del archivo y luego lo procesa.... oGen.fnLoadFile({ file: getArchivo[0], callback: procesarArchivo }); }); }); }; // Modal información oInterfaseBrokers.fnModalInfo = function () { "use strict"; MessageAlert.messagePopup("Control de Errores", "
" + " " + "
" + "
"); var itemsControl = [ { 'id': 1, 'title': "Control de Nombre de Archivo", 'desc': "Este control verifica que el nombre del archivo poseea el formato correcto, el mismo debe estar formado por NB aaaa mm dd hh mm ss. NB: Novedades Brokers aaaammdd: Fecha de envío formada por Año, mes y día hhmmss: Hora de envío formada por Hora, minutos, segundos." }, { 'id': 2, 'title': "Control de Recepción de Envío Archivo", 'desc': "Este control verifica que la compañía haya recibido correctamente el archivo." }, { 'id': 3, 'title': "Control de Encabezado y Pie de Archivo", 'desc': "Este control verifica que el formato del Encabezado y el Pie del archivo posean el formato correcto: Formato Encabezado: Código de Registro Código de Interfaz Usuario Secuencia Fecha Proceso Hora Proceso Espacios. Formato Pie: Código de Registro Código de Interfaz Usuario Secuencia Cant. de Registros Sumatoria de Control Espacios." }, { 'id': 4, 'title': "Control de Entrada del Archivo a la Compañía", 'desc': "Este control verifica que haya ingresado correctamente el archivo al sistema de la Compañía." }, { 'id': 5, 'title': "Control Interno del Archivo", 'desc': "Este control verifica el formato de determinados campos sea el correcto, de haber un error saldrá la leyenda identificando el campo que debe ser corregido." } ]; $.each(itemsControl, function (i, item) { $("#divDetalleControl").append("
" + "
" + item.title + "
" + "
" + "
"); }); }; // Modal mensajes de error oInterfaseBrokers.fnCambiarEstado = function (id, estado, msj) { "use strict"; msj = msj === "" || msj === undefined ? "Error al procesar el archivo" : msj; if (estado) { $("#" + id) .hide() .html("") .fadeIn(1500); } else { $("#" + id) .hide() .html("" + "") .fadeIn(1500); } if (id === "5") { $("#alertArchivos").alert("close"); } $(function () { $('[data-toggle="tooltip"]').tooltip(); }); }; // Valida que la sequencia no se repita oInterfaseBrokers.fnValidaSequencia = function (callback) { "use strict"; oGen.fnGetStore({ titulo: "Valida Secuencia", showErrorAsPopUp: false, params: { prm_dataSource: "ovQbe", prm_funcion: "painterfacebroker.consultasec", prm_usuario: oInterfaseBrokers.sUsuarCod, prm_secuencia: oInterfaseBrokers.sSecuencia, prm_estado: "La Operacion Finalizo Exitosamente." }, fnCallback: function (oResp) { console.log("__________________________"); console.log("fnValidaSequencia:"); console.log(oResp); console.log("__________________________"); try { //TODO: Fijar que viene antes de hacer callback if (oResp.RETURN.indexOf('IDLOG') == -1) { oInterfaseBrokers.fnInsertLOG(callback); } else { throw oResp.RETURN; } } catch (err) { oInterfaseBrokers.fnStep2Fail("La secuencia del archivo que esta intentando enviar ya fue ingresada."); console.log(err); } } }); }; // Inserta secuencia en la tabla para que no se repita oInterfaseBrokers.fnInsertLOG = function (callback) { "use strict"; oGen.fnGetStore({ titulo: "Valida Secuencia", showErrorAsPopUp: false, params: { prm_dataSource: "ovQbe", prm_funcion: "painterfacebroker.insertlog", prm_tipo: 'I', prm_usuario: oInterfaseBrokers.sUsuarCod, prm_secuencia: oInterfaseBrokers.sSecuencia, prm_fecha: moment(new Date(oGlobal.sys_date)).format('YYYY-MM-DD HH:mm:ss'), //MM/DD/YYYY HH:mm:ss prm_archivo: oInterfaseBrokers.sNombreArchivo, prm_estado: 'EN PROCESO DE VALIDACION - SECUENCIA OK', prm_tot_cant_reg: 0, prm_fecha_origen: '' }, fnCallback: function (oResp) { console.log("__________________________"); console.log("fnInsertLOG:"); console.log(oResp); console.log("__________________________"); try { //Ignora la respuesta por ahora if (oResp.RETURN !== undefined && oResp.RETURN.indexOf("") != -1) { callback(); } else { throw oResp.RETURN; } } catch (err) { oInterfaseBrokers.fnStep2Fail("Error, en el sistema central, por favor vuelva a intentarlo nuevamente más tarde."); console.log(err); } } }); }; oInterfaseBrokers.fnStep2Fail = function (msj) { oInterfaseBrokers.fnCambiarEstado("2", false, msj); oInterfaseBrokers.fnCambiarEstado("3", false); oInterfaseBrokers.fnCambiarEstado("4", false); oInterfaseBrokers.fnCambiarEstado("5", false); }; // Carpeta donde subir el archivo oInterfaseBrokers.fnNombreCarpeta = function (callback) { "use strict"; oInterfaseBrokers.MAILBOX = null; oGen.fnGetStore({ titulo: "Nombre de Carpeta", showErrorAsPopUp: false, params: { prm_dataSource: "ovQbe", prm_funcion: "paconsultamqgestion.nombremailbox", prm_usuarcod: oInterfaseBrokers.sUsuarCod }, fnCallback: function (oResp) { try { oInterfaseBrokers.MAILBOX = oResp.records[0].MAILBOX; console.info("#2", "Step 2 is OK"); oInterfaseBrokers.fnCambiarEstado("2", true); //Next step - 3 callback(oResp); } catch (err) { console.warn("#2", err); oInterfaseBrokers.fnStep2Fail(""); /*oInterfaseBrokers.fnCambiarEstado("2", false); oInterfaseBrokers.fnCambiarEstado("3", false); oInterfaseBrokers.fnCambiarEstado("4", false); oInterfaseBrokers.fnCambiarEstado("5", false);*/ } } }); }; // Subir archivo oInterfaseBrokers.fnSubirArchivo = function () { "use strict"; var archivo = oInterfaseBrokers.sArchivo;//.replace(/(\r\n|\r)/gm, "\n"); oGen.fnGetStore({ titulo: "Subir Archivos", showErrorAsPopUp: false, params: { prm_dataSource: "ovQbe", prm_funcion: "ovmqemision.uploadfile", prm_contenido: oGen.b64EncodeUnicode(archivo), prm_path: "TXTINTERFACES", prm_usuarcod: oInterfaseBrokers.sUsuarCod, prm_mailbox: oInterfaseBrokers.MAILBOX, prm_filename: oInterfaseBrokers.sNombreArchivo }, fnCallback: function (oResp) { try { var sResultado = String(oResp.records[0].RESULTADO); if (sResultado === "true") { console.info("#4", "Step 4 is OK"); oInterfaseBrokers.fnCambiarEstado("4", true); //Next step - 5 oInterfaseBrokers.fnControlInterno(); } else { console.warn("#4", "sResultado is " + (sResultado)); oInterfaseBrokers.fnCambiarEstado("4", false); oInterfaseBrokers.fnCambiarEstado("5", false); } } catch (err) { console.warn("#4", err); oInterfaseBrokers.fnCambiarEstado("4", false); oInterfaseBrokers.fnCambiarEstado("5", false); } } }); }; // Control interno oInterfaseBrokers.fnControlInterno = function () { "use strict"; oGen.fnGetStore({ titulo: "Control Interno", showErrorAsPopUp: false, params: { prm_dataSource: "ovQbe", prm_funcion: "paconsultamqgestion.transarchivointerfases", prm_usuarcod: oInterfaseBrokers.sUsuarCod, prm_nombrearchivo: oInterfaseBrokers.sNombreArchivo }, fnCallback: function (oResp) { try { var sMensajeo = oResp.records[0].MENSAJEO; if (sMensajeo !== undefined && sMensajeo !== "") { console.warn("#5", "message detected: " + sMensajeo); oInterfaseBrokers.fnCambiarEstado("5", false, sMensajeo); } else { console.info("#5", "Step 5 is OK"); oInterfaseBrokers.fnCambiarEstado("5", true); } } catch (err) { console.warn("#5", err); oInterfaseBrokers.fnCambiarEstado("5", false); } /* var sMensaje = ""; switch (sMensaje) { case "00": sMensaje = "La operación finalizó exitosamente."; break; case "99": sMensaje = "Error, en el sistema central, por favor vuelva a intentarlo nuevamente más tarde."; break; case "01": sMensaje = "Por favor verifique el archivo, la sintaxis NBAAAAMMDDHHMMSS (NB + Fecha + Hora) es incorrecta."; break; case "02": sMensaje = "Por favor verifique el archivo, en los dos primeros caracteres debe indicar NB."; break; case "03": sMensaje = "Por favor verifique el archivo, el año ingresado es inválido."; break; case "04": sMensaje = "Por favor verifique el archivo, el mes ingresado es inválido."; break; case "05": sMensaje = "Por favor verifique el archivo, el día ingresado es inválido."; break; case "06": sMensaje = "Por favor verifique el archivo, la hora ingresada es inválida."; break; case "07": sMensaje = "Por favor verifique el archivo, los minutos ingresados son inválidos."; break; case "08": sMensaje = "Por favor verifique el archivo, los segundos ingresados son inválidos."; break; case "09": sMensaje = "La secuencia del archivo que esta intentando enviar ya fue ingresada."; break; case "10": sMensaje = "Error en la longitud del archivo, no posee los caracteres necesarios."; break; case "11": sMensaje = "Error, el archivo no posee el registro de cabecera o tiene un formato incorrecto."; break; case "12": sMensaje = "Error, la secuencia del encabezado debe ser numérico."; break; case "13": sMensaje = "Error, la fecha de proceso del encabezado es inválida."; break; case "14": sMensaje = "Error, la hora de proceso del encabezado es inválida."; break; case "15": sMensaje = "Error, el código de registro del pie debe ser numérico."; break; case "16": sMensaje = "Error, en el registro del pie, el campo secuencia, debe ser numérico."; break; case "17": sMensaje = "Error, en el registro del pie, el campo cantidad de registros, debe ser numérico."; break; case "18": sMensaje = "Error, en el registro del pie, el campo sumatoria de control, debe ser numérico."; break; case "19": sMensaje = "Error, el archivo no se ha podido subir correctamente, por favor intente más tarde."; break; case "20": sMensaje = "Error en el sistema central, no se pudo realizar el control interno, por favor vuelva a intentarlo nuevamente más tarde."; break; case "21": sMensaje = "Por favor verifique el nombre del archivo, la fecha es mayor a la de hoy."; break; case "22": sMensaje = "Error en el nombre de la extensión del archivo. Debe ser .LBA."; break; case "23": sMensaje = "Error, el archivo no posee el registro del pie o tiene un formato incorrecto."; break; case "24": sMensaje = "Error, el archivo no posee el registro de cabecera o tiene un formato incorrecto."; break; default: sMensaje = ""; break; }*/ } }); }; oInterfaseBrokers.fnPrticualirdadesSF = function () { if (oSalesForce.ORIGEN == "SALESFORCE") { $('#uploadFileBtnVolver').hide(); } else { $('#uploadFileBtnVolver').show(); } } // Carga el inicio $(document).ready(function () { "use strict"; oSalesForce.fnObtenerParametrosOrigen('Interfase Brokers', oInterfaseBrokers.fnPrticualirdadesSF); // Title document.title = "Envío de Archivo para Interfase | Zurich Argentina eBusiness"; // Breadcrumb oGen.fnBreadCrumb(["Home", "Envío de Archivo para Interfase"]); // oInterfaseBrokers.fnValidaExtension(); // Limpiar modal $("#DIALOG-MESSAGE-ALERT").on("hidden.bs.modal", function () { $("#DIALOG-MESSAGE-ALERT-MESSAGE").empty(); $("#DIALOG-MESSAGE-ALERT-TITLE").empty(); $("#DIALOG-MESSAGE-ALERT .modal-dialog").removeAttr("style"); // Limpiar formulario $("#subirArchivo").val(""); $("#subirArchivo_lbl").find('div').text(""); $("#uploadFileBtn").addClass('disabled'); $("#divDetalleControl i").removeClass("icon-ok-circle icon-2x"); $("#divDetalleControl i").removeClass("icon-remove-circle icon-2x"); $("#divDetalleControl i").removeAttr("style"); $("#divDetalleControl i").addClass("icon-refresh icon-spin icon-large"); // Limpiar variables oInterfaseBrokers.sSecuencia = ""; oInterfaseBrokers.sArchivo = ""; oInterfaseBrokers.sNombreArchivo = ""; oInterfaseBrokers.sMensajeError = ""; oInterfaseBrokers.sMensajeErrorCont = ""; }); $("#DIALOG-MESSAGE-ALERT").on("show.bs.modal", function () { $("#DIALOG-MESSAGE-ALERT-BUTTONS").remove(); }); });