Untitled
unknown
plain_text
2 years ago
9.1 kB
6
Indexable
var AccountForm = window.AccountForm || {};
var formContext = {};
(function () {
var formType;
var CrmFormType = {
create: 1,
update: 2
};
this.onLoad = function (executionContext) {
debugger
formContext = executionContext.getFormContext();
formContext.getAttribute("emailaddress1").addOnChange(this.onEmailChange);
formContext.getAttribute("yod_creacontatto").addOnChange(this.onCreaContattoFieldChange);
this.visibilitaCreaContatto();
formType = formContext.ui.getFormType();
if (formType === CrmFormType.update) {
try {
formContext.getAttribute("yod_codicefiscale").addOnChange(() => this.checkCodiceFiscale);
formContext.getAttribute("telephone1").addOnChange(() => this.validateAndCorrectPhoneNumber);
} catch (error) {
executionContext.getEventArgs().preventDefault();
}
}
//this.checkCodiceFiscale();
//this.validateAndCorrectPhoneNumber();
};
this.onSave = function (executionContext) {
debugger
formContext = executionContext.getFormContext();
try {
this.checkCodiceFiscale();
this.validateAndCorrectPhoneNumber();
} catch(error) {
executionContext.getEventArgs().preventDefault();
}
}
// OnChange of email
this.visibilitaCreaContatto = function () {
debugger
var email = formContext.getAttribute("emailaddress1").getValue();
var CreaContatto = formContext.getControl("yod_creacontatto");
if (email) {
CreaContatto.setVisible(true);
} else {
CreaContatto.setVisible(false);
}
};
this.onEmailChange = function (){
debugger
//var formContext = executionContext.getFormContext();
AccountForm.visibilitaCreaContatto();
};
// OnChange event handler for the CreaContatto field
this.onCreaContattoFieldChange = function (){
debugger
//var formContext = executionContext.getFormContext();
var creaContatto = formContext.getAttribute("yod_creacontatto").getValue();
if (creaContatto === true) {
AccountRibbon.CreaContactCommand(formContext);
}
};
this.checkCodiceFiscale = () => {
debugger
var codiceFiscale = formContext.getAttribute("yod_codicefiscale").getValue();
// check if the codice fiscale is valid
if (codiceFiscale) {
try {
codiceFiscale = codiceFiscale.toUpperCase();
if (codiceFiscale.length !== 16) {
throw new Error("Il codice fiscale deve avere 16 caratteri alfanumerici.");
//formContext.getControl("yod_codicefiscale").setNotification("Il codice fiscale deve avere 16 caratteri alfanumerici.", "error");
} else {
if (codiceFiscale.substring(15, 16) !== this.calcolaCodiceControllo(codiceFiscale.substring(0, 15))) {
throw new Error("Il codice fiscale non è valido.");
//formContext.getControl("yod_codicefiscale").setNotification("Il codice fiscale non è valido.", "error");
} else {
formContext.getAttribute("yod_codicefiscale").setValue(codiceFiscale);
//formContext.getControl("yod_codicefiscale").clearNotification();
}
}
} catch (error) {
alert(error.message);
//formContext.getControl("yod_codicefiscale").setNotification(error.message, "error");
}
}
};
// Calculate the control code
this.calcolaCodiceControllo = function(codice) {
debugger
// Calcola il codice di controllo del Codice Fiscale
// Input: i primi 15 caratteri del Codice Fiscale
// Output: il codice di controllo
let contatore = 0;
codice = codice.toUpperCase();
if (codice.length !== 15)
return "0"; // zero: errore
else {
for (let i = 0; i < codice.length; i++) {
contatore += this.valoreDelCarattere(codice.substring(i, i + 1), i);
}
contatore %= 26; // si considera il resto
return String.fromCharCode(contatore + 65);
}
}
// Get the value of a character
this.valoreDelCarattere = function(carattere, posizione) {
let valore = 0;
switch (carattere) {
case "A":
case "0":
valore = (posizione % 2) === 0 ? 1 : 0;
break;
case "B":
case "1":
valore = (posizione % 2) === 0 ? 0 : 1;
break;
case "C":
case "2":
valore = (posizione % 2) === 0 ? 5 : 2;
break;
case "D":
case "3":
valore = (posizione % 2) === 0 ? 7 : 3;
break;
case "E":
case "4":
valore = (posizione % 2) === 0 ? 9 : 4;
break;
case "F":
case "5":
valore = (posizione % 2) === 0 ? 13 : 5;
break;
case "G":
case "6":
valore = (posizione % 2) === 0 ? 15 : 6;
break;
case "H":
case "7":
valore = (posizione % 2) === 0 ? 17 : 7;
break;
case "I":
case "8":
valore = (posizione % 2) === 0 ? 19 : 8;
break;
case "J":
case "9":
valore = (posizione % 2) === 0 ? 21 : 9;
break;
case "K":
valore = (posizione % 2) === 0 ? 2 : 10;
break;
case "L":
valore = (posizione % 2) === 0 ? 4 : 11;
break;
case "M":
valore = (posizione % 2) === 0 ? 18 : 12;
break;
case "N":
valore = (posizione % 2) === 0 ? 20 : 13;
break;
case "O":
valore = (posizione % 2) === 0 ? 11 : 14;
break;
case "P":
valore = (posizione % 2) === 0 ? 3 : 15;
break;
case "Q":
valore = (posizione % 2) === 0 ? 6 : 16;
break;
case "R":
valore = (posizione % 2) === 0 ? 8 : 17;
break;
case "S":
valore = (posizione % 2) === 0 ? 12 : 18;
break;
case "T":
valore = (posizione % 2) === 0 ? 14 : 19;
break;
case "U":
valore = (posizione % 2) === 0 ? 16 : 20;
break;
case "V":
valore = (posizione % 2) === 0 ? 10 : 21;
break;
case "W":
valore = 22; // Since both cases result in 22
break;
case "X":
valore = (posizione % 2) === 0 ? 25 : 23;
break;
case "Y":
valore = 24; // Since both cases result in 24
break;
case "Z":
valore = (posizione % 2) === 0 ? 23 : 25;
break;
default:
valore = 0;
break;
}
return valore;
}
this.validateAndCorrectPhoneNumber = () => {
debugger
var phoneNumber = formContext.getAttribute("telephone1").getValue();
if (phoneNumber) {
try {
const cleanedPhoneNumber = this.validateItalianPhoneNumber(phoneNumber);
if (!/^\d{14}$/.test(cleanedPhoneNumber)) {
throw new Error("Numero di telefono non valìdo.")
} else {
formContext.getAttribute("telephone1").setValue(cleanedPhoneNumber);
}
} catch (error) {
alert(error.message);
}
}
}
this.validateItalianPhoneNumber = function(phonenumber) {
var phoneNumber = formContext.getAttribute("telephone1").getValue();
const cleanedPhoneNumber = phoneNumber.replace(/\D/g, '');
if (cleanedPhoneNumber.startsWith('39')) {
return '0039' + cleanedPhoneNumber.slice(2);
}
if (!cleanedPhoneNumber.startsWith('0039')) {
return '0039' + cleanedPhoneNumber;
}
return cleanedPhoneNumber;
}
}).call(AccountForm);Editor is loading...
Leave a Comment