Jump to content

sum41147

Members
  • Posts

    38
  • Joined

  • Last visited

sum41147's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. C'était bien ça merci beaucoup pour votre retour :) j'avais complètement oublié les tables _shop
  2. Bonjour, Je ne sais pas si quelqu'un a déjà rencontré ce problème, ayant beaucoup de produits sur mon site, je met à jour certaines informations directement dans la base de données par requête SQL (par exemple pour les eco contributions - champ ecotax de la table product, je met à jour avec un simple "update xxx_product set ecotax='0.15' where id_product='...';). Le problème est que la modification est bien prise en compte dans la base de données (mon ecotax apparaît bien quand je vérifie sur les produits en question), mais si j'accède à la fiche produit depuis le back office, ou le front office de prestashop l'ecotax reste à 0 et le calcul ne se fait pas.. j'ai bien vidé le cache de prestashop, ainsi que du navigateur, essayé sur un autre navigateur et une autre connexion mais les informations ne se mettent toujours pas à jour en back office et front office. est-ce que quelqu'un aurait une idée ? Merci par avance je suis en version 1.6.1.5
  3. Trouvé ... il faut juste aller dans le fichier classes/Order.php et trouver la fonction getCustomerOrders() Puis modifier la requête : (par exemple ci-dessous "alias" de l'adresse) SELECT o.*, a.`alias`, (SELECT SUM(od.`product_quantity`) FROM `'._DB_PREFIX_.'order_detail` od WHERE od.`id_order` = o.`id_order`) nb_products FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'address` a ON (a.`id_address` = o.`id_address_invoice`) WHERE o.`id_customer` = '.(int)$id_customer.' GROUP BY o.`id_order` ORDER BY o.`date_add` DESC'); et récupérer dans history.tpl : {$order.alias}
  4. J'ai la requête, j'arrive à obtenir les bons résultats avec un echo mais pas sur le tpl donc je n'ai pas du bien m'y prendre j'ai encore pas mal de choses à apprendre.. Dans le fichier controller/HistoryController.php j'ai ajouté ma requête dans la fonction process() dans la boucle foreach : global $smarty; global$cookie; $alias = Db::getInstance()->getRow('SELECT a.alias FROM '._DB_PREFIX_.'address a LEFT JOIN '._DB_PREFIX_.'orders o ON (o.id_address_invoice = a.id_address) LEFT JOIN '._DB_PREFIX_.'order_history oh ON (o.id_order = oh.id_order) WHERE a.id_address='(int)($order['id_address_invoice']).' AND o.id_product='.(int)($order['id_order']); self::smarty->assign('alias'),$alias['alias']; echo $order['id_order']." ".$alias['alias']." ".$order['id_address_invoice']; à ce niveau j'obtiens bien toutes les données du echo (numéro de commande, id de l'adresse de facturation, résultat alias correspondant). mais dans le tpl avec {$alias.alias} j'obtiens à chaque fois l'alias de l'adresse correspondant à la toute première commande passée. Quelqu'un pourrait m'expliquer mes erreurs svp ?
  5. Bonjour, Quelqu'un saurait comment intégrer l'alias de l'adresse de livraison dans le tableau historique de commande (history.tpl) ? Je n'arrive à récupérer que l'identifiant de l'adresse ... (version prestashop 1.4.6) Merci par avance
  6. J'ai aussi ce problème avec la version 1.4.6 de Prestashop, par contre le bug disparaît quand je décoche et recoche la case "utiliser la même adresse pour la facturation"
  7. Bonjour, Je cherchais la même chose, j'ai testé la manip suivante qui semble fonctionner, pour ceux qui en auraient besoin : (prestashop 1.4.6) 1 : Placer l'image dans le dossier "img" 2 : Modifier le fichier classes/Mail.php Au niveau de la ligne suivante (ligne 177) : $templateVars['{shop_logo}'] = (file_exists(_PS_IMG_DIR_.'logo_mail.jpg')) ? $message->attach(new Swift_Message_Image(new Swift_File(_PS_IMG_DIR_.'logo_mail.jpg'))) : ((file_exists(_PS_IMG_DIR_.'logo.jpg')) ? $message->attach(new Swift_Message_Image(new Swift_File(_PS_IMG_DIR_.'logo.jpg'))) : ''); Recopier cette ligne en-dessous et adapter le nom de la variable et le nom des images : $templateVars['{shop_imageplus}'] = (file_exists(_PS_IMG_DIR_.'logo_imageplus.jpg')) ? $message->attach(new Swift_Message_Image(new Swift_File(_PS_IMG_DIR_.'logo_imageplus.jpg'))) : ((file_exists(_PS_IMG_DIR_.'imageplus.jpg')) ? $message->attach(new Swift_Message_Image(new Swift_File(_PS_IMG_DIR_.'imageplus.jpg'))) : ''); 3 : Ajouter la variable dans le template mail souhaité (se trouvant à la racine du site dans le dossier mails) exemple dans mails/fr/newsletter.html ajouter {shop_imageplus} attacher l'image
  8. Ah j'ai vu où étaient déclarées les variables qui posent problème avec "name" mais je ne vois pas pourquoi cela affiche une erreur ça a bien été remplacé en condition ... if ($displayRestrictions) { echo '<br /><h2 class="space">'.$this->l('Payment module restrictions').'</h2>'; $textCurrencies = $this->l('Please mark the checkbox(es) for the currency or currencies for which you want the payment module(s) to be available.'); $textCountries = $this->l('Please mark the checkbox(es) for the country or countries for which you want the payment module(s) to be available.'); $textCustomers = $this->l('Please mark the checkbox(es) for the Customers for which you want the payment module(s) available.'); $this->displayModuleRestrictions($currencies, $this->l('Currencies restrictions'), 'currency', $textCurrencies, 'dollar'); echo '<br />'; $this->displayModuleRestrictions($customers, $this->l('customers restrictions'), 'customer', $textCustomers, 'customer'); echo '<br />'; $this->displayModuleRestrictions($countries, $this->l('Countries restrictions'), 'country', $textCountries, 'world');
  9. Bonjour à tous, Je souhaite retirer la restriction de paiement par groupe afin qu'elle s'effectue par client. Je ne sait pas si ma technique est bonne, j'ai remplacé tout ce qui était group dans les fichiers tabs/AdminPayment.php, classes/PaymentModule.php, classes/Module.php pour adapter à l'id client, et créé une nouvelle table module_customer. Les modifications sont bien effectuées et l'identifiant client est bien rentré dans la base de données pour les modules choisis, mais le BO n'affiche pas les identifiants clients et renvoie l'erreur suivante : Notice: Undefined index: name in ...tabs\AdminPayment.php on line 176 Voici la ligne en question : foreach ($items as $item) { echo '<tr'.($irow++ % 2 ? ' class="alt_row"' : '').'> <td>'.$item['name'].'</td>'; foreach ($this->paymentModules as $module) { Et la manipulation ne fonctionne pas côté client ... aucun module n'est disponible. Quelqu'un pourrait m'aider ? Je ne comprends pas trop le fonctionnement pour récupérer l'information avec "name" et pourquoi les manipulations ne fonctionnent pas
  10. Bonjour, Est-il possible de n'utiliser qu'un bouton "ajouter au panier" pour les pages product-list ? C'est-à-dire que l'on pourra cocher les produits que l'on souhaite, entrer la quantité et n'utiliser qu'un seul bouton ajouter au panier pour tout mettre d'un coup ... un peu comme le comparateur je ne sait pas s'il est possible de m'inspirer de cette fonctionnalité. Quelqu'un aurait une idée ??? Merci ^^
  11. As-tu bien vérifié que les noms utilisés dans le code et dans la base de données sont bien identiques ?
  12. Je crois que c'est bon en fait ça ne récupérait pas le résultat de la requête donc pour info voici mon code : // fetch price & attribute price $cacheId2 = $id_product.'-'.$id_product_attribute; if (!isset(self::$_pricesLevel2[$cacheId2])) self::$_pricesLevel2[$cacheId2] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT p.`price`, p.`pricet14`, '.($id_product_attribute ? 'pa.`price`' : 'IFNULL((SELECT pa.price FROM `'._DB_PREFIX_.'product_attribute` pa WHERE id_product = '.(int)($id_product).' AND default_on = 1), 0)').' AS attribute_price, p.`ecotax` '.($id_product_attribute ? ', pa.`ecotax` AS attribute_ecotax' : '').' FROM `'._DB_PREFIX_.'product` p '.($id_product_attribute ? 'LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON pa.`id_product_attribute` = '.(int)($id_product_attribute) : '').' WHERE p.`id_product` = '.(int)($id_product)); $result = self::$_pricesLevel2[$cacheId2]; $id_customer = ((Validate::isCookie($cookie) AND isset($cookie->id_customer) AND $cookie->id_customer) ? (int)($cookie->id_customer) : NULL); $codetarif = Db::getInstance()->getRow(' SELECT `codetarif`, `id_customer` FROM `'._DB_PREFIX_.'customer` WHERE `id_customer` = '.(int)($cookie->id_customer)); if ($codetarif['codetarif']==14) { $price = (float)(!$specific_price OR $specific_price['price'] == 0) ? $result['pricet14'] : $specific_price['price']; } else if ($codetarif['codetarif']==10) { $price = (float)(!$specific_price OR $specific_price['price'] == 0) ? $result['price'] : $specific_price['price']; } else { $price = (float)(!$specific_price OR $specific_price['price'] == 0) ? $result['price'] : $specific_price['price']; } hiiiii c'est génial quand ça fonctionne
  13. Quelqu'un pourrait m'aider ? Comme le système des groupes ne me convenait pas (car il faudrait que j'inscrive à la main chaque foi qu'il y a un client le compte client par défaut ça risque de faire lourd à force), j'ai voulu créer un nouveau champ "Code tarif" dans la table Customer, afin de le récupérer dans le fichier Product.php pour pouvoir faire "si codetarif= .. afficher tel prix sinon afficher tel prix". Jusque là, pas de problème, ensuite je me suis bien amusée à tenter de récupérer la valeur dans mon fichier classes/Product.php, j'ai donc déclaré la nouvelle variable public $codetarif; en début de document, Puis ce qui suit : // fetch price & attribute price $cacheId2 = $id_product.'-'.$id_product_attribute; if (!isset(self::$_pricesLevel2[$cacheId2])) self::$_pricesLevel2[$cacheId2] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT p.`price`, p.`pricet14`, '.($id_product_attribute ? 'pa.`price`' : 'IFNULL((SELECT pa.price FROM `'._DB_PREFIX_.'product_attribute` pa WHERE id_product = '.(int)($id_product).' AND default_on = 1), 0)').' AS attribute_price, p.`ecotax` '.($id_product_attribute ? ', pa.`ecotax` AS attribute_ecotax' : '').' FROM `'._DB_PREFIX_.'product` p '.($id_product_attribute ? 'LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON pa.`id_product_attribute` = '.(int)($id_product_attribute) : '').' WHERE p.`id_product` = '.(int)($id_product)); $result = self::$_pricesLevel2[$cacheId2]; // ici pour récupérer le code tarif $id_customer = ((Validate::isCookie($cookie) AND isset($cookie->id_customer) AND $cookie->id_customer) ? (int)($cookie->id_customer) : NULL); $codetarif = Db::getInstance()->getRow(' SELECT `codetarif`, `id_customer` FROM `'._DB_PREFIX_.'customer` WHERE `id_customer` = '.(int)($cookie->id_customer)); echo 'Result for id : '.$codetarif['codetarif']; // Afficher le prix en fonction du code tarif if ($codetarif==14) { $price = (float)(!$specific_price OR $specific_price['price'] == 0) ? $result['pricet14'] : $specific_price['price']; } else if ($codetarif==10) { $price = (float)(!$specific_price OR $specific_price['price'] == 0) ? $result['price'] : $specific_price['price']; } La valeur code tarif est bien récupérée, par contre j'ai ce message d'erreur : "Notice: Undefined variable: price in C:\wamp\www\alaone\prestashop\classes\Product.php on line 1974" Qui correspond à la dernière ligne du code ci-dessous, situé juste en dessous de ce que j'ai modifié : // convert only if the specific price is in the default currency (id_currency = 0) if (!$specific_price OR !($specific_price['price'] > 0 AND $specific_price['id_currency'])) $price= Tools::convertPrice($price, $id_currency); Quelqu'un pourrait m'expliquer pourquoi elle n'est plus reconnue ?
  14. Bonsoir, Désolée d'avoir mis du temps à répondre, voici la méthode qui fonctionne chez moi (avec la version de prestashop 1.4.6.2) : Pour le début, tu peut reprendre le tuto de matgrafiks : 1 : Créer un nouveau champ dans la base de données par exemple priceb 2 : Aller dans le fichier Admin/tabs/AdminProducts.php et ajouter le code suivant après "Pre-tax retail price:" vers la ligne 2540 : <br /> <input size="11" maxlength="14" name="priceb" type="text" value="'.$this->getFieldValue($obj, 'priceb').'"/>'.($currency->format == 2 ? ' '.$currency->sign : '').'<span style="margin-left:13px">Tarif professionnel</span> 3 : Dans le fichier classes/Product.php, modifier les lignes suivantes : - En début de fichier : /** @var float Price in euros */ public $priceb = 0; - Ajouter le champ dans la fonction getFields() : $fields['priceb'] = (float)($this->priceb); - Ajouter le champ dans la requête SQL, juste après le commentaire "// fetch price & attribute price" : self::$_pricesLevel2[$cacheId2] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT p.`price`, p.`priceb`, '.($id_product_attribute ? 'pa.`price`' : 'IFNULL((SELECT pa.price FROM `'._DB_PREFIX_.'product_attribute` pa WHERE id_product = '.(int)($id_product).' AND default_on = 1), 0)').' AS attribute_price, p.`ecotax` '.($id_product_attribute ? ', pa.`ecotax` AS attribute_ecotax' : '').' FROM `'._DB_PREFIX_.'product` p '.($id_product_attribute ? 'LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON pa.`id_product_attribute` = '.(int)($id_product_attribute) : '').' WHERE p.`id_product` = '.(int)($id_product)); - Et enfin tu met le prix en fonction du groupe : if ($id_group==2) { $price = (float)(!$specific_price OR $specific_price['price'] == 0) ? $result['priceb'] : $specific_price['price']; } else if ($id_group==1) { $price = (float)(!$specific_price OR $specific_price['price'] == 0) ? $result['price'] : $specific_price['price']; } Et teste bien avec deux comptes clients : un premier avec un premier groupe par défaut, et un deuxième avec un deuxième groupe par défaut. J'ai pas encore fait un test complet mais pourtant ça semble fonctionner.
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More