Jump to content

Alex--77

Members
  • Posts

    113
  • Joined

  • Last visited

Profile Information

  • Location
    Marne la Vallée
  • First Name
    Alexis
  • Last Name
    Bory

Alex--77's Achievements

Newbie

Newbie (1/14)

7

Reputation

13

Community Answers

  1. Le post date de 4 mois, mais j'ai eu le même problème avec un prestashop 1.5.6.3, le sujet n'est pas vraiment résolus et j'ai trouvé une solution possible. J'étais dans le même cas, erreur 500 sur adminXXX/ajax.php, mes dossiers étaient en 755 et fichiers en 644 (j'ai même testé 777). Mon problème était que je suis passé récemment en https et je me suis connecté au BO en http. Lorsque je me connecte au BO en https, l'erreur 500 disparaît. En espérant que ça peut-être utile pour d'autres personnes.
  2. Bonjour, Je suis sur un prestashop 1.6, nous sommes encore en pré-production. La boutique n'est pas encore en ligne et nous n'avons pas encore tester le paiement. Les URLs que j'ai mentionné sont des URLs de Paypal, elles sont donc normalement fonctionnelles. C'est juste que le module Paypal gratuit de Prestashop ne la pas intégrée dans son code source. Il y a des modules de Paypal payant sur Prestashop Addons, peut-être que ces modules ont cette option.
  3. Ah non désolé, fausse alerte. Mes ID des catégories FR et EN ne correspondaient pas. Merci quand même @soburo d'avoir essayé de m'aider. Pour information, les URLs simplifié je reprends leur nom en remplaçant les espaces par - et les lettres avec accent par les lettres sans-accent.
  4. Bonjour, Su un prestashop 1.6.1.14 vierge, je souhaites importer un catalogue en Français et Anglais. Voici les étapes que j'ai fait pour les catégories: - 1er fichier csv en Français (id catégorie, nom,....) - l'import du 1er fichier c'est bien passé, avant j'ai bien choisis français dans le menu déroulant - 2e fichier csv en Anglais (id catégorie, et tous les champs à traduire) - l'import c'est bien passé sans erreur, avant j'ai bien choisis anglais dans le menu déroulant Quand je vais dans les catégories, tous les noms sont en anglais (même si je switch anglais/français). J'ai l'impression qu'il a écrasé tous le contenues fr par en. J'ai peut-être oublié une étape ? Je n'ai pas testé avec les produits.
  5. Merci de ton aide, je n'aurais peut-être pas trouvé sans ton aide (ou du moins pas aussi vite). Je ne sais pas trop mais en tout cas ça fonctionne, je me pencherais dessus plus tard.
  6. Ah je n'avais pas vue ton dernier post. Entre temps j'ai remarqué que vers la ligne 440 dans AuthController.php, génère le message d'erreur : $this->errors = array_unique(array_merge($this->errors, $customer->validateController())); Ensuite je détecte si l'erreur existe, si oui je réécris le message : $this->errors = array_unique(array_merge($this->errors, $customer->validateController())); if($this->errors['majeur'] ) { $this->errors['majeur'] = Tools::displayError('La majorité est requise.'); } C'est correct ? En tout cas ça fonctionne. Je vais regarder de plus près le code de ton dernier post.
  7. Voici le html du form : <form action="http://my-shop.net/connexion" method="post" id="account-creation_form" class="std box authentication-form "> <h3 class="full-width txt-left txt-uppercase century-bold txt-uppercase txt-pink">Vos informations personnelles</h3> <hr class="background-pink"> <div class="two-cols float-left"> <div class="form-group full-width txt-left"> <label class="float-left">Titre</label> <ul class="no-style txt-right gender"> <li class="float-left"> <input name="id_gender" id="id_gender1" value="1" checked="checked" class="float-left" type="radio"><span class="radio float-left"></span> <label for="id_gender1" class="top float-left radio-label">M</label> </li> <li class="float-left"> <input name="id_gender" id="id_gender2" value="2" class="float-left" type="radio"><span class="radio float-left"></span> <label for="id_gender2" class="top float-left radio-label">Mme</label> </li> </ul> </div> <div class="required form-group full-width txt-left form-error"> <input onkeyup="$('#firstname').val(this.value);" class="is_required validate form-control" data-validate="isName" id="customer_firstname" name="customer_firstname" value="" placeholder="Prénom *" type="text"> </div> <div class="required form-group full-width txt-left"> <input onkeyup="$('#lastname').val(this.value);" class="is_required validate form-control" data-validate="isName" id="customer_lastname" name="customer_lastname" value="" placeholder="Nom *" type="text"> </div> <div class="required form-group full-width txt-left form-ok"> <input class="is_required validate form-control" data-validate="isEmail" id="email" name="email" value="[email protected]" placehilder="E-mail *" type="email"> </div> <div class="required password form-group full-width txt-left"> <input class="is_required validate form-control" data-validate="isPasswd" name="passwd" id="passwd" placeholder="Mot de passe *" type="password"> <span class="form_info">(5 caractères min.)</span> </div> <div class="form-group full-width txt-left"> <label class="float-left">Date de naissance</label> <div class="float-left select-wrap"> <select id="days" name="days" class="form-control"> <option value="">-</option> <option value="1">1 </option> </select> <i class="fa fa-chevron-down txt-dark-grey txt-hover-white background-hover-pink"></i> </div> <div class="float-left select-wrap"> <select id="months" name="months" class="form-control"> <option value="">-</option> <option value="1">Janvier </option> </select> <i class="fa fa-chevron-down txt-dark-grey txt-hover-white background-hover-pink"></i> </div> <div class="float-left select-wrap"> <select id="years" name="years" class="form-control"> <option value="">-</option> <option value="2017">2017 </option> </select> <i class="fa fa-chevron-down txt-dark-grey txt-hover-white background-hover-pink"></i> </div> </div> <div class="checkbox form-group full-width txt-left"> <input class="float-left" name="newsletter" id="newsletter" value="1" type="checkbox"><span class="checkbox float-left"></span> <label class="float-left checkbox-label" for="newsletter">S'inscrire à la newsletter</label> </div> <div class="checkbox form-group full-width txt-left"> <input class="float-left" name="optin" id="optin" value="1" type="checkbox"><span class="checkbox float-left"></span> <label class="float-left checkbox-label" for="optin">Recevez les offres spéciales de nos partenaires</label> </div> </div> <!-- ajout de la checkbox "Majorité" --> <div class="checkbox form-group full-width txt-left required form-error"> <input class="float-left is_required validate form-control" name="majeur" id="majeur" value="1" type="checkbox"><span class="checkbox float-left"></span> <label class="float-left checkbox-label" for="majeur">Je certifie avoir plus de 18 ans<sup>*</sup></label> </div> <!-- END : ajout de la checkbox "Majorité" --> <div class="submit full-width txt-right"> <input name="email_create" value="1" type="hidden"> <input name="is_new_customer" value="1" type="hidden"> <input class="hidden" name="back" value="my-account" type="hidden"> <button type="submit" name="submitAccount" id="submitAccount" class="button background-dark-grey txt-white txt-uppercase txt-light-grey background-hover-pink float-right"> S'inscrire </button> <span class="form_info float-left txt-left">*Champ requis</span> </div> </form> Tout ce que j'ai fait est dans mon 1er post, j'ai ensuite testé mon formulaire et ça a marché. Je penses qu'il doit avoir un controller ou un EventListener qui surveille les champs requis de la class Customer.php.
  8. Merci pour ton retour. Je n'ai rien fait côté controller, tu fais allusion au controller AuthController.php ?
  9. Bonjour, J'ai ajouté une case à cocher dans le formulaire de création de compte. En fait c'est une boutique qui vend de l'alcool et du coup obligation d'une checkbox "Je certifie avoir plus de 18 ans" pour créer un compte (et donc acheter). J'ai donc fait un override de Customer.php dans /override/class : class Customer extends CustomerCore { public $majeur; /** * @see ObjectModel::$definition */ public static $definition = array( 'table' => 'customer', 'primary' => 'id_customer', 'fields' => array( 'secure_key' => array('type' => self::TYPE_STRING, 'validate' => 'isMd5', 'copy_post' => false), 'lastname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32), 'firstname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32), 'email' => array('type' => self::TYPE_STRING, 'validate' => 'isEmail', 'required' => true, 'size' => 128), 'passwd' => array('type' => self::TYPE_STRING, 'validate' => 'isPasswd', 'required' => true, 'size' => 32), 'last_passwd_gen' => array('type' => self::TYPE_STRING, 'copy_post' => false), 'id_gender' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'), 'birthday' => array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate'), 'newsletter' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'newsletter_date_add' => array('type' => self::TYPE_DATE,'copy_post' => false), 'ip_registration_newsletter' => array('type' => self::TYPE_STRING, 'copy_post' => false), 'optin' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'majeur' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true), //mon champs obligatoire 'website' => array('type' => self::TYPE_STRING, 'validate' => 'isUrl'), 'company' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'), 'siret' => array('type' => self::TYPE_STRING, 'validate' => 'isSiret'), 'ape' => array('type' => self::TYPE_STRING, 'validate' => 'isApe'), 'outstanding_allow_amount' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'copy_post' => false), 'show_public_prices' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false), 'id_risk' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'copy_post' => false), 'max_payment_days' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'copy_post' => false), 'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false), 'deleted' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false), 'note' => array('type' => self::TYPE_HTML, 'validate' => 'isCleanHtml', 'size' => 65000, 'copy_post' => false), 'is_guest' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false), 'id_shop' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false), 'id_shop_group' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false), 'id_default_group' => array('type' => self::TYPE_INT, 'copy_post' => false), 'id_lang' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false), 'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false), 'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false), ), ); } Ensuite j'ajoute la checkbox dans le form du tpl (/themes/mon_theme/authentification.tpl) : <div class="checkbox form-group full-width txt-left required"> <input class="float-left is_required validate form-control" type="checkbox" name="majeur" id="majeur" value="1" /><span class="checkbox float-left"></span> <label class="float-left checkbox-label" for="majeur">{l s='Je certifie avoir plus de 18 ans'}<sup>*</sup></label> </div> J'ai également ajouté dans la BDD, dans la table ps_customer, un champ majeur. J'ai plus ou moins recopier les moins config que pour les optins. Tout fonctionne, si la case n'est pas cochée, l'inscription ne se fait pas et vise versa. Par contre, quand on ne coche pas cette case il y a une message d'erreur de Prestashop "Il y a une erreur, majeur requis". Je souhaite remplacer "majeur" par "majorité", je ne voies pas ou faire cette modifications ? J'ai essayé de changer le name et l'id dans le html mais ça ne marche pas.
  10. Après de longues recherches, j'ai finalement trouvé un moyen de résoudre mon problème. D'abord, comme cité plus haut, il faut faire la modification dans /modules/paypal/express_checkout/process.php vers la ligne 147 : Remplacer : // Set payment detail (reference) $this->_setPaymentDetails($fields); $fields['SOLUTIONTYPE'] = 'Sole'; $fields['LANDINGPAGE'] = 'Login'; Par : $this->_setPaymentDetails($fields); $fields['SOLUTIONTYPE'] = 'Sole'; $fields['LANDINGPAGE'] = 'Billing'; // Login est remplacé par Billing En faisant cette modification, lors du paiement on tombe sur une URL de ce type : https://www.paypal.com/websc&cmd=_express-checkout&token=XXXXXXX#/checkout/sign On est bien sur une page ou il faut entrer les coordonnées bancaires mais obligation de créer un compte Paypal. Pour contourner la création de compte Paypal, il faut faire une autre modification dans le même fichier (/modules/paypal/express_checkout/process.php vers la ligne 545 dans la méthode redirectToAPI() ) : Remplacer : Tools::redirectLink('https://'.$this->getPayPalURL().$url.'&token='.urldecode($this->token)); Par : Tools::redirectLink('https://'.$this->getPayPalURL().$url.'&token='.urldecode($this->token).'#/checkout/guest'); Cette fois-ci on tombe sur cette page https://www.paypal.com/websc&cmd=_express-checkout&token=XXXXXXX#/checkout/guest On est bien sur une page ou il faut entrer les coordonnées bancaires et la création de compte Paypal est en option. Je sais que ce n'est pas top comme modification car un cas de mise à jour du module, on perd les modifs. Ce genre d'option devrait être, pour moi, paramétrable depuis le BO dans le module de Paypal. Il y a peut-être une raison, surement un partenariat entre Paypal et Prestashop pour favoriser la création de compte Paypal... Pour rappel, les modifications fonctionnent pour Paypal Intégral, je ne sais pas si il faut faire les mêmes modification pour Paypal Evolution et Paypal Option+.
  11. Oups, il y a eu un problème d'enregistrement. Ne pas tenir compte de ce post mais plutôt celui-la : https://www.prestashop.com/forums/topic/611013-paypal-payer-avec-une-cb-sans-obligation-de-compte-paypal/
  12. Bonjour, J'ai tenté plusieurs choses sans arriver à ce que je souhaites. Comme dit le titre je souhaite que les client puissent payer sans compte Paypal. Pour information Paypal est le seul moyen de paiement sur ma boutique (les modules chèques et virement bancaire sont désactivés). Dans un premier temps j'ai mis en place le module de Paypal par défaut (celui qui est gratuit). J'ai ensuite configuré mon compte Paypal "utiliser Paypal comme seul moyen de paiement sur ma boutique". Malgrès la configuration quand on se retrouve à l'étape de paiement, il nous propose une connexion à Paypal (et en bas de page un lien pour payer sans compte).Cela ne convient pas, ça va faire fuir plus d'un client. Dans un deuxième temps je suis tombé sur un topic (il date un peu et je ne retrouve plus le lien) : Voici ce que j'ai fait dans /modules/paypal/express_checkout/process.php vers la ligne 147 : Remplacer : // Set payment detail (reference) $this->_setPaymentDetails($fields); $fields['SOLUTIONTYPE'] = 'Sole'; $fields['LANDINGPAGE'] = 'Login'; Par : $this->_setPaymentDetails($fields); $fields['SOLUTIONTYPE'] = 'Sole'; $fields['LANDINGPAGE'] = 'Billing'; // Login est remplacé par Billing Avec cette modification j'ai bien les champs de CB qui s'affiche (et non plus une connexion à un compte Paypal). Le problème c'est qu'une fois les coordonnées bancaire entrées, il faut entrer un mail et mot de passe pour valider le paiement. En d'autres termes, il faut créer un compte Paypal pour payer avec la CB. Je ne souhaites pas forcer mes clients à s'inscrire à Paypal pour effectuer des achats sur ma boutique. Y-a t'il un moyen de configurer uniquement Paypal sur Prestashop sans obligation de création de compte Paypal ?
  13. Bonjour, J'ai tenté plusieurs choses sans arriver à ce que je souhaites. Comme dit le titre je souhaite que les client puissent payer sans compte Paypal. Pour information Paypal est le seul moyen de paiement sur ma boutique (les modules chèques et virement bancaire sont désactivés). Dans un premier temps j'ai mis en place le module de Paypal par défaut (celui qui est gratuit). J'ai ensuite configuré mon compte Paypal "utiliser Paypal comme seul moyen de paiement sur ma boutique". Malgrès la configuration quand on se retrouve à l'étape de paiement, il nous propose une connexion à Paypal (et en bas de page un lien pour payer sans compte).Cela ne convient pas, ça va faire fuir plus d'un client. Dans un deuxième temps je suis tombé sur un topic (qui date et je ne retrouve plus le lien) : Voici ce que j'ai fait dans /modules/paypal/express_checkout/process.php vers la ligne 147 : Remplacer : // Set payment detail (reference) $this->_setPaymentDetails($fields); $fields['SOLUTIONTYPE'] = 'Sole'; $fields['LANDINGPAGE'] = 'Login'; Par : $this->_setPaymentDetails($fields); $fields['SOLUTIONTYPE'] = 'Sole'; $fields['LANDINGPAGE'] = 'Billing'; // Login est remplacer par Billing Avec cette modification j'ai bien les champs de CB qui s'affiche (et non plus une connexion à un compte Paypal). Le problème c'est qu'une fois les coordonnées bancaire entrées, il faut entrer un mail et mot de passe pour valider le paiement. En d'autres termes, il faut créer un compte Paypal pour payer avec la CB. Je ne souhaites pas forcer mes clients à s'inscrire à Paypal pour effectuer des achats sur ma boutique. Y-a t'il un moyen de configurer uniquement Paypal sur Prestashop sans obligation de création de compte Paypal ?
  14. Ah ok, je n'avais pas compris ça. D'après ce que tu dis à un moment le client renseigne le nom de sa société (via le formulaire de création de compte de prestashop ou c'est le module qui le gère?) Si c'est via le formulaire de création de compte, il est possible que les informations du clients soit stockées dans les cookies : //init du cookie si ce n'est pas déjà fait dans le php qui génère ta vue tpl $this->context->cookie; // je ne suis pas sur que cela marche, je n'ai pas vérifié $cookie->customer_company; //Sinon voici le code pour récupérer l'id du client $id_customer = $cookie->id_customer; // init d'un objet client $customer = new Customer($id_customer); // je ne suis pas sur que cela marche $company = $customer->company; // ou peut-être $customer->company_name //Et tu retourne ta nouvelle variable a smarty pour l'utiliser $this->context->smarty->assign( array( 'MaVariableTPL' => $company ) ); // remplacer MaVariableTPL par le nom que tu veux Le code que je viens te proposer, j'ai fait de tête sans vraiment tester. Je ne peux pas te garantir son fonctionnement à 100%. Je penses que l'idéale c'est de créer un autre topic avec un maximum d'information sur ce que tu souhaites faire et expliquer un peu le fonctionnement du module.
  15. Bonjour, Cela dépend du module, c'est un module prestashop ? un module acheté sur addons par développeur tierce? un module développé sur-mesure ? Suivant l'architecture du module et sa complexité compliquer à mettre en place. Par contre dans le tpl, il y a un moyen simple et rapide à mettre en place, c'est d'utiliser le système de traduction. Dans le tpl du module, il faut ajouter à l'endroit souhaité (peut-être faire un peu de CSS) : {l s='Nom de la société'} Si jamais pour x ou y raison, il faut changer le nom de la société (ou un nom de société différent dans une autre langue), dans le backoffice dans "Localisation" puis "traductions" faire une recherche traduction du module et de tu retrouveras le nom de ta société que tu peux "traduire" ou modifier suivant la langue. Edit : le chemin de la traduction dans le BO, je l'ai fait en me basant sur une version 1.6 de Prestashop. Ca fait longtemps que je ne travaille plus sur la 1.5, je me souviens si c'est le chemin exact pour aller dans les traductions depuis le BO. Mais le code du tpl reste le même.
×
×
  • Create New...