Untitled
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) { formContext.getAttribute("yod_codicefiscale").addOnChange(this.checkCodiceFiscale); formContext.getAttribute("telephone1").addOnChange(this.validateAndCorrectPhoneNumber); } //this.checkCodiceFiscale(); //this.validateAndCorrectPhoneNumber(); }; this.onSave = function (executionContext) { debugger formContext = executionContext.getFormContext(); try { this.checkCodiceFiscale(); this.validateAndCorrectPhoneNumber(); } catch(error) { alert(error.message); 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 = function () { 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."); } else { if (codiceFiscale.substring(15, 16) !== this.calcolaCodiceControllo(codiceFiscale.substring(0, 15))) { throw new(Error("Il codice fiscale non è valido.")) } else { formContext.getAttribute("yod_codicefiscale").setValue(codiceFiscale); } } } catch (error) { alert(error.message) } } }; // 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 = function () { debugger var phoneNumber = formContext.getAttribute("telephone1").getValue(); if (phoneNumber) { try { const cleanedPhoneNumber = this.validateItalianPhoneNumber(phoneNumber); if (!/^\d{14}$/.test(cleanedPhoneNumber)) { throw newError("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);
Leave a Comment