126 lines
4.0 KiB
PHP
126 lines
4.0 KiB
PHP
<?php
|
||
|
||
use AmoCRM\Filters\CatalogsFilter;
|
||
use AmoCRM\Collections\CustomFields\CustomFieldNestedCollection;
|
||
use AmoCRM\Exceptions\AmoCRMApiException;
|
||
use AmoCRM\Helpers\EntityTypesInterface;
|
||
use AmoCRM\Models\CatalogModel;
|
||
use AmoCRM\Models\CustomFields\CategoryCustomFieldModel;
|
||
use AmoCRM\Models\CustomFields\NestedModel;
|
||
use League\OAuth2\Client\Token\AccessTokenInterface;
|
||
|
||
include_once __DIR__ . '/bootstrap.php';
|
||
|
||
$accessToken = getToken();
|
||
|
||
$apiClient->setAccessToken($accessToken)
|
||
->setAccountBaseDomain($accessToken->getValues()['baseDomain'])
|
||
->onAccessTokenRefresh(
|
||
function (AccessTokenInterface $accessToken, string $baseDomain) {
|
||
saveToken(
|
||
[
|
||
'accessToken' => $accessToken->getToken(),
|
||
'refreshToken' => $accessToken->getRefreshToken(),
|
||
'expires' => $accessToken->getExpires(),
|
||
'baseDomain' => $baseDomain,
|
||
]
|
||
);
|
||
}
|
||
);
|
||
|
||
//Создадим каталог
|
||
//$catalogsCollection = new CatalogsCollection();
|
||
//$catalog = new CatalogModel();
|
||
//$catalog->setName('Новый список');
|
||
//$catalog->setCatalogType(EntityTypesInterface::DEFAULT_CATALOG_TYPE_STRING);
|
||
//$catalogsCollection->add($catalog);
|
||
//try {
|
||
// $apiClient->catalogs()->add($catalogsCollection);
|
||
//} catch (AmoCRMApiException $e) {
|
||
// printError($e);
|
||
// die;
|
||
//}
|
||
|
||
//Создадим каталог счетов
|
||
//$catalog = new CatalogModel();
|
||
//$catalog->setName('Новый список');
|
||
//$catalog->setCatalogType(EntityTypesInterface::INVOICES_CATALOG_TYPE_STRING);
|
||
//$catalog->setCanBeDeleted(false);
|
||
//
|
||
//try {
|
||
// $catalog = $apiClient->catalogs()->addOne($catalog);
|
||
//} catch (AmoCRMApiException $e) {
|
||
// printError($e);
|
||
// die;
|
||
//}
|
||
|
||
//Получим каталоги по типу
|
||
try {
|
||
$catalogsFilter = new CatalogsFilter();
|
||
$catalogsFilter->setType(EntityTypesInterface::INVOICES_CATALOG_TYPE_STRING);
|
||
$catalogsCollection = $apiClient->catalogs()->get($catalogsFilter);
|
||
} catch (AmoCRMApiException $e) {
|
||
printError($e);
|
||
die;
|
||
}
|
||
|
||
//Получим все каталоги
|
||
try {
|
||
$catalogsCollection = $apiClient->catalogs()->get();
|
||
} catch (AmoCRMApiException $e) {
|
||
printError($e);
|
||
die;
|
||
}
|
||
|
||
//Получим каталог по названию
|
||
$catalog = $catalogsCollection->getBy('name', 'Новый список');
|
||
//Установим сортировку и обновим каталог
|
||
if ($catalog instanceof CatalogModel) {
|
||
$catalog->setSort(100);
|
||
}
|
||
try {
|
||
$apiClient->catalogs()->updateOne($catalog);
|
||
} catch (AmoCRMApiException $e) {
|
||
printError($e);
|
||
}
|
||
|
||
// обновим поле типа категория с вложенными подкатегориями
|
||
// сразу укажем вложенность через временные метки request_id|parent_request_id
|
||
/** @noinspection PhpUnhandledExceptionInspection */
|
||
$cf = (new CategoryCustomFieldModel())
|
||
->setId(604229)
|
||
->setName('Поле Категория')
|
||
->setSort(1)
|
||
->setNested(
|
||
(new CustomFieldNestedCollection())
|
||
->add(
|
||
(new NestedModel())
|
||
->setValue('Категория 1')
|
||
->setSort(1)
|
||
->setRequestId('category1')
|
||
)
|
||
->add(
|
||
(new NestedModel())
|
||
->setValue('ПодКатегория 1')
|
||
->setSort(1)
|
||
->setRequestId('subcategory1')
|
||
->setParentRequestId('category1')
|
||
)
|
||
->add(
|
||
(new NestedModel())
|
||
->setValue('ПодПодКатегория 1')
|
||
->setSort(1)
|
||
->setParentRequestId('subcategory1')
|
||
)
|
||
);
|
||
|
||
try {
|
||
$cf = $apiClient
|
||
->customFields(EntityTypesInterface::CATALOGS . ':' . $catalog->getId())
|
||
->updateOne($cf);
|
||
|
||
echo json_encode($cf->toArray());
|
||
} catch (AmoCRMApiException $e) {
|
||
printError($e);
|
||
}
|