Scripts Avanzados
Validar datos con algoritmos conocidos
Validar documento de identidad
Algunos países utilizan algoritmos de validación para sus documentos de identidad nacional, los cuales pueden ser implementados mediante javascript en Flokzu.
function validarCI(){
var CI = Flokzu.getFieldValue( [[Número de Documento]] );
var patron = /[\.\-]/ig;
CI = CI.replace(patron, "");
var Coefs = [2,9,8,7,6,3,4,1];
var arrayCI = CI.split( "" );
var suma = 0;
var largo = CI.length;
for (i=0;i<largo-1;i++){
suma = suma + Coefs[i]*arrayCI[i];
}
suma = suma + Coefs[7]*arrayCI[largo-1];
if ( (suma % 10) != 0 ){
swal({type : 'error' , title : 'Error!' , text: 'Alerta: Cédula incorrecta'});
}
}
Flokzu.onChange( [[Número de Documento]], validarCI);
Para validar un documento de identidad que se encuentra en un campo tipo tabla.
function verificarCI(msg, data){
var Array_CI = $(Flokzu.getAllColumnValues( [[Tabla::Columna]] ));
var Cantidad_Registros = ( Array_CI ).length;
for(i=0; i<Cantidad_Registros; i++){
CI = Array_CI[i].innerText;
Resultado_CI = validarCI(CI);
if(Resultado_CI == false){
Flokzu.error( [[Campo]] , "La cédula "+CI+" no es válida." );
swal({type : 'error' , title : 'Error!' , text: "La cédula "+CI+" no es válida."});
}
}
}
Flokzu.onTableChange([[Tabla::Columna]], verificarCI);
Fechas
Calcular la diferencia en días, meses y años entre dos fechas.
function cambiarFecha(msg, data){
var fecha1 = moment(Flokzu.getFieldValue([[Fecha 1]]), "DD/MM/YYYY");
var fecha2 = moment(Flokzu.getFieldValue([[Fecha 2]]), "DD/MM/YYYY");
var anios = fecha2.diff(fecha1, 'years');
fecha1.add(anios, 'year');
var meses = fecha2.diff(fecha1, 'months');
fecha1.add(meses, 'months')
var dias = fecha2.diff(fecha1, 'days');
Flokzu.setFieldValue([[Dias]], dias);
Flokzu.setFieldValue([[Meses]], meses);
Flokzu.setFieldValue([[Años]], anios);
}
Flokzu.onChange([[Fecha 2]], cambiarFecha);
Flokzu.onChange([[Fecha 1]], cambiarFecha);
IMPORTANTE: El campo Fecha 1 tiene que ser anterior a Fecha 2
Identificador
Obtener el identificador de una instancia de proceso e insertarla en un campo
function copiarReferencia(){
var x = $('#fkz_ref').text();
x = x.substring(x.lastIndexOf('-') + 1)
Flokzu.setFieldValue([[CAMPO]] , x);
}
Flokzu.onInit(copiarReferencia);
Solamente válido para tareas que no sean la inicial (pues no existe instancia hasta ese momento).
Personalizar el identificador
Por ejemplo: agregar el año al identificador ABC-123, 2020-ABC-123:
function identificador(){
var id=Flokzu.getFieldValue( [[Identificador Defecto]])
var num=id.substring(id.indexOf("-")+1) + "-" + moment().format('YYYY')
Flokzu.setFieldValue([[numeracion]],num)
}
Flokzu.onInit(identificador);
TABLAS
Iterar y copiar celdas de un campo tabla en campo de tipo texto
function iterarColumna1(msg, data){
var filaCounter = 1;
$( Flokzu.getAllColumnValues( [[Tabla::Columna]] ) ).each(
function(){
var colValue = $(this).attr('value');
if(filaCounter == 1){
Flokzu.setFieldValue([[Campo Texto 1]],colValue);
}else if (filaCounter == 2){
Flokzu.setFieldValue([[Campo Texto 2]],colValue);
}else if (filaCounter == 3){
Flokzu.setFieldValue([[Campo Texto 3]],colValue);
}
filaCounter ++;
}
)
}
Flokzu.onAction(iterarColumna1);
Ejemplo:
function iterarTabla(msg, data){
$( Flokzu.getAllColumnValues( [[campo::columna]] ) ).each(
function(){
//Lanza un alert con el valor.
alert( $(this).attr('value') );
}
);
}
Flokzu.onTableChange( [[campo::columna]] , iterarTabla );
Iterar una columna de tipo fecha de una tabla y setear un campo como la mínima fecha de esa columna
function vencimientoTD1(msg, data){
Flokzu.setFieldValue([[Balance Vigente Hasta]],'');
$( Flokzu.getAllColumnValues([[Balance::Fecha Cierre Balance]])).each(
function(){
var fecha = moment($(this).attr('value'), "DD/MM/YYYY");
var vencimiento = moment(Flokzu.getFieldValue([[Balance Vigente Hasta]]), "DD/MM/YYYY");
if(Flokzu.getFieldValue([[Balance Vigente Hasta]])=='' || vencimiento.isBefore(fecha)){
Flokzu.setFieldValue([[Balance Vigente Hasta]],$(this).attr('value'));
} else {
}
}
);
}
Flokzu.onTableChange([[Balance::Fecha Cierre Balance]], vencimientoTD1);
Otros
Botones - Requerir u ocultar un campo según un botón seleccionado
function solicitarCausal(msg, button) {
hiddeReason(msg, button);
if (button == 'Eliminar') {
Flokzu.setRequired([[Causal de Eliminación]]);
}
}
Flokzu.onAction(solicitarCausal);
Sweet Alert con botones y tres mensajes de alerta
function sweetAlert() {
var campo1= Flokzu.getFieldValue([[Nombre campo 1]]);
var campo2= Flokzu.getFieldValue([[Nombre campo 2]]);
if (campo1=="Si" && campo2=="Si"){
swal({
title: "Insertar aquí el título",
text: "Insertar aquí el mensaje",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55", //botón de confirmar de color rojo
confirmButtonText: "Si",
cancelButtonText: "No",
closeOnConfirm: false,
closeOnCancel: false
},
function(isConfirm){
if (isConfirm) {
swal("Ok!", "Insertar aquí el mensaje", "success");
} else {
swal("Verifique!", "Insertar aquí el mensaje" , "error");
}
});
}
}
Flokzu.onChange([[campo1]], sweetAlert);
Flokzu.onChange([[campo2]], sweetAlert);
Modificar formato de número, poner símbolo de moneda y decimales
const number = 123456.789;
console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number));
// expected output: "123.456,79 €"
// the Japanese yen doesn't use a minor unit
console.log(new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(number));
// expected output: "¥123,457"
// limit to three significant digits
console.log(new Intl.NumberFormat('en-IN', { maximumSignificantDigits: 3 }).format(number));
// expected output: "1,23,000"
Actualizado el: 27/07/2023
¡Gracias!