s-belichenko/amocrm

Исправление в обработке Компаний неполное

Opened this issue · 5 comments

Помимо уже внесенных изменений, также необходимо в файле Company.php добавить следующие изменения:

    public $name;
    public $responsible_user_id;
    public $tags;
    **public $type;**
    public $linked_leads_id;
    public $custom_fields;

    private $tags_array;

    public function __construct()
    {
        $this->key_name = 'contacts';
        **$this->type = 'contact';**
        $this->url_name = 'company';
        $this->linked_leads_id = [];
        $this->custom_fields = [];
        $this->tags_array = [];
    }

Так как см. документацию: https://developers.amocrm.ru/rest_api/company_set.php
и см. скриншот: https://yadi.sk/i/VVPDpLWCqGRjg

Такой параметр почему-то требуется только при создании компаний, при создании остальных сущностей type нигде не встречается.

Также это ставит под сомнение необходимость использования данного свойства класса "public $type;" - единственное, где он встречается далее в коде класса это место:

    private function createPostRequest()
    {
        if (!is_array($this->params)) {
            $this->params = [$this->params];
        }

        $key_name = $this->params[0]->key_name;
        $url_name = $this->params[0]->url_name;
        $id = $this->params[0]->id;

        $action = (isset($id)) ? 'update' : 'add';
        $params = [];
        $params['request'][$key_name][$action] = $this->params;

        $this->post = true;
        **$this->type = $key_name;**
        $this->action = $action;
        $this->url = 'v2/json/'.$url_name.'/set';
        $this->params = $params;
    }

И далее в классе Handler оно не используется, насколько я могу судить.

Так как см. документацию: https://developers.amocrm.ru/rest_api/company_set.php
и см. скриншот: https://yadi.sk/i/VVPDpLWCqGRjg

Такой параметр почему-то требуется только при создании компаний, при создании остальных сущностей type нигде не встречается.

Скорее всего опечатка. Этот параметр "type", есть только в примере, но не описан в таблице Parameters. К тому же компании отлично создаются и без него. Я проверял.

Также это ставит под сомнение необходимость использования данного свойства класса "public $type;" - единственное, где он встречается далее в коде класса это место:

Это свойство не Entity, а Request, и используется в Handler для получения ID последней добавленной записи (строка 115 в Handler.php)

Хм, оставлял тут сообщение, но видимо не отправилось. В общем:

Это свойство не Entity, а Request, и используется в Handler для получения ID последней добавленной записи (строка 115 в Handler.php)

Понятно.

Скорее всего опечатка. Этот параметр "type", есть только в примере, но не описан в таблице Parameters. К тому же компании отлично создаются и без него. Я проверял.

Есть тонкость. Компания также создается, когда ее просто указываешь с помощью public function setCompanyName($value) из Contact.php. Возможно, ошибка была в этом. По крайней мере, у меня компания начала создаваться и заполняться кастомными полями, что важно, только после исправлений, которые я указал выше.

Еще не проверяли мое предположение? Не хочется форкать только ради этого исправления.

Станислав, как и тут - #12

Хорошо, там уже сделал, тут сейчас тоже сделаю. Я в следующие разы тогда напрямую буду делать пул реквесты, если только не спорное что-то, так как что-то еще вроде было бы.