Jump to content

le_binr38

Members
  • Posts

    11
  • Joined

  • Last visited

Profile Information

  • First Name
    Emmanuel
  • Last Name
    RICHARD

Recent Profile Visitors

76 profile views

le_binr38's Achievements

Newbie

Newbie (1/14)

3

Reputation

  1. Bonjour, Merci pour ta réponse okom3pom ! Tu as raison il n'y a pas beaucoup de solution. J'ai choisi de faire un état avec d'un côté les commandes et de l'autres les avoirs sur une même pèriode. Ca permettra de déclarer correctement la TVA même si une commande est passé le 30 du mois et le retour marchandise le 1er du mois suivant. J'ai livré la page à mon client, on va être très vigilant au début pour vérifier que les valeurs sont bien bonnes, surtout lorsqu'il y aura des livraison payante avec de la TVA. Encore merci pour ton aide !
  2. Bonjour, Mon client souhaite avoir en fin de mois un récapitulatif du montant de la TVA à déclarer. Ses articles contiennent plusieurs taux de TVA, je vais donc lui préparer un état qui ressemblera par exemple à ceci : Date : du ../../.. au ../../.. montant TVA 5,5% => 100 € montant TVA 20% => 350 € A ma connaissance, prestashop ne contient pas d'état de se genre. Je pensai donc récupérer ces informations dans les tables order_invoice (pour savoir ce qui a été facturé dans le mois) et order_detail (qui contient le montant des taxes par articles). Là ou ça se complique, c'est que mon client peut avoir des retours marchandises mais il ne souhaite pas faire d'avoir ni d'échange, seulement un remboursement sur le site de la banque. Il y aura juste un retour marchandise de réalisé sous prestashop. Il faut donc que j'identifie ses retours, et je n'en trouve pas de trace. Si je fais un retour ni le BL, ni la facture ne le mentionne. Du plus, si par exemple le 30 juin j'ai livré pour 30 € de marchandise, je fais la déclaration le 01 juillet et que je fais le retour cette commande le 15 juillet, je dois l'impacter sur ma déclaration du 01 Août. Il me faut bien une trace du retour de l'article au mois de juillet. Est-ce que quelqu'un aurait déjà été confronté à cette demande de déclaration de TVA ou saurait où trouver cette table qui permet d'identifier les articles retourné sans avoir ni bon de remboursement ? Merci pour votre aide ;-)
  3. Bonjour, Je suis prestashop 1.7.1 Avant l'étape de validation payement (commande avec obligation de paiement), je test si la date de livraison proposé (nouveau champ) de l'étape "3 Mode de livraison" est correct. Si ce n'est pas le cas je souhaite ré-afficher la page "commande" à l'étape "3 Mode de livraison" (et pas à l'étape "4 Paiement" comme elle apparait par défaut). Je pensai qu'en faisant une redirection vers www....com/commande?step=1 ça allait marcher mais ce n'est pas le cas. Savez-vous si dans cette version de prestashop la variable get "step" a été remplacée par une autre ? Je m'attendais à récupérer la notion "d'étape" dans $params ou "Context" mais je ne vois rien. Merci de votre aide ;-)
  4. Bonjour, Je suis en train de développer un module de livraison (carrierModule) qui contient une date de livraison rempli en automatique. Juste avant que le client ne clique sur le bouton pour le payement (commande avec obligation de payement), je souhaiterais lancer un traitement qui contrôlle si la date de livraison est toujours bonne. Je ne vois pas quel hookaction utiliser ? Je pensais utiliser "actionValidateStepComplete" mais il ne se déclanche que sur les forms 1-2 et 3 mais pas sur le bouton de payement. J'ai aussi essayé avec du jquery et de l'ajax derrière le bouton. Ca fonctionne, j'arrive à identifier que la date de livraison n'est pas à jour. Mais le traitement continu et me renvoi sur la page de payement de la banque alors que j'ai indiqué une redirection vers la page du choix du transporteur de prestashop.. Quelqu'un aurait-il une idée car je cherche depuis 2 jours sans résultat. Merci ;-)
  5. Bonjour, Je travail avec la dernière version de prestashop (1.7). Existe-t-il un moyen de créer plusieurs bon de livraison pour une commande si il y a des reliquats ? Par exemple si une commande comporte un article "A" et un article "B". Je souhaiterai livrer mon client de l'article "A" qui est en stock, et sortir plus tard le BL de l'article "B" quand il sera réapprovisionné. Merci d'avance pour votre aide ;-)
  6. Bonjour, J'ai trouvé, si ça peut intéresser quelqu'un voici la solution ;-) : Dans le controller ProductController overridé, il faut rajouter ces lignes pour intercepter les valeurs avant de les envoyer au template : public function initContent() { parent::initContent(); array_push($this->context->smarty->tpl_vars['product']->value['extraContent'], array( 3, 'title' => 'nouvel onglet', 'content' => 'contenu du nouvel onglet', ) ); }
  7. Bonjour, Apparemment dans la version 1.7 il ne faut plus utiliser displayProductTabContent mais extraContent Le problème s'est qu'il ne s'agit pas d'un display hook. J'arrive à ajouter un onglet en intervenant directement dans le controlleur "product" juste après la ligne $product['extraContent'] = $extraContentFinder->addParams(array('product' => $this->product))->present(); Je rajoute alors ce code : $product['extraContent'] = array( array( 3, 'title' => 'test', 'content' => 'contenu test', ) ); J'ai bien m'on onglet test dans la fiche produit. Pour que tout soit propre je cherche à rajouter cet onglet sans toucher mon controller principal mais en faisant un override. J'ai essayé de mettre ce code pour rajouter des valeurs à ma variable produits : public function getTemplateVarProduct() { var_dump($this->product); $this->product['extraContent'] = array( array( 3, 'title' => 'test', 'content' => 'contenu test', ) ); parent::getTemplateVarProduct(); var_dump($this->product); } Mais ça ne marche pas, la clef "extraContent" ne se s'ajoute pas. Je ne suis pas loin, savez-vous comment je pourrai rajoter un valeur dans mon objet "produit" avant qu'il soir envoyer au template (par un override) Merci par avance pour votre aide !
  8. Bonjour, Je suis sous prestashop 1.7, j'ai créé un module et je cherche à rajouter un nouvel onglet dans la fiche produit à côté de "description" et "détail du produit". J'ai rajouté le hook et la fonction adéquate suivante dans l'installation de mon module : dans ma fonction install du module : if(!$this->registerHook('displayProductTabContent')) { return false; } dans ma class : public function hookDisplayProductTabContent($params) { $html = "A afficher sur la fiche produit"; return $html; } J'ai bien mon point d'accorche "displayProductTabContent" dans la partie admin de greffé avec ce module, mais rien ne s'affiche sur la fiche produit. Pourtant si je fais la même chose avec "hookDisplayHome" le texte apparaît bien sur la home. Quelqu'un aurait-il déjà réussi à afficher un nouvel onglet avec du text dedans dans la fiche porduit ? Ou au pire un nouveau bloc autre que dans les onglets ? Merci par avance pour votre aide.
  9. Bonjour, J'utilise prestahsop 1.7 (dernière version) J'ai développé un module pour mon client permettant de créer des "recettes" avec un titre et un descriptif tout simple. La recette s'enregistre bien dans la base de données. Je souhaite maintenant pouvoir attribuer plusieurs produits à ma fiche recette. J'ai donc créé une table nommée "recette_product" avec les champs "id_recette" et "id_product". Dans mon formulaire de la fiche recette j'affiche tous les produits dans un select comme ceci : $this->fields_form = array( ... array('type' => 'select', 'label' => 'Produits', 'multiple' => true ,'name' => 'products[]','options' => array('query' => $products_list,'id' => 'id_product', 'name' => 'name')), ... ); Ca fonctionne, je peux bien sélection 1 ou plusieurs produits. Mais l'enregistrement dans la table "recette_product" ne fonctionne pas. J'ai pourtant mis l'association suivant dans mon objetmodel : public static $definition = array( 'table' => 'recette', 'primary' => 'id_recette', 'multilang' => false, 'fields' => array( 'titre' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'size' => 100), 'descriptif' => array('type' => self::TYPE_HTML), ), 'associations' => array( 'products' => array('type' => self::HAS_MANY, 'field' => 'id_product', 'object' => 'Product', 'association' => 'recette_product'), ), ); J'ai l'impression que l'enregistrement ne se déclanche pas car si je mets une table inexistante je n'ai aucun message d'erreur. Quelqu'un aurait-il déjà réussi à faire fonctionner un "HAS_MANY" et s'aurait pourquoi l'enregistrement dans la DB ne fonctionne pas ? Je vous remercie par avance de votre aide.
  10. Bonjour, Je dois ajouter la possibilité de sélectionner plusieurs jours de la semaine dans les paramètres généraux du transporteur (dans la page admin, en dessous de "url suivi"). J'ai créé le champ "shipping_days" dans la tables carrier. J'ai overridé la fonction renderStepOne() de la classe "AdminCarrierWizardControllerCore" comme ceci pour rajouter des case à cocher des jour de la semaine : public function renderStepOne($carrier) { $this->fields_form = array( 'form' => array( 'id_form' => 'step_carrier_general', 'input' => array( array( 'type' => 'text', 'label' => $this->trans('Carrier name', array(), 'Admin.Shipping.Feature'), 'name' => 'name', 'required' => true, 'hint' => array( sprintf($this->trans('Allowed characters: letters, spaces and "%s".', array(), 'Admin.Shipping.Help'), '().-'), $this->trans('The carrier\'s name will be displayed during checkout.', array(), 'Admin.Shipping.Help'), $this->trans('For in-store pickup, enter 0 to replace the carrier name with your shop name.', array(), 'Admin.Shipping.Help') ) ), array( 'type' => 'text', 'label' => $this->trans('Transit time', array(), 'Admin.Shipping.Feature'), 'name' => 'delay', 'lang' => true, 'required' => true, 'maxlength' => 128, 'hint' => $this->trans('The delivery time will be displayed during checkout.', array(), 'Admin.Shipping.Help') ), array( 'type' => 'text', 'label' => $this->trans('Speed grade', array(), 'Admin.Shipping.Feature'), 'name' => 'grade', 'required' => false, 'size' => 1, 'hint' => $this->trans('Enter "0" for a longest shipping delay, or "9" for the shortest shipping delay.', array(), 'Admin.Shipping.Help') ), array( 'type' => 'logo', 'label' => $this->trans('Logo', array(), 'Admin.Global'), 'name' => 'logo' ), array( 'type' => 'text', 'label' => $this->trans('Tracking URL', array(), 'Admin.Shipping.Feature'), 'name' => 'url', 'hint' => $this->trans('Delivery tracking URL: Type \'@\' where the tracking number should appear. It will be automatically replaced by the tracking number.', array(), 'Admin.Shipping.Help'), 'desc' => $this->trans('For example: \'http://example.com/track.php?num=@\' with \'@\' where the tracking number should appear.', array(), 'Admin.Shipping.Help') ), array( 'label' => 'Jours d affichage', 'name' => 'shipping_days', 'type' => 'checkbox', 'values' => array( 'query' => array( array( 'id' => 'on', 'name' => 'Lundi', 'val' => '1' ), array( 'id' => 'on', 'name' => 'Mardi', 'val' => '2' ), array( 'id' => 'on', 'name' => 'Mercredi', 'val' => '3' ), array( 'id' => 'on', 'name' => 'Jeudi', 'val' => '4' ), array( 'id' => 'on', 'name' => 'Vendredi', 'val' => '5' ), array( 'id' => 'on', 'name' => 'Samedi', 'val' => '6' ), array( 'id' => 'on', 'name' => 'Dimanche', 'val' => '7' ), ), 'id' => 'id', 'name' => 'name' ) ), ) ) ); } L'affichage se passe bien (je peux sélectionner plusieurs jours de la semaine). Mais l'enregistrement ne se fait pas dans la table carrier. J'ai overridé la classe objectModel CarrierCore en mettant cette ligne : self::$definition['fields']['shipping_days'] = array('type' => self::TYPE_STRING); Cette méthode fonctionne si le champ est de type 'text" mais pas si c'est un groupe de checkbox. Quelqu'un aurait-il déjà réussi à sauvegardé des valeurs de checkbox dans la base de donnée ? par exemple sous forme {1;3;6} pour sauvegarder lundi, mercredi et samedi. Il faudra ensuite que j'affiche dans la partie front seulement les transporteurs du jour de la semaine. Par exemple si on est "mercredi", le transporteur dont le champ 'shipping_days' contient {1;3;6} sera affiché. Merci pour votre aide.
  11. Bonjour, Je dois rajouter un champ "jour" dans la liste des transporteurs afin d'afficher dans l'étape de livraison du panier, seulement les transporteur du jour. J'utilise la dernière version de prestashop (1.7) J'utilise les override mais quelques chose m’échappe car ça ne marche pas. j'ai créé la classe \override\classes\Carrier.php comme ceci : class Carrier extends CarrierCore { public $shipping_days; public function __construct($id = null, $id_lang = null) { //self::$definition['fields']['days'] = array('type' => self::TYPE_HTML, 'lang' => true); //"self::" ne semble pas fonctionner, je pense qu'il faut utiliser "$this" non ? $this->shipping_days['fields']['shipping_days'] = array('type' => self::TYPE_HTML, 'lang' => true); parent::__construct($id, $id_lang); } } Puis la classe \override\controllers\admin\AdminCarrierWizardController.php class AdminCarrierWizardController extends AdminCarrierWizardControllerCore { public function renderStepOne($carrier) { $this->fields_form_override = array( 'form' => array( 'id_form' => 'step_carrier_general', 'input' => array( array( 'type' => 'textarea', 'label' => 'shipping_days', 'name' => 'shipping_days', ), ), ), ); return parent::renderStepOne($carrier); } } Dans mon renderStepOne du controller "AdminCarrierWizardController" principale de prestashop, je fais un dump de mes 2 form afin de contrôller leur contenu : public function renderStepOne($carrier) { ... dump($this->fields_form); dump($this->fields_form_override); $tpl_vars = array('max_image_size' => (int)Configuration::get('PS_PRODUCT_PICTURE_MAX_SIZE') / 1024 / 1024); $fields_value = $this->getStepOneFieldsValues($carrier); return $this->renderGenericForm(array('form' => $this->fields_form), $fields_value, $tpl_vars); } fields_form et fields_form_override sont ont l'air correcte : array:1 [▼ "form" => array:2 [▼ "id_form" => "step_carrier_general" "input" => array:5 [▼ 0 => array:5 [▼ "type" => "text" "label" => "Nom du transporteur" "name" => "name" "required" => true "hint" => array:3 [▶] ] 1 => array:7 [▶] 2 => array:6 [▶] 3 => array:3 [▶] 4 => array:5 [▶] ] ] ] array:1 [▼ "form" => array:2 [▼ "id_form" => "step_carrier_general" "input" => array:1 [▼ 0 => array:3 [▼ "type" => "textarea" "label" => "shipping_days" "name" => "shipping_days" ] ] ] ] Pourtant Prestashop ne m'affiche pas mon nouveau champs "shipping_days" qui est dans fields_form_override. Si je je renomme "fields_form_override" en "fields_form" dans la fonction renderStepOne() de \override\controllers\admin\AdminCarrierWizardController.php il ne me le rajoute pas non plus et je ne le vois pas dans mon dump(fields_form) (je pense qu'il fait uriliser "fields_form_override). Quelqu'un aurait-il une idée du problème ? Est-ce la bonne pratique pour utiliser les override ? Merci par avance ;-)
×
×
  • Create New...