P8-ExchangeService/db/UDO_PKG_EXS_ATOL.pck

51 lines
2.1 KiB
Plaintext

create or replace package UDO_PKG_EXS_ATOL as
/* Îòðàáîòêà îòâåòîâ ÀÒÎË (v4) íà ðåãèñòðàöèþ ÷åêà íà ïðèõîä, ðàñõîä, âîçâðàò (ÔÔÄ 1.05) */
procedure V4_FFD105_PROCESS_REG_BILL_SIR
(
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
);
end;
/
create or replace package body UDO_PKG_EXS_ATOL as
/* Îòðàáîòêà îòâåòîâ ÀÒÎË (v4) íà ðåãèñòðàöèþ ÷åêà íà ïðèõîä, ðàñõîä, âîçâðàò (ÔÔÄ 1.05) */
procedure V4_FFD105_PROCESS_REG_BILL_SIR
(
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
)
is
REXSQUEUE EXSQUEUE%rowtype; -- Çàïèñü ïîçèöèè î÷åðåäè
CTMP clob; -- Áóôåð äëÿ õðàíåíèÿ äàííûõ îòâåòà ñåðâåðà
begin
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
/* Ïðîâåðèì ÷òî ïîçèöèÿ î÷åðåäè êîððåêòíà */
if (REXSQUEUE.LNK_DOCUMENT is null) then
P_EXCEPTION(0, 'Äëÿ ïîçèöèè î÷åðåäè íå óêàçàí ñâÿçàííûé äîêóìåíò.');
end if;
if (REXSQUEUE.LNK_UNITCODE is null) then
P_EXCEPTION(0, 'Äëÿ ïîçèöèè î÷åðåäè íå óêàçàí ñâÿçàííûé ðàçäåë.');
end if;
if (REXSQUEUE.LNK_UNITCODE <> 'UDO_FiscalDocuments') then
P_EXCEPTION(0,
'Ñâÿçàííûé ðàçäåë "%s", óêàçàííûé â ïîçèöèè î÷åðåäè, íå ïîääåðæèâàåòñÿ.',
REXSQUEUE.LNK_UNITCODE);
end if;
/* Ðàçáèðàåì îòâåò */
CTMP := BLOB2CLOB(LBDATA => REXSQUEUE.RESP, SCHARSET => 'UTF8');
if (CTMP is null) then
P_EXCEPTION(0, 'Íåò îòâåòà îò ñåðâåðà.');
end if;
/* Âûñòàâëÿåì èäåíòèôèêàòîð ÀÒÎË â ÔÄ */
update UDO_FISCDOCS T set T.NUMB_FD = CTMP where T.RN = REXSQUEUE.LNK_DOCUMENT;
end V4_FFD105_PROCESS_REG_BILL_SIR;
end;
/