forked from CITKParus/P8-ExchangeService
Подбор сервиса отправки "Фискального документа" по организации
This commit is contained in:
parent
0beebc26e0
commit
3e8a6733bb
@ -112,6 +112,30 @@ create or replace package body UDO_PKG_EXS_ATOL as
|
|||||||
PKG_MSG.RECORD_NOT_FOUND(NFLAG_SMART => 0, NDOCUMENT => NFISCDOC, SUNIT_TABLE => 'UDO_FISCDOCS');
|
PKG_MSG.RECORD_NOT_FOUND(NFLAG_SMART => 0, NDOCUMENT => NFISCDOC, SUNIT_TABLE => 'UDO_FISCDOCS');
|
||||||
end UTL_FISCDOC_GET;
|
end UTL_FISCDOC_GET;
|
||||||
|
|
||||||
|
/* Получение постфикса сервиса обмена для фискального документа по его принадлежности к организации */
|
||||||
|
function UTL_FISCDOC_GET_EXS_POSTFIX
|
||||||
|
(
|
||||||
|
NFISCDOC in number -- Рег. номер фискального документа
|
||||||
|
) return varchar2 -- Постфикс сервиса обмена
|
||||||
|
is
|
||||||
|
SRES COMPANIES.NAME%type; -- Результат работы
|
||||||
|
begin
|
||||||
|
/* Считаем постфик сервиса обмена (это наименование организации фискального документа) */
|
||||||
|
select C.NAME
|
||||||
|
into SRES
|
||||||
|
from UDO_FISCDOCS FD,
|
||||||
|
COMPANIES C
|
||||||
|
where FD.RN = NFISCDOC
|
||||||
|
and FD.COMPANY = C.RN;
|
||||||
|
/* Возвращаем результат */
|
||||||
|
return SRES;
|
||||||
|
exception
|
||||||
|
when others then
|
||||||
|
P_EXCEPTION(0,
|
||||||
|
'Для фискального документа (RN: %s) не определен постфикс сервиса обмена.',
|
||||||
|
TO_CHAR(NFISCDOC));
|
||||||
|
end UTL_FISCDOC_GET_EXS_POSTFIX;
|
||||||
|
|
||||||
/* Ïîëó÷åíèå ìíåìîêîäà ñåðâèñà îáìåíà è ìíåìîêîäà åãî ôóíêöèè ïî òèïó ôóíêöèè îáðàáîòêè è âåðñèè ÔÔÄ */
|
/* Ïîëó÷åíèå ìíåìîêîäà ñåðâèñà îáìåíà è ìíåìîêîäà åãî ôóíêöèè ïî òèïó ôóíêöèè îáðàáîòêè è âåðñèè ÔÔÄ */
|
||||||
procedure UTL_FISCDOC_GET_EXSFN
|
procedure UTL_FISCDOC_GET_EXSFN
|
||||||
(
|
(
|
||||||
@ -120,24 +144,39 @@ create or replace package body UDO_PKG_EXS_ATOL as
|
|||||||
NEXSSERVICEFN out number -- Ðåã. íîìåð ôóíêöèè-îáðàáîò÷èêà
|
NEXSSERVICEFN out number -- Ðåã. íîìåð ôóíêöèè-îáðàáîò÷èêà
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
|
SEXSRV EXSSERVICE.CODE%type; -- Мнемокод эталонного сервиса обмена из настроек фискального документа
|
||||||
|
SEXSRVFN EXSSERVICEFN.CODE%type; -- Мнемокод эталонной функции обмена из настроек фискального документа
|
||||||
begin
|
begin
|
||||||
begin
|
begin
|
||||||
select DECODE(SFN_TYPE, SFN_TYPE_REG_BILL, SFNREG.RN, SFN_TYPE_GET_BILL_INF, SFNINF.RN)
|
/* Находим мнемокод эталонной функции и сервиса из настроек фискального документа */
|
||||||
into NEXSSERVICEFN
|
select DECODE(SFN_TYPE, SFN_TYPE_REG_BILL, SREG.CODE, SFN_TYPE_GET_BILL_INF, SINF.CODE),
|
||||||
|
DECODE(SFN_TYPE, SFN_TYPE_REG_BILL, SFNREG.CODE, SFN_TYPE_GET_BILL_INF, SFNINF.CODE)
|
||||||
|
into SEXSRV,
|
||||||
|
SEXSRVFN
|
||||||
from UDO_FISCDOCS FD,
|
from UDO_FISCDOCS FD,
|
||||||
UDO_FDKNDVERS TV,
|
UDO_FDKNDVERS TV,
|
||||||
EXSSERVICEFN SFNREG,
|
EXSSERVICEFN SFNREG,
|
||||||
EXSSERVICEFN SFNINF
|
EXSSERVICEFN SFNINF,
|
||||||
|
EXSSERVICE SREG,
|
||||||
|
EXSSERVICE SINF
|
||||||
where FD.RN = NFISCDOC
|
where FD.RN = NFISCDOC
|
||||||
and FD.TYPE_VERSION = TV.RN
|
and FD.TYPE_VERSION = TV.RN
|
||||||
and TV.FUNCTION_SEND = SFNREG.RN(+)
|
and TV.FUNCTION_SEND = SFNREG.RN(+)
|
||||||
and TV.FUNCTION_RESP = SFNINF.RN(+);
|
and SFNREG.PRN = SREG.RN(+)
|
||||||
|
and TV.FUNCTION_RESP = SFNINF.RN(+)
|
||||||
|
and SFNINF.PRN = SINF.RN(+);
|
||||||
exception
|
exception
|
||||||
when others then
|
when others then
|
||||||
NEXSSERVICEFN := null;
|
SEXSRV := null;
|
||||||
|
SEXSRVFN := null;
|
||||||
end;
|
end;
|
||||||
/* Ïðîâåðèì, ÷òî õîòü ÷òî-òî íàøëîñü */
|
/* Если найдены эталонные сервис обмена и функция - подбираем то что нужно по принадлености фискального документа к организации */
|
||||||
if (NEXSSERVICEFN is null) then
|
if ((SEXSRV is not null) and (SEXSRVFN is not null)) then
|
||||||
|
NEXSSERVICEFN := PKG_EXS.SERVICEFN_FIND_BY_SRVCODE(NFLAG_SMART => 0,
|
||||||
|
SEXSSERVICE => SEXSRV || '_' || UTL_FISCDOC_GET_EXS_POSTFIX(NFISCDOC => NFISCDOC),
|
||||||
|
SEXSSERVICEFN => SEXSRVFN);
|
||||||
|
else
|
||||||
|
/* Эталоны не найдены - значит невозможен подбор реальной функции */
|
||||||
P_EXCEPTION(0,
|
P_EXCEPTION(0,
|
||||||
'Äëÿ ôèñêàëüíîãî äîêóìåíòà (RN: %s) íå îïðåäåëåíàÿ òèïîâàÿ ôóíêöèÿ "%s".',
|
'Äëÿ ôèñêàëüíîãî äîêóìåíòà (RN: %s) íå îïðåäåëåíàÿ òèïîâàÿ ôóíêöèÿ "%s".',
|
||||||
TO_CHAR(NFISCDOC),
|
TO_CHAR(NFISCDOC),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user