Validar datos con algoritmos conocidos

Validar documento de identidad
Algunos países tienen para sus documentos de identidad nacional, algoritmos de validación que se pueden implementar mediante javascript.

function validarCI(){
var CI = Integradoc.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'});
	}
}
Integradoc.onChange( [[Número de Documento]], validarCI);


Validar CI para un valor en un campo tipo tabla

function verificarCI(msg, data){
	var Array_CI = $(Integradoc.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){
        	Integradoc.error( [[Campo]] , "La cédula "+CI+" no es válida." );
   		 swal({type : 'error' , title : 'Error!' , text: "La cédula "+CI+" no es válida."});
   	 }
    }
}
Integradoc.onTableChange([[Tabla::Columna]], verificarCI);


Fechas
Diferencia en días, meses y años entre dos fechas

function cambiarFecha(msg, data){

var fecha1 = moment(Integradoc.getFieldValue([[Fecha 1]]), "DD/MM/YYYY");
var fecha2 = moment(Integradoc.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');

Integradoc.setFieldValue([[Dias]], dias);
Integradoc.setFieldValue([[Meses]], meses);
Integradoc.setFieldValue([[Años]], anios);
}

Integradoc.onChange([[Fecha 2]], cambiarFecha);
Integradoc.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)
   Integradoc.setFieldValue([[CAMPO]] , x);
}

Integradoc.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=Integradoc.getFieldValue( [[Identificador Defecto]])
        var num=id.substring(id.indexOf("-")+1) + "-" + moment().format('YYYY')
        Integradoc.setFieldValue([[numeracion]],num)
        }
Integradoc.onInit(identificador);


TABLAS

Iterar y copiar celdas de un campo tabla en campo de tipo texto

function iterarColumna1(msg, data){   
  var filaCounter = 1;
    $( Integradoc.getAllColumnValues( [[Tabla::Columna]] ) ).each(  
        function(){  
            var colValue = $(this).attr('value');
            if(filaCounter == 1){
                Integradoc.setFieldValue([[Campo Texto 1]],colValue);
            }else if (filaCounter == 2){
                Integradoc.setFieldValue([[Campo Texto 2]],colValue);
            }else if (filaCounter == 3){
                Integradoc.setFieldValue([[Campo Texto 3]],colValue);
            }
            filaCounter ++;
		}
	)
}
Integradoc.onAction(iterarColumna1);


Ejemplo:

function iterarTabla(msg, data){   
    $( Integradoc.getAllColumnValues( [[campo::columna]] ) ).each( 
        function(){  
            //Lanza un alert con el valor.
            alert( $(this).attr('value') ); 
        }
    );   
}
Integradoc.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){ 
    Integradoc.setFieldValue([[Balance Vigente Hasta]],''); 
    $( Integradoc.getAllColumnValues([[Balance::Fecha Cierre Balance]])).each( 
        function(){  
            var fecha = moment($(this).attr('value'), "DD/MM/YYYY");
            var vencimiento = moment(Integradoc.getFieldValue([[Balance Vigente Hasta]]), "DD/MM/YYYY");
            if(Integradoc.getFieldValue([[Balance Vigente Hasta]])=='' || vencimiento.isBefore(fecha)){
                Integradoc.setFieldValue([[Balance Vigente Hasta]],$(this).attr('value'));
 
            } else {
 
            }
        }
    );   
}
Integradoc.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') {
       Integradoc.setRequired([[Causal de Eliminación]]);
    }
}
Integradoc.onAction(solicitarCausal);


Sweet Alert con botones y tres mensajes de alerta

function sweetAlert() {
       var campo1= Integradoc.getFieldValue([[Nombre campo 1]]);
       var campo2= Integradoc.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");
			  }
			});

        }
}
Integradoc.onChange([[campo1]], sweetAlert);
Integradoc.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"
¿Este artículo te resultó útil?
Cancelar
¡Gracias!