Skip to content

osetrov/retailcrm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RetailCRM API

API wrapper для RetailCRM API v5

Оглавление

  1. Установка
    1. Использование Rails
    2. Использование Ruby
    3. Debug Logging
    4. Custom logger
  2. Расходы
    1. Получение списка расходов, удовлетворяющих заданному фильтру
    2. Создание расхода
    3. Пакетное удаление расходов
    4. Пакетная загрузка расходов
    5. Получение информации о расходе
    6. Редактирование расхода
    7. Удаление расхода
  3. Пользовательские поля
    1. Получение списка пользовательских полей, удовлетворяющих заданному фильтру
    2. Получение списка справочников, удовлетворяющих заданному фильтру
    3. Создание справочника
    4. Получение информации о справочнике
    5. Редактирование справочика
    6. Создание пользовательского поля
    7. Получение информации о пользовательском поле
    8. Редактирование пользовательского поля
  4. Клиенты
    1. Получение списка клиентов, удовлетворяющих заданному фильтру
    2. Объединение клиентов
    3. Создание клиента
    4. Массовая запись внешних ID клиентов
    5. Получение истории изменения клиентов
    6. Получение заметок
    7. Создание заметки
    8. Удаление заметки
    9. Пакетная загрузка клиентов
    10. Получение информации о клиенте
    11. Редактирование клиента
  5. Корпоративные клиенты
    1. Получение списка корпоративных клиентов, удовлетворяющих заданному фильтру
    2. Объединение корпоративных клиентов
    3. Создание корпоративного клиента
    4. Массовая запись внешних ID корпоративных клиентов
    5. Получение истории изменения корпоративных клиентов
    6. Получение заметок
    7. Создание заметки
    8. Удаление заметки
    9. Пакетная загрузка корпоративных клиентов
    10. Получение информации о корпоративном клиенте
    11. Список адресов корпоративного клиента
    12. Создание адреса для корпоративного клиента
    13. Редактирование адреса корпоративного клиента
    14. Список компаний корпоративного клиента
    15. Создание компании для корпоративного клиента
    16. Редактирование компании корпоративного клиента
    17. Список контактных лиц корпоративного клиента
    18. Создание связи корпоративного клиента с контактным лицом
    19. Редактирование связи корпоративного клиента с контактным лицом
    20. Редактирование корпоративного клиента
  6. Доставки
    1. Расчёт стоимости доставки
    2. Обновление статусов доставки
    3. Получение списка отгрузок в службы доставки
    4. Создание отгрузки
    5. Получение информации об отгрузке
    6. Редактироване отгрузки
    7. Запрос на получение данных для автокомплит поля
    8. Расчет стоимости доставки
    9. Удаление заявки на доставку
    10. Получение данных доставки
    11. Печатные формы службы доставки
    12. Создание и редактирование доставки
    13. Удаление заявки на отгрузку
    14. Список терминалов приема посылок
    15. Создание и редактирование отгрузки
    16. Список тарифов
  7. Файлы
    1. Получение списка файлов, удовлетворяющих заданному фильтру
    2. Загрузка файла на сервер
    3. Получение информации о файле
    4. Удаление файла
    5. Скачивание файла
    6. Редактирование файла
  8. Интеграция
    1. Получение интеграционного модуля
    2. Создание/редактирование интеграционного модуля
    3. Уведомление об изменении статуса активности или заморозки модуля
  9. Лояльность
    1. Добавление клиента в программу лояльности
    2. Получение информации об участии в программе лояльности
    3. Активация участия в программе лояльности
    4. Начисление бонусов участию в программе лояльности
    5. История бонусного счета
    6. Редактирование участия в программе лояльности
    7. Список участий в программе лояльности
    8. Расчёт максимальной скидки
    9. Список программ лояльности
    10. Получение информации о программе лояльности
  10. Заказы
    1. Получение списка заказов, удовлетворяющих заданному фильтру
    2. Объединение заказов
    3. Создание заказа
    4. Массовая запись внешних ID заказов
    5. Получение истории изменений заказов
    6. Создание связи между заказами
    7. Применение бонусов по программе лояльности
    8. Отмена бонусных операций по программе лояльности
    9. Добавление платежа
    10. Удаление платежа
    11. Редактирование платежа
    12. Получение списка статусов заказов
    13. Пакетная загрузка заказов
    14. Получение информации о заказе
    15. Редактирование заказа
  11. Комплектация заказов
    1. Получение списка паков, удовлетворяющих заданному фильтру
    2. Создание пака
    3. Получение истории комплектации заказа
    4. Получение информации о паке
    5. Удаление пака
    6. Редактирование пака
  12. Платежи
    1. Проверка инвойса
    2. Создание инвойса
    3. Изменение инвойса
    4. Подтверждение оплаты
    5. Отмена оплаты
    6. Создание оплаты
    7. Возврат
  13. Рекомендации
    1. Запрос рекомендуемых товаров
  14. Справочники
    1. Получение списка групп расходов
    2. Редактирование группы расходов
    3. Получение списка статей расходов
    4. Редактирование статьи расходов
    5. Получение списка кодов доступных стран
    6. Получение списка курьеров
    7. Создание курьера
    8. Редактирование курьера
    9. Получение списка служб доставки
    10. Создание/редактирование службы доставки
    11. Получение списка типов доставки
    12. Создание/редактирование типа доставки
    13. Получение списка юридических лиц
    14. Создание/редактирование юридического лица
    15. Получение списка MessageGateway каналов
    16. Получение списка способов оформления заказов
    17. Создание/редактирование способа оформления заказа
    18. Получение списка типов заказов
    19. Создание/редактирование типа заказа
    20. Получение списка статусов оплаты
    21. Создание/редактирование статусов оплаты
    22. Получение списка типов оплаты
    23. Создание/редактирование типа оплаты
    24. Получение списка типов цен
    25. Создание/редактирование типа цены
    26. Получение списка статусов товаров в заказе
    27. Создание/редактирование статуса товара в заказе
    28. Получение списка магазинов
    29. Создание/редактирование магазина
    30. Получение списка групп статусов заказа
    31. Получение списка статусов заказа
    32. Создание/редактирование статуса заказа
    33. Получение списка складов
    34. Создание/редактирование сведений о складе
    35. Получение списка единиц измерений
    36. Создание/редактирование единицы измерения
  15. Сегменты
    1. Получение списка пользовательских сегментов
  16. Настройки
    1. Получение настроек системы
  17. Склад
    1. Получение остатков и закупочных цен
    2. Обновление остатков и закупочных цен
    3. Обновление цен торговых предложений
    4. Получение списка групп товаров, удовлетворяющих заданному фильтру
    5. Получение списка товаров с торговыми предложениями, удовлетворяющих заданному фильтру
    6. Получение списка свойств товаров, удовлетворяющих заданному фильтру
    7. Обновление остатков и закупочных цен
    8. Актуализация остатков после обращения к складской системе
  18. Задачи
    1. Получение списка задач
    2. Создание задачи
    3. Получение информации о задаче
    4. Редактирование задачи
  19. Телефония
    1. События звонка
    2. Загрузка телефонных звонков
    3. Получение ответственного менеджера
    4. Оповещение о смене статуса
    5. Инициация звонка
    6. Переход в личный кабинет
    7. Прослушивание звонка
  20. Пользователи
    1. Получение списка групп пользователей
    2. Получение списка пользователей, удовлетворяющих заданному фильтру
    3. Получение информации о пользователе
    4. Смена статуса пользователя
  21. Верификация
    1. Подтверждение верификации
    2. Проверка статуса верификации
  22. Статистика
    1. Обновление статистики

Установка

Ruby

$ gem install retailcrm-api

Rails

добавьте в Gemfile: gem 'retailcrm-api'

и запустите bundle install.

Затем: rails g retailcrm_api:install

Требования

Необходимо получить api key https://demo.retailcrm.ru/admin/api-keys

Использование Rails

В файл config/retailcrm_api.yml вставьте ваши данные

Использование Ruby

Сначала создайте экземпляр объекта RetailcrmApi::Request:

retailcrm = RetailcrmApi::Request.new(api_key: "your_api_key")

Вы можете изменять api_key, timeout, open_timeout, faraday_adapter, proxy, symbolize_keys, logger, и debug:

RetailcrmApi::Request.api_key = "your_api_key"
RetailcrmApi::Request.timeout = 15
RetailcrmApi::Request.open_timeout = 15
RetailcrmApi::Request.symbolize_keys = true
RetailcrmApi::Request.debug = false

Либо в файле config/initializers/retailcrm_api.rb для Rails.

Debug Logging

Измените debug: true чтобы включить логирование в STDOUT.

retailcrm = RetailcrmApi::Request.new(api_key: "your_api_key", debug: true)

Custom logger

Logger.new используется по умолчанию, но вы можете изменить на свой:

retailcrm = RetailcrmApi::Request.new(api_key: "your_api_key", debug: true, logger: MyLogger.new)

Или:

RetailcrmApi::Request.logger = MyLogger.new

Примеры

Расходы

params = {
  filter: {
    minSumm: 0
  }
}
RetailcrmApi::Request.costs.retrieve(params: params).body
# => {:success=>true, :pagination=>{:limit=>20, :totalCount=>296, :currentPage=>1, :totalPageCount=>15}, :costs=>[{:id=>296, :dateFrom=>"2021-07-29", :dateTo=>"2021-07-29", :summ=>13996, :costItem=>"products-purchase-price", :createdAt=>"2021-07-29 00:34:35", :order=>{:id=>36, :number=>"36C"}, :sites=>["b12-skillum-ru"]}]}
body = {
  site: "deppa-ru",
  cost: {
    summ: 100,
    costItem: "office-expenses",
    dateFrom: (DateTime.now - 1.day).strftime("%Y-%m-%d %H:%M:%S"),
    dateTo: DateTime.now.strftime("%Y-%m-%d %H:%M:%S")
  }
}
RetailcrmApi::Request.costs.create(body: body).body
# => {:success=>true, :id=>297}
body = {
  ids: [297]
}
RetailcrmApi::Request.costs.create(body: body, suffix: "delete").body
# => {:success=>true, :count=>1, :notRemovedIds=>[]}
body = {
  costs: [
    {
      sites: ["deppa-ru"],
      summ: 100,
      costItem: "office-expenses",
      dateFrom: (DateTime.now - 1.day).strftime("%Y-%m-%d %H:%M:%S"),
      dateTo: DateTime.now.strftime("%Y-%m-%d %H:%M:%S")
    }
  ]
}
RetailcrmApi::Request.costs.create(body: body, suffix: "upload").body
# => {:success=>true, :uploadedCosts=>[298]}
RetailcrmApi::Request.costs(298).retrieve.body
# => {:success=>true, :cost=>{:id=>298, :dateFrom=>"2021-08-02", :dateTo=>"2021-08-03", :summ=>100, :costItem=>"office-expenses", :createdAt=>"2021-08-03 22:12:34", :sites=>["deppa-ru"]}} 
body = {
  site: "deppa-ru",
  cost: {
    summ: 200,
    costItem: "office-expenses",
    dateFrom: (DateTime.now - 1.day).strftime("%Y-%m-%d %H:%M:%S"),
    dateTo: DateTime.now.strftime("%Y-%m-%d %H:%M:%S")
  }
}
RetailcrmApi::Request.costs(298).update(body: body).body
# => {:success=>true, :id=>298}
RetailcrmApi::Request.costs(298).delete.body
# => {:success=>true}

Пользовательские поля

params = {
  filter: {
    type: "date"
  }
}
RetailcrmApi::Request.custom_fields.retrieve(params: params).body
# =>{:success=>true, :pagination=>{:limit=>20, :totalCount=>0, :currentPage=>1, :totalPageCount=>0}, :customFields=>[]}
params = {
  limit: 100,
  filter: {
    name: "test"
  }
}
RetailcrmApi::Request.custom_fields.dictionaries.retrieve(params: params).body
# => {:success=>true, :pagination=>{:limit=>100, :totalCount=>0, :currentPage=>1, :totalPageCount=>0}, :customDictionaries=>[]} 
body = {
  customDictionary: {
    code: "test_custom",
    name: "test custom",
    elements: [
      {
        name: "Тест",
        code: "test"
      }
    ]
  }
}
RetailcrmApi::Request.custom_fields.dictionaries.create(body: body).body
# => {:success=>true, :code=>"test_custom"}
RetailcrmApi::Request.custom_fields.dictionaries("test_custom").retrieve.body
# => {:success=>true, :customDictionary=>{:name=>"test custom", :code=>"test_custom", :elements=>[{:name=>"Тест", :code=>"test", :ordering=>50}]}} 
body = {
  customDictionary: {
    name: "test custom update",
    elements: [
      {
        name: "Тест update",
        code: "test"
      }
    ]
  }
}
RetailcrmApi::Request.custom_fields.dictionaries("test_custom").update(body: body).body
# => {:success=>true, :code=>"test_custom"}
entity = ["order", "customer", "customer_corporate", "company"].sample
body = {
  customField: {
    name: "Тест",
    code: "test",
    type: "string"
  }
}
RetailcrmApi::Request.custom_fields(entity).create(body: body).body
# => {:success=>true, :code=>"test"}
RetailcrmApi::Request.custom_fields(entity, "test").retrieve.body
# => {:success=>true, :customField=>{:name=>"Тест", :code=>"test", :required=>false, :inFilter=>true, :inList=>true, :inGroupActions=>false, :type=>"string", :entity=>"customer", :ordering=>50, :viewMode=>"editable"}}
body = {
  customField: {
    name: "Тест update",
    code: "test",
    type: "boolean"
  }
}
RetailcrmApi::Request.custom_fields(entity, "test").update(body: body).body
# => {:success=>true, :code=>"test"} 

Клиенты

params = {
  limit: 100,
  filter: {
    sex: "male"
  }
}
RetailcrmApi::Request.customers.retrieve(params: params).body
#=> {:success=>true, :pagination=>{:limit=>100, :totalCount=>0, :currentPage=>1, :totalPageCount=>0}, :customers=>[]} 
body = {
  resultCustomer: {
    id: 58
  },
  customers: [
    {
      id: 57
    }
  ]
}
RetailcrmApi::Request.customers.create(body: body, suffix: "combine").body
#=> {:success=>true}

Если включена функциональность корпоративных клиентов, то customer[contragent][contragentType] исключительно individual

body = {
  site: "deppa-ru",
  customer: {
    externalId: 333,
    vip: true,
    firstName: "Павел",
    lastName: "Осетров"
  }
}
RetailcrmApi::Request.customers.create(body: body).body
#=> {:success=>true, :id=>59}
body = {
  customers: [
    {
      id: 59,
      externalId: 555
    }
  ]
}
RetailcrmApi::Request.customers.create(body: body, suffix: "fix-external-ids").body
#=> {:success=>true} 
params = {
  filter: {
    customerId: 59
  }
}
RetailcrmApi::Request.customers.history.retrieve(params: params).body
#=> {:success=>true, :generatedAt=>"2021-08-04 13:31:04", :history=>[{:id=>276, :createdAt=>"2021-08-04 13:24:26", :created=>true, :source=>"api", :field=>"id", :apiKey=>{:current=>true}, :oldValue=>nil, :newValue=>59, :customer=>{:type=>"customer", :id=>59, :externalId=>"333", :isContact=>false, :createdAt=>"2021-08-04 13:24:26", :vip=>true, :bad=>false, :site=>"deppa-ru", :contragent=>{:contragentType=>"individual"}, :marginSumm=>0, :totalSumm=>0, :averageSumm=>0, :ordersCount=>0, :customFields=>[], :personalDiscount=>0, :cumulativeDiscount=>0, :segments=>[], :firstName=>"Павел", :lastName=>"Осетров", :presumableSex=>"male"}}, {:id=>277, :createdAt=>"2021-08-04 13:28:46", :source=>"api", :field=>"external_id", :apiKey=>{:current=>true}, :oldValue=>"333", :newValue=>"555", :customer=>{:id=>59, :externalId=>"555", :site=>"deppa-ru"}}], :pagination=>{:limit=>100, :totalCount=>2, :currentPage=>1, :totalPageCount=>1}}
params = {
  filter: {
    customerIds: [59]
  }
}
RetailcrmApi::Request.customers.notes.retrieve(params: params).body
#=> {:success=>true, :pagination=>{:limit=>20, :totalCount=>0, :currentPage=>1, :totalPageCount=>0}, :notes=>[]} 
body = {
  site: "deppa-ru",
  note: {
    text: "Просит скидки",
    customer: {
      id: 59
    }
  }
}
RetailcrmApi::Request.customers.notes.create(body: body).body
#=> {:success=>true, :id=>44} 
RetailcrmApi::Request.customers.notes(44).delete.body
#=> {:success=>true}
body = {
  customers: [
    {
      externalId: 999,
      vip: true,
      firstName: "Юкихиро",
      lastName: "Мацумото"
    },
    {
      externalId: 666,
      bad: true,
      firstName: "Расмус",
      lastName: "Лердорф"
    }
  ]
}
RetailcrmApi::Request.customers.create(body: body, suffix: "upload").body
#=> {:success=>true, :uploadedCustomers=>[{:id=>60, :externalId=>"999"}, {:id=>61, :externalId=>"666"}]} 
params = {
  by: "id"
}
RetailcrmApi::Request.customers(60).retrieve(params: params).body
#=> {:success=>true, :customer=>{:type=>"customer", :id=>60, :externalId=>"999", :isContact=>false, :createdAt=>"2021-08-04 13:41:05", :vip=>true, :bad=>false, :site=>"deppa-ru", :contragent=>{:contragentType=>"individual"}, :tags=>[], :marginSumm=>0, :totalSumm=>0, :averageSumm=>0, :ordersCount=>0, :customFields=>[], :personalDiscount=>0, :segments=>[{:id=>20, :code=>"nizkiy-sredniy-chek", :name=>"Низкий средний чек", :createdAt=>"2021-07-29 00:34:14", :isDynamic=>true, :customersCount=>4, :active=>true}, {:id=>31, :code=>"pol-ne-ukazan", :name=>"Пол не указан", :createdAt=>"2021-07-29 00:34:15", :isDynamic=>true, :customersCount=>4, :active=>true}, {:id=>26, :code=>"bez-otmen", :name=>"Без отмен", :createdAt=>"2021-07-29 00:34:15", :isDynamic=>true, :customersCount=>4, :active=>true}], :firstName=>"Юкихиро", :lastName=>"Мацумото", :presumableSex=>"female", :phones=>[]}} 
body = {
  site: "deppa-ru",
  customer: {
    isContact: true
  }
}
params = {
  by: "id"
}
RetailcrmApi::Request.customers(61).update(body: body, params: params).body
#=> {:success=>true, :id=>61}

Корпоративные клиенты

params = {
  limit: 100,
  filter: {
    vip: "1"
  }
}
RetailcrmApi::Request.customers_corporate.retrieve(params: params).body
#=> {:success=>true, :pagination=>{:limit=>100, :totalCount=>0, :currentPage=>1, :totalPageCount=>0}, :customersCorporate=>[]}
body = {
  resultCustomer: {
    id: 63
  },
  customers: [
    {
      id: 64
    }
  ]
}
RetailcrmApi::Request.customers_corporate.create(body: body, suffix: "combine").body
#=> {:success=>true}
body = {
  customerCorporate: {
    externalId: 333,
    vip: true,
    nickName: "dhh"
  }
}
RetailcrmApi::Request.customers_corporate.create(body: body).body
#=> {:success=>true, :id=>62}
body = {
  customersCorporate: [
    {
      id: 63,
      externalId: 12
    },
    {
      id: 62,
      externalId: 13
    }
  ]
}
RetailcrmApi::Request.customers_corporate.create(body: body, suffix: "fix-external-ids").body
#=> {:success=>true} 
params = {
  filter: {
    customerId: 63
  }
}
RetailcrmApi::Request.customers_corporate.history.retrieve(params: params).body
#=> {:success=>true, :generatedAt=>"2021-08-04 20:04:14", :history=>[{:id=>9, :createdAt=>"2021-08-04 19:58:50", :created=>true, :source=>"api", :field=>"id", :apiKey=>{:current=>true}, :oldValue=>nil, :newValue=>63, :customer=>{:type=>"customer_corporate", :id=>63, :externalId=>"44", :nickName=>"ryzhikov", :createdAt=>"2021-08-04 19:58:50", :vip=>false, :bad=>true, :site=>"deppa-ru", :marginSumm=>0, :totalSumm=>0, :averageSumm=>0, :ordersCount=>0, :customFields=>[], :personalDiscount=>0, :cumulativeDiscount=>0}}, {:id=>12, :createdAt=>"2021-08-04 20:03:15", :source=>"api", :field=>"external_id", :apiKey=>{:current=>true}, :oldValue=>"44", :newValue=>"12", :customer=>{:id=>63, :externalId=>"12", :site=>"deppa-ru"}}], :pagination=>{:limit=>100, :totalCount=>2, :currentPage=>1, :totalPageCount=>1}}
params = {
  filter: {
    customerIds: [63]
  }
}
RetailcrmApi::Request.customers_corporate.notes.retrieve(params: params).body
#=> {:success=>true, :pagination=>{:limit=>20, :totalCount=>0, :currentPage=>1, :totalPageCount=>0}, :notes=>[]}
body = {
  site: "deppa-ru",
  note: {
    text: "Very bad",
    customer: {
      id: 63
    }
  }
}
RetailcrmApi::Request.customers_corporate.notes.create(body: body).body
#=> {:success=>true, :id=>45} 
RetailcrmApi::Request.customers_corporate.notes(45).delete.body
#=> {:success=>true}
body = {
  customersCorporate: [
    {
      externalId: 44,
      bad: true,
      nickName: "ryzhikov"
    },
    {
      externalId: 22,
      bad: true,
      nickName: "buytaert"
    }
  ]
}
RetailcrmApi::Request.customers_corporate.create(body: body, suffix: "upload").body
#=> {:success=>true, :uploadedCustomers=>[{:id=>63, :externalId=>"44"}, {:id=>64, :externalId=>"22"}]}
params = {
  by: "externalId"
}
RetailcrmApi::Request.customers_corporate(12).retrieve(params: params).body
#=> {:success=>true, :customerCorporate=>{:type=>"customer_corporate", :id=>63, :externalId=>"12", :nickName=>"ryzhikov", :createdAt=>"2021-08-04 19:58:50", :vip=>false, :bad=>true, :site=>"deppa-ru", :tags=>[], :marginSumm=>0, :totalSumm=>0, :averageSumm=>0, :ordersCount=>0, :customFields=>[], :personalDiscount=>0}} 
params = {
  by: "id"
}
RetailcrmApi::Request.customers_corporate(63).addresses.retrieve(params: params).body
#=> {:success=>true, :addresses=>[], :pagination=>{:limit=>20, :totalCount=>0, :currentPage=>1, :totalPageCount=>0}}
params = {
  by: "id"
}
body = {
  site: "deppa-ru",
  address: {
    city: "Санкт-Петербург"
  }
}
RetailcrmApi::Request.customers_corporate(63).addresses.create(params: params, body: body).body
#=> {:success=>true, :id=>42} 
params = {
  by: "id",
  entityBy: "id"
}
body = {
  site: "deppa-ru",
  address: {
    city: "Вятка"
  }
}
RetailcrmApi::Request.customers_corporate(63).addresses(42).update(params: params, body: body).body
#=> {:success=>true, :id=>42}
params = {
  by: "id"
}
RetailcrmApi::Request.customers_corporate(63).companies.retrieve(params: params).body
#=> {:success=>true, :companies=>[], :pagination=>{:limit=>20, :totalCount=>0, :currentPage=>1, :totalPageCount=>0}}
params = {
  by: "id"
}
body = {
  site: "deppa-ru",
  company: {
    name: "DEPPA",
    site: "https://deppa.ru"
  }
}
RetailcrmApi::Request.customers_corporate(62).companies.create(params: params, body: body).body
#=> {:success=>true, :id=>16}
params = {
  by: "id",
  entityBy: "id"
}
body = {
  site: "deppa-ru",
  company: {
    isMain: true
  }
}
RetailcrmApi::Request.customers_corporate(62).companies(16).update(params: params, body: body).body
#=> {:success=>true, :id=>16}
params = {
  by: "id"
}
RetailcrmApi::Request.customers_corporate(62).contacts.retrieve(params: params).body
#=> {:success=>true, :contacts=>[], :pagination=>{:limit=>20, :totalCount=>0, :currentPage=>1, :totalPageCount=>0}}
params = {
  by: "id"
}
body = {
  site: "deppa-ru",
  contact: {
    isMain: true,
    customer: {
      externalId: "555"
    }
  }
}
RetailcrmApi::Request.customers_corporate(62).contacts.create(params: params, body: body).body
#=> {:success=>true, :id=>16}
params = {
  by: "id",
  entityBy: "externalId"
}
body = {
  site: "deppa-ru",
  contact: {
    isMain: false
  }
}
RetailcrmApi::Request.customers_corporate(62).contacts("555").update(params: params, body: body).body
#=> {:success=>true, :id=>16}
params = {
  by: "id"
}
body = {
  site: "deppa-ru",
  customerCorporate: {
    personalDiscount: 99.9
  }
}
RetailcrmApi::Request.customers_corporate(62).update(params: params, body: body).body
#=> {:success=>true, :id=>62}

Доставки

body = {
  deliveryTypeCodes: ["courier", "self-delivery", "russian-post", ""],
  order: {
    weight: 1,
    length: 10,
    width: 10,
    height: 10
  }
}
RetailcrmApi::Request.delivery.create(body: body, suffix: "calculate").body
#=> {:success=>true, :calculations=>[{:code=>"courier", :available=>true, :cost=>300}, {:code=>"self-delivery", :available=>true, :cost=>0}, {:code=>"russian-post", :available=>true, :cost=>0}, {:code=>"ems", :available=>true, :cost=>0}]} 

Файлы

Интеграция

Лояльность

Заказы

params = {
  limit: 100,
  filter: {
    countries: ["BY","KZ","RU","UA"]
  }
}
RetailcrmApi::Request.orders.retrieve(params: params).body
#=> {:success=>true, :pagination=>{:limit=>100, :totalCount=>0, :currentPage=>1, :totalPageCount=>0}, :orders=>[]} 
body = {
  site: "deppa-ru",
  order: {
    :externalId => 171,
    :number => "171",
    :email => "test@example.com",
    :createdAt => DateTime.now.strftime("%Y-%m-%d %H:%M:%S"),
    :discountPercent => 10,
    :firstName => "Юкихиро",
    :lastName => "Мацумото",
    :customer => {
      :externalId => 999,
      :firstName => "Юкихиро",
      :lastName => "Мацумото",
      :phones => [{ :number => "+79000000000" }],
    },
    :delivery => {
      :code => "courier",
      :cost => 500,
      :address => {:text => "г. Санкт-Петербург, ул. Профессора Попова, д.376"}
    },
    :items => [
          {
            :productId => 170,
            :initialPrice => 500,
            :quantity => 2
          },
          {
            :productId => 175,
            :initialPrice => 1300,
            :quantity => 1
          }
        ]
  }
}
RetailcrmApi::Request.orders.create(body: body).body
#=> {:success=>true, :id=>41, :order=>{:slug=>41, :bonusesCreditTotal=>0, :bonusesChargeTotal=>0, :id=>41, :number=>"171", :externalId=>"171", :orderType=>"eshop-individual", :orderMethod=>"shopping-cart", :privilegeType=>"none", :createdAt=>"2014-10-28 19:31:10", :statusUpdatedAt=>"2021-08-05 08:22:04", :summ=>2300, :totalSumm=>2800, :prepaySum=>0, :purchaseSumm=>0, :markDatetime=>"2021-08-05 08:22:04", :lastName=>"Мацумото", :firstName=>"Юкихиро", :email=>"test@example.com", :call=>false, :expired=>false, :customer=>{:type=>"customer", :id=>60, :externalId=>"999", :isContact=>false, :createdAt=>"2021-08-04 13:41:05", :vip=>true, :bad=>false, :site=>"deppa-ru", :contragent=>{:contragentType=>"individual"}, :tags=>[], :marginSumm=>0, :totalSumm=>0, :averageSumm=>0, :ordersCount=>0, :costSumm=>0, :customFields=>[], :personalDiscount=>0, :address=>{:id=>43, :text=>"г. Санкт-Петербург, ул. Профессора Попова, д.376"}, :segments=>[{:id=>20, :code=>"nizkiy-sredniy-chek", :name=>"Низкий средний чек", :createdAt=>"2021-07-29 00:34:14", :isDynamic=>true, :customersCount=>4, :active=>true}, {:id=>31, :code=>"pol-ne-ukazan", :name=>"Пол не указан", :createdAt=>"2021-07-29 00:34:15", :isDynamic=>true, :customersCount=>4, :active=>true}, {:id=>26, :code=>"bez-otmen", :name=>"Без отмен", :createdAt=>"2021-07-29 00:34:15", :isDynamic=>true, :customersCount=>4, :active=>true}], :firstName=>"Юкихиро", :lastName=>"Мацумото", :presumableSex=>"female", :email=>"test@example.com", :phones=>[]}, :contact=>{:type=>"customer", :id=>60, :externalId=>"999", :isContact=>false, :createdAt=>"2021-08-04 13:41:05", :vip=>true, :bad=>false, :site=>"deppa-ru", :contragent=>{:contragentType=>"individual"}, :tags=>[], :marginSumm=>0, :totalSumm=>0, :averageSumm=>0, :ordersCount=>0, :costSumm=>0, :customFields=>[], :personalDiscount=>0, :address=>{:id=>43, :text=>"г. Санкт-Петербург, ул. Профессора Попова, д.376"}, :segments=>[{:id=>20, :code=>"nizkiy-sredniy-chek", :name=>"Низкий средний чек", :createdAt=>"2021-07-29 00:34:14", :isDynamic=>true, :customersCount=>4, :active=>true}, {:id=>31, :code=>"pol-ne-ukazan", :name=>"Пол не указан", :createdAt=>"2021-07-29 00:34:15", :isDynamic=>true, :customersCount=>4, :active=>true}, {:id=>26, :code=>"bez-otmen", :name=>"Без отмен", :createdAt=>"2021-07-29 00:34:15", :isDynamic=>true, :customersCount=>4, :active=>true}], :firstName=>"Юкихиро", :lastName=>"Мацумото", :presumableSex=>"female", :email=>"test@example.com", :phones=>[]}, :contragent=>{:contragentType=>"individual"}, :delivery=>{:code=>"courier", :cost=>500, :netCost=>0, :address=>{:text=>"г. Санкт-Петербург, ул. Профессора Попова, д.376"}}, :site=>"deppa-ru", :status=>"new", :items=>[{:bonusesChargeTotal=>0, :bonusesCreditTotal=>0, :markingCodes=>[], :discounts=>[], :id=>109, :initialPrice=>500, :discountTotal=>0, :prices=>[{:price=>500, :quantity=>2}], :createdAt=>"2014-10-28 19:31:10", :quantity=>2, :status=>"new", :offer=>{:displayName=>"noname", :id=>76, :xmlId=>"4f9c8bc6-7e40-47ee-a90b-c8936ffbf7fb", :name=>"noname", :unit=>{:code=>"pc", :name=>"Штука", :sym=>"шт."}}, :properties=>[], :purchasePrice=>0}, {:bonusesChargeTotal=>0, :bonusesCreditTotal=>0, :markingCodes=>[], :discounts=>[], :id=>110, :initialPrice=>1300, :discountTotal=>0, :prices=>[{:price=>1300, :quantity=>1}], :createdAt=>"2014-10-28 19:31:10", :quantity=>1, :status=>"new", :offer=>{:displayName=>"noname", :id=>77, :xmlId=>"d9b45af3-2f24-49f5-b2b9-e7f5c7362ca9", :name=>"noname", :unit=>{:code=>"pc", :name=>"Штука", :sym=>"шт."}}, :properties=>[], :purchasePrice=>0}], :payments=>[], :fromApi=>true, :shipped=>false, :customFields=>[]}}
params = {
  externalIds: [171]
}
RetailcrmApi::Request.orders.statuses.retrieve(params: params).body
#=> {:success=>true, :orders=>[{:id=>41, :externalId=>"171", :status=>"delivering", :group=>"delivery"}]}

Комплектация заказов

Платежи

Рекомендации

Справочники

RetailcrmApi::Request.reference.delivery_types.retrieve.body
#=> {:success=>true, :deliveryTypes=>{:courier=>{:isDynamicCostCalculation=>false, :isAutoCostCalculation=>false, :isAutoNetCostCalculation=>false, :isCostDependsOnRegionAndWeightAndSum=>false, :isCostDependsOnDateTime=>false, :name=>"Доставка курьером", :code=>"courier", :active=>true, :defaultCost=>300, :defaultNetCost=>0, :paymentTypes=>["cash", "bank-card", "bank-transfer", "e-money", "credit"], :deliveryServices=>[], :defaultForCrm=>false}, :"self-delivery"=>{:isDynamicCostCalculation=>false, :isAutoCostCalculation=>false, :isAutoNetCostCalculation=>false, :isCostDependsOnRegionAndWeightAndSum=>false, :isCostDependsOnDateTime=>false, :name=>"Самовывоз", :code=>"self-delivery", :active=>true, :defaultCost=>0, :defaultNetCost=>0, :paymentTypes=>["cash", "bank-card", "bank-transfer", "e-money", "credit"], :deliveryServices=>[], :defaultForCrm=>false}, :"russian-post"=>{:isDynamicCostCalculation=>false, :isAutoCostCalculation=>false, :isAutoNetCostCalculation=>false, :isCostDependsOnRegionAndWeightAndSum=>false, :isCostDependsOnDateTime=>false, :name=>"Почта России", :code=>"russian-post", :active=>true, :defaultCost=>0, :defaultNetCost=>0, :paymentTypes=>["bank-card", "bank-transfer", "e-money", "credit"], :deliveryServices=>[], :defaultForCrm=>false}, :ems=>{:isDynamicCostCalculation=>false, :isAutoCostCalculation=>false, :isAutoNetCostCalculation=>false, :isCostDependsOnRegionAndWeightAndSum=>false, :isCostDependsOnDateTime=>false, :name=>"EMS Почта России", :code=>"ems", :active=>true, :defaultCost=>0, :defaultNetCost=>0, :paymentTypes=>["bank-card", "bank-transfer", "e-money", "credit"], :deliveryServices=>[], :defaultForCrm=>false}}}
body = {
  deliveryType: {
    name: "Ozon.Logistics",
    code: "ozon",
    defaultCost: 125.0,
    active: true
  }
}
RetailcrmApi::Request.reference.delivery_types("ozon").update(body: body).body
#=> {:success=>true, :id=>5}
RetailcrmApi::Request.reference.payment_statuses.retrieve.body
# => {:success=>true, :paymentStatuses=>{:"not-paid"=>{:name=>"Не оплачен", :code=>"not-paid", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :paymentComplete=>false, :ordering=>10, :paymentTypes=>["bank-card", "bank-transfer", "credit", "cash", "e-money"]}, :invoice=>{:name=>"Выставлен счет", :code=>"invoice", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :paymentComplete=>false, :ordering=>20, :paymentTypes=>["bank-card", "bank-transfer", "credit", "cash", "e-money"]}, :"wait-approved"=>{:name=>"Ожидает подтверждения", :code=>"wait-approved", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :paymentComplete=>false, :ordering=>25, :paymentTypes=>["bank-card", "bank-transfer", "credit", "cash", "e-money"]}, :"payment-start"=>{:name=>"Платеж проведен", :code=>"payment-start", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :paymentComplete=>false, :ordering=>30, :paymentTypes=>["bank-card", "bank-transfer", "credit", "cash", "e-money"]}, :canceled=>{:name=>"Отменен", :code=>"canceled", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :paymentComplete=>false, :ordering=>30, :paymentTypes=>["bank-card", "bank-transfer", "credit", "cash", "e-money"]}, :"credit-check"=>{:name=>"Проверка документов на кредит", :code=>"credit-check", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :paymentComplete=>false, :ordering=>40, :paymentTypes=>["credit"]}, :"credit-approved"=>{:name=>"Кредит одобрен", :code=>"credit-approved", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :paymentComplete=>false, :ordering=>50, :paymentTypes=>["credit"]}, :fail=>{:name=>"Ошибка", :code=>"fail", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :paymentComplete=>false, :ordering=>55, :paymentTypes=>["bank-card", "bank-transfer", "credit", "cash", "e-money"]}, :paid=>{:name=>"Оплачен", :code=>"paid", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :paymentComplete=>true, :ordering=>60, :paymentTypes=>["bank-card", "bank-transfer", "credit", "cash", "e-money"]}, :returned=>{:name=>"Возвращен", :code=>"returned", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :paymentComplete=>false, :ordering=>70, :paymentTypes=>["bank-card", "bank-transfer", "credit", "cash", "e-money"]}}}
RetailcrmApi::Request.reference.payment_types.retrieve.body
#=> {:success=>true, :paymentTypes=>{:cash=>{:name=>"Наличные", :code=>"cash", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>["courier", "self-delivery"], :paymentStatuses=>["not-paid", "invoice", "wait-approved", "payment-start", "canceled", "fail", "paid", "returned"]}, :"bank-card"=>{:name=>"Банковская карта", :code=>"bank-card", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>["courier", "self-delivery", "russian-post", "ems"], :paymentStatuses=>["not-paid", "invoice", "wait-approved", "payment-start", "canceled", "fail", "paid", "returned"]}, :"e-money"=>{:name=>"Электронные деньги", :code=>"e-money", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>["courier", "self-delivery", "russian-post", "ems"], :paymentStatuses=>["not-paid", "invoice", "wait-approved", "payment-start", "canceled", "fail", "paid", "returned"]}, :"bank-transfer"=>{:name=>"Банковский перевод", :code=>"bank-transfer", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>["courier", "self-delivery", "russian-post", "ems"], :paymentStatuses=>["not-paid", "invoice", "wait-approved", "payment-start", "canceled", "fail", "paid", "returned"]}, :credit=>{:name=>"Кредит", :code=>"credit", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>["courier", "self-delivery", "russian-post", "ems"], :paymentStatuses=>["not-paid", "invoice", "wait-approved", "payment-start", "canceled", "credit-check", "credit-approved", "fail", "paid", "returned"]}, :"apple-pay"=>{:name=>"Apple pay", :code=>"apple-pay", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :empty=>{:name=>"При получении", :code=>"empty", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-sberbank"=>{:name=>"Сбербанк Онлайн", :code=>"yandex-kassa-sberbank", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-alfabank"=>{:name=>"Альфа-Клик", :code=>"yandex-kassa-alfabank", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-qiwi"=>{:name=>"QIWI Кошелек", :code=>"yandex-kassa-qiwi", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-webmoney"=>{:name=>"Webmoney", :code=>"yandex-kassa-webmoney", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-b2b-sberbank"=>{:name=>"Сбербанк Бизнес Онлайн", :code=>"yandex-kassa-b2b-sberbank", :active=>false, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"empty-1"=>{:name=>"PayPal", :code=>"empty-1", :active=>false, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-apple-pay"=>{:name=>"Apple Pay", :code=>"yandex-kassa-apple-pay", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-cash"=>{:name=>"Наличные", :code=>"yandex-kassa-cash", :active=>false, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-installments"=>{:name=>"Заплатить по частям", :code=>"yandex-kassa-installments", :active=>false, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-mobile-balance"=>{:name=>"Баланс телефона\n", :code=>"yandex-kassa-mobile-balance", :active=>false, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-wechat"=>{:name=>"WeChat", :code=>"yandex-kassa-wechat", :active=>false, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :invoice=>{:name=>"Счет для юр. лиц", :code=>"invoice", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :paykeeper=>{:name=>"Картой на сайте", :code=>"paykeeper", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-google-pay"=>{:name=>"Google Pay", :code=>"yandex-kassa-google-pay", :active=>false, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-yandex-money"=>{:name=>"ЮMoney", :code=>"yandex-kassa-yandex-money", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-tinkoff-bank"=>{:name=>"Тинькофф", :code=>"yandex-kassa-tinkoff-bank", :active=>true, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}, :"yandex-kassa-bank-card"=>{:name=>"Картой на сайте Yandex", :code=>"yandex-kassa-bank-card", :active=>false, :defaultForCrm=>false, :defaultForApi=>false, :deliveryTypes=>[], :paymentStatuses=>[]}}}
body = {
  paymentType: {
    name: "Apple pay",
    code: "apple_pay",
    active: true
  }
}
RetailcrmApi::Request.reference.payment_types("apple_pay").update(body: body).body
#=> {:success=>true, :id=>6}
RetailcrmApi::Request.reference.price_types.retrieve.body
#=> {:success=>true, :priceTypes=>[{:id=>1, :code=>"base", :name=>"Базовая", :active=>true, :default=>true, :geo=>[], :groups=>[], :ordering=>991}]}
RetailcrmApi::Request.reference.status_groups.retrieve.body
#=> {:success=>true, :statusGroups=>{:new=>{:name=>"Новый", :code=>"new", :active=>true, :ordering=>10, :process=>false, :statuses=>["new"]}, :approval=>{:name=>"Согласование", :code=>"approval", :active=>true, :ordering=>20, :process=>true, :statuses=>["availability-confirmed", "offer-analog", "client-confirmed", "prepayed"]}, :assembling=>{:name=>"Комплектация", :code=>"assembling", :active=>true, :ordering=>30, :process=>true, :statuses=>["send-to-assembling", "assembling", "assembling-complete"]}, :delivery=>{:name=>"Доставка", :code=>"delivery", :active=>true, :ordering=>40, :process=>true, :statuses=>["send-to-delivery", "delivering", "redirect"]}, :complete=>{:name=>"Выполнен", :code=>"complete", :active=>true, :ordering=>50, :process=>false, :statuses=>["complete", "pickpoint"]}, :cancel=>{:name=>"Отменен", :code=>"cancel", :active=>true, :ordering=>60, :process=>false, :statuses=>["no-call", "no-product", "already-buyed", "delyvery-did-not-suit", "prices-did-not-suit", "cancel-other"]}}}
RetailcrmApi::Request.reference.statuses.retrieve.body
#=> {:success=>true, :statuses=>{:new=>{:name=>"Новый", :code=>"new", :active=>true, :ordering=>10, :group=>"new"}, :complete=>{:name=>"Выполнен", :code=>"complete", :active=>true, :ordering=>10, :group=>"complete"}, :"availability-confirmed"=>{:name=>"Наличие подтверждено", :code=>"availability-confirmed", :active=>true, :ordering=>10, :group=>"approval"}, :"offer-analog"=>{:name=>"Предложить замену", :code=>"offer-analog", :active=>true, :ordering=>20, :group=>"approval"}, :"client-confirmed"=>{:name=>"Согласовано с клиентом", :code=>"client-confirmed", :active=>true, :ordering=>30, :group=>"approval"}, :prepayed=>{:name=>"Предоплата поступила", :code=>"prepayed", :active=>true, :ordering=>40, :group=>"approval"}, :"send-to-assembling"=>{:name=>"Передано в комплектацию", :code=>"send-to-assembling", :active=>true, :ordering=>10, :group=>"assembling"}, :assembling=>{:name=>"Комплектуется", :code=>"assembling", :active=>true, :ordering=>20, :group=>"assembling"}, :"assembling-complete"=>{:name=>"Укомплектован", :code=>"assembling-complete", :active=>true, :ordering=>30, :group=>"assembling"}, :"send-to-delivery"=>{:name=>"Передан в доставку", :code=>"send-to-delivery", :active=>true, :ordering=>10, :group=>"delivery"}, :delivering=>{:name=>"Доставляется", :code=>"delivering", :active=>true, :ordering=>20, :group=>"delivery"}, :redirect=>{:name=>"Доставка перенесена", :code=>"redirect", :active=>true, :ordering=>30, :group=>"delivery"}, :"no-call"=>{:name=>"Недозвон", :code=>"no-call", :active=>true, :ordering=>10, :group=>"cancel"}, :"no-product"=>{:name=>"Нет в наличии", :code=>"no-product", :active=>true, :ordering=>20, :group=>"cancel"}, :"already-buyed"=>{:name=>"Купил в другом месте", :code=>"already-buyed", :active=>true, :ordering=>30, :group=>"cancel"}, :"delyvery-did-not-suit"=>{:name=>"Не устроила доставка", :code=>"delyvery-did-not-suit", :active=>true, :ordering=>40, :group=>"cancel"}, :"prices-did-not-suit"=>{:name=>"Не устроила цена", :code=>"prices-did-not-suit", :active=>true, :ordering=>50, :group=>"cancel"}, :"cancel-other"=>{:name=>"Отменен", :code=>"cancel-other", :active=>true, :ordering=>60, :group=>"cancel"}}}
body = {
  status: {
    name: "Прибыл в пункт выдачи",
    code: "pickpoint",
    active: true,
    group: "complete"
  }
}
RetailcrmApi::Request.reference.statuses("pickpoint").update(body: body).body
#=> {:success=>true, :id=>19}

Сегменты

Настройки

Склад

params = {
  filter: {
    active: 1
  }
}
RetailcrmApi::Request.store.products.retrieve(params: params).body
#=> {:success=>true, :pagination=>{:limit=>20, :totalCount=>1, :currentPage=>1, :totalPageCount=>1}, :products=>[{:minPrice=>100, :maxPrice=>100, :id=>63, :article=>"test article", :name=>"test name", :url=>"https://deppa.ru/products/test", :imageUrl=>"https://s3-s1.retailcrm.tech/eu-central-1/retailcrm/deppa-3870e9becb1f4449232b394505b0c283/product/610e37b7b8a4b-lqe8zj9nmbk21.png", :popular=>true, :novelty=>true, :groups=>[], :manufacturer=>"Deppa", :offers=>[{:name=>"test", :price=>100, :images=>["https://s3-s1.retailcrm.tech/eu-central-1/retailcrm/deppa-3870e9becb1f4449232b394505b0c283/product/610e37b7b8a4b-lqe8zj9nmbk21.png"], :id=>78, :externalId=>"1", :article=>"test a", :prices=>[{:priceType=>"base", :price=>100, :ordering=>991}], :quantity=>0, :weight=>1, :length=>1, :width=>1, :height=>1, :active=>true, :unit=>{:code=>"pc", :name=>"Штука", :sym=>"шт."}, :barcode=>"11111"}], :updatedAt=>"2021-08-07 10:35:26", :active=>true, :quantity=>0, :markable=>false}]}

Задачи

Телефония

Пользователи

Верификация

Статистика

RetailcrmApi::Request.statistic("update").retrieve.body
#=> {:success=>true}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages