Nybble Processing Mainframe
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

moysklad-extension-positions-smart-update

0.0.1 • Public • Published

moysklad-extension-positions-smart-update

Расширение для библиотеки moysklad

Оптимизирует процесс создания/обновления документов с большим числом позиций.

В зависимости от кол-ва позиций в документе выбирается один из вариантов:

  • если кол-во позиций в документе <= 100, то создание/обновление документа происходит стандартными методами

  • если кол-во позиций в документе > 100, то создание/обновление документа автоматически разбивается на несколько отдельных запросов (для обновление/создания/удаления позиций используются специальные сервисы /positions и /positions/delete)

Установка

$ npm install moysklad-extension-positions-smart-update

Зависимости

  • moysklad >=0.2.0

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

Подключение

const Moysklad = require('moysklad').compose(
  require('moysklad-extension-positions-smart-update'))
 
const moysklad = Moysklad()

Создание документа

moysklad.POST('entity/customerorder', {
  name: 'order-0123',
  description: 'Создание документа с позициями',
  positions: [
    {
      assortment: {
        meta: {
          type: 'product'
          href: moysklad.buildUrl('entity/product/1c18973b-674f-11e5-7a07-673d000524d7')
        }
      },
      quantity: 1
    },
    // ... остальные позиции
  ]
})

Если в документе более 100 позиций, то создание документа пройдет за два этапа:

  1. создание документа с первыми 100 позициями
  2. остальные позиции будут добавлены в созданный документ отдельным запросом(ами)

Метод вернет созданный документ с полным списком позиций в формате коллекции МойСклад

Обновление документа

// идентификатор обновляемого документа
let orderId = '191ebffa-45df-11e6-7a69-93a7000513f8'
 
moysklad.PUT(['entity/customerorder', orderId], {
  description: 'Обновление документа и позиций',
  positions: [
    // БЕЗ ИЗМЕНЕНИЙ - указан только id (позиция не будет обновлена)
    {
      id: 'd022cba8-fe90-11e6-7a69-97110014817c'
    },
 
    // ОБНОВЛЕНИЕ - указан id и обновляемые поля
    {
      id: 'd022c8a2-fe90-11e6-7a69-97110014817b',
      quantity: 2
    },
 
    // СОЗДАНИЕ - id не указан
    {
      assortment: {
        meta: {
          type: 'product'
          href: moysklad.buildUrl('entity/product/1c18973b-674f-11e5-7a07-673d000524d7')
        }
      },
      quantity: 1
    },
 
    // УДАЛЕНИЕ - указано meta (или id) и поле deleted со значением true
    // Внимание! Если позиций в документе больше 100 и удаляемые позиции не указаны явно, то позиции из документа могут быть не удалены.
    {
      meta: {
        type: 'customerorderposition'
        href: moysklad.buildUrl(['entity/customerorder', orderId, 'positions',
          'd022cf90-fe90-11e6-7a69-97110014817e'])
      },
      id: 'd022cf90-fe90-11e6-7a69-97110014817e',
      deleted: true
    }
  ]
})

Правила работы с позициями в рамках текущего расширения не отличаются от правил установленных в стандартном API, за тем исключением, что нет ограничений на кол-во позиций в массиве и при обновлении позиций в рамках текущего документа необходимо явно указывать удаляемые позиции (см. пример с удалением позиции).

install

npm i moysklad-extension-positions-smart-update

Downloadsweekly downloads

1

version

0.0.1

license

MIT

repository

Gitgithub

last publish

collaborators

  • avatar