Vi è mai capitato di dover mostrare in un campo personalizzato in SuiteRM l’età di un lead o un contatto calcolata automaticamente dalla data di nascita? A me è stato richiesto diverse volte.
Ho pensato di farlo tramite Logic Hooks e un po’ di PHP. Per i più incerti ho inserito anche una versione video del tutorial… Buona lettura e buona visione!
1 Crea un campo ‘Età’ di tipo Intero
Entriamo in SuiteCRM > Amministrazione > Studio.
Dal menù a sinistra scegliamo Lead > Campi > Aggiungi campo.
Tipo di campo: Intero
Nome Campo: lead_eta
Dimensione massima: 100 (o 150)
Selezioniamo Attiva ricerca ad intervallo
Salviamo.
Nel mio esempio ho creato anche un campo di Tipo data con Nome data_di_nascita. Ma potreste anche utilizzare il campo già esistente birthdate.
Dal menù a sinistra clicchiamo ora su Maschera Modifica, inseriamo una Nuova riga e i due campi creati. Se la Maschera non è sincronizzata con Maschera di dettaglio dovrete inserire la riga con i campi anche lì.
2 Crea lo script che calcola l’età
Entriamo nella cartella dove abbiamo installato SuitCRM e creiamo il file custom/modules/Leads/calcolaEtaClass.php
All’interno del file inseriamo il seguente codice:
<?php if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); class calcolaEtaClass { function calcolaEtaFunction($bean, $event, $arguments) { if(!empty($bean->data_di_nascita_c)) { //recupero la data di nascita $anniv = $bean->data_di_nascita_c; //calcolo l'età e la inserisco nel campo età $agecalc = floor((time() - strtotime($anniv))/(60*60*24*365.2421896)); $bean->lead_eta_c = $agecalc; } } } ?>
3 Utilizza i Logic Hooks per attivare il codice
Apriamo il file custom/modules/Leads/logic_hooks.php.
Se non è presente copiamolo dalla cartella Leads.
All’interno del file inseriamo una riga ‘calcola età lead‘ con il “gancio” di tipo before_save, in questo modo:
<?php // Do not store anything in this file that is not part of the array or the hook version. This file will // be automatically rebuilt in the future. $hook_version = 1; $hook_array = Array(); // position, file, function $hook_array['before_save'] = Array(); $hook_array['before_save'][] = Array(1, 'Leads push feed', 'modules/Leads/SugarFeeds/LeadFeed.php','LeadFeed', 'pushFeed'); //custom eta $hook_array['before_save'][] = Array(2, 'calcola eta lead', 'custom/modules/Leads/calcolaEtaClass.php','calcolaEtaClass', 'calcolaEtaFunction'); $hook_array['before_save'][] = Array(77, 'updateGeocodeInfo', 'modules/Leads/LeadsJjwg_MapsLogicHook.php','LeadsJjwg_MapsLogicHook', 'updateGeocodeInfo'); $hook_array['after_save'] = Array(); $hook_array['after_save'][] = Array(77, 'updateRelatedMeetingsGeocodeInfo', 'modules/Leads/LeadsJjwg_MapsLogicHook.php','LeadsJjwg_MapsLogicHook', 'updateRelatedMeetingsGeocodeInfo'); ?>
4 Controlla i permessi e ‘Ripara’
Ecco fatto. A questo punto forse è meglio controllare i permessi di file e cartelle. Ad esempio in ambiente Linux – Apache dove l’utente standard è www-data digitiamo nel terminale:
sudo chown -R www-data.www-data /path/to/dominio/suitecrm
quindi:
cd /path/to/dominio/suitecrm
sudo chmod -R 755 .
sudo chmod -R 775 cache custom modules themes data upload
sudo chmod -R 775 config_override.php 2>/dev/null
Entriamo nel pannello Amministrazione del nostro SuiteCRM e clicchiamo:
Ripara > Ripara Velocemente e Ricostruisci
Finito. Ora potete andare a testare nei vostri lead se il campo si aggiorna automaticamente. In caso di dubbi guardate il video!