72 lines
2.7 KiB
Plaintext
72 lines
2.7 KiB
Plaintext
create or replace procedure UDO_P_FISCDOCS_BASE_SEND
|
|
(
|
|
NRN in number, -- Ðåãèñòðàöèîííûé íîìåð
|
|
NCOMPANY in number -- Îðãàíèçàöèÿ
|
|
)
|
|
as
|
|
NEXSQUEUE PKG_STD.TREF; -- Ðåãèñòðàöèîííûé íîìåð çàïèñè î÷åðåäè îáìåíà
|
|
SPRC_NAME varchar2(60); -- Íàèìåíîâàíèå ïðîöåäóðû ïðîâåðêè çíà÷åíèé
|
|
PRMS PKG_CONTPRMLOC.TCONTAINER; -- Êîíòåéíåð äëÿ ïàðàìåòðîâ ïðîöåäóðû îáðàáîòêè
|
|
begin
|
|
/* Ïðîâåðêà çàïîëíåíèÿ îáÿçàòåëüíûõ àòðèáóòîâ */
|
|
UDO_P_FISCDOCSPROP_CHECK_REQ(NCOMPANY => NCOMPANY, NPRN => NRN);
|
|
|
|
/* Îïðåäåëåíèå ïðîöåäóðû ïðîâåðêè çíà÷åíèé */
|
|
for REC in (select V.PKG_CHECK,
|
|
V.PRC_CHECK
|
|
from UDO_FISCDOCS T,
|
|
UDO_FDKNDVERS V
|
|
where T.RN = NRN
|
|
and T.COMPANY = NCOMPANY
|
|
and T.TYPE_VERSION = V.RN)
|
|
loop
|
|
/* Íàèìåíîâàíèå ïðîöåäóðû */
|
|
SPRC_NAME := NULLIF(REC.PKG_CHECK || '.', '.') || REC.PRC_CHECK;
|
|
end loop;
|
|
|
|
/* Åñëè åñòü çàïîëíåíà ïðîöåäóðà ïðîâåðêè */
|
|
if (SPRC_NAME is not null) then
|
|
/* Óñòàíîâêà çíà÷åíèé ôèêñèðîâàííûõ âõîäíûõ ïàðàìåòðîâ */
|
|
PKG_CONTPRMLOC.APPENDN(RCONTAINER => PRMS, SNAME => 'NRN', NVALUE => NRN, NIN_OUT => PKG_STD.IPARAM_TYPE_IN);
|
|
PKG_CONTPRMLOC.APPENDN(RCONTAINER => PRMS,
|
|
SNAME => 'NCOMPANY',
|
|
NVALUE => NCOMPANY,
|
|
NIN_OUT => PKG_STD.IPARAM_TYPE_IN);
|
|
/* Âûïîëíåíèå ïðîöåäóðû */
|
|
begin
|
|
PKG_SQL_CALL.EXECUTE_STORED(SSTORED_NAME => SPRC_NAME, RPARAM_CONTAINER => PRMS);
|
|
exception
|
|
when others then
|
|
P_EXCEPTION(0,
|
|
'Îøèáêà âûïîëíåíèÿ ïðîöåäóðû "%s".' || CR || 'Òåêñò îøèáêè: %s',
|
|
SPRC_NAME,
|
|
sqlerrm);
|
|
end;
|
|
end if;
|
|
|
|
/* Ôîðìèðîâàíèå è îòïðàâêà ñîîáùåíèÿ äëÿ ÀÒÎË-Îíëàéí */
|
|
UDO_P_FISCDOCS_MAKE_MSG_ATOL(NCOMPANY => NCOMPANY, NFISCDOC => NRN, NEXSQUEUE => NEXSQUEUE);
|
|
|
|
/* Ñîçäàíèå ñâÿçè ìåæäó ÷åêîì è î÷åðåäüþ îáìåíà */
|
|
PKG_DOCLINKS.LINK(NFLAG_SMART => 0,
|
|
NCOMPANY => NCOMPANY,
|
|
SIN_UNITCODE => 'UDO_FiscalDocuments',
|
|
NIN_DOCUMENT => NRN,
|
|
SOUT_UNITCODE => 'EXSQueue',
|
|
NOUT_DOCUMENT => NEXSQUEUE);
|
|
|
|
/* Èçìåíåíèå ñòàòóñà */
|
|
UDO_P_FISCDOCS_BASE_SET_STATUS(NRN => NRN, NCOMPANY => NCOMPANY, NSTATUS => 1);
|
|
|
|
/* Óñòàíîâêà äàòû è âðåìåíè îòïðàâêè */
|
|
update UDO_FISCDOCS
|
|
set SEND_TIME = sysdate
|
|
where RN = NRN
|
|
and COMPANY = NCOMPANY;
|
|
|
|
if (sql%notfound) then
|
|
PKG_MSG.RECORD_NOT_FOUND(NDOCUMENT => NRN, SUNIT_TABLE => 'UDO_FiscalDocuments');
|
|
end if;
|
|
end;
|
|
/
|