ЦИТК-999 - ДИАДОК - исправлена проблема конвертации ИНН в число с последующим исчезновением лидирующего нуля

This commit is contained in:
Mikhail Chechnev 2025-11-26 12:50:32 +03:00
parent 54988da32c
commit 80f50d43a3

View File

@ -296,6 +296,8 @@ const beforeMessagePost = async prms => {
} }
//Если не достали из контекста токен доступа - значит нет аутентификации на сервере //Если не достали из контекста токен доступа - значит нет аутентификации на сервере
if (!sToken) return { bUnAuth: true }; if (!sToken) return { bUnAuth: true };
//Получим параметры запроса
const optionsData = await toJSON(prms.queue.sOptions);
//Конвертируем XML из "Парус 8" в JSON //Конвертируем XML из "Парус 8" в JSON
let obj = await toJSON(prms.queue.blMsg.toString()); let obj = await toJSON(prms.queue.blMsg.toString());
//Формируем запрос для получения FromBoxId //Формируем запрос для получения FromBoxId
@ -313,7 +315,7 @@ const beforeMessagePost = async prms => {
//Получим идентификатор организации по ИНН/КПП поставщика документа //Получим идентификатор организации по ИНН/КПП поставщика документа
for (let i in serverResp.Organizations) { for (let i in serverResp.Organizations) {
//Если найдена подходящая организация - запомним идентификатор и выходим из цикла //Если найдена подходящая организация - запомним идентификатор и выходим из цикла
if (serverResp.Organizations[i].Inn == prms.options.inn_pr && serverResp.Organizations[i].Kpp == prms.options.kpp_pr) { if (serverResp.Organizations[i].Inn == optionsData.inn_pr && serverResp.Organizations[i].Kpp == optionsData.kpp_pr) {
//Сохраняем полученный ответ //Сохраняем полученный ответ
obj.FromBoxId = serverResp.Organizations[i].Boxes[0].BoxId; obj.FromBoxId = serverResp.Organizations[i].Boxes[0].BoxId;
break; break;
@ -321,13 +323,13 @@ const beforeMessagePost = async prms => {
} }
//Не удалось получить ящик отправителя //Не удалось получить ящик отправителя
if (!obj.FromBoxId) { if (!obj.FromBoxId) {
throw new Error(`Не удалось получить ящик текущей организации с ИНН: ${prms.options.inn_pr} и КПП: ${prms.options.kpp_pr}`); throw new Error(`Не удалось получить ящик текущей организации с ИНН: ${optionsData.inn_pr} и КПП: ${optionsData.kpp_pr}`);
} }
} catch (e) { } catch (e) {
throw Error(`Ошибка при получении ящика текущей организации: ${e.message}`); throw Error(`Ошибка при получении ящика текущей организации: ${e.message}`);
} }
//Получим ящик получателя //Получим ящик получателя
organization = await getOrganizationBoxId(prms.service.sSrvRoot, buildHeaders(sAPIClientId, sToken), prms.options.inn_cs, prms.options.kpp_cs); organization = await getOrganizationBoxId(prms.service.sSrvRoot, buildHeaders(sAPIClientId, sToken), optionsData.inn_cs, optionsData.kpp_cs);
obj.ToBoxId = organization.BoxId; obj.ToBoxId = organization.BoxId;
//Если не заполнен идентификатор подразделения и при получении ящика удалось его подобрать //Если не заполнен идентификатор подразделения и при получении ящика удалось его подобрать
if ((!obj.ToDepartmentId) && (organization.DepartmentId)) { if ((!obj.ToDepartmentId) && (organization.DepartmentId)) {
@ -454,6 +456,8 @@ const beforeEvent = async prms => {
} }
//Если не достали из контекста токен доступа - значит нет аутентификации на сервере //Если не достали из контекста токен доступа - значит нет аутентификации на сервере
if (!sToken) return { bUnAuth: true }; if (!sToken) return { bUnAuth: true };
//Получим параметры запроса
const optionsData = await toJSON(prms.queue.sOptions);
//Формируем запрос для получения BoxId //Формируем запрос для получения BoxId
let rqpOptions = { let rqpOptions = {
uri: buildMyOrganizationURL(prms.service.sSrvRoot), uri: buildMyOrganizationURL(prms.service.sSrvRoot),
@ -466,7 +470,7 @@ const beforeEvent = async prms => {
//Получим идентификатор организации по ИНН/КПП контрагента организации //Получим идентификатор организации по ИНН/КПП контрагента организации
for (let i in serverResp.Organizations) { for (let i in serverResp.Organizations) {
//Если найдена подходящая организация - запомним идентификатор и выходим из цикла //Если найдена подходящая организация - запомним идентификатор и выходим из цикла
if (serverResp.Organizations[i].Inn == prms.options.inn && serverResp.Organizations[i].Kpp == prms.options.kpp) { if (serverResp.Organizations[i].Inn == optionsData.inn && serverResp.Organizations[i].Kpp == optionsData.kpp) {
//Сохраняем полученный ответ //Сохраняем полученный ответ
sBoxId = serverResp.Organizations[i].Boxes[0].BoxId; sBoxId = serverResp.Organizations[i].Boxes[0].BoxId;
//Если задано подразделение //Если задано подразделение
@ -493,7 +497,7 @@ const beforeEvent = async prms => {
} }
//Не удалось получить ящик текущей организации //Не удалось получить ящик текущей организации
if (!sBoxId) { if (!sBoxId) {
throw new Error(`Не удалось получить ящик текущей организации с ИНН: ${prms.options.inn} и КПП: ${prms.options.kpp}`); throw new Error(`Не удалось получить ящик текущей организации с ИНН: ${optionsData.inn} и КПП: ${optionsData.kpp}`);
} }
} catch (e) { } catch (e) {
throw Error(`Ошибка при получении ящика текущей организации: ${e.message}`); throw Error(`Ошибка при получении ящика текущей организации: ${e.message}`);
@ -833,6 +837,8 @@ const beforeDepartmentIdGet = async prms => {
const afterDepartmentIdGet = async prms => { const afterDepartmentIdGet = async prms => {
let resu = null; let resu = null;
let organization = {}; let organization = {};
//Получим параметры запроса
const optionsData = await toJSON(prms.queue.sOptions);
//Действие выполнено успешно //Действие выполнено успешно
if (prms.optionsResp.statusCode == 200) { if (prms.optionsResp.statusCode == 200) {
try { try {
@ -840,7 +846,7 @@ const afterDepartmentIdGet = async prms => {
//Получим организацию не в роуминге (или единственную организацию в роуминге) //Получим организацию не в роуминге (или единственную организацию в роуминге)
organization = getOrganizations(JSON.parse(prms.queue.blResp.toString())); organization = getOrganizations(JSON.parse(prms.queue.blResp.toString()));
if (!organization) { if (!organization) {
throw Error(`Не удалось получить ящик для контрагента с ИНН: ${prms.options.nINN} и КПП: ${prms.options.nKPP}`); throw Error(`Не удалось получить ящик для контрагента с ИНН: ${optionsData.nINN} и КПП: ${optionsData.nKPP}`);
} }
} catch (e) { } catch (e) {
//Получим ключ разработчика //Получим ключ разработчика
@ -848,7 +854,7 @@ const afterDepartmentIdGet = async prms => {
//Считаем токен доступа из контекста сервиса //Считаем токен доступа из контекста сервиса
let sToken = prms.service.sCtx; let sToken = prms.service.sCtx;
//Получим головную организацию по ИНН/КПП //Получим головную организацию по ИНН/КПП
organization = await getOrganization(prms.service.sSrvRoot, buildHeaders(sAPIClientId, sToken), prms.options.nINN, prms.options.nKPP); organization = await getOrganization(prms.service.sSrvRoot, buildHeaders(sAPIClientId, sToken), optionsData.nINN, optionsData.nKPP);
}; };
//Преобразуем JSON ответ сервиса "ДИАДОК" в XML, понятный "Парус 8" //Преобразуем JSON ответ сервиса "ДИАДОК" в XML, понятный "Парус 8"
resu = toXML({ root: organization }); resu = toXML({ root: organization });