Après de longues et fastidieuses recherches, nous avons enfin trouvé l’origine des années de naissance dans le champ ‘company’ de la table ‘ps_address’.

En effet, un de nos clients se plaignait de synchronisation avec son ERP qui échouait à cause de valeurs invalides. Et cet ERP avait raison, car dans le champ société, Prestashop 1.7 transmettait une année de naissance.

Des recherches et des logs après, nous avons réussi à déterminer que l’autocomplétion du navigateur Chrome, remplissait automatiquement le champ du formulaire par une année de naissance saisie sur un précédent site et le client ne faisant pas forcément attention validait les informations pré-remplies.

Nous avons donc surchargé le fichier qui génère le formulaire de création de compte pour désactiver l’autocomplétion sur le champ société.

Voici le fichier à ajouter.

!! Attention de toujours faire une sauvegarde de vos fichiers avant de les modifier. !!

Si vous ne comprenez pas ce que vous faites, ne pas modifier votre fichier et demander à votre agence ou une agence de développement spécialisée dans Prestashop d’apporter ces modifications sur votre site Internet.

themes/xxxxxxxx/templates/_partials/form-fields.tpl

{**
 * 2007-2018 Pliciweb Solutions
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@prestashop.com so we can send you a copy immediately.
 *
 * @author    Pliciweb Solutions <contact@pliciweb.com>
 * @copyright 2007-2018 Pliciweb Solutions
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
 * International Registered Trademark & Property of Pliciweb Solutions
 *}{extends file='parent:/_partials/form-fields.tpl'}

{block name='form_field_item_other'}
<input 
   class="form-control" 
   name="{$field.name}" 
   type="{$field.type}" 
   value="{$field.value}" 
   {if isset($field.availableValues.placeholder)}placeholder="{$field.availableValues.placeholder}"{/if} 
   {if $field.maxLength}maxlength="{$field.maxLength}"{/if} {if $field.required}required{/if} 
   {if 'company' == $field.name}autocomplete="nope"{/if} {* @author : Pliciweb - To avoid autocompletion with year value *} >
{if isset($field.availableValues.comment)}
  <span class="form-control-comment">
    {$field.availableValues.comment}
  </span>
{/if}
{/block}

Et afin de nettoyer la base de données, voici les requêtes qui ont été jouées :

UPDATE ps_customer 
SET company = NULL
WHERE company REGEXP '^[0-9]{4}$';
UPDATE ps_address 
SET company = NULL
WHERE company REGEXP '^[0-9]{4}$'