PHP code example of consilience / laravel-odoo-api-client
1. Go to this page and download the library: Download consilience/laravel-odoo-api-client library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
consilience / laravel-odoo-api-client example snippets
// This facade is auto-discovered for Laravel 5.6+
use OdooApi;
// The default config.
// getClient() will take other configuration names.
$client = OdooApi::getClient();
// Note the criteria is a nested list of scalar values.
// The datatypes will converted to the appropriate objects internally.
// You can mix scalars and objects here to force the datatype, for example
// ['name', $client->stringValue('ilike'), 'mich']
$criteria = [
['name', 'ilike', 'mich'],
];
// First 10 matching IDs
$client->search('res.partner', $criteria, 0, 10, 'id desc')->value()->me['array']
// Total count for the criteria.
$client->searchCount('res.partner', $criteria);
// Read the complete details of two specific partners.
$client->read('res.partner', [17858, 17852])->value()->me['array']
$invoiceIds = ... // array or collection of resource IDs for the invoices to link
$response = $client->write(
'res.partner',
$partnerResourceId,
[
'invoice_ids' => $client->relationReplaceAllLinks($invoiceIds),
// other optional fields and relations can be set here as nornmal
]
);
// Relate a resource.
$client->relationCreate(array $resourceIds)
// Update a related resource.
// e.g. change the product on an invoice line for an invoice
relationUpdate(int $resourceId, array $values)
// Delete a related resource completely.
// e.g. delete an invoice line on an invoice
relationDelete(int $resourceId)
// Remove the relation to a related resource, but leave the resource intact.
// e.g. remove an invoice from a contact so it can be adde to a new contact
relationRemoveLink(int $resourceId)
// Add a resource to a relation, leaving existing relations intact.
// e.g. add an additional line to an invoice.
relationAddLink(int $resourceId)
// Remove all relations to a resource type.
// e.g. remove all invoices from a contact, before the contatc can is deleted.
relationRemoveAllLinks()
// Replace all relations with a new set of relations.
// e.g. remove all invoices from contact, and give them a new bunch of invoices
// to be responsible for.
relationReplaceAllLinks(iterable $resourceIds)
use OdooApi;
$client = OdooApi::getClient();
// Resource and action, the remote RPC function.
// Note that the message_post() function for each resource type is
// different, i.e. this is not something that can be genereralised
// in the API.
// This starts to build the request message and addes the first
// few positional parameters and authentication details.
$msg = $client->getBaseObjectRequest('sale.order', 'message_post');
// Further positional parameters.
// This is for an Odoo 7.0 installation. Other versions may differ.
$msg->addParam($client->nativeToValue([$orderId])); // Resource(s) ID
$msg->addParam($client->nativeToValue($text_message)); // Body
$msg->addParam($client->nativeToValue(false)); // Subject
$msg->addParam($client->nativeToValue('comment')); // Subtype
$msg->addParam($client->nativeToValue(false)); // Partner IDs to send a copy to
// Send the message.
$response = $client->getXmlRpcClient('object')->send($msg);
// If you want to inspect the result, then this will give you
// what the Odoo message_post() function returns.
$result = $client->valueToNative($response->value());
// Load one or more partners.
$loadResult = $client->load('res.partner', [
[
"name" => "JJ Test",
"active" => "TRUE",
"type" => "developer",
"id" => "external.partner_12345",
],
// Further records for this model...
]);
// Example response with no errors and two resources updated or created.
array:2 [
"ids" => Collection {
#items: array:2 [
0 => 7252
1 => 7251
]
}
"messages" => Collection {
#items: []
}
]
// Example with oen validation error.
// Note no records are loaded at all if any record fails validation.
array:2 [
"ids" => Collection {
#items: []
}
"messages" => Collection {
#items: array:1 [
0 => array:5 [
"field" => "year"
"rows" => array:2 [
"to" => 1
"from" => 1
]
"record" => 1
"message" => "'2019x' does not seem to be an integer for field 'My Year'"
"type" => "error"
]
]
}
]
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.