ktscript / moysklad

PHP SDK MoySklad API 1.2 AddOn

v1.2.0 2024-07-23 11:34 UTC

This package is auto-updated.

Last update: 2024-09-23 12:01:15 UTC


README

引言

该库旨在方便地使用Moysklad API Remap版本1.2。它包含一组函数,允许对实体进行基本操作(创建、读取、修改、删除)。

安装

  • composer require ktscript/moysklad
  • composer dump-autoload

工作示例

1. 开始

主要类,用于通过SDK进行操作:MoySklad\ApiClient

为了开始工作,需要创建该类的实例,并在构造函数中传入以下字段

  • API主机地址(online.moysklad.ru
  • 强制使用https连接
  • 用户名格式[用户名]@[公司名称]和密码或用于访问API的token
use MoySklad\ApiClient;

$api = new ApiClient('host', true, [
    'login' => 'your_login',
    'password' => 'your_password',
]);

2. 实体操作

2.1. 获取实体

要访问单个实体的端点,请使用方法ApiClient->entity(),它返回实体的基础客户端。此对象允许您获取用于操作特定实体的客户端。例如,要获取所有合作伙伴或单个合作伙伴,只需执行以下代码即可

$counterpartyList = $api->entity()->counterparty()->getList();
$counterparty = $api->entity()->counterparty()->get('id');

可能的筛选器

  • EntityFilter - 实体筛选器,可以分配给多个字段
  • Limit - 分页限制,最大值为1000
  • Offset - 显示开始的起始位置
  • Order - 排序,可以分配给多个字段
  • Search - 搜索筛选器,仅接受一个值
  • StandardFilter - 标准筛选器字段|值,可以分配给多个字段 筛选器操作
use MoySklad\Util\Param\Limit;
use MoySklad\Util\Param\Offset;
use MoySklad\Util\Param\Order;
use MoySklad\Util\Param\Search;
use MoySklad\Util\Param\EntityFilter;
use MoySklad\Util\Param\StandardFilter;

$params = [
    Limit::eq(50),
    Offset::eq(10),
    Order::asc('name'),
    Order::desc('date'),
    Search::eq('some interesting thing'),
    EntityFilter::eq('product', $product),
    EntityFilter::neq('pricetype', $pricetype),
    StandardFilter::eq('region_id', $regionId),
    StandardFilter::gte('created', $createdDate),
    StandardFilter::like('name', 'ame'),
];

$counterpartyList = $api->entity()->counterparty()->getList($params);

将筛选器数组作为参数传递给实体客户端的方法调用,在可能的情况下。

2.2. 创建实体

要向API发送创建实体的请求,只需创建一个类实例,填写必要的字段,然后使用相应客户端调用create()方法,并将创建的对象作为参数传递即可

$product = new Product();
$product->name = 'Новый продукт';

$product = $api->entity()->product()->create($product);

代码执行后,如果创建成功,将返回一个product对象,其中包含从API响应中获取的字段(id、href等)。

2.3. 修改实体

要修改已创建的实体,请使用实体客户端的editById()editByEntity()方法

$product->name = 'new name';
$product = $api->entity()->product()->update($product);

2.4. 嵌套实体

使用实体客户端的特殊方法操作嵌套实体。例如,获取账户或账户合作伙伴的方法

$counterpartyAccountsList = $api->entity()->counterparty()->getAccountsList('counterparty_id');

$counterpartyAccount = $api->entity()->counterparty()->getAccount('counterparty_id', 'account_id');

其他方法的操作完全相同。

某些实体具有属性 - 嵌套实体(例如,合作伙伴有完整的地址)。这些嵌套实体(例如,完整地址)在API响应中仅填充元数据,要填充其主要属性,需要调用fetch()方法

$counterparty = $api->entity()->counterparty()->get('id');
$addressCity = $counterparty->legalAddressFull->city; // null

$counterparty->legalAddressFull->fetch();
$addressCity = $counterparty->legalAddressFull->city; // название города

每个实体都有fetch()方法,它也可以用于简单地更新实体。

进一步了解

有关可用方法和实体的列表,以及API操作的限制,可以在Moysklad API 1.2 文档中找到

变更列表

2022-09-08: 添加了与供应商订单(purchaseorder)一起工作的功能,示例工作

$api->entity()->purchaseorder()->getList([StandardFilter::eq('name', 'my_name')]);

2022-09-20: 添加了获取单个选项的功能,方法first()示例工作

$api->entity()->purchaseorder()->first(); //берет первый из возвращаемого списка 
$api->entity()->purchaseorder()->first('name', 'my_name'); //берет первый из фильтрованного возвращаемого списка 

其中name是选择依据的字段,可以指定任何所需的字段(code、id等)

- 替换了供应商订单部分请求的访问方式,productEnter()被替换为enter(),以便逻辑与Moysklad文档相同

2022-09-24: - 解决了jms异常在空字段上的触发问题。

2022-09-25: 添加了fill()方法,示例工作

$productSupply = new ProductSupply();
$productSupply->fill([
    'name' => 'my_name',
    'organization' => $organization,
    'store' => $store,
    'agent' => $counterparty,
    'positions' => $positionsList,
]);

2022-09-26: 添加了供应(接收)实体,示例工作

$supply = $api->entity()->supply()->create($productSupply);

2023-05-14: 添加了端点

2023-12-20: 更新了API

2024-04-26: 添加了需求(发货)实体,示例工作

$demand = $api->entity()->demand()->create($customerOrder);

2024-06-25: 更新了API的授权部分

2024-07-17: 添加了处理、处理材料、处理计划、处理计划文件夹、处理计划材料、处理计划产品、处理计划阶段、处理流程、生产任务、生产任务位置、生产任务产品以及用于处理它们的客户端

2024-07-17: 改进了序列化器

2024-07-23: 添加了处理订单、处理订单位置以及用于处理它们的客户端