Se rendre au contenu
Nexelans
  • 0
    • Page d'accueil
    • Nos services
    • Odoo
    • Formations
    • Services
    • Support
    • Aide
    • Facture électronique
    • Formations proposées
    • Blog Odoo
    • Postes
    • Partenaires
    • Contactez-nous
  • +33 9 72 02 75 90 contact@nexelans.fr
  • Se connecter
Nexelans
  • 0
    • Page d'accueil
    • Nos services
    • Odoo
    • Formations
    • Services
    • Support
    • Aide
    • Facture électronique
    • Formations proposées
    • Blog Odoo
    • Postes
    • Partenaires
    • Contactez-nous
  • +33 9 72 02 75 90 contact@nexelans.fr
  • Se connecter
  • T&A Odoo
  • Filtrer les informations par date
  • Filtrer les informations par date

    dans la barre de recherche de Odoo
    24 mai 2024 par
    Nexelans, Emmanuel Chaumery
    | Aucun commentaire pour l'instant

    Introduction

    Lorsque l'on fait une recherche dans Odoo, le champ des possibles est assez large. En fait même, il est maximal. On peut faire des recherches sur toutes les zones disponibles dans les formulaires de saisie (ou presque).

    Mais il en est une qui est un peu différente car son format l'est aussi : la date.

    Les options disponibles par défaut

    Quand on doit filtrer par dates, les options sont limitées par défaut. Par exemple, pour les documents de vente :

    • Les 3 derniers mois
    • Les 3 derniers trimestres
    • Les 3 dernières années

    Il arrive régulièrement que l'on ait besoin de données correspondant à une date précise ou à une plage de dates précises.

    Rappel sur le format

    Dans le langage Python qui est la base du développement de Odoo, il y a 2 formats de dates :

    • La date simple qui peut aussi s'afficher sous forme de plage de dates
    • le format datetime qui intègre la date elle même avec l'heure

    Dès lors, indiquer une date de recherche sur une journée ne sera pas problématique sur une date simple mais le sera sur une datetime.

    En effet, dire qu'une date est égale au 6 mai 2024 sur une date cherchera toutes les occurrences de cette date mais sur une datetime, cela ne renverra rien car il faudra plutôt préciser que cette date doit être située entre le 6 mai 2024 à 00:00 et le 6 mai 2024 à 23:59.

    Chercher une date simplement

    En V17, Odoo nous propose une plage de date dans le domaine de recherche. Voici la marche à suivre :

    1. Dans la barre de recherche, cliquer sur "Ajouter un filtre personnalisé"
    2. Aller chercher la date dans la liste des champs
    3. Choisir l'opérateur "est entre"
    4. Attention, les dates sont alors indiquées avec l'heure actuelle. Modifier donc les dates ET les heures de la plage

    Filtre dates

    En cliquant sur "Ajouter", votre filtre s'applique.

    Mais il s'applique uniquement sur cette recherche. Il faudra donc recommencer à chaque fois ou enregistrer cette recherche mais ça restera statique donc il faudra changer la date à chaque recherche.

    Si vous disposez de Studio, la version personnalisée de Odoo Entreprise, vous allez pouvoir améliorer votre recherche.

    Personnalisation

    Ce n'est pas une énorme évolution mais vous allez pouvoir ajouter la date recherchée dans le champ d'autocomplétion. Mais taper une date dans la barre de recherche ne renverra rien, il faudra cliquer sur la roue dentée pour modifier la plage de dates comme indiqué au paragraphe précédent.

    autocomplétion date

    En allant plus loin dans la personnalisation, on va pouvoir quand même améliorer notre recherche mais il va falloir faire un peu de code.

    Comme d'habitude, si vous ne comprenez pas ce qui suit, évitez de le faire, vous pouvez potentiellement faire des dégâts dans votre base. Dans le doute, contactez nous pour le faire.

    Rappel : la barre de recherche est une vue de type recherche. Comme pour toute modification de vue, créez une vue héritée de la vue standard sinon vos modifications seront probablement supprimées lors de la prochaine mise à jour. Et comme pour toute modification de code, créez une base de test en Saas ou une brache de développement et une de staging sur www.odoo.sh/

    Dans notre exemple, nous souhaitons ajouter 2 nouveaux filtres : les commandes de la semaine passée et celles du mois passé. Voici le code qu'il va falloir ajouter à notre vue héritée de la vue standard qui s'appelle (pour les commandes) sale.order.search.inherit.quotation , elle même héritée de sale.order.list.select : 

    <data>
      <xpath expr="//filter[@name='filter_create_date']" position="after"> <!-- on se positionne après le filtre de date de création -->
        <filter string="Date commande semaine dernière" name="date_commande_semaine" domain="[('date_order','&gt;=',(context_today() + relativedelta(days=-7)).strftime('%Y-%m-%d'))]"/> <!-- on ajoute la semaine dernière-->
        <filter string="Date commande mois dernier" name="date_commande_mois" domain="[('date_order','&gt;=',(context_today() + relativedelta(months=-1)).strftime('%Y-%m-%d'))]"/> <!-- puis le mois dernier -->
      </xpath>
    </data>

    Ce que l'on fait, c'est apporter une modification du domaine en dur avec des fonctions Python spécifiques :

    context_today() : la date du jour

    relativedelta(...) : on ajoute à la date du jour un certain nombre d'années (years), mois (months), semaines(weeks) ou jours (days) en mettant "-" si on veut remonter dans le temps. relativedelta(days=-7) va chercher jusqu'à 7 jours dans le passé. On aurait pu mettre relativedelta(weeks=-1)

    strftime est le format de la date

    Et voilà 

    filtre code

    Conclusion

    Ce n'est pas forcément évident de filtrer (ou regrouper) sur les dates dans Odoo, les filtres de base étant limités mais avec un peu de manipulation voire un peu de code on peut se faciliter la vie assez simplement.

    Et si vous voulez éviter de mettre les doigts dans le cambouis et faire de possibles grosses bêtises, nous sommes là pour vous !

    Nexelans, Emmanuel Chaumery 24 mai 2024
    Partager cet article
    Étiquettes
    Archive
    Se connecter pour laisser un commentaire.
    Nexelans​​​

    Siège social :141 chemin de la Basse Biousse, 38890 St Chef

    Bureaux : 2 rue des Sayes, 38080 L'Isle d'Abeau

    Une adresse doit être spécifiée pour qu'une carte soit intégrée

                         

    Entrer en contact
    • contact@nexelans.fr
    • 09 72 02 75 90
    Suivez-nous

     LinkedIn

    • YouTube
    Divers
    • Mentions légales
    • Vie privée
    • Conditions générales de services
    • Conditions générales de maintenance
    Produits
    • Odoo
    • Facture électronique




    Logo Nexelans

    Nexelans
    • Page d'accueil
    • Contact
    • Prendre Rendez-vous
    • Nos services
    • Formations
    •   Numeum
    ​
    Copyright 2024 © Nexelans
    Généré par Odoo - Le #1 Open Source eCommerce

    Nous utilisons des cookies pour vous offrir une meilleure expérience utilisateur sur ce site. Politique en matière de cookies

    Que les essentiels Je suis d'accord