From b6c8c067f860137d55659f33a795a9fd0e19e100 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Fri, 15 Dec 2023 13:35:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A6=D0=98=D0=A2=D0=9A-551=20-=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D0=B0=20=D0=9C=D0=A7=D0=94?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B9=20"=D0=98=D0=BD=D1=82=D0=B5=D0=B3?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D1=8F=20=D1=81=20=D0=AD=D0=94=D0=9E=20?= =?UTF-8?q?=D0=A1=D0=91=D0=98=D0=A1/=D0=94=D0=98=D0=90=D0=94=D0=9E=D0=9A"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/sbis.js | 36 +++++++++++++++++++++++++++++++++++- modules/sbis_config.js | 11 +++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 modules/sbis_config.js 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";