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 :

Tutoriel Odoo : Les Web Services avec Odoo (OpenERP)


Sujet :

Odoo (ex-OpenERP)

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 : 60
    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
    Par défaut Tutoriel Odoo : Les Web Services avec Odoo (OpenERP)
    Bonjour à tous,

    Dans le cadre des développements que j'ai effectués pour la société pour laquelle je bosse, j'ai mis en place un système de paiement en ligne dans l'ERP (de type Atos) . Comme j'avais besoin d'avoir la réponse de la banque pour mettre à jour la base de données d'Odoo après un paiement réussi, je me suis donc penché sur les Web Services.

    Après le paiement, la réponse de la banque est renvoyée sur une page PHP hébergée sur un serveur, et le script se connecte à Odoo (sur un autre serveur), puis exécute des méthodes (read, write, etc.) pour mettre à jour la commande/facture et valider la livraison de la commande.

    Comme de bien entendu, j'ai copieusement galéré car la documentation disponible est plutôt sommaire... J'ai donc fait un petit article qui vous présente l'interaction PHP -> Odoo via les Web Services avec des scripts d'exemples que vous pouvez tester très facilement.

    Les scripts d'exemples portent sur des méthodes simples (read, search, write, etc), et n'ont aucun rapport avec les scripts que j'avais fait pour le paiement en ligne. Néanmoins, ça devrait vous permettre de démarrer avec les Web Services sans trop de soucis.

    Comme d'habitude, si vous relevez des erreurs ou des imprécisions, n'hésitez pas à poster ici pour que j'apporte les corrections/précisions nécessaires.

    L'article : Interaction entre Odoo et PHP via XML-RPC

    Bonne lecture!

  2. #2
    Membre confirmé
    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
    Par défaut
    Super ce tuto qui m'aidera dans la gestion des interactions avec d'autres application. Bon Travail.
    Sinon merci pour http://www.lapinmoutardepommedauphine.com/ c'est l'un des meilleurs batteurs que j'ai entendu.

  3. #3
    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 : 60
    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
    Par défaut
    Citation Envoyé par benoxy Voir le message
    Super ce tuto qui m'aidera dans la gestion des interactions avec d'autres application. Bon Travail.
    Sinon merci pour http://www.lapinmoutardepommedauphine.com/ c'est l'un des meilleurs batteurs que j'ai entendu.
    You welcome !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 131
    Par défaut Invoice.line, recherche et rééecriture d'une ligne en XMl RPC
    Bonjour,

    Comment faire une recherche pour sélectionner correctement dans les lignes de facture de Odoo (account.invoice.line), une ligne spécifique. Cela laisse supposer :
    - identifier l'id de l'invoice que l'on retrouve dans invoice ==> pas de pb
    - identifier l'id de la ligne en conséquence,
    - identifier par exemple de numéro de compte de compta pour le changer.

    les requêtes search que j'ai pu faire sont toutes basées sur un critère unique. Comment fait on pour mettre 2 critères via une AND

    recherche unicritère :

    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
         $domain_filter = array (
            new xmlrpcval(
              array(new xmlrpcval('partner_id' , "int"),
                      new xmlrpcval('=',"string"),
                      new xmlrpcval($id,"string")
                    ),"array"
                  ),
                );
    
          $client = new xmlrpc_client($server_url . "/xmlrpc/object");
          $client->setSSLVerifyPeer(0);
    
          $msg = new xmlrpcmsg('execute');
          $msg->addParam(new xmlrpcval($dbname, "string"));
          $msg->addParam(new xmlrpcval($uid, "int"));
          $msg->addParam(new xmlrpcval($password, "string"));
          $msg->addParam(new xmlrpcval("res.partner", "string"));
          $msg->addParam(new xmlrpcval("search", "string"));
          $msg->addParam(new xmlrpcval($domain_filter, "array"));
          $response = $client->send($msg);
    
          $result = $response->value();
    Qu'en est il pour une recherche multicritère dans cet élément ou je voudrais avoir ma ligne dans account.invoice.line'.
    Ce qui revient à faire par exemple

    select id, invoice_id, name, account_id from table account.invoice.line where name= $name and invoice_id = $id.

    je rame dans ce cadre pour créer le code xml-rpc.

    Merci.

  5. #5
    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 : 60
    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
    Par défaut
    Bonjour,

    As tu essayé ceci :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $domain_filter = array (
            new xmlrpcval(
              array(new xmlrpcval('invoice_id' , "string"), // Attention 'invoice_id' est un string
                      new xmlrpcval('=',"string"),
                      new xmlrpcval($invoice_id,"int") // Mais $invoice_id est un int
                    ),"array"
                  ),
          new xmlrpcval(
             array(new xmlrpcval('name' , "string"),
                      new xmlrpcval('=',"string"),
                      new xmlrpcval($name,"string")
                    ),"array"
                  ),
                );

    Et pour une requête OR :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $domain_filter = array (
          new xmlrpcval('|',"string"), // ici le parametre OR
          new xmlrpcval(
                array(new xmlrpcval('invoice_id' , "string"),
                      new xmlrpcval('=',"string"),
                      new xmlrpcval($invoice_id,"int")
                    ),"array"
                  ),
          new xmlrpcval(
                array(new xmlrpcval('name' , "string"),
                      new xmlrpcval('=',"string"),
                      new xmlrpcval($name,"string")
                    ),"array"
                  ),
                );

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 131
    Par défaut
    Merci pour ta réponse rapide. voici ce que j'ai fait :

    mais cela fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ids = $OSCOM_ODOO->odooSearch1('name','=', $shipping_title, $string = 'string', 'account.invoice.line', 'invoice_id', '=', $invoice_id);
    réponse :
    Fatal error: Call to a member function serialize() on a non-object in /home/www/clicshopping_test_ui/boutique/ClicCpanel/ext/odoo_xmlrpc/xmlrpc_lib/xmlrpc.inc.php on line 3017

    Voici la fonction faite en relation avec ta réponse.
    Une idée.

    merci


    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
        Public function odooSearch1($attribute, $operator, $keys, $relation, $string = 'string', $attribute1, $operator1, $keys1) {
    
          $client = new xmlrpc_client($this->server_url . "/xmlrpc/object");
          $client->setSSLVerifyPeer(0);
    
          $domain_filter = array (
                                  new xmlrpcval(
                                                array(
                                                      new xmlrpcval($attribute , "string"),
                                                      new xmlrpcval($operator,"string"),
                                                      new xmlrpcval($keys, $string),
                                                      ),"array"
                                                ),
                                  array(new xmlrpcval($attribute1 , "string"),
                                        new xmlrpcval($operator1,"string"),
                                        new xmlrpcval($keys1, "int"),
                                      ),"array"
                                );
    
    
          $msg = new xmlrpcmsg('execute');
          $msg->addParam(new xmlrpcval($this->database, "string"));
          $msg->addParam(new xmlrpcval($this->id, "int"));
          $msg->addParam(new xmlrpcval($this->password, "string"));
          $msg->addParam(new xmlrpcval($relation, "string"));
          $msg->addParam(new xmlrpcval("search", "string"));
          $msg->addParam(new xmlrpcval($domain_filter, "array"));
    
          $response = $client->send($msg);
    
          $val = $response->value();
          $ids = $val->scalarval();
    
          return $this->traverse_structure($ids);
        }

Discussions similaires

  1. Différences entre les Web Services avec Apache CXF et Axis2
    Par olivier75000 dans le forum Services Web
    Réponses: 1
    Dernier message: 29/05/2014, 17h43
  2. Réponses: 0
    Dernier message: 01/02/2011, 11h24
  3. Projet sur les Web Services avec J2EE
    Par papus1984 dans le forum Services Web
    Réponses: 2
    Dernier message: 31/03/2007, 00h34
  4. [vb.net]Gestion des exceptions avec les web services
    Par mvr dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/12/2005, 22h41

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