Taux de change appliqué ? la commande passé ? 0 !?

11 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour !

j'ai un problème !!

lorsque je créé une commande en backoffice, je ne sais pas pourquoi, mon taux de change est passé à 0 !!!

en fait, je m'en suis rendu compte parce que je rajouttais des articles dans le panier et j'avais des erreurs de division par 0 !

Quelqu'un sait d'ou peut venir ce problème ?

Vu que j'ai comparé ma table peel avec celle officielle de la 6.4.2, peut être que j'ai corrigé quelque chose qui ne devait pas l'être...

ça se situerait ou dans les tables ?

merci pour votre aide !

JL

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Le problème vient du fait que la désactivation du module en front office comprend la désactivation de l'ensemble de cette fonctionnalités. Le plus simple est de remettre le champ 'Activer le module de sélection de la devise par l'utilisateur :' à Oui, et de commenter la fonction affiche_module_devise() dans haut.php :


if (is_devises_module_active()) {
//affiche_module_devise();
}
[/CODE]

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Merci Simon

J'ai appliqué votre modif (commenté la fonction affiche_module_devise.

J'ai bien activé la sélection de la devise par l'utilisateur.

OK la sélection ne s'affiche plus en frontoffice, MAIS en création de commande en backoffice, j'ai toujours le taux de change qui est à 0 à chaque commande que je veux créer !!!

Bizarre non ? ça se produit depuis que j'avais désactivé les devises.

Et dans les corrections de table, je ne me rappelle pas avoir touché à quoi que ce soit concernant les devises...

parce qu'en table peel, ça se passe ou exactement ???

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Si le module est activé, le taux de change doit être automatiquement calculé par la fonction save_commande_in_database, à partir de la devise renseigné pour la commande :

	// Calcul des coûts et insertion de la commande
if ((empty($frm['currency_rate']) || empty($frm['devise'])) && is_devises_module_active ()) {
if (isset($frm['devise']) && $frm['devise'] != $GLOBALS['site_parameters']['code']) {
// Si la devise de la commande n'est pas celle de la boutique, alors on récupère le taux de change de la devise
$res = query("SELECT p.conversion
FROM peel_devises p
WHERE p.code = '" . nohtml_real_escape_string($frm['devise']) . "'");
}
if (!empty($res) && $tab = fetch_assoc($res)) {
$frm['currency_rate'] = $tab['conversion'];
} else {
// Valeur par défaut de la devise
$frm['devise'] = $GLOBALS['site_parameters']['code'];
$frm['currency_rate'] = $GLOBALS['site_parameters']['conversion'];
}
}[/CODE]

Donc le taux de change afficher dans le formulaire de créatiion de commande est à 0, mais il est automatiquement mis à jour avec le taux de change de la devise juste avant l’insertion dans la BDD

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour Simon

merci pour votre aide.

Il semblerait donc que chez moi cette mise à jour à 1 ne se fasse pas...

ce qui d'ailleurs surprenant, c'est que la valeur que j'obtiens dans la case du taux de change est "1" et non pas "1.00000"...

le code que vous affichez ci dessus, c'est dans quel fichier ? je vais vérifier si je l'ai bien comme ça...

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

La fonction save_commande_in_database est dans le fichier lib/fonctions/fonctions_admin.php. Si ce morceau de code est le même, il faudrait vérifier la valeur de $frm['devise'] et $GLOBALS['site_parameters']['code']

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour Simon

je viens de vérifier le code.. il est identique.

Par contre, quand vous dîtes de vérifier les valeurs de $frm['devise'] et $GLOBALS['site_parameters']['code'] , comment faîtes vous pratiquement ?

merci

JL

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Dans un premier temps, vous pouvez vous servir de Firebug, un module de firefox : https://addons.mozil.../addon/firebug/ . Dans l'onglet 'réseaux', lorsque vous cliquez sur le détail d'une url, vous pouvez lire les données envoyées en POST (image en pièce jointe). Cela permet de vérifier que les données sont effectivement envoyées par le formulaire.

Ensuite, dans le code PHP, vous pouvez utiliser la fonction var_dump() pour lire les informations d'une variable. Au début de la fonction save_commande_in_database(), ajouter


var_dump($frm['devise']);


var_dump($GLOBALS['site_parameters']['code']);
[/CODE]

Cela retournera les valeurs de ces variables, et permettra de voir un éventuel problème à ce niveau.

post-1122-0-54704300-1353661580_thumb.jp

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour Simon

j'ai fais comme vous avez dit.

j'ai rajouté le code mentionné, J'ai regardé firebug, mais dans réseaux, je n'ai pas l'onglet "POST" comme dans votre capture...

moi je n'ai que des "GET"...

Je pense que je vais pas m'embêter plus longtemps. de toutes façons, ça marche quand même si je pense à mettre à "1" le taux quand je créé la commande.

Merci quand même

JL

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Up

Voilà ce qui s'affiche à l'écran lorsque je sauvegarde la commande en back office :

string(3) "EUR" string(3) "EUR"

des indications ??

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Ces valeurs sont corrects, il faut donc chercher l'erreur dans le code de mon message pour comprendre pourquoi la variable $frm['currency_rate'] est vide.

Vous pouvez ajouté des echo à chaque test pour savoir quel sont les blocs exécutés :


// Calcul des coûts et insertion de la commande
if ((empty($frm['currency_rate']) || empty($frm['devise'])) && is_devises_module_active ()) {
echo '1 <br/>';
if (isset($frm['devise']) && $frm['devise'] != $GLOBALS['site_parameters']['code']) {
echo '2 <br/>';
// Si la devise de la commande n'est pas celle de la boutique, alors on r&#233;cup&#232;re le taux de change de la devise
$res = query("SELECT p.conversion
FROM peel_devises p
WHERE p.code = '" . nohtml_real_escape_string($frm['devise']) . "'");
}
if (!empty($res) && $tab = fetch_assoc($res)) {
echo '3 <br/>';
$frm['currency_rate'] = $tab['conversion'];
} else {
echo '4 <br/>';
// Valeur par d&#233;faut de la devise
$frm['devise'] = $GLOBALS['site_parameters']['code'];
$frm['currency_rate'] = $GLOBALS['site_parameters']['conversion'];
}
}
[/CODE]

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