diff --git a/modules/sbis.js b/modules/sbis.js index d10671f..334f329 100644 --- a/modules/sbis.js +++ b/modules/sbis.js @@ -10,13 +10,25 @@ const xml2js = require("xml2js"); //Конвертация XML в JSON и JSON в XML const _ = require("lodash"); //Работа с коллекциями и объектами const rqp = require("request-promise"); //Работа с HTTP/HTTPS запросами +const { SMCHD_STORAGE_SYSTEM } = require("./sbis_config"); //Система хранения МЧД //--------------------- // Глобальные константы //--------------------- // Список тегов которые должны содержать массив -const tag = ["Вложение", "Редакция", "ДокументОснование", "ДокументСледствие", "Подпись", "Событие", "Этап", "Действие", "Сертификат"]; +const tag = [ + "Вложение", + "Редакция", + "ДокументОснование", + "ДокументСледствие", + "Подпись", + "Событие", + "Этап", + "Действие", + "Сертификат", + "Доверенность" +]; //------------ // Тело модуля @@ -132,6 +144,28 @@ const beforeDocParse = async prms => { if (!sToken) return { bUnAuth: true }; //Конвертируем XML из "Парус 8" в понятный "СБИСу" JSON let obj = await toJSON(prms.queue.blMsg.toString()); + //В зависимости от режима загрузки определим наименование узла + switch (obj.method) { + //Подготовка действия + case "СБИС.ПодготовитьДействие": + //Если требуется использовать МЧД + if (obj.params?.Документ?.Этап[0]?.Действие?.Сертификат?.Доверенность !== "undefined") { + obj.params.Документ.Этап[0].Действие.Сертификат.Доверенность.СистемаХраненияМЧД = SMCHD_STORAGE_SYSTEM; + } + break; + //Выполнение действия + case "СБИС.ВыполнитьДействие": + //Если требуется использовать МЧД + if (obj.params?.Документ?.Этап[0]?.Вложение?.Подпись?.Сертификат?.Доверенность) { + obj.params.Документ.Этап[0].Вложение.Подпись.Сертификат.Доверенность.СистемаХраненияМЧД = SMCHD_STORAGE_SYSTEM; + } else if (obj.params?.Документ?.Этап[0]?.Вложение[0]?.Подпись?.Сертификат?.Доверенность !== "undefined") { + for (i = 0; i < obj.params.Документ.Этап[0].Вложение.length; i++) { + obj.params.Документ.Этап[0].Вложение[i].Подпись.Сертификат.Доверенность.СистемаХраненияМЧД = SMCHD_STORAGE_SYSTEM; + } + } + break; + default: + } //Собираем и отдаём общий результат работы return { options: { diff --git a/modules/sbis_config.js b/modules/sbis_config.js new file mode 100644 index 0000000..594a4f6 --- /dev/null +++ b/modules/sbis_config.js @@ -0,0 +1,11 @@ +/* + Сервис интеграции ПП Парус 8 с WEB API + Дополнительный модуль: Интеграция с ЭДО "СБИС" (SBIS) - настройки +*/ + +//----------------- +// Интерфейс модуля +//----------------- + +//Система хранения МЧД +exports.SMCHD_STORAGE_SYSTEM = "https://m4d.nalog.gov.ru/EMCHD/check-status";