/**
* 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", "
"
+ "
"
+ " "
+ " Aguarde mientras se realizan los controles."
+ "
"
+ " "
+ "
");
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();
});
});