Articles on: Developers
This article is also available in:

Advanced Scripts

Data Validation



Validate an identity card's numbers



Some countries implement algorithms for validating identity document numbers. These algorithms can be reproduced in Javascript:
function validateId(){
var ID = Flokzu.getFieldValue( [[Id Number]] ); 
var patron = /[\.\-]/ig; 
ID = ID.replace(patron, ""); 
var Coefs = [2,9,8,7,6,3,4,1]; 
var arrayID = ID.split( "" ); 
var Sum = 0;
var length = ID.length;
	for (i=0;i<length-1;i++){
	Sum = Sum + Coefs[i]*arrayID[i];
	}
	Sum = Sum + Coefs[7]*arrayID[length-1]; 	
		if ( (Sum % 10) != 0 ){
		swal({type : 'error' , title : 'Error!' , text: 'Alert: Incorrect Id'});
	}
}
Flokzu.onChange( [[Id Number]], validateId);


Validate identity card's numbers for table fields



function VerifyID(msg, data){
	var Array_CI = $(Flokzu.getAllColumnValues( [[Employee::Employee Id]] ));
	var Entries = ( Array_CI ).length;
	for(i=0; i<Entries; i++){
    	ID = Array_CI[i].innerText;
    	ID_Result = validateId(ID);
    	if(ID_Result == false){
        	Flokzu.error( [[Employee]] , "The number "+ID+" isn't valid." );
   		 swal({type : 'error' , title : 'Error!' , text: "The number "+ID+" isn't valid."});
   	 }
    }
}
Flokzu.onTableChange([[Employee::Employee Id]], VerifyID);


Dates


Calculate the Difference between two dates and show the result in days, months or years



function ChangeDate(msg, data){

var Date1 = moment(Flokzu.getFieldValue([[Date 1]]), "DD/MM/YYYY");
var Date2 = moment(Flokzu.getFieldValue([[Date 2]]), "DD/MM/YYYY");

var years = Date2.diff(Date1, 'years');
Date1.add(years, 'year');

var months = Date2.diff(Date1, 'months');
Date1.add(months, 'months')

var Days = Date2.diff(Date1, 'days');

Flokzu.setFieldValue([[Days]], Days);
Flokzu.setFieldValue([[months]], months);
Flokzu.setFieldValue([[Years]], years);
}

Flokzu.onChange([[Date 2]], ChangeDate);
Flokzu.onChange([[Date 1]], ChangeDate);


IMPORTANT: The Date 1 field should be prior to the Date 2 field

Identifier



Obtain the process instance identifier's number and insert it into a field

function copyReference(){
   var x = $('#fkz_ref').text();
   x = x.substring(x.lastIndexOf('-') + 1)
   Flokzu.setFieldValue([[FIELD]] , x);
}

Flokzu.onInit(copyReference);


Valid for tasks different than the initial one (Launch Process) since the instance's Id isn't created at that point yet.

Customize the identifier


For example, add the current year to the identifier "ABC-123" (2022-ABC-123):

function identifier(){
        var id=Flokzu.getFieldValue( [[Default Id]])
        var num=id.substring(id.indexOf("-")+1) + "-" + moment().format('YYYY')
        Flokzu.setFieldValue([[new Id]],num)
        }
Flokzu.onInit(identifier);


TABLES



Iterate and copy cells's values from a table field into text a field



function iteratecolumn(msg, data){   
  var rowCounter = 1;
    $( Flokzu.getAllColumnValues( [[Table::Column]] ) ).each(  
        function(){  
            var colValue = $(this).attr('value');
            if(rowCounter == 1){
                Flokzu.setFieldValue([[Field 1]],colValue);
            }else if (rowCounter == 2){
                Flokzu.setFieldValue([[Field 2]],colValue);
            }else if (rowCounter == 3){
                Flokzu.setFieldValue([[Field 3]],colValue);
            }
            rowCounter ++;
		}
	)
}
Flokzu.onAction(iteratecolumn);


Example:

function iterateTable(msg, data){   
    $( Flokzu.getAllColumnValues( [[table::column]] ) ).each( 
        function(){  
            //Throw an alert with the value
            alert( $(this).attr('value') ); 
        }
    );   
}
Flokzu.onTableChange( [[table::column]] , iterateTable );


Iterate a date-type column in a table and set a field with the minimum date from that column.



function dueDateTD1(msg, data){ 
    Flokzu.setFieldValue([[Minimum Date]],''); 
    $( Flokzu.getAllColumnValues([[Table::Column]])).each( 
        function(){  
            var Date = moment($(this).attr('value'), "DD/MM/YYYY");
            var dueDate = moment(Flokzu.getFieldValue([[Minimum Date]]), "DD/MM/YYYY");
            if(Flokzu.getFieldValue([[Minimum Date]])=='' || dueDate.isBefore(Date)){
                Flokzu.setFieldValue([[Minimum Date]],$(this).attr('value'));
 
            } else {
 
            }
        }
    );   
}
Flokzu.onTableChange([[Tabla::Column]], dueDateTD1);


Others



Buttons - Set a field as required according to a selected button



function functionName(msg, button) {
    hiddeReason(msg, button);
    if (button == 'Delete') {
       Flokzu.setRequired([[Field]]);
    }
}

Flokzu.onAction(functionName);


Sweet Alert with buttons and alert messages



function sweetAlert() {
       var Field1= Flokzu.getFieldValue([[Field Name 1]]);
       var Field2= Flokzu.getFieldValue([[Field Name 2]]);
       if (Field1=="Yes" && Field2=="Yes"){
			
		    swal({
			  title: "Insert title here",
			  text: "insert text message here",
			  type: "warning",
			  showCancelButton: true,
			  confirmButtonColor: "#DD6B55", //Red confirm button
			  confirmButtonText: "Yes",
			  cancelButtonText: "No",
			  closeOnConfirm: false,
			  closeOnCancel: false
			},
			function(isConfirm){
			  if (isConfirm) {
				swal("Ok!", "insert message here", "success");
				} else {
				swal("Insert Title Here", "Insert message here" , "error");
			  }
			});
			

        }
}
Flokzu.onChange([[Field1]], sweetAlert);
Flokzu.onChange([[Field2]], sweetAlert);


Modify a number format, insert currency symbol or decimals



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 Yesgnificant digits
console.log(new Intl.NumberFormat('en-IN', { maximumYesgnificantDigits: 3 }).format(number));
// expected output: "1,23,000"

Updated on: 22/07/2022

Was this article helpful?

Share your feedback

Cancel

Thank you!