quantum3k/erply-sdk

Erply SDK 库

v2.0.0 2024-01-24 12:21 UTC

README

1. 结构

命名空间

  • \ErplySDK API 的入口点
  • \ErplySDK\DTO 主要 Erply API 的数据对象
  • \ErplySDK\PIM Erply PIM 的数据对象 (🛠️ 未完成)
  • \ErplySDK\Reports Reports API 的数据对象 (🛠️ 未完成)
  • \ErplySDK\Bulks 用于处理主要 API 的批量操作的类
  • \ErplySDK\Collections 用于处理 DTO 集合的类

2. 使用

创建连接

$api = \ErplyAPI::getInstanceWithCredentials($code, $username, $password);
$api->setThrow(false);
$api->setRecordsOnPage(40);

基本连接参数

如何向对象中添加嵌套元素

use ErplyAPI;

$doc = new DTO\SaleDocument();

$row = $doc->addRow();
$row->rowID = 100;
$row->code = 2048;

$row = $doc->addRow();
$row->rowID = 200;
$row->code = 4096;

保存

$api->saveSalesDocument($doc);

获取

$response = $api->getSalesDocuments(['clientIDs' => '128, 256, 512, 1024']);

当响应中的对象由 \ErplySDK\Collections 集合实现时,可以使用标准的 PHP 迭代方法来迭代此对象,连接将自动请求所有后续页面,直到遍历请求中的所有记录

foreach ($response as $record) {
    echo "Client {$record->clientName}, with email: {$record->clientEmail}" . PHP_EOL;
}

3. 用户查询

连接实例有两个方法可以直接使用当前连接向服务器发送请求。此类请求的响应始终是非类型化的,即关联数组。

// Стандартный запрос
$response = $api->stdRequest($params);  
// Пакетный запрос
$response = $api->bulkRequest($params);

对于 Erply 的标准请求,期望请求名称参数为 request,而对于批量请求,期望请求名称参数为 requestName,为此,连接有两个常量,应作为请求名称键使用 STD_REQBULK_REQ

标准用户查询

此类查询将获得非类型化响应,即关联数组。

$response = $api->stdRequest([$api::STD_REQ => 'getCustomers', 'searchName' => 'John']);

批量用户查询

也可以发送批量查询。此类查询将获得非类型化响应,即关联数组。

$response = $api->bulkRequest([
    [$api::BULK_REQ => 'getCustomers', 'searchPersonFirstName' => 'John'],
    [$api::BULK_REQ => 'getVatRates'],
    [$api::BULK_REQ => 'getEmployees'],
]);

批量用户查询 (类型化)

也可以从批量用户查询中获得类型化响应。在这种情况下,所有已知的嵌套查询将被初始化为集合。

$response = $api->getBulkResponse([
    [$api::BULK_REQ => 'getCustomers', 'searchPersonFirstName' => 'John'],
    [$api::BULK_REQ => 'getVatRates'],
    [$api::BULK_REQ => 'getEmployees'],
]);
$collections = $response->getRequests();

⚠️ 目前,通过用户批量查询获得集合不允许迭代记录。

4. 其他

直接调用来自 BaseEntityCollection 抽象的所有子类的方法 current()getRecords(),是为了让子类定义具体的返回类型。

5. 路线图

  • 在所有实体中实现属性作为单独的集合。
  • 实现通过类型化用户批量查询获得的记录迭代。