create procedure dbo.%PROC% @sid varchar(30) = null as declare @action_id numeric, @id numeric, @user_id numeric, @state_id numeric, @new_state_id numeric, @type_id numeric begin select @action_id = %ACTION_ID% select @id = convert(numeric, @sid) .CHECK_USER .CHECK_UPDATE .GET_PROPS begin tran -- 4011,4021 - оплата паев if @pay_perpose in (4011,4021) and upper(.ITEM_STATE_CODE(@id))='PERF' begin --! if exists(select 1 from tp_paymt2pays where paymt_id=@id) if exists(select 1 from tp_paymt2pays, tp_extract2claim where tp_extract2claim.id = tp_paymt2pays.pif_pay_id and tp_paymt2pays.paymt_id=@id and tp_extract2claim.extract_id not in (select uk_id from t_uk2sd)) .EXIT_MESSAGE('Документ связан с отчетом регистратора') if (@pif_pay_id is not null) and (upper(.ITEM_STATE_CODE(@pif_pay_id)) != 'PROV') .EXIT_MESSAGE('Заявка должна быть на исполнении') end -- 4013 - возврат выкупа if @pay_perpose=4013 and upper(.ITEM_STATE_CODE(@id))='PERF' begin if (@pif_pay_id is not null) and (upper(.ITEM_STATE_CODE(@pif_pay_id)) != 'CRT_RET') .EXIT_MESSAGE('Заявка должна быть в статусе оплата возвращена') if (select count(*) from t_paydocs, td_depo_docs, t_items, t_types, t_states where t_paydocs.pif_pay_id = @pif_pay_id and t_paydocs.id = td_depo_docs.id and td_depo_docs.owner_id = @owner_id and t_paydocs.id = t_items.id and t_paydocs.complete_date > @complete_date and t_items.type_id = t_types.id and upper(t_types.type_code) in ('SD_PAYBANK_IN', 'SD_PAYBANK_OUT') and t_items.state_id = t_states.id and upper(t_states.state_code) in ('PERF')) >0 .EXIT_MESSAGE('По заявке есть платежи с датой больше текущей') if not exists(select 1 from t_paydocs where t_paydocs.pif_pay_id = @pif_pay_id and t_paydocs.id != @id and t_paydocs.pay_perpose = @pay_perpose and .ITEMS_EXISTS_BY_TYPE(t_paydocs.id,'SD_PAYBANK_IN') and upper(.ITEM_STATE_CODE(t_paydocs.id)) = 'PERF') begin .ITEM_MOVE_STATE(@pif_pay_id,'CRT') end else begin .ITEM_MOVE_STATE(@pif_pay_id,'CRT_NEXT') end end if @pay_perpose in (4011,4013) /* 4011 - оплата паев, 4013 - возврат по выкупу */ update t_paydocs set covered_sum=null where id=@id .UPDATE_STATE .ACTION_HISTORY .OPERS_ROLL(ALL) .PAYS_COMPLETE_STATE(@id,0) --.SD_ASSET_OPER_DEL(@id) commit tran end