Utilisation de JSON-RPC en JavaScript dans un Module Odoo

Utilisation de JSON-RPC en JavaScript dans un Module Odoo

Odoo, un système ERP open source, offre une flexibilité considérable pour personnaliser et étendre ses fonctionnalités. L'une des manières de communiquer avec Odoo est via JSON-RPC (Remote Procedure Call), un protocole léger qui permet d'appeler des fonctions distantes. Dans cet article, nous allons explorer comment utiliser JSON-RPC en JavaScript dans le contexte d'un module Odoo.

Prérequis

Avant de commencer, assurez-vous d'avoir un environnement de développement Odoo configuré et un module en cours de développement.

Étape 1 : Configuration de JSON-RPC

Pour commencer, vous devez connaître l'URL JSON-RPC de votre instance Odoo. Elle ressemble généralement à quelque chose comme http://localhost:8069/jsonrpc.

Étape 2 : Utilisation de Fetch API

JavaScript moderne utilise généralement l'API Fetch pour effectuer des requêtes HTTP. Créez une fonction pour encapsuler la logique de la requête JSON-RPC :

async function callJsonRpc(method, params = {}) {
    const url = 'http://localhost:8069/jsonrpc';

    const response = await fetch(url, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({
            jsonrpc: '2.0',
            method: method,
            params: params,
            id: 1,
        }),
    });

    const data = await response.json();

    if (data.error) {
        console.error('Error:', data.error);
        throw new Error('JSON-RPC request failed');
    }

    return data.result;
}

Cette fonction encapsule la logique de base pour effectuer des requêtes JSON-RPC à l'instance Odoo.

Étape 3 : Appel de Fonctions Odoo

Utilisons maintenant notre fonction callJsonRpc pour appeler une fonction spécifique d'Odoo. Supposons que vous souhaitiez appeler la fonction search du modèle res.partner. Vous pouvez le faire de la manière suivante :

async function searchPartners() {
    try {
        const result = await callJsonRpc('execute_kw', {
            model: 'res.partner',
            method: 'search',
            args: [[]],
            kwargs: {},
        });

        console.log('Partners:', result);
    } catch (error) {
        console.error('Error:', error.message);
    }
}

// Appel de la fonction
searchPartners();

Conclusion

En utilisant JSON-RPC en JavaScript dans un module Odoo, vous pouvez étendre les fonctionnalités d'Odoo en effectuant des appels distants de manière simple et efficace. Assurez-vous de personnaliser les exemples en fonction de vos besoins spécifiques.

Cet article offre un aperçu de base pour vous aider à démarrer, mais n'hésitez pas à consulter la documentation officielle d'Odoo et de JSON-RPC pour des fonctionnalités plus avancées et des détails spécifiques à votre cas d'utilisation.l