Rechercher :
Accueil » Catalogue » Commande Connexion

Question Comment obliger les clients à consulter les conditions générales de vente (CGV) avant de passer à la phase de confirmation d'une commande ?
Réponse Nous vous rappelons que l'obligation d'accepter les cgv est devenue obligatoire pour tout site commercial.

Une contribution présente sur oscommerce.com Must agree to Terms fait cela très bien.

Une autre solution proposée par Decad7
(modifié par JeanLuc pour avoir l'erreur dans la fenêtre Javascript de checkout_payment, la même que si on ne choisit pas de méthode de paiement)

si la case n'est pas coché, et que l'on fait continuer la commande, un message d'erreur apparait.
si la case est coché, la transaction continue.
ensuite, si l'on clique sur voir les conditions générales de vente et que l'on clique sur le bouton continuer se trouvant sur cette page, on revient sur la page de paiement avec le bouton cocher (car les conditions ont été lues).

Voila le code. Dans le fichier /catalog/checkout_payment,
ajouter le code ci-dessous ou vous souhaitez voir apparaitre la case a cocher avec le text.
<?php
  if($HTTP_GET_VARS['consult_conditions'])    {
   echo '<input name="conditions" type="checkbox" checked>';
 }   else  {
   echo '<input name="conditions" type="checkbox" >';
 }
 
  echo '<b>' . TEXT_CONDITIONS .'</b>';
 ?>


Ensuite dans /catalog/include/language/french.php,
ajouter
define('TEXT_CONDITIONS', 'J\'ai lu et accepté les <a href=' . tep_href_link(FILENAME_CONDITIONS, 'origin=checkout_payment') . ' class="conditions"> Conditions générales de vente ! </a>');
define('JS_ERROR_NO_CHECK_CONDITION', '* Pour continuer votre commande la case conditions générales de vente doit être cochée !');


Dans /catalog/includes/classes/payment.php :
juste après ceci (vers ligne 107):
while (list(, $value) = each($this->modules)) {
 $class = substr($value, 0, strrpos($value, '.'));
 if ($GLOBALS[$class]->enabled) {
   $js .= $GLOBALS[$class]->javascript_validation();
 }
}
ajouter ces lignes:
// Ajout pour ajout CGV
       $js .= "\n" . '  if (!document.checkout_payment.conditions.checked) {' . "\n" .
              '    error_message = error_message + "' . JS_ERROR_NO_CHECK_CONDITION . '\n";' . "\n" .
              '    error = 1;' . "\n" .        
       '  }' . "\n";
// Fin ajout pour ajout CGV


Dans /catalog/conditions.php :
remplacer (vers la ligne 65)
<td align="right"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>'; ?></td>
par
<td align="right" class="main"><br><?php if($HTTP_GET_VARS['origin'] == 'checkout_payment'){echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'consult_conditions=true', 'NONSSL') . '">' . tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>';}else{echo '<a href="' . tep_href_link(FILENAME_DEFAULT, '', 'NONSSL') . '">' . tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>';} ?></td>

Enfin, pour que la case à cocher soit réellement obligatoire dans la procédure de commande,
ajouter dans catalog/checkout_confirmation.php (après la ligne 15 qui inclut application_top.php)
// Ajout pour ajout CGV
  if ($_POST['conditions'] != "on"){
    tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(JS_ERROR_NO_CHECK_CONDITION), 'SSL'));
  }
// Fin Ajout pour ajout CGV

Et normalement tout devrait fonctionner correctement
Auteur : JeanLuc / Gnidhal / chti_poupon Mise à jour le 10/01/2010

Retour


Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0