spejder/odoo-client

Odoo的PHP客户端

v1.0.51 2024-09-12 04:01 UTC

README

OdooClient是一个PHP版的Odoo客户端。它受到simbigo的OpenERP API的启发,并使用了类似的API。它依赖于Laminas(前称Zend Framework)中的XML-RPC和XML库,而不是自己的XML-RPC客户端。

ℹ️ 这是对不活跃的jacobsteringa/odoo-client的分支。已更新依赖项并将代码风格现代化为PSR-12。实际代码归功于@jacobsteringa ❤️

支持的版本

此库应与Odoo 8和9兼容。如果您发现任何不兼容性,请创建一个问题或提交一个pull请求。

已知问题

  • 版本0.2.2及以下中的Odoo::getReport()方法与Odoo 9不兼容。

用法

实例化一个新的客户端。

use Spejder\Odoo\Odoo;

$url = 'example.odoo.com/xmlrpc/2';
$database = 'example-database';
$user = 'user@email.com';
$password = 'yourpassword';

$client = new Odoo($url, $database, $user, $password);

为了客户端能够工作,您必须包含URL中的/xmlrpc/2部分。

当您需要调整XML-RPC客户端使用的HTTP客户端时,您可以通过构造函数或Odoo::setHttpClient方法注入自定义HTTP客户端。

use Spejder\Odoo\Odoo;
use Laminas\Http\Client as HttpClient;

$httpClient = new HttpClient(null, [
    'sslverifypeer' => false,
]);

// constructor argument
$client = new Odoo($url, $database, $user, $password, $httpClient);

// or setter
$client = new Odoo($url, $database, $user, $password);
$client->setHttpClient($httpClient);

xmlrpc/2/common端点

获取版本信息。

$client->version();

获取时区信息。

$client->timezone();

没有登录/认证方法。客户端为您进行认证,因此凭据作为构造函数参数传递。

xmlrpc/2/object端点

搜索记录。

$criteria = [
  ['customer', '=', true],
];
$limit = 10;
$offset = 0;

$client->search('res.partner', $criteria, $offset, $limit);

读取记录。

$ids = $client->search('res.partner', [['customer', '=', true]], 0, 10);

$fields = ['name', 'email', 'customer'];

$customers = $client->read('res.partner', $ids, $fields);

创建记录。

$data = [
  'name' => 'John Doe',
  'email' => 'foo@bar.com',
];

$id = $client->create('res.partner', $data);

更新记录。

// change email address of user with current email address foo@bar.com
$ids = $client->search('res.partner', [['email', '=', 'foo@bar.com']], 0, 1);

$client->write('res.partner', $ids, ['email' => 'baz@quux.com']);

// 'uncustomer' the first 10 customers
$ids = $client->search('res.partner', [['customer', '=', true]], 0, 10);

$client->write('res.partner', $ids, ['customer' => false]);

删除记录。

$ids = $client->search('res.partner', [['email', '=', 'baz@quuz.com']], 0, 1);

$client->unlink('res.partner', $ids);

以base64格式获取报告。

$ids = $client->search('res.partner', [['customer', '=', true]], 0, 10);

$report = $client->getReport('res.partner', $ids);

许可证

MIT许可证。版权所有(c)2014 Jacob Steringa。