Перейти к содержанию

Проверка наличия на складе товара в RetailCrm

Если вы используете интеграцию сторонних складских программ в RetailCrm , например Мой Склад, то скорее всего вы сталкивались с проблемой проверки наличия на складе товара.

Можно выделить три сценария где необходима проверка:

  1. Валидация наличия всего заказа при переходе в другой статус
  2. Проверка наличия при изменения кол-ва у товара в уже забронированом заказе
  3. Проверка наличия при добавлении нового товара в уже забронированном заказе

Основная трудность тут заключалась в том что бы сверять наличие товара в уже забронированном заказе. Потому что проверка нужна не всех позиций, а только измененных или добавленных. Старые позиции не должны проверяться, т.к. они например могли забронировать последнюю штуку на складе, соответсвенно в RetailCrm уже будет отображаться 0.

Были придуманы следующие валидации:

Валидация наличия товара всего заказа при переходе в другой статус

changeSet.hasChangedField("status") and 
changeSet.getNewValue("status").getCode() in ["статусы при переходе в которые должна срабатывать валидация"] and 
order.orderProducts | contains(item => item.offer.quantity < item.quantity)

Данную валидацию лучше всего ставить на статусы при которых происходит синхронизация с Моим Складом и автоматический резерв товара.

Проверка наличия при изменения кол-ва у товара в уже забронированом заказе

order.status.getCode() in ["статус заказа где должна происходить валидация"] and 
changeSet | contains (p => p.fieldName matches '#order_product#' and (p.orderProduct.offer.quantity < p.orderProduct.quantity)) and
 changeSet | contains ( c => c.fieldName == 'order_product.quantity' and c.newValue > c.oldValue)

Проверка наличия при добавлении нового товара в уже забронированном заказе

order.status.getCode() in ["статус заказа где должна происходить валидация"] and 
changeSet | contains (c => c.fieldName matches '#order_product#' and (c.newValue.offer.quantity < c.newValue.quantity))
Опубликовано в рубрикеАвтоматизация процессов

Оставьте первый коментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *