call `pRB_change`('ins','rbCustomers',0,JSON_OBJECT(
'isWebsiteQuery',1,
'name_f', 'Фамилия клиента',
'name_i', 'Имя клиента',
'name_o', 'Отчество клиента',
'name', 'Наименование клиента', # если не передать, то будет сформировано из ФИО
'name_full', 'Юридическое наименование', # Передаем для юр. лиц
'inn', 'ИНН клиента', # Передаем для юр. лиц
'kpp', 'КПП клиента', # Передаем для юр. лиц
'ogrn', 'ОГРН клиета', # Передаем для юр. лиц
'email', 'электронная почта',
'phone', 'телефон', # Не менее 11 знаков
'address', 'Адрес', # Передаем для юр. лиц
'id_rbStock', 'ID магазина клиента', # Список можно получить через АПИ Офисы и склады
'id_rbUsers_manager', "ID пользователя-менеджера", # id из справочника Пользователи, который будет назначен менеджером для клиента по умолчанию
'login', 'логин клиента',
'pass', 'пароль клиента',
'sms_allow','1', # Если передать 1, то смс рассылки разрешены, иначе передаем 0
'id_rbCustomersSource', 'ID источника клиента', # откуда клиента узнал о вас, список заполняется из программы. Ниже указано API для получения списка.
'ip','текущий ip-клиента'
),'ru',1)
Для получения списка ваших офисов и магазинов использовать API по ссылке
Для получения списка источников клиентов использовать API по ссылке
call `pRB_change`('ins','rbCustomers',0,JSON_OBJECT(
'isWebsiteQuery',1,
'name_f', 'Фамилия клиента',
'name_i', 'Имя клиента',
'email', 'электронная почта',
'phone', 'телефон', # Не менее 11 знаков
'id_rbStock', 'ID магазина клиента', # Список можно получить через АПИ Офисы и склады
'login', 'логин клиента',
'pass', 'пароль клиента',
'ip','текущий ip-клиента'
),'ru',1)
Проверка по полям телефон, логин, почта и инн.
Для поиска можно указать любое одно поле или указать все.
call `pANY_www`('CustomerExistChecking',JSON_OBJECT(
'phone','телефон клиента для проверки',
'login','логин для проверки',
'email','электронная почта для проверки',
'inn','инн клиента для проверки'
),'ru')
Вернет 3 поля: isError, mess, CounterpartsID
Если isError больше нуля, значит клиент найден, подробности в поле mess, где CounterpartsID глобал. код клиента
Если клиент не найден в базе, то CounterpartsID равно нулю и isError = 0
Использовать API, если необходимо добавить клиента без логина и пароля, для регистрации запроса
call `pRB_change`('ins','rbCustomers',0,JSON_OBJECT(
'isWebsiteQuery',1,
'isRequestCustomer', 1,
'name_f', 'Фамилия клиента',
'name_i', 'Имя клиента',
'email', 'электронная почта клиента',
'phone', 'телефон клиента(не меньшее 11 знаков)',
'id_rbStock', 'ID магазина клиента', # Список можно получить через АПИ Офисы и склады
),'ru',1)
Поля почты и фамилии (email и nameF) передавать необязательно.
Запрос вернет поля isError, mess, newRecId, AnyID;
В случае ошибки, в поле isError будет значение больше 0 и возможно уже есть такой клиент. Сообщение об ошибке будет в поле mess
Если клиент добавлен успешно, то глобальный код клиента id будет передан в поле AnyID
call pRB_get('rbCustomers',JSON_OBJECT(
'filter','Authorization',
'login','Логин для авторизации',
'pass','Пароль для авторизации'
),'ru',1,0,1,'')
Если запрос вернет 0 строк, то клиент не найден в базе с указанным логином и паролем
Ответ запроса (описаны базовые поля):
email - почта
name - фио
id_rbCounterparts - глобальный код клиента CouterpartsID
rbPriceLevels_id_rbPriceLevels - описание уровня цены
id_rbPriceLevels - код уровня цены PriceLevelID
rbUsers_id_rbUsers_manager - ФИО менеджера
id_rbUsers_manager - код менеджера
StockAddress - адрес магазина
id_rbStock - код адреса магазина
id_rbFirms - код фирмы, если он задан для клиента
phone_formated - телефон клиента
isDelivery - если 1, то доставка до клиента
address_delivery - адрес доставки
isWholesale - если 1, то оптовик
id_rbCustomersSource - источник откуда клиент узнал о компании
DiscountCard - Номер дисконтной карты, если существует
DiscountCardID - Код дисконтной карты клиента
DiscountCardType - тип карты (бонусная, процентная)
Информацию о размере бонусов или проценте скидки по карте можно получить через
даннное API, в кором нужно передать значение поля DiscountCardID
call `pRB_change`('upd','rbCustomers',0,JSON_OBJECT(
'isWebsiteQuery',1,
'CntptsId','глобальный код клиента CouterpartsID',
'name_f', 'фамилия клиента',
'name_i', 'имя клиента',
'name_o', 'отчество клиента',
'name', 'Короткое наименование. Заполняется автоматически из ФИО, если поле передать пустым',
'email', 'электронная почта',
'phone', 'телефон',
'phones', 'дополнительные телефоны через запятую',
'id_rbStock', 'ID офиса/магазина клиента',
/*Карточка организации, правка доступна только один раз*/
'name_full','Полное название организации',
'inn','ИНН организации',
'kpp','КПП организации',
'ogrn','ОГРН организации',
'address','Адрес'
),'ru',1)
call `pRB_change`('upd','rbCustomers',0,JSON_OBJECT(
'isWebsiteQuery',1,
'CntptsId','глобальный код клиента CouterpartsID',
'isAuthorizationDataUpd', 1,
'login', 'новый или измененный логин клиента',
'pass', 'новый или измененный пароль клиента'
),'ru',1)
call pFinanceCounterpartsInfo(JSON_OBJECT(
'type','Balance',
'id_rbCounterparts','глобальный код клиента CouterpartsID'
))
Описание полей результата запроса:
onBalance - сумма баланса (с учетом только отгруженных товаров и оказанных услуг)
onActiveOrders - активных, невыданных заказов
onDebtOverdue - сумма долга по просроченным, вовремя не оплаченных клиентом отгрузок
onCredit - сумма отсрочки по договору поставки
onNewState - сумма заказов находящихся в статусе Новый
Для расчета общего долга/баланса клиента, с учетом активных заказов, нужно суммировать значения onBalance и onActiveOrders. Если значение больше нуля, то баланс положительный, иначе у клиента долг
call `pReports`(0,JSON_OBJECT(
'ReportTypeCode','ReportCounterpartsBalanceAct',
'GetHeaders',1,
'd1','2019.03.01',
'd2','2019.12.08',
'FirmID',:FirmID,
'CounterpartsID',:CounterpartsID,
'CurrID',:CurrID),"ru")
/*
ГДЕ:
FirmID - ID вашей организации
CounterpartsID - глобальный ID клиента
CurrID - ID валюты
ОТВЕТ:
SaldoIn1 - на балансе на начало периода
SaldoOut1 - или долг на начало периода
SaldoIn2 - на балансе на конец периода
SaldoOut2 - или долг на конец периода
totalIn - сумма поступлений за период
totalOut - сумма расходов за период
*/
call `pReports`(0,JSON_OBJECT(
'ReportTypeCode','ReportCounterpartsBalanceAct',
'FirmID','ID вашей фирмы/организации по которой делается сверка по клиенту',
'CounterpartsID','глобальный код клиента CouterpartsID',
'd1','дата начала периода в формате гггг.мм.дд',
'd2','дата окончания периода в формате гггг.мм.дд'
),'ru')
call `pANY`('RequestAdd',JSON_OBJECT(
'id_rbCounterparts','Если клиента авторизирован, то передаем глобальный код клиента CouterpartsID',
'CustomerName','Если ID клиента не указан, то новый клиент будет создан с данным Именем',
'CustomerPhone','Если ID клиента не указан, то новый клиент будет создан с данным телефоном',
'subject','тема запроса',
'body','содержание и подробности запроса',
'id_rbStock','код магазина или офиса на который нужно добавить запрос',
'id_rbUsers_manager','ID менеджера, на которого добавляется запрос, можно пропустить параметр, чтобы видели все кто подписан на уведомление по магазину',
'id_rbCustomersSource','ID источника клиента, откуда он узнал о вашей компании, можно пропустить параметр',
'ip','текущий IP адрес клиента, для контроля от ботов',
'isPushAdd','1 - Если нужно, чтобы ушло пуш уведомление в мобильное приложение, иначе 0'
),'ru')
Если id_rbCounterparts передать 0, то будет попытка создания клиента с переданными полями CustomerName и CustomerPhone, если же будет найден клиент с таким телефоном, то будет использован найденный клиент
call `pRB_get`('rbOrderStates',JSON_OBJECT(
'isWebsiteQuery',1,
'id_rbCounterparts','Глобальный код клиента CouterpartsID'
),'ru',0,1,0,'')
Ответ запроса (описаны базовые поля):
id - код статуса
name - имя статуса
isOnInform - если 1, то клиент подписан на уведомление
call `pANY_www`('SetOrderStatesInform',JSON_OBJECT(
'CouterpartsID','Глобальный код клиента CouterpartsID',
'ArrayStates','Список ID статусов через запятую'
),'ru')
call `pRB_get`('rbCustomersSource',null,'ru',0,1,0,'')
Восстановление пароля происходит в два этапа
/*** 1. Формирование уникального ключа ***/
call pANY_www('UpdatePassword',
JSON_OBJECT(
'GetKey','1',
'login','передаем логин/email клиента или телефон, если он выбран в качестве логина',
'ip',':CustomerIP',
'bySms',:bySms
),'ru')
/*
ГДЕ:
:CustomerIP - текущий IP-адрес клиента, для защиты от ботов
:bySms - по умолчанию передаем 0, но если в качестве логина используется номер телефона и код восстановления нужно отправить смс-сообщением, то передаем 1
ОТВЕТ:
key - уникальный ключ, активен в течении одного дня
email - почта клиента, куда нужно отправить ссылку на сайт с ключом
В случае ошибки, вернет два поля isError=1 и mess - описание ошибки
*/
/*** 2. Проверка существования ключа при переходе клиентом по ссылке ***/
call pANY_www('UpdatePassword',
JSON_OBJECT(
'CheckKey','1',
'key',':key',
'ip',':CustomerIP',
'sendArhive',:sendArhive
),'ru')
/*
ГДЕ:
:CustomerIP - текущий IP-адрес клиента, для защиты от ботов
:sendArhive - передаем 1 для деактивация ключа восстановления, сразу после успешного входа в кабинет, иначе ключ будет деактивирован ночью
ОТВЕТ:
login - логин клиента
pass - пароль клиента
В случае ошибки, вернет два поля isError=1 и mess - описание ошибки
*/
call pSms('Add',JSON_OBJECT(
'StockID','ID магазина клиента',
'SenderID','ID записи из справочника "СМС настройка", по умолчанию можно передать 0',
'recipient','мобильный номер телефона клиента',
'message','текст сообщения',
'id_rbCounterparts','глобальный код клиента CouterpartsID, если не известен, то передаем 0'
),0)
call `pMail`('Add',JSON_OBJECT(
'subject','тема письма',
'recipients','email получателя, если несколько, то разделить через точку с запятой',
'body','тело сообщения'
),'ru')