Данные конечного пользователя

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

При размещении заказа на товар необходимо передавать лиц. форму, если установлен флаг LicenseFormRequired у продукта(в результатах метода GetPriceChanges).

Перед размещением заказа, необходимо вызвать метод GetUserInfoDescriptionFor, передав туда язык описания и список товаров, на которые размещается заказ. В результатах метода будет содержаться список полей, которые конечному пользователю необходимо будет заполнить. Для каждого поля предоставляется текстовое описание и набор требований к его заполнению(регулярное выражение, длина итд).

Важно учитывать, что некоторые поля могут быть предназначены не для конечного пользователя, а для реселлера. Тип поля определяется полем UserType в его описании. Значение в них должно подставляться автоматически системой реселлера, а само поле не должно показываться конечному пользователю. На данный момент существует только одно такое поле - Пин Касперского.

К сожалению, не всегда с помощью регулярных выражений можно описать все правила заполнения формы(Например, правило вида «Поле компания обязательно для заполнения, только если пользователь юридическое лицо»). Такие правила отражаются только на описании, для понимания их заполняющим форму. Для проверки корректности заполнения формы существует метод CheckEndUserInfo. Т.к. форма должна быть своя для каждого товара, проверку необходимо осуществлять следующим образом:

  1. Форма собирается для каждого товара в заказе. Для этого все заполненные поля фильтруются, отбираются только те, в описании которых парт. номер товара имеется в массиве RelatedPartNums.
  2. Собранная форма для каждого товара проверяется с помощью метода CheckEndUserInfo. В случае, если в каких-то полях будет ошибка, то в результатах вызова метода это поле будет помечено флагом HasError, а текст ошибки будет содержаться в поле ErrorText.
  3. Если в заполнении формы присутствуют ошибки, то они отображаются пользователю, он их исправляет, и повторяются пункты 1-2

При добавлении лицензионной формы к строке заказа поля необходимо фильтровать по продукту так-же, как и для проверки формы.