forked from CITKParus/P8-ExchangeService
ЦИТК-1032 - приоритетный подбор контрагента по коду участника ЭДО
This commit is contained in:
parent
3cb48c11a0
commit
ac7870e884
@ -136,15 +136,23 @@ const buildHeaders = (sAPIClientId, sToken = null) => ({
|
||||
});
|
||||
|
||||
//Отбор организций
|
||||
const getOrganizations = organizations => {
|
||||
const getOrganizations = (organizations, sNumEdo = null) => {
|
||||
//Параметры отбора
|
||||
let isRoaming = false;
|
||||
let isActive = true;
|
||||
//Итоговая выборка
|
||||
let organization = { Organizations: [] };
|
||||
//Найдем активную организацию не в роуминге
|
||||
organization.Organizations[0] = organizations.Organizations.find(org => (org.IsRoaming === isRoaming) && (org.IsActive === isActive));
|
||||
//Если не удалось получить организацию не в роуминге
|
||||
//Задан код участника ЭДО
|
||||
if (sNumEdo) {
|
||||
//Найдем активную организацию не в роуминге
|
||||
organization.Organizations[0] = organizations.Organizations.find(org => (org.FnsParticipantId === sNumEdo));
|
||||
};
|
||||
//Не удалось получить организацию по коду участника ЭДО
|
||||
if (!organization.Organizations[0]) {
|
||||
//Найдем активную организацию не в роуминге
|
||||
organization.Organizations[0] = organizations.Organizations.find(org => (org.IsRoaming === isRoaming) && (org.IsActive === isActive));
|
||||
};
|
||||
//Не удалось получить организацию не в роуминге
|
||||
if (!organization.Organizations[0]) {
|
||||
//Найдем активную организацию
|
||||
organization.Organizations[0] = organizations.Organizations.find(org => (org.IsActive === isActive));
|
||||
@ -185,7 +193,7 @@ const getOrganization = async (sSrvRoot, headers, nInn, nKpp) => {
|
||||
};
|
||||
|
||||
//Получение ящика организации по ИНН/КПП контрагента
|
||||
const getOrganizationBoxId = async (sSrvRoot, headers, nInn, nKpp) => {
|
||||
const getOrganizationBoxId = async (sSrvRoot, headers, nInn, nKpp, sNumEdo) => {
|
||||
//Параметры запроса
|
||||
let rqpOptions;
|
||||
let serverResp;
|
||||
@ -205,9 +213,9 @@ const getOrganizationBoxId = async (sSrvRoot, headers, nInn, nKpp) => {
|
||||
serverResp = await rqp(rqpOptions);
|
||||
try {
|
||||
//Получим организацию не в роуминге (или единственную организацию в роуминге)
|
||||
serverResp = getOrganizations(serverResp);
|
||||
serverResp = getOrganizations(serverResp, sNumEdo);
|
||||
if (!serverResp?.Organizations[0]) {
|
||||
throw Error(`Не удалось получить ящик получателя для контрагента с ИНН: ${nInn} и КПП: ${nKpp}`);
|
||||
throw Error(`Не удалось получить ящик получателя для контрагента с ${sNumEdo ? `кодом участника ЭДО: ${sNumEdo}, ` : ""}ИНН: ${nInn} и КПП: ${nKpp}`);
|
||||
}
|
||||
} catch (e) {
|
||||
//Получим головную организацию по ИНН/КПП
|
||||
@ -329,7 +337,7 @@ const beforeMessagePost = async prms => {
|
||||
throw Error(`Ошибка при получении ящика текущей организации: ${e.message}`);
|
||||
}
|
||||
//Получим ящик получателя
|
||||
organization = await getOrganizationBoxId(prms.service.sSrvRoot, buildHeaders(sAPIClientId, sToken), optionsData.inn_cs, optionsData.kpp_cs);
|
||||
organization = await getOrganizationBoxId(prms.service.sSrvRoot, buildHeaders(sAPIClientId, sToken), optionsData.inn_cs, optionsData.kpp_cs, optionsData.num_cs);
|
||||
obj.ToBoxId = organization.BoxId;
|
||||
//Если не заполнен идентификатор подразделения и при получении ящика удалось его подобрать
|
||||
if ((!obj.ToDepartmentId) && (organization.DepartmentId)) {
|
||||
@ -844,9 +852,9 @@ const afterDepartmentIdGet = async prms => {
|
||||
try {
|
||||
try {
|
||||
//Получим организацию не в роуминге (или единственную организацию в роуминге)
|
||||
organization = getOrganizations(JSON.parse(prms.queue.blResp.toString()));
|
||||
organization = getOrganizations(JSON.parse(prms.queue.blResp.toString()), optionsData.sNumEdo);
|
||||
if (!organization) {
|
||||
throw Error(`Не удалось получить ящик для контрагента с ИНН: ${optionsData.nINN} и КПП: ${optionsData.nKPP}`);
|
||||
throw Error(`Не удалось получить ящик для контрагента с ${optionsData.sNumEdo ? `кодом участника ЭДО: ${optionsData.sNumEdo}, ` : ""}ИНН: ${optionsData.nINN} и КПП: ${optionsData.nKPP}`);
|
||||
}
|
||||
} catch (e) {
|
||||
//Получим ключ разработчика
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user