Si commande égale ? 0 euro


33 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour,

Pouvez vous envoyer l'url de votre site ainsi que vos accès FTP par MP svp ? Je déboguerais le fichier beaucoup plus facilement.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Après être intervenu sur votre site, j'ai remarqué 2 problèmes dans ma fonction :

il manquait return $output à la fin ( :rolleyes:), et je n'avais pas supprimé le test if ($tab_paiement['technical_code'] != 'avoir') { ligne 808ce qui empêchait le moyen de paiement avoir de s'afficher.

Je me suis assuré que ce développement fonctionne correctement sur la boutique. Lorsque le panier a pour montant 0€, seul le moyen de paiement avoir est sélectionnable, les autres sont grisé. Si le panier est supérieur à 0€, c'est le moyen de paiement avoir qui est grisé, et les autres sont sélectionnable.

Version final de la fonction (nécessite l'ajout du moyen de paiement avoir dans la configuration du site. Le 'code technique' de ce moyen de paiement doit-être avoir )


function get_payment_select($selected_payment_technical_code = null)
{
$output = '';
if (is_payment_by_product_module_active ()) {
$res_paiement = select_payment_by_product();
} else {
$sql_paiement = 'SELECT p.*
FROM peel_paiement p
WHERE p.etat = "1"
ORDER BY p.position';
$res_paiement = query($sql_paiement);
}
while ($tab_paiement = fetch_assoc($res_paiement)) {
// désactivation des moyens de paiement si le caddie est égal à 0.
if (($_SESSION['session_caddie']->total == 0 && $tab_paiement['technical_code'] != 'avoir') || ($_SESSION['session_caddie']->total > 0 && $tab_paiement['technical_code'] == 'avoir')) {
$disabled = 'disabled="disabled"';
} else {
$disabled = '';
}
if (($tab_paiement['technical_code'] != 'paypal' || !empty($GLOBALS['site_parameters']['email_paypal'])) && ($tab_paiement['technical_code'] != 'moneybookers' || !empty($GLOBALS['site_parameters']['email_moneybookers']))) {
if ($tab_paiement['technical_code'] == 'moneybookers') {
$selected = (vn($selected_payment_technical_code) == $tab_paiement['technical_code'] || num_rows($res_paiement) == 1);
$output .= '
<input '. $disabled .' type="radio" onclick="document.getElementById(\'payment_method\').style.display=\'block\';" name="payment_technical_code" value="' . String::str_form_value($tab_paiement['technical_code']) . '" ' . frmvalide($selected) . ' />' . String::html_entity_decode_if_needed($tab_paiement['nom_' . $_SESSION['session_langue']]);
if ($tab_paiement['tarif'] != 0) {
$output .= BEFORE_TWO_POINTS . ': + ' . fprix($tab_paiement['tarif'], true);
}
$output .= '
<br />
<span id="payment_method" style="display: ' . (empty($_SESSION['session_commande']['moneybookers_payment_methods']) && !$selected ? 'none' : 'block') . ';">
<input ' . frmvalide(vb($_SESSION['session_commande']['moneybookers_payment_methods']) == 'VSA') . ' type="radio" name="moneybookers_payment_methods" value="VSA" />Visa<br />
<input ' . frmvalide(vb($_SESSION['session_commande']['moneybookers_payment_methods']) == 'MSC') . 'type="radio" name="moneybookers_payment_methods" value="MSC" />Mastercard<br />
<input ' . frmvalide(vb($_SESSION['session_commande']['moneybookers_payment_methods']) == 'GCB') . 'type="radio" name="moneybookers_payment_methods" value="GCB" />Carte Bleue<br />
<input ' . frmvalide(vb($_SESSION['session_commande']['moneybookers_payment_methods']) == 'PLI,EPY,NPY,SO2,ENT,EBT,PWY,IDL,SFT,GIR,DID,OBT') . 'type="radio" name="moneybookers_payment_methods" value="PLI,EPY,NPY,SO2,ENT,EBT,PWY,IDL,SFT,GIR,DID,OBT" />' . TRANSFER . '<br />
<input ' . frmvalide(vb($_SESSION['session_commande']['moneybookers_payment_methods']) == 'WLT') . ' type="radio" name="moneybookers_payment_methods" value="WLT" />Moneybookers e-wallet<br />
</span>';
} else {
$output .= '<input '. $disabled .' '. (!empty($GLOBALS['site_parameters']['email_moneybookers']) ? 'onclick="document.getElementById(\'payment_method\').style.display=\'none\';"' : '') . ' type="radio" name="payment_technical_code" value="' . String::str_form_value($tab_paiement['technical_code']) . '" ' . frmvalide(vn($selected_payment_technical_code) == $tab_paiement['technical_code'] || num_rows($res_paiement) == 1) . ' />' . String::html_entity_decode_if_needed($tab_paiement['nom_' . $_SESSION['session_langue']]);
if ($tab_paiement['tarif'] != 0) {
$output .= BEFORE_TWO_POINTS . ': + ' . fprix($tab_paiement['tarif'], true);
}
$output .= '<br />';
}
}
}
return $output;
}
[/CODE]

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour Simon

donc j'ai teste aussi sur la version que je vous ai donne, avec un montant superieur a 0 j'ai bien "avoir grise" par contre lorsque le panier est a 0, paypal, cheque ne sont pas grises

Pourtant j'ai vu que vous aviez fait les essais ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

J'ai refais des tests, les champs autres que avoir sont bien grisé (capture 1), lorsque le panier est à 0€ (capture 2).

post-1122-0-43609800-1341565058_thumb.pn

post-1122-0-16682700-1341565064_thumb.pn

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour Simon, oui je vois bien cela sur vos captures, alors je ne comprends pas pourquoi chez moi ce n'est pas grise, j'ai fait le test de nouveau sur mozilla puis sur chrome et je ne les ai pas de grise, ci-joint mes captures. J'ai remarque sur votre image que vous aviez selectionne "retrait en boutique" et moi j'avais choisi colissimo donc en effet avec retrait en boutique j'ai aussi virement, cheque et paypal grises mais pas avec colissimo

capturea.jpg

captureb.jpg

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

J'ai modifié le test


if (($_SESSION['session_caddie']->total == 0 && $tab_paiement['technical_code'] != 'avoir') || ($_SESSION['session_caddie']->total > 0 && $tab_paiement['technical_code'] == 'avoir')) {
[/CODE] par
[CODE]
if (($_SESSION['session_caddie']->total <= 0 && $tab_paiement['technical_code'] != 'avoir') || ($_SESSION['session_caddie']->total > 0 && $tab_paiement['technical_code'] == 'avoir')) {

Le total du panier était négatif, ce qui fait que le test d'égalité == ne fonctionnait pas. J'ai procédé à quelques tests, tout me semble bon. Pouvez-vous confirmer de votre coté svp ?

Merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour Simon

En effet tout fonctionne maintenant, merci pour ce travail qui je pense va servir a beaucoup d'utilisateurs

Bien a vous

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Ok,

Je récapitule le développement ici. Ce développement est valable pour les versions de PEEL supérieur à 6.

=> Le but est de griser les moyens de paiements et ne laisser que la possibilité de payer avec un avoir si le montant du panier a pour valeur 0. Si le montant est supérieur à 0, les moyens de paiements sont séléctionnables, et c'est l'avoir qui est grisé.

Dans un premier temps, il faut remplacer la fonction get_payment_select() dans le fichier \lib\fonctions\fonctions.php par celle ci :


function get_payment_select($selected_payment_technical_code = null)
{
$output = '';
if (is_payment_by_product_module_active ()) {
$res_paiement = select_payment_by_product();
} else {
$sql_paiement = 'SELECT p.*
FROM peel_paiement p
WHERE p.etat = "1"
ORDER BY p.position';
$res_paiement = query($sql_paiement);
}
while ($tab_paiement = fetch_assoc($res_paiement)) {
// d&#233;sactivation des moyens de paiement si le caddie est &#233;gal &#224; 0.
if (($_SESSION['session_caddie']->total <= 0 && $tab_paiement['technical_code'] != 'avoir') || ($_SESSION['session_caddie']->total > 0 && $tab_paiement['technical_code'] == 'avoir')) {
$disabled = 'disabled="disabled"';
} else {
$disabled = '';
}
if (($tab_paiement['technical_code'] != 'paypal' || !empty($GLOBALS['site_parameters']['email_paypal'])) && ($tab_paiement['technical_code'] != 'moneybookers' || !empty($GLOBALS['site_parameters']['email_moneybookers']))) {
if ($tab_paiement['technical_code'] == 'moneybookers') {
$selected = (vn($selected_payment_technical_code) == $tab_paiement['technical_code'] || num_rows($res_paiement) == 1);
$output .= '
<input '. $disabled .' type="radio" onclick="document.getElementById(\'payment_method\').style.display=\'block\';" name="payment_technical_code" value="' . String::str_form_value($tab_paiement['technical_code']) . '" ' . frmvalide($selected) . ' />' . String::html_entity_decode_if_needed($tab_paiement['nom_' . $_SESSION['session_langue']]);
if ($tab_paiement['tarif'] != 0) {
$output .= BEFORE_TWO_POINTS . ': + ' . fprix($tab_paiement['tarif'], true);
}
$output .= '
<br />
<span id="payment_method" style="display: ' . (empty($_SESSION['session_commande']['moneybookers_payment_methods']) && !$selected ? 'none' : 'block') . ';">
<input ' . frmvalide(vb($_SESSION['session_commande']['moneybookers_payment_methods']) == 'VSA') . ' type="radio" name="moneybookers_payment_methods" value="VSA" />Visa<br />
<input ' . frmvalide(vb($_SESSION['session_commande']['moneybookers_payment_methods']) == 'MSC') . 'type="radio" name="moneybookers_payment_methods" value="MSC" />Mastercard<br />
<input ' . frmvalide(vb($_SESSION['session_commande']['moneybookers_payment_methods']) == 'GCB') . 'type="radio" name="moneybookers_payment_methods" value="GCB" />Carte Bleue<br />
<input ' . frmvalide(vb($_SESSION['session_commande']['moneybookers_payment_methods']) == 'PLI,EPY,NPY,SO2,ENT,EBT,PWY,IDL,SFT,GIR,DID,OBT') . 'type="radio" name="moneybookers_payment_methods" value="PLI,EPY,NPY,SO2,ENT,EBT,PWY,IDL,SFT,GIR,DID,OBT" />' . TRANSFER . '<br />
<input ' . frmvalide(vb($_SESSION['session_commande']['moneybookers_payment_methods']) == 'WLT') . ' type="radio" name="moneybookers_payment_methods" value="WLT" />Moneybookers e-wallet<br />
</span>';
} else {
$output .= '<input '. $disabled .' '. (!empty($GLOBALS['site_parameters']['email_moneybookers']) ? 'onclick="document.getElementById(\'payment_method\').style.display=\'none\';"' : '') . ' type="radio" name="payment_technical_code" value="' . String::str_form_value($tab_paiement['technical_code']) . '" ' . frmvalide(vn($selected_payment_technical_code) == $tab_paiement['technical_code'] || num_rows($res_paiement) == 1) . ' />' . String::html_entity_decode_if_needed($tab_paiement['nom_' . $_SESSION['session_langue']]);
if ($tab_paiement['tarif'] != 0) {
$output .= BEFORE_TWO_POINTS . ': + ' . fprix($tab_paiement['tarif'], true);
}
$output .= '<br />';
}
}
}
return $output;
}
[/CODE]

Ensuite, il faut créer le moyen de paiement [i]avoir[/i] sur la page 'moyen de paiement' dans le back office. Dans le champ 'code technique' de ce moyen de paiement, il faut renseigner la valeur [i]avoir[/i].

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping