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 :

Afficher une liste déroulante de type combo box avec un fields.function


Sujet :

Odoo (ex-OpenERP)

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 97
    Points
    97
    Par défaut Afficher une liste déroulante de type combo box avec un fields.function
    bonjour,

    je souhaite afficher une liste déroulante dans une vue de type formulaire mais l'affichage ne s'effectue pas en mode edition voici le code :

    1 - dans mon .py (j'hérite de pos.order ) j'ai cette fonction et ce champ customisé :

    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
    ......
        def _get_list_partner(self,cr, uid, ids, field_name, arg, context): #(self, cr, uid, context=None): #
            result = {}
            
            cr.execute("SELECT distinct id,'[' || ref || '] ' || name as name,bl_partner_passage \
                        FROM res_partner \
                        WHERE (customer = True and bl_partner_passage = True and char_length(ref) = 4 and \
                               CAST (substring(ref from 3 for 2) AS integer) = EXTRACT(MONTH FROM current_date)  and \
                               substring(ref from 2 for 1) = (SELECT code_shop FROM res_company)) \
                               or (customer = True and bl_partner_passage = False and char_length(ref) = 4 and \
                               CAST (substring(ref from 3 for 2) AS integer) = EXTRACT(MONTH FROM current_date) and \
                               substring(ref from 2 for 1) = (SELECT code_shop FROM res_company) ) or bl_en_compte = True \
                               ORDER BY bl_partner_passage DESC ")
            line_ids = cr.dictfetchall()
            for line in line_ids:
                res[line['id']]['id'] = line['id']
                res[line['id']]['name'] = line['name']
            return result
    .....
    
    _columns = {
                   'mars_partner_id': fields.function(_get_list_partner, type='many2one', obj='res.partner',store=True,method=True,string='Client'),
    }

    dans ma vue formulaire .xml j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ......
    
    <group>
    <field name="name" string="Ref. Commande" />
    <field name="mars_partner_id" string="Client" on_change="onchange_mars_partner_id(mars_partner_id,date_order)" />
    </group>
    
    ......
    Avez vous une idée ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 97
    Points
    97
    Par défaut
    Aucune piste ?

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet/développeur Odoo
    Inscrit en
    Février 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet/développeur Odoo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 47
    Points : 61
    Points
    61
    Par défaut rep
    Odoo dispose d'un ORM, c'est pour cette raison qu'il est préférable (pour la convention) d'utiliser l'ORM,
    bon ... même Odoo ne se focalise pour tout le temps sur cette exigence.

    c'est in champs fields.many2one qu'il te faut, ou bien un 'fields.selection'
    A ce que je vois tu veux qu'il sois variable c'est bien ça ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 97
    Points
    97
    Par défaut
    Bonjour,

    merci pour la réponse mais je souhaite filtrer sur certain qui sont contenu dans le name du champs ce qui est impossible à effectuer avec l'ORM. Et je souhaite faire de l'auto-complétion.

  5. #5
    Membre du Club
    Homme Profil pro
    Chef de projet/développeur Odoo
    Inscrit en
    Février 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet/développeur Odoo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 47
    Points : 61
    Points
    61
    Par défaut
    je ne suis pas sur de comprendre, la many2one effectue un autocomplétion, on le voit bien lorsqu'on commence a taper un client ou un produit.
    Filtrer a partir de quoi ? expose bien toute la démarche, parce que j'avoue que j'ai du mal à suivre.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 97
    Points
    97
    Par défaut
    Regardes mes critéres de filtrages dans ma requête je ne suis pas certain d'effectuer ce filtre avec le domain du fieds.many2one() que tu me proposes si j'ai bien compris ton orientation. C'est pour cela que je passe par une fonction appeller par un fields.function() qui me renvoie les record souhaité à partir de ma requête sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    WHERE (customer = True and bl_partner_passage = True and char_length(ref) = 4 and \
                               CAST (substring(ref from 3 for 2) AS integer) = EXTRACT(MONTH FROM current_date)  and \
                               substring(ref from 2 for 1) = (SELECT code_shop FROM res_company)) \
                               or (customer = True and bl_partner_passage = False and char_length(ref) = 4 and \
                               CAST (substring(ref from 3 for 2) AS integer) = EXTRACT(MONTH FROM current_date) and \
                               substring(ref from 2 for 1) = (SELECT code_shop FROM res_company) ) or bl_en_compte = True \
                               ORDER BY bl_partner_passage DESC ")
    Actuellement ma requête ne remplie pas le type='many2one' du fields.function() avec le résultat de ma requête !

  7. #7
    Membre du Club
    Homme Profil pro
    Chef de projet/développeur Odoo
    Inscrit en
    Février 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet/développeur Odoo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 47
    Points : 61
    Points
    61
    Par défaut
    daccord. je ferais un essai demain si je trouve le temps avec ta requete.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 97
    Points
    97
    Par défaut
    C'est bon j'ai trouvé, il faut utiliser effectivement un field_get_view dans lequel on met la requet SQL puis on definit le domain avec les ids retourné par la requête

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher une liste déroulante (:select) avec une ArrayList
    Par tompalmeras dans le forum Struts 2
    Réponses: 3
    Dernier message: 28/04/2008, 22h15
  2. Réponses: 8
    Dernier message: 17/10/2007, 19h37
  3. afficher une Liste déroulante
    Par amazircool dans le forum Langage
    Réponses: 12
    Dernier message: 02/05/2007, 10h01
  4. Problème pour afficher une liste déroulante
    Par Oli_Ifre dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2007, 10h11
  5. Réponses: 4
    Dernier message: 09/08/2006, 11h41

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