osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Création d'un module, Bloquer sur supplément par clients
c0v3r
posté 20 Jun 2011, 15:08
Message #1


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 176
Inscrit : 9-December 04
Lieu : Nantes
Membre no 4029



Bonjour tout le monde,

Je suis en train de développer un module Ajax qui permet de modifier le prix du produit suivant un slider en jquery que l'on déplace vers la droite ou la gauche.
En déplaçant ce slider, un supplément est calculé.
Ce même supplément est ensuite ajouter au prix initial du produit qui donne donc le prix final.

Pour le moment tout fonctionne correctement.
Le problème se passe au niveau de la transmission de mon nouveau prix lors de l'ajout dans le panier.

Par exemple :
Prix initial : 5 euros
Supplement : 5 euros
Prix total : 10 euros

Lors de l'ajout dans le panier(shopping_cart.php), je n'obtiens que le prix initial du produit soit 5 euros au lieu de 10 euros.

Comment envoyer le prix total dans le panier ?
J'ai un autre souci que je réglerai plus et ma contrib sera OK pour publication.

Merci de vos réponses

Ce message a été modifié par c0v3r - 5 Jul 2011, 08:26.


--------------------
Oscommerce : MS2.2 avec Pack Sécurité, modules ajoutés : accept_CGV, AdminMS2fr_V2.3, BoxImageThemaMS2fr_V2.7, colissimo_1.5.2, Courte_description_produit_admin, CustomComputerCreator9.3, Down for Maintenance v1.1 MS 2.2, Enhanced_new_products, estimation livraison, fckeditor-oscommerce_v2.2.1, Impression reçu, main_categories2.1_1, new_product css, New_Products_Icon_1.3, Nom_Produit_dans_Navigation, optimisation_also_purchased, Plan site, Retrait en magasin, Stock_Images, Suppression_Auto_produit_Panier, Ticket_SAV, ultra_pics_v1.0, xsell_v2.2
Go to the top of the page
 
c0v3r
posté 21 Jun 2011, 17:51
Message #2


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 176
Inscrit : 9-December 04
Lieu : Nantes
Membre no 4029



Bon cela n'a pas l'air de vous inspirer plus que ça !!!

Si quelqu'un pouvait me dire comment transférer mes données php vers ma BD.
Je pense notament à implode et explode mais je ne m'en suis jamais servi.


--------------------
Oscommerce : MS2.2 avec Pack Sécurité, modules ajoutés : accept_CGV, AdminMS2fr_V2.3, BoxImageThemaMS2fr_V2.7, colissimo_1.5.2, Courte_description_produit_admin, CustomComputerCreator9.3, Down for Maintenance v1.1 MS 2.2, Enhanced_new_products, estimation livraison, fckeditor-oscommerce_v2.2.1, Impression reçu, main_categories2.1_1, new_product css, New_Products_Icon_1.3, Nom_Produit_dans_Navigation, optimisation_also_purchased, Plan site, Retrait en magasin, Stock_Images, Suppression_Auto_produit_Panier, Ticket_SAV, ultra_pics_v1.0, xsell_v2.2
Go to the top of the page
 
c0v3r
posté 22 Jun 2011, 14:00
Message #3


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 176
Inscrit : 9-December 04
Lieu : Nantes
Membre no 4029



Alors, j'ai créer une nouvelle valeur dans la bd nommée : supplement_values_price appartenent à la table PRODUCTS_ATTRIBUTES
J'essaye en vain d'enregistrer ma valeur supplément dans la bd mais cela me retourne toujours 0.00
Le code ci-dessous correspond à mon fichier de traitement ajax.
le code en rouge correspond à l'insertion des données supplement dans la bd qui ne fonctionne pas

Code
<?php
require('includes/application_top.php');

    $product_id     = $_GET['product_id'];
    $supplement        = $_GET['supplement'];
    $uiLa            = $_GET['largeur'];    
    $uiHa            = $_GET['hauteur'];
    $modified_price    = $_GET['price'];
    $new_price        = $_GET['special_price'];
    $qte            = $_GET['quantite'];
    //$modified_price    = 0;
    

[color="#FF0000"][b]    $sql_data_array = array('supplement_values_price' => $supplement);
    tep_db_perform(TABLE_PRODUCTS_ATTRIBUTES, $sql_data_array);
    tep_db_query("update " . TABLE_PRODUCTS_ATTRIBUTES . " set supplement_values_price = '" . $_POST['supplement'] . "' where products_id = '" . (int)$product_id . "'");[/b][/color]

    $product_new_price_query = tep_db_query("select * from " .TABLE_PRODUCTS_ATTRIBUTES. " where products_id = '" . (int)$product_id . "'");
    $product_new_price = tep_db_fetch_array($product_new_price_query);

    $modified_price = $qte * (($modified_price * 1.196) + $supplement);

    //echo $modified_price;
    
    $product_info_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, p.products_image_med, pd.products_url, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_date_available, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$product_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
    $product_info_ajx = tep_db_fetch_array($product_info_query);
        
if ($new_price = tep_get_products_special_price($product_info_ajx['products_id'])) {
      $new_price = $qte * (($new_price * 1.196) + $supplement);
      $products_price = '<s>' . $modified_price . ' &euro;</s><br><span class="prixPromo">PROMO = ' . $new_price . ' &euro;</span>';
    } else {
      $products_price = $modified_price . ' &euro;';
    }    
    echo $products_price;    
?>


Une petite idée serait la bienvenue, je suis un peu perdu là.
Merci


--------------------
Oscommerce : MS2.2 avec Pack Sécurité, modules ajoutés : accept_CGV, AdminMS2fr_V2.3, BoxImageThemaMS2fr_V2.7, colissimo_1.5.2, Courte_description_produit_admin, CustomComputerCreator9.3, Down for Maintenance v1.1 MS 2.2, Enhanced_new_products, estimation livraison, fckeditor-oscommerce_v2.2.1, Impression reçu, main_categories2.1_1, new_product css, New_Products_Icon_1.3, Nom_Produit_dans_Navigation, optimisation_also_purchased, Plan site, Retrait en magasin, Stock_Images, Suppression_Auto_produit_Panier, Ticket_SAV, ultra_pics_v1.0, xsell_v2.2
Go to the top of the page
 
c0v3r
posté 22 Jun 2011, 14:25
Message #4


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 176
Inscrit : 9-December 04
Lieu : Nantes
Membre no 4029



J'avance à petit, en faite il y avait au départ un problème avec $supplement qu'il fallait remplacer par $product_new_price['supplement_values_price'].
Donc j'ai bien ma transmission de ma valeur dans ma bd. Maintenant, il faut que j'envoye cette valeur dans mon shopping cart


--------------------
Oscommerce : MS2.2 avec Pack Sécurité, modules ajoutés : accept_CGV, AdminMS2fr_V2.3, BoxImageThemaMS2fr_V2.7, colissimo_1.5.2, Courte_description_produit_admin, CustomComputerCreator9.3, Down for Maintenance v1.1 MS 2.2, Enhanced_new_products, estimation livraison, fckeditor-oscommerce_v2.2.1, Impression reçu, main_categories2.1_1, new_product css, New_Products_Icon_1.3, Nom_Produit_dans_Navigation, optimisation_also_purchased, Plan site, Retrait en magasin, Stock_Images, Suppression_Auto_produit_Panier, Ticket_SAV, ultra_pics_v1.0, xsell_v2.2
Go to the top of the page
 
sykaflex
posté 22 Jun 2011, 22:39
Message #5


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1333
Inscrit : 12-July 08
Lieu : La Graciosa, Canarias
Membre no 22434



salut
je pense que ça se passe dans includes/classes/shopping_cart.php vers ligne 280 , tu ajoutes supplement_values_price au select sur la TABLE_PRODUCTS_ATTRIBUTES
ensuite tu ajoutes $attribute_price[supplement_values_price'] dans les functions de calcul de prix avec les attributs
et tu devrais avoir vers ligne 337 : 'final_price' => ($products_price + $this->attributes_price($products_id)), qui va bien....

par contre je n'ai pas approffondi le code mais je ne suis pas sur que tu puisses faire toutes les requetes necessaires sur shopping_cart.php, il sera peut-etre preferable de déclarer et insert en bdd $supplement dans product_info.php, à voir ....

je ne sais pas non plus à quoi tu destines ce supplément mais sache que avec ton code ce nouvel attribut va ensuite s'appliquer à tous tes visiteurs
, autant dire que si tu paramétrais dans l'admin cet attribut à tous les produits concernés, cela reviendrait au même !
bien sur tu peux aussi construire une condition pour que ce supplement soit updater à "0" si ...

bon code


--------------------
entre chats : chat affamé cherche chat pelure pour faire sauter chat perché dans poil de chat (allergiques s'abstenir)

ah oui ... osCommerce v2.2 RC1 french by Delaballe "merci à lui" - PHP version 4.4.8 - mysql5-41 - OVH 240Plan - contribs : (entre autre) AJAX-AttributeManager-V2.8.2 - Limit_Countries - Multi-Product Update v1.00 - Quick Updates 2.7 - Individual Product Shipping Prices - v1_0 - Attribute Qty Product Info - user_tracking_1 - Visitor Web Stats 3.2.1 - Sort Order - image_subdirectories - master password v1.4 - virementbancaire1.4 - Welcome_Email_password ...
"et grand merci à tous les contributionneurs"
Go to the top of the page
 
c0v3r
posté 27 Jun 2011, 21:12
Message #6


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 176
Inscrit : 9-December 04
Lieu : Nantes
Membre no 4029



Me revoilà,
Désolé pour l'attente.

Alors tu avais tout bon sykaflex.
Après quelques modifs mon supplément est bien dans le panier + le prix original.

Reste néanmoins deux problèmes qui subsistent.
Effectivement, je n'avais pas pensé que le nouvel attribut nommé supplément allait s'appliquer à tout les visiteurs en même temps !!!
Enfin en même temps, c'est à dire que si ils sont sur la même page produit et qu'ils choisissent deux tailles différentes avec donc deux suppléments différents, un des deux clients aura le supplément de l'autre !!!
Le problème est comment faire pour que ce supplément fonctionne à la manière du option_value_price ?
Serait-il envisageable de substituer option_value_price pour mon supplément ?

Le calcul du supplément se fait par rapport à un slider qui lorsqu'on le déplace,affiche une longueur donnée ainsi qu'une hauteur qui est calculé proportionnellement à une image.
Je sais pas si je suis clair là ?
Donc mon supplément est en gros calculé comme ceci : supplément = (longueur * hauteur)*coef (le coef est une plus-value suivant la longueur)

Tu comprendras qu'il m'est impossible d'inclure le supplément en tant qu'attribut propre au produit sinon il faudrait que je rentre chaque supplément pour chaque longueur, sachant que mes longueurs peuvent variées de 10 cm à 500 cm (avec des pas de 0.1 cm) !!!

Le deuxième problème concerne l'upload de mon image dans mon fichier javascript.
J'ai bien fait une requête ajax sur le nom products_image mais mon javascript ne me retourne rien.
Voici le bout de code pour le traitement :
Code
$prdImg = $_GET['prdImg'];
$product_info_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, p.products_image_med, pd.products_url, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_date_available, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$product_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
$product_info_ajx = tep_db_fetch_array($product_info_query);

$prdImg = $product_info_ajx['products_image_med'];
echo $prdImg; //vérifie que le nom de l'image s'affiche


Et le bout de code javascript (j'ai enlevé volontairement le superflu !)
Code
function getImageSize(imgSrc,imgSize)
{
    var img = document.createElement('img');

                img.onload = function() {
                  imgSize({
                    w:this.width,
                    h:this.height
                  });
                }
             img.src = imgSrc;
}

function getPrice(price,special_price,product_id,supplement)
{        
         var prdImg = $('#prdImg').val();

        xmlHttpObj = getxmlHttpObj();
        xmlHttpObj.onreadystatechange=function()

        {            
                        
            if (xmlHttpObj.readyState==4)
            {

    getImageSize('http://www.sticker-art-deco.com/images/honda.png', function(size) {
            alert(size.w+'x'+size.h);


J'ai aussi essayé en PHP comme ceci :

Code
list($w, $h) = getimagesize($url . $product_info_ajx['products_image_med']);
$w = $_GET['w'];
$h = $_GET['h'];
echo $w." x ".$h;

J'ai bien un retour de mes dimensions depuis mon echo mais impossible de transmettre les variables au javascript. aucune réponse dans mon alert.

Le fichier javascript est presque similiare à celui ci-dessus mise par les variables w et h en plus:
Code
var w = $('#w').val();
var h = $('#h').val();
alert(w+' * '+h);


Voilà ou j'en suis pour le moment.
1-Réglé le problème du supplément
2-Réglé le problème de l'importation de l'image

Merci de vos réponses

Ce message a été modifié par c0v3r - 28 Jun 2011, 09:24.


--------------------
Oscommerce : MS2.2 avec Pack Sécurité, modules ajoutés : accept_CGV, AdminMS2fr_V2.3, BoxImageThemaMS2fr_V2.7, colissimo_1.5.2, Courte_description_produit_admin, CustomComputerCreator9.3, Down for Maintenance v1.1 MS 2.2, Enhanced_new_products, estimation livraison, fckeditor-oscommerce_v2.2.1, Impression reçu, main_categories2.1_1, new_product css, New_Products_Icon_1.3, Nom_Produit_dans_Navigation, optimisation_also_purchased, Plan site, Retrait en magasin, Stock_Images, Suppression_Auto_produit_Panier, Ticket_SAV, ultra_pics_v1.0, xsell_v2.2
Go to the top of the page
 
sykaflex
posté 1 Jul 2011, 00:46
Message #7


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1333
Inscrit : 12-July 08
Lieu : La Graciosa, Canarias
Membre no 22434



salut
Citation
Le calcul du supplément se fait par rapport à un slider qui lorsqu'on le déplace,affiche une longueur donnée ainsi qu'une hauteur qui est calculé proportionnellement à une image.
Je sais pas si je suis clair là ?
Donc mon supplément est en gros calculé comme ceci : supplément = (longueur * hauteur)*coef (le coef est une plus-value suivant la longueur)
ben tu créés une fonction récupérant les 3 variables, faisant le calcul et renvoyant la valeur du supplément, non ?
pour la 2eme question mrgreen.gif pas lu ... bonne nuit


--------------------
entre chats : chat affamé cherche chat pelure pour faire sauter chat perché dans poil de chat (allergiques s'abstenir)

ah oui ... osCommerce v2.2 RC1 french by Delaballe "merci à lui" - PHP version 4.4.8 - mysql5-41 - OVH 240Plan - contribs : (entre autre) AJAX-AttributeManager-V2.8.2 - Limit_Countries - Multi-Product Update v1.00 - Quick Updates 2.7 - Individual Product Shipping Prices - v1_0 - Attribute Qty Product Info - user_tracking_1 - Visitor Web Stats 3.2.1 - Sort Order - image_subdirectories - master password v1.4 - virementbancaire1.4 - Welcome_Email_password ...
"et grand merci à tous les contributionneurs"
Go to the top of the page
 
c0v3r
posté 4 Jul 2011, 15:45
Message #8


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 176
Inscrit : 9-December 04
Lieu : Nantes
Membre no 4029



Bonjour tout le monde,

J'ai repris tout mon code et je réctualise ma requête !
Tout fonctionne parfaitement, mais il me reste un problème de taille.
Lors de l'ajout de mon produit dans le panier, mon supplément n'est pas pris en compte.
Si je fait ceci :

Code
$sql_data_array = array('supplement_values_price' => $supplement);
tep_db_perform(TABLE_PRODUCTS_ATTRIBUTES, $sql_data_array);
tep_db_query("update " . TABLE_PRODUCTS_ATTRIBUTES . " set supplement_values_price = '" . $_GET['supplement'] . "' where products_id = '" . (int)$product_id . "'");


Et en modifiant la classe shopping_cart, mon supplément + le prix produit est bien ajouté dans le panier.
Le problème est que ce supplément sera valable pour chaque client.

Comment faire pour que ce supplément soit différent pour chaque client ?
Et là je bloque complétement.
Comme l'a dit plus haut sykaflex, utiliser une condition pour updater le supplément à 0. Mais comment faire ?

Merci de vos réponses


--------------------
Oscommerce : MS2.2 avec Pack Sécurité, modules ajoutés : accept_CGV, AdminMS2fr_V2.3, BoxImageThemaMS2fr_V2.7, colissimo_1.5.2, Courte_description_produit_admin, CustomComputerCreator9.3, Down for Maintenance v1.1 MS 2.2, Enhanced_new_products, estimation livraison, fckeditor-oscommerce_v2.2.1, Impression reçu, main_categories2.1_1, new_product css, New_Products_Icon_1.3, Nom_Produit_dans_Navigation, optimisation_also_purchased, Plan site, Retrait en magasin, Stock_Images, Suppression_Auto_produit_Panier, Ticket_SAV, ultra_pics_v1.0, xsell_v2.2
Go to the top of the page
 
sykaflex
posté 4 Jul 2011, 21:40
Message #9


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1333
Inscrit : 12-July 08
Lieu : La Graciosa, Canarias
Membre no 22434



Citation (c0v3r @ 4 Jul 2011, 15:45) *
Comment faire pour que ce supplément soit différent pour chaque client ?
Et là je bloque complétement.
Comme l'a dit plus haut sykaflex, utiliser une condition pour updater le supplément à 0. Mais comment faire ?
Merci de vos réponses
supposant que le client ne soit pas logué et qu'il ne soit pas possible de lier customers_id à ce supplément ... il ne reste qu'une solution : lier l'id de session à ce supplément en créant un champ 'sessions' dans la table "products_attribut", updater le champ avec la session en cours, et pour les visiteurs suivants, updater le champ à "0" ou une autre valeur si cession différente
si quelqu'un a 'autres idées ...
bon code


--------------------
entre chats : chat affamé cherche chat pelure pour faire sauter chat perché dans poil de chat (allergiques s'abstenir)

ah oui ... osCommerce v2.2 RC1 french by Delaballe "merci à lui" - PHP version 4.4.8 - mysql5-41 - OVH 240Plan - contribs : (entre autre) AJAX-AttributeManager-V2.8.2 - Limit_Countries - Multi-Product Update v1.00 - Quick Updates 2.7 - Individual Product Shipping Prices - v1_0 - Attribute Qty Product Info - user_tracking_1 - Visitor Web Stats 3.2.1 - Sort Order - image_subdirectories - master password v1.4 - virementbancaire1.4 - Welcome_Email_password ...
"et grand merci à tous les contributionneurs"
Go to the top of the page
 
FoxP2
posté 11 Jul 2011, 09:46
Message #10


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1449
Inscrit : 3-June 09
Membre no 25501



deux choses :
1.
en aucun cas des ordres SQL d'update sur la table PRODUCTS_ATTRIBUTES ne doivent apparaître dans les fichiers du front office. c'est une erreur grave de conception.
2.
Citation
sachant que mes longueurs peuvent variées de 10 cm à 500 cm (avec des pas de 0.1 cm) !!!

utiliser un slider avec de telles échelles est totalement inadapté, une simple entrée 'input text' me semble largement plus judicieuse.


--------------------


Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 18th May 2013 - 11:00
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)