• cerchio
  • cerchio
  • linea

October 25, 2019

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

Nuovo campo in studio di SuiteCRM

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!