Функция скачивания печатной формы чека с сервера ОФД

This commit is contained in:
Mikhail Chechnev 2019-02-05 18:21:26 +03:00
parent 4c1a787b12
commit af27405432
2 changed files with 71 additions and 5 deletions

View File

@ -49,6 +49,13 @@ create or replace package UDO_PKG_EXS_ATOL as
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
); );
/* Îòðàáîòêà îòâåòîâ ÎÔÄ íà çàïðîñ ÷åêà */
procedure OFD_PROCESS_GET_BILL_DOC
(
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
);
end; end;
/ /
create or replace package body UDO_PKG_EXS_ATOL as create or replace package body UDO_PKG_EXS_ATOL as
@ -264,6 +271,7 @@ create or replace package body UDO_PKG_EXS_ATOL as
STAG1077 PKG_STD.TSTRING; -- Áóôåð äëÿ çíà÷åíèÿ "Ôèñêàëüíûé ïðèçíàê äîêóìåíòà" (òýã 1077) STAG1077 PKG_STD.TSTRING; -- Áóôåð äëÿ çíà÷åíèÿ "Ôèñêàëüíûé ïðèçíàê äîêóìåíòà" (òýã 1077)
SERR_CODE PKG_STD.TSTRING; -- Áóôåð äëÿ çíà÷åíèÿ "Êîä îøèáêè" SERR_CODE PKG_STD.TSTRING; -- Áóôåð äëÿ çíà÷åíèÿ "Êîä îøèáêè"
SERR_TEXT PKG_STD.TSTRING; -- Áóôåð äëÿ çíà÷åíèÿ "Òåêñò îøèáêè" SERR_TEXT PKG_STD.TSTRING; -- Áóôåð äëÿ çíà÷åíèÿ "Òåêñò îøèáêè"
NNEW_EXSQUEUE PKG_STD.TREF; -- Ðåã. íîìåð çàïèñè î÷åðåäè îáìåíà (äëÿ ñêà÷èâàíèÿ ãîòîâîãî ÷åêà)
begin begin
/* Ñ÷èòàåì çàïèñü î÷åðåäè */ /* Ñ÷èòàåì çàïèñü î÷åðåäè */
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE); REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
@ -400,6 +408,15 @@ create or replace package body UDO_PKG_EXS_ATOL as
'Îøèáêà óñòàíîâêè çíà÷åíèÿ àòðèáóòà ôèñêàëüíîãî äîêóìåíòà: %s', 'Îøèáêà óñòàíîâêè çíà÷åíèÿ àòðèáóòà ôèñêàëüíîãî äîêóìåíòà: %s',
sqlerrm); sqlerrm);
end; end;
/* Ñòàâèì çàäà÷ó íà ïîëó÷åíèå ÷åêà îò ÎÔÄ */
PKG_EXS.QUEUE_PUT(SEXSSERVICE => 'ÎÔÄ_Ïîëó÷×åêà',
SEXSSERVICEFN => 'Ïîëó÷×åêà',
BMSG => CLOB2BLOB(LCDATA => STAG1041 || '/' || STAG1040 || '/' || STAG1077,
SCHARSET => 'UTF8'),
NLNK_COMPANY => RFISCDOC.COMPANY,
NLNK_DOCUMENT => RFISCDOC.RN,
SLNK_UNITCODE => 'UDO_FiscalDocuments',
NNEW_EXSQUEUE => NNEW_EXSQUEUE);
end; end;
/* Îøèáêà îáðàáîòêè */ /* Îøèáêà îáðàáîòêè */
when SSTATUS_FAIL then when SSTATUS_FAIL then
@ -430,5 +447,28 @@ create or replace package body UDO_PKG_EXS_ATOL as
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
end V4_FFD105_PROCESS_GET_BILL_INF; end V4_FFD105_PROCESS_GET_BILL_INF;
/* Îòðàáîòêà îòâåòîâ ÎÔÄ íà çàïðîñ ÷åêà */
procedure OFD_PROCESS_GET_BILL_DOC
(
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
)
is
REXSQUEUE EXSQUEUE%rowtype; -- Çàïèñü ïîçèöèè î÷åðåäè
begin
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
/* Ïðîâåðèì ÷òî ïîçèöèÿ î÷åðåäè êîððåêòíà */
UTL_EXSQUEUE_CHECK_ATTRS(REXSQUEUE => REXSQUEUE);
/* Ñîõðàíèì ïîëó÷åííûé ÷åê â ÔÄ */
UDO_P_FISCDOCS_PUT_BILL(NRN => REXSQUEUE.LNK_DOCUMENT, NCOMPANY => REXSQUEUE.LNK_COMPANY, BDATA => REXSQUEUE.RESP);
/* Âñ¸ ïðîøëî óñïåøíî */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT);
exception
when others then
/* Âåðí¸ì îøèáêó */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
end OFD_PROCESS_GET_BILL_DOC;
end; end;
/ /

View File

@ -674,8 +674,6 @@ const beforeGetBillInfo = async prms => {
//Обработчик "После" отправки запроса на получение информации о чеке серверу "АТОЛ-Онлайн" //Обработчик "После" отправки запроса на получение информации о чеке серверу "АТОЛ-Онлайн"
const afterGetBillInfo = async prms => { const afterGetBillInfo = async prms => {
//if (prms.queue.blResp) console.log(prms.queue.blResp.toString());
//else console.log("Сервер не вернул ответ");
//Буфер для результата работы обработчика //Буфер для результата работы обработчика
let res = null; let res = null;
//Буфер для данных ответа сервера //Буфер для данных ответа сервера
@ -781,6 +779,32 @@ const afterGetBillInfo = async prms => {
}; };
}; };
//Обработчик "До" отправки запроса на получение чека серверу "ОФД"
const beforeGetOFDBillDoc = async prms => {
//Разберем данные для получения чека
let sDocPath = null;
if (prms.queue.blMsg) {
sDocPath = prms.queue.blMsg.toString();
} else {
throw new Error("В теле сообщения отсутствуют данные для получения чека фискального документа");
}
//Собираем общий результат работы
let res = {
options: {
url: buildURL({ sSrvRoot: prms.service.sSrvRoot, sFnURL: prms.function.sFnURL }).replace(
"<doc_path>",
sDocPath
),
simple: true
}
};
//Возврат резульатата
return res;
};
//Обработчик "После" отправки запроса на получение чека серверу "ОФД"
const afterGetOFDBillDoc = async prms => {};
//----------------- //-----------------
// Интерфейс модуля // Интерфейс модуля
//----------------- //-----------------
@ -791,3 +815,5 @@ exports.beforeRegBillSIR = beforeRegBillSIR;
exports.afterRegBillSIR = afterRegBillSIR; exports.afterRegBillSIR = afterRegBillSIR;
exports.beforeGetBillInfo = beforeGetBillInfo; exports.beforeGetBillInfo = beforeGetBillInfo;
exports.afterGetBillInfo = afterGetBillInfo; exports.afterGetBillInfo = afterGetBillInfo;
exports.beforeGetOFDBillDoc = beforeGetOFDBillDoc;
exports.afterGetOFDBillDoc = afterGetOFDBillDoc;