Artículos sobre: Desarrolladores
Este artículo también está disponible en:

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

¿Este artículo te resultó útil?

Comparte tu opinión

Cancelar

¡Gracias!