NAV
Python PHP

Introduzione

Benvenuto nella documentazione delle API di Donodoo!

Puoi utilizzare queste API per interagire con il tuo database in base alle regole di accesso del tuo utente.

Librerie

Per installare la libreria

$ pip install OdooRPC
$ composer install odoo-rpc-client

Donodoo, come Odoo, espone delle API basate sui protocolli XMLRPC oppure JSONRPC. È possibile dialogare con le API tramite il meccanismo essenziale esposto nella documentazione ufficiale di Odoo anche se noi raccomandiamo di utilizzare delle librerie specifiche per semplificare l’interfacciamento.

Attualmente le librerie raccomandate e utilizzate in questa documentazione sono

Autenticazione

Per effettuare il login, questo è il codice:

import odoorpc

odoo = odoorpc.ODOO(host, port)

odoo.login(database, username, password)

user = odoo.env.user
print(user.name)            # name of the user connected
print(user.company_id.name) # the name of its company
use OdooRPCClient\Client;

$odoo = new Client($url);

$odoo->login($database, $username, $password);

$user = $odoo->env->user;

echo "{$user->name}\n";
echo "{$user->company_id->name}\n";

Prima di effettuare qualsiasi operazione tramite le API è necessario autenticarsi. Il tipo di operazioni che possono essere svolte dipendono dai permessi dell’utente utilizzato.

Login

login(database, username, password)

CRUD

Creazione

Creazione di un oggetto

vals = {
    'firstname': 'Mario',
    'lastname': 'Rossi',
    'email': 'mario@rossi.it'
}

odoo.env['ngo.donor'].create(vals)
$vals = [
    'firstname' => 'Mario',
    'lastname' => 'Rossi',
    'email' => 'mario@rossi.it'
]

$odoo->env['ngo.donor']->create(vals)

Risposta

12345 # Id della risorsa creata
12345 # Id della risorsa creata

Per creare un oggetto si utilizza il metodo create legato a tutte le risorse Donodoo. Come parametro un dizionario con i valori dell’oggetto da creare.

create(values)

Lettura

Lettura di uno o piu’ oggetti

donor_id = odoo.env['ngo.donor'].browse(12345)

print(donor_id.name)

donor_ids = odoo.env['ngo.donor'].browse([12345, 12346, 12347])

for donor_id in donor_ids:
    print(donor_id.name)
$donor_id = $odoo->env['ngo.donor']->browse(12345);

echo "{$donor_id->name}\n";

$donor_ids = $odoo->env['ngo.donor']->browse([12345, 12346, 12347]);

foreach($donor_ids as $donor_id) {
    echo "{$donor_id->name}\n";
}

Per leggere i dati relativi ad un oggetto (o a piu’ oggetti) partendo dai loro id e’ possibile usare il metodo browse

browse(id|ids)

Ricerca

Ricerca di oggetti

ids = odoo.env['ngo.donor'].search([
    ('email', 'like','gmail.com')
])

print(ids)
$ids = $odoo->env['ngo.donor']->search([
    ['email','like','gmail.com']
])

print_r(ids)

Risposta

# lista di _id_ relativi alla ricerca
[
    12345,
    12346,
    12347
]

E’ possibile effettuare ricerche su un determato insieme di oggetti per farlo si ricorre al metodo search

search(domain, limit, offset)

Ricerca e lettura

Ricerca e lettura di oggetti

ids = odoo.env['ngo.donor'].search_read([
    ('email', 'like','gmail.com')
], ['name', 'email'])

print(ids)
$ids = $odoo->env['ngo.donor']->search_read([
    ['email','like','gmail.com']
], ['name', 'email'])

print_r(ids)

Risposta

# lista di _id_ relativi alla ricerca
[
    {
        'id': 12345,
        'name': 'Tizio',
        'email': 'tizio@gmail.com'
    },
    {
        'id': 12346,
        'name': 'Caio',
        'email': 'caio@gmail.com'
    },
    {
        'id': 12347,
        'name': 'Sempronio',
        'email': 'sempronio@gmail.com'
    },
]
# lista di _id_ relativi alla ricerca
[
    [
        'id' => 12345,
        'name' => 'Tizio',
        'email' => 'tizio@gmail.com'
    ],
    [
        'id' => 12346,
        'name' => 'Caio',
        'email' => 'caio@gmail.com'
    ],
    [
        'id' => 12347,
        'name' => 'Sempronio',
        'email' => 'sempronio@gmail.com'
    ],
]

E’ possibile effettuare ricerche su un determato insieme di oggetti e farse restituire direttamente il valore di alcuni campi per diminuire il numero di richieste nessarie. Per farlo si ricorre al metodo search_read

search_read(domain, fields, limit, offset)

Conteggio oggetti

Contare quanti utenti hanno una mail gmail.com

count = odoo.env['ngo.donor'].search_count([
    ('email', 'like','gmail.com')
])

print(count)
$count = $odoo->env['ngo.donor']->search_count([
    ['email','like','gmail.com']
])

print_r(icount)

Risposta

42 # Numero di ogggetti trovati relativi al _domain_ usato

E’ possibile contare quanti oggetti rispondono a determinati criteri di ricerca. Per farlo si ricorre al metodo search_count

search_count(domain)

Modifica

Modificare un oggetto

donor_id = odoo.env['ngo.donor'].browse(12345)

donor_id.write({
    'email': 'test@test.it',
    'phone': '0551234567s'
})
$donor_id = $odoo->env['ngo.donor']->browse(12345)
$donor_id->write([
    'email' => 'test@test.it',
    'phone' => '0551234567s'
])

E’ possibile modificare i dati relativi ad un oggetto utilizzando il metodo write

write(values)

Cancellazione

Eliminare definitivamente un oggetto

donor_id = odoo.env['ngo.donor'].browse(12345)
donor_id.unlink()
$donor_id = $odoo->env['ngo.donor']->browse(12345)
$donor_id->unlink()

E’ possibile eliminare un oggetto utilizzando il metodo unlink

Donatori

Lettura di un donatore

donor_id = odoo.env['ngo.donor'].browse(12345)
$donor_id = $odoo->env['ngo.donor']->browse(12345)

L’insieme degli oggetti donatori risponde alla risorsa ngo.donor

Deleghe

Lettura di un donatore

subscription_id = odoo.env['sale.subscription'].browse(12345)
$subscription_id = $odoo->env['sale.subscription']->browse(12345)

L’insieme degli oggetti deleghe risponde alla risorsa sale.subscription

Campagne

Lettura di una campagna

campaign_id = odoo.env['ngo.campaign'].browse(12345)
$campaign_id = $odoo->env['ngo.campaign']->browse(12345)

L’insieme degli oggetti campagna risponde alla risorsa ngo.campaign

campaign_id = odoo.env['ngo.campaign'].browse(12345)
campaign_id.open()
$campaign_id = $odoo->env['ngo.campaign']->browse(12345)
$campaign_id->open()

Apri campagna

open()

Sposta una campagna dallo stato Bozza allo stato Aperto. Se presenti donatori nella lista assiciata crea automaticamente le lavorazioni relative.

campaign_id = odoo.env['ngo.campaign'].browse(12345)
campaign_id.close()
$campaign_id = $odoo->env['ngo.campaign']->browse(12345)
$campaign_id->close()

Chiudi campagna

close()

Sposta una campagna dallo stato Aperto allo stato Chiuso. Se presenti Lavorazioni non ancora completate le annulla automaticamente.

campaign_id = odoo.env['ngo.campaign'].browse(12345)
campaign_id.add_donors_by_ids([123, 456, 789])
$campaign_id = $odoo->env['ngo.campaign']->browse(12345)
$campaign_id->add_donors_by_ids([123, 456, 789])

Aggiungi donatori

add_donors_by_ids(ids)

Aggiunge donotori alla lista legata alla campagna. Se non e’ presente la lista ne crea una di default. Se la campagna e’ in stato Aperto vengono automaticamente generate le lavorazioni.

Lavorazioni

Lettura di una lavorazione

job_id = odoo.env['ngo.job'].browse(12345)
$job_id = $odoo->env['ngo.job']->browse(12345)

L’insieme degli oggetti lavorazioni risponde alla risorsa ngo.job

Liste

Lettura di una lista

target_id = odoo.env['ngo.target'].browse(12345)
$target_id = $odoo->env['ngo.target']->browse(12345)

L’insieme degli oggetti liste risponde alla risorsa ngo.target

target_id = odoo.env['ngo.target'].browse(12345)
target_id.add_donors_by_ids([123, 456, 789])
$target_id = $odoo->env['ngo.target']->browse(12345)
$target_id->add_donors_by_ids([123, 456, 789])

Aggiungi donatori

add_donors_by_ids(ids)

Aggiunge donotori alla lista.

target_id = odoo.env['ngo.target'].browse(12345)
target_id.remove_donors_by_ids([123, 456, 789])
$target_id = $odoo->env['ngo.target']->browse(12345)
$target_id->remove_donors_by_ids([123, 456, 789])

Rimuovi donatori

remove_donors_by_ids(ids)

Rimuove donotori alla lista.

target_id = odoo.env['ngo.target'].browse(12345)
target_id.add_subscriptions_by_ids([123, 456, 789])
$target_id = $odoo->env['ngo.target']->browse(12345)
$target_id->add_subscriptions_by_ids([123, 456, 789])

Aggiungi deleghe

add_subscriptions_by_ids(ids)

Aggiunge deleghe alla lista.

target_id = odoo.env['ngo.target'].browse(12345)
target_id.remove_subscriptions_by_ids([123, 456, 789])
$target_id = $odoo->env['ngo.target']->browse(12345)
$target_id->remove_subscriptions_by_ids([123, 456, 789])

Rimuovi deleghe

remove_subscriptions_by_ids(ids)

Rimuove deleghe alla lista.