forked from CITKParus/P8-ExchangeService
Функция скачивания печатной формы чека с сервера ОФД
This commit is contained in:
parent
4c1a787b12
commit
af27405432
@ -49,6 +49,13 @@ create or replace package UDO_PKG_EXS_ATOL as
|
||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||
);
|
||||
|
||||
/* Îòðàáîòêà îòâåòîâ ÎÔÄ íà çàïðîñ ÷åêà */
|
||||
procedure OFD_PROCESS_GET_BILL_DOC
|
||||
(
|
||||
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||
);
|
||||
|
||||
end;
|
||||
/
|
||||
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)
|
||||
SERR_CODE PKG_STD.TSTRING; -- Áóôåð äëÿ çíà÷åíèÿ "Êîä îøèáêè"
|
||||
SERR_TEXT PKG_STD.TSTRING; -- Áóôåð äëÿ çíà÷åíèÿ "Òåêñò îøèáêè"
|
||||
NNEW_EXSQUEUE PKG_STD.TREF; -- Ðåã. íîìåð çàïèñè î÷åðåäè îáìåíà (äëÿ ñêà÷èâàíèÿ ãîòîâîãî ÷åêà)
|
||||
begin
|
||||
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
||||
@ -389,7 +397,7 @@ create or replace package body UDO_PKG_EXS_ATOL as
|
||||
UDO_P_FISCDOCSPROP_SET_VAL(NPRN => RFISCDOC.RN,
|
||||
NCOMPANY => RFISCDOC.COMPANY,
|
||||
SATTRIBUTE => '1042',
|
||||
NVAL_NUMB => TO_NUMBER(STAG1042));
|
||||
NVAL_NUMB => TO_NUMBER(STAG1042));
|
||||
UDO_P_FISCDOCSPROP_SET_VAL(NPRN => RFISCDOC.RN,
|
||||
NCOMPANY => RFISCDOC.COMPANY,
|
||||
SATTRIBUTE => '1077',
|
||||
@ -400,6 +408,15 @@ create or replace package body UDO_PKG_EXS_ATOL as
|
||||
'Îøèáêà óñòàíîâêè çíà÷åíèÿ àòðèáóòà ôèñêàëüíîãî äîêóìåíòà: %s',
|
||||
sqlerrm);
|
||||
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;
|
||||
/* Îøèáêà îáðàáîòêè */
|
||||
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);
|
||||
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;
|
||||
/
|
||||
|
@ -674,8 +674,6 @@ const beforeGetBillInfo = async prms => {
|
||||
|
||||
//Обработчик "После" отправки запроса на получение информации о чеке серверу "АТОЛ-Онлайн"
|
||||
const afterGetBillInfo = async prms => {
|
||||
//if (prms.queue.blResp) console.log(prms.queue.blResp.toString());
|
||||
//else console.log("Сервер не вернул ответ");
|
||||
//Буфер для результата работы обработчика
|
||||
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.beforeGetBillInfo = beforeGetBillInfo;
|
||||
exports.afterGetBillInfo = afterGetBillInfo;
|
||||
exports.beforeGetOFDBillDoc = beforeGetOFDBillDoc;
|
||||
exports.afterGetOFDBillDoc = afterGetOFDBillDoc;
|
||||
|
Loading…
x
Reference in New Issue
Block a user