IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Odoo (ex-OpenERP) Discussion :

Problème module personnalisé


Sujet :

Odoo (ex-OpenERP)

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2014
    Messages : 27
    Points : 14
    Points
    14
    Par défaut Problème module personnalisé
    Bonjour,

    j'essaye de créer mon propre module personnalisée. J'ai bien créer les 4 fichiers de bases nécessaires :

    __init__.py
    __openerp__.py
    stats.py
    stats_view.xml

    Le module a été correctement installé sur openerp sans erreur mais il ne fonctionne pas.

    En fait, pour le moment, ce que je souhaite faire, c'est simplement afficher dans l'onglet : Point of sale, un nouveau menu qui s'appelera : Statistiques et à l'intérieur de ce menu, j'afficherai ainsi un lien vers une page. Le truc c'est que ce menu ne s'affiche pas du tout.

    J'ai lu le tutoriel de Thierry Godin, ainsi que la documentation officielle (enfin une partie) d'openerp, mais je ne trouve pas la solution à mon problème.

    Voici le code de stats_view.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?xml version="1.0" encoding="utf-8"?>
    <openerp>
      <data>
        <menuitem 
                  name="Statistiques" 
                  id="menu_point_of_sale_stats" 
                  parent="point_of_sale.menu_point_root" 
                  sequence="16" 
                  groups="point_of_sale.group_pos_manager"
                  />
        <menuitem
                id="menu_action_stats"
                parent="menu_point_of_sale_stats"
                name="Test"
                />
      </data>
    </openerp>
    Le code de __openerp__.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # -*- coding: utf-8 -*-
    {
        'name': 'Stats',
        'version': '1.0.0',
        'category': 'Point Of Sale',
        'sequence': 1,
        'author': 'Tom tom',
        'summary': 'Reporting / Stats module',
        'description': 'This module will give you some statistics about your business.',
        'depends': ["point_of_sale", "sale"],
        'data': [
            'stats_view.xml',
        ],
        'installable': True,
        'application': False,
        'auto_install': False,
    }
    Comment faire s'il vous plaît ? En fait, je pense que le problème se situe au niveau de mon fichier stats_view.xml. Je dois très probablement rajouter quelques lignes de code mais je ne sais pas comment et dans quelles conditions on doit les appeler. Pourriez-vous m'aider s'il vous plaît car là je cherche depuis déjà pas mal de temps....

    En vous remerciant,

    Salutations.

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Si tu crées un <menuitem> sans action, cela devient une catégorie de menu.
    Mais si tu ne crées pas de menu à l'intérieur de celle ci (avec une action) , cette catégorie n'apparaît pas.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2014
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    Ok je te remercie pour ta réponse, mais du coup là je viens de créer une action dans mon menuitem, mais apparemment il y a un problème d'intégrité...

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?xml version="1.0" encoding="utf-8"?>
    <openerp>
      <data>
        <record model="ir.actions.act_window" id="action_stats">
          <field name="name">Cashiers</field>
          <field name="type">ir.actions.act_window</field>
        </record>
        <menuitem 
                  name="Statistiques" 
                  id="menu_point_of_sale_stats" 
                  parent="point_of_sale.menu_point_root" 
                  sequence="16" 
                  groups="point_of_sale.group_pos_manager"
                  />
        <menuitem
                id="menu_action_stats"
                parent="menu_point_of_sale_stats"
                name="Test"
                action="action_stats"
                />
      </data>
    </openerp>
    Voici l'erreur obtenue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Integrity Error
    
    The operation cannot be completed, probably due to the following:
    - deletion: you may be trying to delete a record while other records still reference it
    - creation/update: a mandatory field is not correctly set
    
    [object with reference: res_model - res.model]
    Le truc c'est qu'il faut que je crée une action cohérente mais je ne sais pas comment bien définir l'attribut model de la balise record dans le fichier XML. Là actuellement c'est défini (comme dans ton module pos_cashier) à la valeur suivante : ir.actions.act_window mais à quoi correspond cette valeur ?

    En fait, ce que je souhaite faire, c'est tout simple : ajouter un menu dans Point of sale, avec une page qui sera en fait une sorte d'outils statistiques...

    Merci

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    En fait, ce que je souhaite faire, c'est tout simple : ajouter un menu dans Point of sale, avec une page qui sera en fait une sorte d'outils statistiques...
    "c'est tout simple" : Ben là t'es dans OpenERP, tu peux bannir cette expression de ton vocabulaire .

    Globalement, lorsque tu crées une action d'un menu, elle est enregistrée dans la table ir_actions_act_window (act_window pour une action sur une fenêtre du navigateur)

    Mais tu dois créer une action et spécifier le model (la table) auquel elle s'applique (champ res_model)
    En gros, tu es obligé de créer une table.

    Mais si tu n'as pas besoin de table de base de données (osv.Model), tu peux alors en créer une en mémoire (osv.osv_memory)

    Donc pour ton cas (c'est un exemple) il faudrait que tu crées une class comme celle-ci:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class pos_stat(osv.Model):
        _name = 'pos.stat'
     
        _columns = {
              ...
        }
    Et donc tu mettrais res_model = pos_stat dans ton action

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2014
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    Oui c'est clair, je commence à me rendre compte qu'OpenERP n'a rien de simple à vrai dire et c'est peut-être même plus compliqué que magento...

    EDIT
    : je viens de tester et effectivement ça fonctionne. Maintenant je commence à mieux comprendre comment ça marche. En fait le système openerp a déjà prévu la possibilité d'ajouter (simplement) de nouvelles pages admin tout en s'assurant que tous les informations nécessaires soient présentes lors de l'appel d'un nouveau module. En sachant que le système openerp pourra interragir avec le contenu de la page en appliquant par exemple des filtres,...

    OK mais par contre du coup j'ai une question, tu me disais qu'il fallait impérativement créer un res_model et donc une table, mais si je veux faire appel à des données d'une table qui existe déjà ? est-ce que c'est possible ?

    J'ai une autre question, si je souhaite créer moi-même la page avec mes propres graphiques sans appliquer les graphiques par défaut d'openerp, est-ce que c'est possible ? Parce que du coup, dans ton module pos_enhances par exemple tu a inclus du code html dans le répertoire static mais je n'ai pas compris comment tu avais fait pour faire appel à code html à partir des fichiers de base (openerp,...), il y a bien un appel qweb mais comment tu fais pour que le code HTML s'applique au contenu de la page ?

    EDIT 2 : Du coup, j'ai approfondi la dernière question et je suis en train de lire ce tutoriel : http://openerp-web-v7.readthedocs.or...st/module.html A priori l'ajout de code HTML peut se faire via du code JS qui va ensuite modifier le DOM pour afficher du contenu spécifique (dans le qweb). Je commence à comprendre comment ça marche mais je ne trouve pas ça très pratique, tu n'a pas chercher à faire autrement toi ?

    Merci

  6. #6
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Citation Envoyé par mastercasefr Voir le message
    Oui c'est clair, je commence à me rendre compte qu'OpenERP n'a rien de simple à vrai dire et c'est peut-être même plus compliqué que magento...
    Ha ben carrément.

    Citation Envoyé par mastercasefr Voir le message
    OK mais par contre du coup j'ai une question, tu me disais qu'il fallait impérativement créer un res_model et donc une table, mais si je veux faire appel à des données d'une table qui existe déjà ? est-ce que c'est possible ?
    Oui bien sûr, tu peux tout a fait faire une viue personnalisée pour n'importe quel module d'OpenERP et donc de n'importe quel model existant.



    Citation Envoyé par mastercasefr Voir le message
    Du coup, j'ai approfondi la dernière question et je suis en train de lire ce tutoriel : http://openerp-web-v7.readthedocs.or...st/module.html A priori l'ajout de code HTML peut se faire via du code JS qui va ensuite modifier le DOM pour afficher du contenu spécifique (dans le qweb). Je commence à comprendre comment ça marche mais je ne trouve pas ça très pratique, tu n'a pas chercher à faire autrement toi ?
    Non, j'ai copieusement surchargé le JS et créé des vues Qweb.


    Pour les stats du POS, j'ai fait un module spécial pour ma boite, mais je ne peux pas le diffuser car c'est imbriqué dans un big module et c'est trop compliqué de sortir seulement les stats.

    Mais je peux peut être t'aiguiller en te disant que j'ai surchargé les vues graphiques JS/Qweb (JS : instance.web_graph.GraphView) et que c'est tendu car tu dois également travailler avec la librairie flotr2 (/usr/share/pyshared/openerp/addons/web_graph/static/lib/flotr2)

  7. #7
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2014
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    Ok merci, et est-ce que tu penses qu'il est possible d'utiliser Google Charts sur OpenERP car en théorie, je peux ajouter autant de code JS que je souhaite et je devrais donc ainsi théoriquement être capable d'ajouter la librairie jquery, ainsi que google charts ? Qu'est ce que tu en penses ?

  8. #8
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Jquery est déjà dans OpenERP.

    Pour Google Charts, techniquement tu devrais pouvoir l'importer, ce n'est jamais que du JS et occasionnellement du Python (que tu interroges depuis JS, d'ailleurs).

    Pour ma part, j'attends que la V8 soit finalisée pour récupérer le module de charts qui semble plus complet

  9. #9
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2014
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    Oui il me tarde de voir également la sortie de la dernière version d'openerp qui me paraît encore plus complète que la version 7.0. Mais il me semble que tu peux déjà télécharger une version mais elle est instable à priori...

    Merci

    Salutations.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2014
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    j'ai encore un autre souci avec mon module personnalisée... Du coup, j'ai créer finalement un module Openerp web en insérant dans le fichier __openerp__.py la dépendance vers le module suivant : web, ainsi que l'adresse des différents fichiers web : fichier .js, .css ainsi que le fichier qweb.

    Par contre, du coup, lorsque j'installe mon module, le fichier JS : stats.js ne semble pas être visible sur les DOM de la page. Est-ce que c'est normal ?

    Voici le code de mon fichier stats.js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    openerp.stats = function (instance) {
    	instance.web.client_actions.add('example.action', 'instance.stats.Action');
    	instance.stats.Action = function (parent, action) {
    	   console.log("Executed the action", action);
    	};
        instance.web.client_actions.add('example.action', 'instance.stats.Action');
        instance.stats.Action = instance.web.Widget.extend({
            className: 'oe_stats',
            start: function () {
                this.$el.text("Hello, world!");
                return this._super();
            }
        });
     };
    Voici mon fichier qweb : (bon le contenu à l'intérieur n'a aucune signification, c'est juste un copier-coller )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <templates>
    <div t-name="stats.action" class="oe_stats oe_stats_stopped">
        <h4 class="oe_stats_timer">00:00:00</h4>
        <p class="oe_stats_start">
            <button type="button">Start</button>
        </p>
        <p class="oe_stats_stop">
            <button type="button">Stop</button>
        </p>
    </div>
    </templates>
    Et maintenant, mon fichier : __openerp__.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    # -*- coding: utf-8 -*-
    {
        'name': 'Stats',
        'version': '1.0.0',
        'category': 'Point Of Sale',
        'sequence': 1,
        'author': 'Tom tom',
        'summary': 'Reporting / Stats module',
        'description': 'This module will give you some statistics about your business.',
        'depends': ["point_of_sale", "sale", "web"],
        'data': [
            'stats_view.xml',
        ],
        'js': [
            'static/src/js/stats.js',
        ],
        'css': [
            'static/src/css/stats.css',
        ],
        'qweb': [
            'static/src/xml/stats.xml',
        ],
        'installable': True,
        'application': False,
        'auto_install': False,
    }
    Merci,

    Salutations

Discussions similaires

  1. Problème module WIN32::OLE
    Par ffaure89 dans le forum Modules
    Réponses: 4
    Dernier message: 29/02/2008, 09h28
  2. Problème Module Geo::Google
    Par Pinoute dans le forum Modules
    Réponses: 1
    Dernier message: 03/01/2008, 14h48
  3. problème filtre personnalisé
    Par D.Mounir dans le forum Excel
    Réponses: 1
    Dernier message: 03/05/2007, 17h16
  4. Réponses: 8
    Dernier message: 21/03/2007, 20h09
  5. problème module CGI.pm(debutant)
    Par Shyboy dans le forum Web
    Réponses: 2
    Dernier message: 13/06/2006, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo