Расширение Fancy DEPO для M2M (процедуры Фонтвьель, снято 23.09): тексты, зависимости, параметры для установки у другого клиента
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
CREATE OR ALTER procedure [dbo].[FTV_M2M_PROCESS_OPERATION] @GUID uniqueidentifier, @REFERENCE varchar(255), @OPER_DATE datetime, @OPER_ID int output
|
||||
|
||||
/*
|
||||
Создает операцию, возвращает OPER_ID созданной операции
|
||||
Параметры нацелены прежде всего на строки уже созданного М2М-поручения D_CLISER_M2M_DOL, а не на буферные таблицы (к ним больше не обращаемся)
|
||||
Все проверки идут до вызова, но элементарные проверки можно сделать и тут. Или дать raiserror
|
||||
Мы существенно разгружаем FTV_M2M_PROCESS_EVENTS
|
||||
|
||||
declare @OPER_ID int;
|
||||
exec FTV_M2M_PROCESS_OPERATION @GUID = 'BAE1FA60-EB0A-4FEE-B12C-018D1EAFCBD2', @REFERENCE = 'M2M0917165643657', @OPER_DATE = '20260922', @OPER_ID = @OPER_ID out;
|
||||
select @OPER_ID;
|
||||
|
||||
*/
|
||||
|
||||
as
|
||||
set nocount on;
|
||||
|
||||
if user = 'dbo' execute as user = 'SYSDBA';
|
||||
|
||||
print 'FTV_M2M_PROCESS_OPERATION' + ' GUID = ' + cast(@GUID as varchar(36)) + ', REFERENCE = ' + @REFERENCE;
|
||||
|
||||
declare
|
||||
@WHOS int = 383118,
|
||||
@CLISER_ID int,
|
||||
@CLISER_NUM varchar(64),
|
||||
@CLISER_DATE datetime,
|
||||
@DIRECTION varchar(64),
|
||||
@DD_DATE datetime,
|
||||
@DD_NUM varchar(64),
|
||||
@SHARE int,
|
||||
@AMOUNT numeric(27, 7),
|
||||
@CLIENT int,
|
||||
@FACE int,
|
||||
@PLACE int,
|
||||
@D_CAT int,
|
||||
@NUM varchar(64);
|
||||
|
||||
select
|
||||
@CLISER_ID = H.DOC,
|
||||
@CLISER_NUM = D.NUM,
|
||||
@CLISER_DATE= D.D_DATE,
|
||||
@DIRECTION = case
|
||||
when DC.SYS_NAME = 'I_CLISER_M2M_ZACH' then 'IN'
|
||||
when DC.SYS_NAME = 'I_CLISER_M2M_SPIS' then 'OUT'
|
||||
end,
|
||||
@DD_DATE = cast(D.D_DATE as date),
|
||||
@DD_NUM = D.NUM,
|
||||
@SHARE = F.SHARE,
|
||||
@AMOUNT = F.AMOUNT,
|
||||
@CLIENT = F.CLIENT,
|
||||
@FACE = H.DEPONENT,
|
||||
@PLACE = F.PLACE
|
||||
from D_CLISER_M2M_DOL F
|
||||
left join OD_DOLS L on L.ID = F.DOL
|
||||
left join OD_DOCS D on D.ID = L.DOC
|
||||
left join D_CLISER_M2M H on H.DOC = D.ID
|
||||
left join OD_DOC_CATS DC on DC.ID = D.D_CAT
|
||||
where H.DOC_GUID = @GUID and F.DOL_REF = @REFERENCE;
|
||||
|
||||
--Элеметарные проверки
|
||||
if @CLISER_ID is null
|
||||
raiserror ('Не найдено M2M-поручение по GUID + REFERENCE', 16, 1);
|
||||
|
||||
--Направление
|
||||
select @D_CAT = DC.ID
|
||||
from OD_DOC_CATS DC
|
||||
where DC.SYS_NAME = case when @DIRECTION = 'IN' then 'OP_INV_ZACH' else 'OP_INV_SPIS' end;
|
||||
|
||||
--ID и номер операции
|
||||
exec GEN_ID 'OD_DOC_ID_GEN', 1, @OPER_ID out;
|
||||
exec FU_NEXT_DOC_NUM @D_CAT, @OPER_DATE, null, @OPER_ID, @NUM out, null;
|
||||
|
||||
--Создаем документ
|
||||
insert into OD_DOCS (ID, NUM, PARAM, D_CAT, D_DATE, STATE, DIRECTION, WHOS, KVIT)
|
||||
values (@OPER_ID, @NUM, null, @D_CAT, @OPER_DATE, 0, 0, @WHOS, @CLISER_ID);
|
||||
|
||||
if @DIRECTION = 'IN' begin
|
||||
insert into U_OP_INV_ZACH
|
||||
(
|
||||
DOC,
|
||||
DD_TYPE,
|
||||
DD_DATE, DD_NUM,
|
||||
SHARE, AMOUNT, BLANKS,
|
||||
PLACE,
|
||||
D_NUM,
|
||||
DEPO,
|
||||
K_NUM,
|
||||
MARKET,
|
||||
CONDITION, IS_REG, TAX_R,
|
||||
B_TYPE,
|
||||
B_DATE, B_NUM,
|
||||
WIR_DATE, NOTIFY_DATE, REG_DATE,
|
||||
IS_BLOCK,
|
||||
FROM_FACE,
|
||||
REJECT_REASON,
|
||||
COMMENT
|
||||
)
|
||||
values
|
||||
(
|
||||
@OPER_ID,
|
||||
1 /*Клиентское*/,
|
||||
@DD_DATE, @DD_NUM,
|
||||
@SHARE, @AMOUNT, null,
|
||||
@PLACE,
|
||||
314, /*98015 - 0 - Ценные бумаги и цифровые активы на хранении в других депозитариях (НОСТРО депо расчетный)*/
|
||||
@CLIENT,
|
||||
836, /*98070 - 4 - Ценные бумаги и цифровые активы на торгах*/
|
||||
8106, /*ММВБ - ПАО Московская Биржа*/
|
||||
null, null, null,
|
||||
31, /*Отчет депозитария*/
|
||||
@CLISER_DATE, @CLISER_NUM,
|
||||
@OPER_DATE, @OPER_DATE, @OPER_DATE,
|
||||
0,
|
||||
@FACE,
|
||||
null,
|
||||
'Перевод M2M (без поручения), GUID ' + cast(@GUID as varchar(36)) + ', референс ' + @REFERENCE
|
||||
);
|
||||
end
|
||||
|
||||
else
|
||||
if @DIRECTION = 'OUT' begin
|
||||
insert into U_OP_INV_SPIS
|
||||
(
|
||||
DOC,
|
||||
DD_TYPE,
|
||||
DD_DATE, DD_NUM,
|
||||
SHARE, AMOUNT, BLANKS,
|
||||
PLACE,
|
||||
D_NUM,
|
||||
DEPO,
|
||||
K_NUM,
|
||||
MARKET,
|
||||
OLD_CONDITIONS, IS_REG, TAX_R,
|
||||
B_TYPE,
|
||||
B_DATE, B_NUM,
|
||||
WIR_DATE, NOTIFY_DATE, REG_DATE,
|
||||
IS_BLOCK,
|
||||
FROM_FACE,
|
||||
REJECT_REASON,
|
||||
COMMENT
|
||||
)
|
||||
values
|
||||
(
|
||||
@OPER_ID,
|
||||
1 /*Клиентское*/,
|
||||
@DD_DATE, @DD_NUM,
|
||||
@SHARE, @AMOUNT, null,
|
||||
@PLACE,
|
||||
314, /*98015 - 0 - Ценные бумаги и цифровые активы на хранении в других депозитариях (НОСТРО депо расчетный)*/
|
||||
@CLIENT,
|
||||
836, /*98070 - 4 - Ценные бумаги и цифровые активы на торгах*/
|
||||
8106, /*ММВБ - ПАО Московская Биржа*/
|
||||
null, null, null,
|
||||
31, /*Отчет депозитария*/
|
||||
@CLISER_DATE, @CLISER_NUM,
|
||||
@OPER_DATE, @OPER_DATE, @OPER_DATE,
|
||||
0,
|
||||
@FACE,
|
||||
null,
|
||||
'Отчет НКО АО НРД [номер, дата]. Перевод M2M, GUID ' + cast(@GUID as varchar(36)) + ', референс ' + @REFERENCE
|
||||
);
|
||||
end;
|
||||
|
||||
--И сразу проводим
|
||||
exec FTV_M2M_PROCESS_WIRING @OPER_ID;
|
||||
Reference in New Issue
Block a user