Passa ai contenuti principali

Controllo età anagrafica su Prestashop

Per alcune tipologie di prodotto la legge italiana e non solo richiedono il controllo dell'età anagrafica, il quanto il prodotto non è vendibile ai minori di diciotto anni.
Quindi come fare su prestashop?


Codice fiscale ed età anagrafica

Ci sono due modi per conoscere l'età anagrafica di una persona: controllarla in base alla data di nascita o in base al codice fiscale.
Meglio è l'incrocio di entrambe le informazioni: il codice fiscale deve corrispondere ai dati inseriti così si sarà sicuri che la data di nascita è corretta e quindi si potrà eseguire il controllo dell'età anagrafica.

Solo nuovi iscritti

Il controllo sarà valido solo per i nuovi iscritti in quanto Prestashop controllerebbe i dati anche dei già iscritti che se incompleti o incorretti darebbe errore.

Controllo codice fiscale

Per il controllo del codice fiscale è validissima questa libreria http://www.html.it/script/convalida-campo-iva-e-codice-fiscale/.

Override 

Class ValidateCore

Per effettuare il controllo è necessario effettuare un primo override della classe ValidateCore aggiungendo un nuovo  metodo checkCodiceFiscale($dni, $date) dove $dni corrisponde al codice fiscale e $date alla data di nascita.
All'interno si deve:
  1. che il codice fiscale sia valido
  2. recuperare i dati del codice fiscale: la data di nascita
  3. controllare che la data di nascita sia identica a quella del codice fiscale
  4. controllare che la differenza fra la data di nascita e oggi sia maggiore uguale a 18 anni 
$fc_ckeck = new ChkFiscalCode_it(strtoupper($dni), 'CF');
/** controllo codice fiscale **/
if( !$fc_ckeck->check() ) return 1;
/** recupero data di nascita codice fiscale **/
$cf_esploso = $fc_ckeck->explode();
$birthday_cf = new DateTime(sprintf('%s-%s-%s', $cf_esploso['year'], $cf_esploso['month'][0], $cf_esploso['day']));
/** controllo uguaglianza date di nascita **/
if($birthday_cf->format('Ymd') !== $birthday->format('Ymd')){ return 2; }
/** calcolo 18 anni **/
$now = new DateTime();
$interval = $now->diff($birthday, $absolute);
if($interval->y < 18) return 3;

I controlli restituiscono 3 codici 1, 2 e 3 che corrispondono a:

  1.  errore di consistenza del codice fiscale
  2. data di nascita non corrispondente a codice fiscale
  3. la differenza fra data odierna e data di nascita è minore di 18 anni

Class AddressControllerCore

La classe richiama il metodo preProcess() per i controlli dai dati indirizzo (anagrafici) del cliente.
Ecco l'override del metodo:
class AddressController extends AddressControllerCore {
    public function preProcess() {
   
       //.... controlli iniziali di esistenza codice fiscale e data di nascita
     
      $r = Validate::checkCodiceFiscale(Tools::getValue('dni'), Tools::getValue('birthday'));
      //.... controllo del risultato $r
      //... invio errore
      //... richiamo dei controlli del core se è tutto ok
       parent::preProcess();
   }
}

Altre info

La seguente soluzione custom, che non è possibile implementare con un modulo in quanto andrebbe a cancellare precedenti override già presenti, permette di effettuare un controllo completo dell'età anagrafica e di mantenere la compatibilità del sistema con eventuali aggiornamenti.
Se avete necessità di maggiori informazioni scriveteci a info@bwlab.it.

Post popolari in questo blog

install language on osTicket

this simple guide aims you to install and configure your language on osTicket i written this guide based on forum post http://osticket.com/forum/discussion/76252/installing-language-pack

Trasferimento server to server (LINUX) della casella email

Oggi ho scoperto un tool veramente molto utile per il trasferimento server to servevr delle caselle email. Ed è acnhe veloce.
Si chiama imapsync [rif: https://imapsync.lamiral.info/ ]In pratica il tool da linea di comando si connette via imap al server email precedente e trasporta tutto al server di destinazioneLo uso quando faccio migrazioni di vps.Come funziona imapsync per sincronizzare e emailInternet è una risorsa. Da questo blog ho preso tutte le indicazioni https://www.jverdeyen.be/ubuntu/imapsync-on-ubuntu/Uso una distribuzione ubuntu 14.04. Non esiste un pacchetto precompilato da installare. imapsync si basa su perl. Ve lo ricordate? Mica è andato in disuso.Primo: si installano le dipendenze di imapsync per la migrazione mail server to serversudo apt-get install makepasswd rcs perl-doc libio-tee-perl git libmail-imapclient-perl libdigest-md5-file-perl libterm-readkey-perl libfile-copy-recursive-perl build-essential make automake libunicode-string-perl Secondo: si scarica i…

Vich Uploader: due note per ricordare un apio di aspetti

la documentazione del bundle symfony vich uploader è chiara, anche se non è perfetta
quindi ecco un paio di note per non incappare in errori sciocchi che però fanno perdere tempo.
la configurazione in config.yml contiene le specifiche di come devono essere trattati i files in upload
la configurazione ha un nome e si chiama mapping. nella documentazione del bundle è product_image
nell'entity che conterrà l'immagine è necessario specificare due campi: imageFile e imageName
imageFile contiene il riferimento alla classe symfony File, che è il file effettivo in upload. Il campo è definito come UploadableField e richiede due cose: il nome del mapping, ossia il nostro precedente product_image (!importantissimo) e il nome di una proprieta dove mettere il nome del file
Il form che effettua l'upload del file deve inserire nel builder un campo di tipo vich_file o vich_image e il nome di questo campo deve essere imageFile.
in fase di caricamento il bundle crea in automatico le cartell…