2017 © Pedro Peláez
 

library moysklad

Get it here: https://github.com/Tooyz/moysklad

image

tooyz/moysklad

Get it here: https://github.com/Tooyz/moysklad

  • Saturday, July 21, 2018
  • by Tooyz
  • Repository
  • 6 Watchers
  • 27 Stars
  • 575 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 13 Forks
  • 2 Open issues
  • 30 Versions
  • 23 % Grown

The README.md

Moysklad PHP

SensioLabsInsight, (*1)

Библиотека для сервиса "Мой склад" JSON API 1.1. Некоторые примеры можно найти в "tests". Все ещё далека от завершения., (*2)

Установка

composer require tooyz/moysklad

Запуск тестов:
1) composer global require phpunit/phpunit
2) cd tests
3) composer update
4) Отредактировать Config.php
5) phpunit --configuration="./phpunit.xml" ИЛИ npm run test, (*3)

Класс MoySklad

Используется для авторизации, явно передается параметром в большинство компонентов т.к. возможно использование нескольких аккаунтов моегосклада одновременно., (*4)

$sklad = MoySklad::getInstance($login, $password);, (*5)

Сущности

Основной объект библиотеки, (*6)

$product = new Product($sklad, [
    "name" => "Банан"
]);

Можно, например, сделать так, (*7)

$product = new Product($sklad, [
    "id" => "12345-654321-123456-54321",
    "name" => "Банан"
]);
$product->fresh(Expand::create(['country']));

Или так, (*8)

$product->transformToClass(Counterparty::class);, (*9)

Или не сделать. Большая часть логики делегирована другим классам., (*10)

Получение сущностей

Получение всех сущностей:, (*11)

$list = Product::query($sklad)->getList();, (*12)

Можно добавить параметры запроса. Описание параметров в описании класса QuerySpecs., (*13)

$list = Product::query($sklad, QuerySpecs::create([
    "offset" => 15, 
    "maxResults" => 50,
]))->getList();

Фильтрация. Описание методов FilterQuery в комментариях., (*14)

$filteredList = Product::query($sklad)->filter(
    (new FilterQuery())
        ->eq("article", 12345)
);

Поиск по строке. К Query-объекту можно прицепить expand для получения связей с указанными названиями, (*15)

$searchedList = Product::query($sklad)->withExpand(Expand::create(['owner']))->search("трусы");, (*16)

Функции выше возвращают объект EntityList., (*17)

Получение по id., (*18)

$product = Product::query($sklad)->byId("12345-654321-123456-54321");, (*19)

Создание, обновление

$counterparty = (new Counterparty($sklad, [
    "name" => "Васян"
]))->create();

Некоторым сущностям нужно указать связи при создании. Например для customerorder нужно указание counterparty и organization, и опционально массив позиций, (*20)

$order = (new CustomerOrder($this->sklad))->buildCreation()
    ->addCounterparty($counterparty)
    ->addOrganization($organization)
    ->addPositionList($positions)
    ->execute();

Для обновления то-же самое, (*21)

$product->buildUpdate()->addCountry($country)->execute();, (*22)

Удаление

$product->delete();, (*23)

Связи

Чаще всего сущность полученная через api имеет какие-то связи, (*24)

$product->relations;, (*25)

Зная что, к примеру, у продукта есть связанный employee, но не зная название этого поля можно получить его так, (*26)

$employee = $product->relations->find(Employee::class), (*27)

Так как связи обычно приходят в формате meta-объекта для получения полного объекта можно сделать так, (*28)

$group = $product->relations->group->fresh(), (*29)

А если связь - массив объектов типо такого, то на нем можно сделать операции описанные в разделе "Получение сущностей", (*30)

$products = $order->relationListQuery("positions")->getList(), (*31)

Список сущностей

EntityList - обертка для массива для работы с апи, (*32)

Например получение assortment и превращение элементов в нужный тип, (*33)

$differentProductsAndStuff = Assortment::query($sklad)->getList()->transformItemsToMetaClass();, (*34)

Или массовое создание сущностей, (*35)

$neko = new Product($sklad, ["name" => "Кот"]);
$doge = new Product($sklad, ["name" => "Пёс"]);
$el = new EntityList($sklad, [$neko, $doge])->each(function($e) use($vasyan){
    $e->buildCreation()->addEmployee($vasyan);
})->massCreate();

Можно превратить в массив, (*36)

$el->toArray();, (*37)

Работа с картинками

Прицепление изображений к сущности, (*38)

$product->attachImage(ImageField::createFromUrl(
    "http://url.ru/img.jpg"
));

или, (*39)

$product->attachImage(ImageField::createFromPath(
    "images/123.jpg",
    "renamed_image.jpg"
));

Скачивание изображения, (*40)

$product->image->download('/usr/images/cat.jpg', 'normal');
/* normal, miniature, tiny - размеры изображений */

Specs

Классы для конфигурации различных действий, (*41)

    <SpecsClass>::create(["field"=>"value"]);

В метод create передаются поля конфигурации, (*42)

LinkingSpecs используется для описания связывания сущности и других сущностей учавствующих в обновлении/создании первой, (*43)

Имеет следующие поля:, (*44)

name - имя, которое получит новая связь. Если не указано - будет использоваться имя сущности в моемскладе, (*45)

multiple - связь будет массивом сущностей, то есть можно указать несколько связей с одинаковым именем, (*46)

fields - взять только указанные поля для создания связи, (*47)

excludedFields - взять все поля, кроме указанных, (*48)

Пример добавления доп. поля к контрагенту, (*49)

$specs = LinkingSpecs::create([
                 "name" => "attributes", //в апи доп поля хранятся в поле attributes
                 "multiple" => true //и являются массивом
             ]);
$counterparty = $counterparty->buildUpdate()
    ->addAttribute($attribute, $specs)
    ->addAttribute($attribute2, $specs)
    ->execute();

QuerySpecs конфигурация EntityQuery и RelationQuery объектов, (*50)

Поля:, (*51)

limit - количество результатов в одном отправляемом запросе (100 по умолчанию), (*52)

offset - сдвиг результатов, (*53)

maxResults - максимальное возвращаемое количество результатов, (*54)

expand - возможность получить результат с указанными связями (Expand объект), (*55)

updatedFrom - объекты, момент обновления которых меньше или равен значению, указанному в параметре (CommonDate объект), (*56)

updatedTo - объекты, момент обновления которых меньше или равен значению, указанному в параметре (CommonDate объект), (*57)

updatedBy - В выборку попадут все объекты, автором последних изменений которых является пользователь с uid, указанным в значении параметра., (*58)

Product::query($sklad, QuerySpecs::create([
            'maxResults' => 25,
            'expand' => Expand::create([Employee::$entityName]),
            'updatedFrom' => new CommonDate("2017-01-01"),
            'updatedBy' => "admin@admin"
        ]))->getList();

Публикации

Документные сущности поддерживают публикации, (*59)

Получение, (*60)

$publications = $customerOrder->getPublications(QuerySpecs::create())

Создание, (*61)

$publication = $customerOrder->createPublication($customTemplate)

Удаление, (*62)

$customerOrder->deletePublication($publication)

Получение публикации по id, (*63)

$publication = $customerOrder->getPublicationById("123-456")

Печать документов

Документные сущности поддерживают печать, (*64)

Создание, (*65)

При создании запроса на печать можно передать либо AbstractTemplate либо EntityList<AbstractTemplate>, (*66)

$export = $demand->createExport($templateEntity, 'xls');
$exports = $demand->createExport($templateList);

Получение стандартных шаблонов, (*67)

$templates = $demand->getExportEmbeddedTemplates();

Получение пользовательских шаблонов, (*68)

$templates = $demand->getExportCustomTemplates();

Получение стандартного шаблона по id, (*69)

$templates = $demand->getExportEmbeddedTemplateById(123);

Получение пользовательского шаблона по id, (*70)

$templates = $demand->getExportCustomTemplateById(123);

Отчеты

Содержат статические методы для получения отчетов., (*71)

$report = DashboardReport::day($sklad);

Некоторым можно указать особые поисковые запросы типо CounterpartyReportQuerySpecs, (*72)

$report = SalesReport::byEmployee($sklad, SalesReportQuerySpecs::create([
    "counterparty.id" => $cpId
]));

Аудит

История событий системы, (*73)

Получить последние 5 контекстов по заказам покупателей, (*74)

$audits = Audit::query($this->sklad, QuerySpecs::create([
                  'maxResults' => 5
              ]))->filter((new FilterQuery())
                             ->eq("entityType", "customerorder")
                          );

Получить события по контексту, (*75)

$events = $audit->getAuditEvents();

Получить события по сущности, (*76)

$events = $customerOrder->getAuditEvents();

Получить список фильтров, (*77)

$filters = Audit::getFilters($this->sklad);

Отладка

Статический класс RequestLog содержит ограниченную историю запросов/ответов в апи., (*78)

Можно получить последний запрос/ответ, (*79)

RequestLog::getLast()

Или все, (*80)

RequestLog::getList()

По умолчанию для ограничения потребления памяти хранится 50 последних запросов, по достижению лимита старые запросы удаляются. Изменить лимит можно так:, (*81)

RequestLog::setStorageSize(500); // 500 запросов
RequestLog::setStorageSize(0); //Без лимита

Для остановки логирования можно вызвать, (*82)

RequestLog::setEnabled(false);

Другие библиотеки

  • Ruby https://github.com/dapi/moysklad
  • JavaScript/nodejs https://github.com/wmakeev/moysklad-client

The Versions

21/07 2018

dev-master

9999999-dev

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

21/07 2018

0.4.6

0.4.6.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

20/07 2018

0.4.5

0.4.5.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

28/06 2018

0.4.4

0.4.4.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

01/06 2018

0.4.3

0.4.3.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

16/03 2018

0.4.2

0.4.2.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

09/03 2018

0.4.1

0.4.1.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

08/03 2018

0.4

0.4.0.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

08/03 2018

0.3.15

0.3.15.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

14/02 2018

0.3.14

0.3.14.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

12/02 2018

dev-refactor

dev-refactor

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

12/02 2018

0.3.13

0.3.13.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

06/02 2018

0.3.12

0.3.12.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

15/12 2017

0.3.11

0.3.11.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

27/11 2017

0.3.10

0.3.10.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

13/11 2017

0.3.9

0.3.9.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

28/10 2017

0.3.8

0.3.8.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

04/10 2017

0.3.7

0.3.7.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

20/08 2017

0.3.6

0.3.6.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

10/08 2017

0.3.5

0.3.5.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

28/07 2017

0.3.4

0.3.4.0

Get it here: https://github.com/Tooyz/moysklad

  Sources   Download

MIT

The Requires

 

by Avatar Tooyz

28/07 2017

0.3.3

0.3.3.0

  Sources   Download

The Requires

 

by Avatar Tooyz

20/07 2017

0.3.2

0.3.2.0

  Sources   Download

The Requires

 

by Avatar Tooyz

15/06 2017

0.3.1

0.3.1.0

  Sources   Download

The Requires

 

by Avatar Tooyz

15/06 2017

0.3

0.3.0.0

  Sources   Download

The Requires

 

by Avatar Tooyz

05/06 2017

0.2.3

0.2.3.0

  Sources   Download

The Requires

 

by Avatar Tooyz

10/04 2017

0.2.2

0.2.2.0

  Sources   Download

The Requires

 

by Avatar Tooyz

18/03 2017

0.2.1

0.2.1.0

  Sources   Download

The Requires

 

by Avatar Tooyz

07/03 2017

0.2

0.2.0.0

  Sources   Download

The Requires

 

by Avatar Tooyz

31/01 2017

v0.1

0.1.0.0

  Sources   Download

The Requires

 

by Avatar Tooyz