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, @peredat_id numeric(18,0) begin tran select @action_id = %ACTION_ID% select @id = convert(numeric, @sid) .CHECK_USER .CHECK_UPDATE ----------- -- Проверки ----------- if not exists(select 1 from tp_extract2claim where extract_id=@id) .EXIT_MESSAGE('Не указаны заявки') if exists(select 1 from tp_extract2claim where tp_extract2claim.extract_id=@id and upper(.ITEM_STATE_CODE(tp_extract2claim.claim_id))!='PROV') .EXIT_MESSAGE('Все заявки должны быть На исполнении') if exists(select 1 from tp_extract2claim where extract_id=@id and (isnull(share_qty,0)=0 or isnull(sum_for_transfer,0)=0)) .EXIT_MESSAGE('В заявках не указаны суммы или количество паев') if exists(select 1 from tp_extract2claim where tp_extract2claim.extract_id=@id and upper(.ITEM_TYPE_CODE(tp_extract2claim.claim_id))='PIF_PAY_ALLOCATE' and not exists (select 1 from tp_paymt2pays s where s.pif_pay_id=tp_extract2claim.id)) .EXIT_MESSAGE('Для заявки на выдачу не указаны платежи') if exists(select 1 from tp_extract2claim where tp_extract2claim.extract_id=@id and upper(.ITEM_TYPE_CODE(tp_extract2claim.claim_id))='PIF_PAY_ALLOCATE' and tp_extract2claim.sum_for_transfer != (select round(sum(isnull(p.doc_sum,0)),2) from t_paydocs p, tp_paymt2pays s where s.pif_pay_id=tp_extract2claim.id and s.paymt_id=p.id)) .EXIT_MESSAGE('Сумма в заявке не равна сумме связанных платежей') if exists(select 1 from t_paydocs, tp_extract2claim, tp_pif_queries where tp_extract2claim.extract_id=@id and upper(.ITEM_TYPE_CODE(tp_extract2claim.claim_id))='PIF_PAY_ALLOCATE' and tp_extract2claim.claim_id=tp_pif_queries.id and tp_pif_queries.pif_pay_type_id=1 and t_paydocs.pif_pay_id=tp_pif_queries.id and upper(.ITEM_STATE_CODE(t_paydocs.id))='PERF' and t_paydocs.id not in (select tp_paymt2pays.paymt_id from tp_paymt2pays)) .EXIT_MESSAGE('Существует исполненный платеж, не сквитованный с отчетом регистратора по одноразовой заявке на выдачу') ---------priymak a/r 03.06-----------обнуление налогов в операциях по обмену IF .GET_CONST('CHECK_NALOG')=0 UPDATE tp_extract2claim SET is_manual_tax = 1, tax_sum = 0, tax_percent = 0, is_new_tax = 0 WHERE (extract_id = @id) AND (claim_id IN (SELECT id FROM tp_pif_queries WHERE tp_pif_queries.type_queries = 4)) ----------------------------------------- ---------- -- declare ---------- .GET_PROPS declare @sreg_oper_date datetime, @alloc_date datetime, @reg_time datetime declare @sum_for_transfer money, @sum_for_transfer_c money, @agent_sum money, @agent_sum_c money, @op_agent_sum money, @op_agent_sum_s money, @total_sum money, @op_pay_sum money, @paydoc_sum money, @paydoc_sum_s money, @tax money, @agent_proc money, @tax_percent money, @tax_percent_c money, @tax_sum money, @alloc_sum money, @stock_price money, @bal_qty money, @bal_out_sum money, @dop_sum money, @dop_sum_ed money, @dop_sum_type numeric, @loss_used money, @income money declare @share_qty .PIF_PAY_TYPE, @share_qty_c .PIF_PAY_TYPE, @op_share_qty .PIF_PAY_TYPE, @op_share_qty_s .PIF_PAY_TYPE, @share_qty_bal .PIF_PAY_TYPE declare @agent_id numeric, @agent_dog_id numeric, @pay_owner_id numeric, @pifdoc_id numeric, @paymt_id numeric, @pay2rep_id numeric, @tax_category_id numeric, @subacc_id numeric, @pif_stock_id numeric, @fund_plan_id numeric, @acc96_id numeric, @acc865_id numeric, @acc7642_id numeric, @acc7641_id numeric, @acc_agent_id numeric, @acc_tax_id numeric, @j_query_id numeric, @rep4query_id numeric, @part_id numeric, @deb_id numeric, @cred_id numeric, @default_acctype_id numeric, @acc_rel_id numeric declare @bad int, @is_new_tax int, @is_manual_tax int, @is_reg_control int declare @j_name varchar(255), @reg_code varchar(255), @reg_rep_no varchar(255), @comment1 varchar(255), @comment2 varchar(255), @new_acc_name varchar(255), @new_acc_ops_id_s varchar(30) ------------------ -- ------------------ -- партия if (select isnull(pays_acc_mode,1) from td_pay_fond where id=@owner_id)=1 begin select @part_id= .SD_COMMON_PART4PAYS if @part_id is null exec ap_insert_common_part4pays select @part_id= .SD_COMMON_PART4PAYS end else select @part_id=@id -- контроль регистратора select @is_reg_control=isnull(is_reg_control,0) from td_pay_fond where id=@owner_id -- цена пая select @pay_price = .PIF_PAY_PRICE(@owner_id,@pay_date) if @pay_price is null .EXIT_MESSAGE('Для данного фонда не задана цена пая') update ts_reg_report set pay_price=@pay_price where id=@id -- счета select @fund_plan_id = .ARG_PLAN('PIF_ACCOUNT') select @acc96_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'96.1') select @acc865_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'86.5') select @acc7642_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.4.2') select @acc7641_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.4.1') select @acc_agent_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.11') select @acc_tax_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'68.8') ------------------ ---- Проводки ---- ------------------ .UPDATE_STATE .ACTION_HISTORY -------------------------- -- SD - Проводки по выдаче -------------------------- -- Расчет выдачи declare sales_calc cursor for select x.id, x.agent_dog_id, x.claim_id from tp_extract2claim x where x.extract_id=@id and .ITEMS_EXISTS_BY_TYPE(x.claim_id,'PIF_PAY_ALLOCATE') for read only open sales_calc fetch sales_calc into @pay2rep_id, @agent_dog_id, @pifdoc_id while .CURSOR_STATE=0 begin select @tax=0, @sum_for_transfer_c=0 -- сумма привязанных платежей select @sum_for_transfer_c=round(sum(isnull(p.doc_sum,0)),2) from t_paydocs p, tp_paymt2pays s where s.pif_pay_id=@pay2rep_id and s.paymt_id=p.id exec ap_pifpay_in @sum_for_transfer_c, -- внесенная сумма @agent_dog_id, @owner_id, @reg_date, @pay_date, @stock_price out, -- цена пая @share_qty_c out, -- кол-во паев к выдаче @total_sum out, -- сумма без надбавки (т.е.на баланс за паи) @agent_sum_c out, -- надбавка @agent_proc out -- % надбавки if @@error != 0 begin if @@trancount<>0 rollback tran return end -- расчитанные значения select @sum_for_transfer_c=isnull(@sum_for_transfer_c,0) select @share_qty_c=isnull(@share_qty_c,0) select @agent_sum_c=isnull(@agent_sum_c,0) select @agent_proc=isnull(@agent_proc,0) .PIF_ROUND_PAYS(@owner_id,@share_qty_c,@share_qty_c) update tp_extract2claim set sum_for_transfer_c=@sum_for_transfer_c, share_qty_c=@share_qty_c, agent_sum_c=@agent_sum_c, agent_proc=@agent_proc, tax_sum=@tax where id=@pay2rep_id -- если нет контроля регистратора if @is_reg_control=0 update tp_extract2claim set sum_for_transfer=@sum_for_transfer_c, share_qty=@share_qty_c, agent_sum=@agent_sum_c where id=@pay2rep_id fetch sales_calc into @pay2rep_id, @agent_dog_id, @pifdoc_id end close sales_calc .DEALLOCATE sales_calc -- Проведение выдачи select @op_agent_sum_s = 0 select @op_share_qty_s = 0 select @paydoc_sum_s = 0 declare sales_ops cursor for select x.sum_for_transfer, x.agent_sum, x.share_qty, x.pay_agent_id, p.pay_owner_id, p.id, d.id, d.doc_sum from tp_extract2claim x, tp_pif_queries p, tp_paymt2pays y, t_paydocs d where x.extract_id=@id and x.claim_id = p.id and y.pif_pay_id = x.id and y.paymt_id = d.id and upper(.ITEM_TYPE_CODE(p.id))='PIF_PAY_ALLOCATE' order by p.id for read only open sales_ops fetch sales_ops into @sum_for_transfer, @agent_sum, @share_qty, @agent_id, @pay_owner_id, @pifdoc_id, @paymt_id, @paydoc_sum while .CURSOR_STATE=0 begin .PIF_ROUND_PAYS(@owner_id, @share_qty, @share_qty) select @paydoc_sum = .ROUND_MONEY(@paydoc_sum,2) ---------------Priymak 11/01/06 Проверка сделана на случай если pay_owner_id будет изменением физ или юр лица if not exists(select 1 from t_items, t_types where t_items.id=@pay_owner_id and t_items.type_id=t_types.id and t_types.type_code in ('PARTNERS_FIS','PARTNERS_JUR')) select @pay_owner_id=t_partners.id from t_partners, td_depo_docs where td_depo_docs.id=@pay_owner_id and td_depo_docs.changed_item_id=t_partners.id ---------------------------------------------------- if @sum_for_transfer = (@paydoc_sum_s + @paydoc_sum) begin -- единственный или последний платеж по заявке select @op_agent_sum = @agent_sum - @op_agent_sum_s select @op_share_qty = @share_qty - @op_share_qty_s select @op_agent_sum_s = 0 select @op_share_qty_s = 0 select @paydoc_sum_s = 0 end else -- есть еще платежи begin select @op_agent_sum = convert(money, (@agent_sum * @paydoc_sum / @sum_for_transfer)) select @op_agent_sum = .ROUND_MONEY(@op_agent_sum, 2) select @op_agent_sum_s = @op_agent_sum_s + @op_agent_sum select @op_share_qty = convert(.PIF_PAY_TYPE, (@share_qty * @paydoc_sum / @sum_for_transfer)) .PIF_ROUND_PAYS(@owner_id, @op_share_qty, @op_share_qty) select @op_share_qty_s = @op_share_qty_s + @op_share_qty select @paydoc_sum_s = @paydoc_sum_s + @paydoc_sum end select @op_pay_sum = @paydoc_sum - @op_agent_sum select @bal_qty=.PAYS_QTY_BAL(@op_share_qty,@owner_id) select @comment1=.ITEM_NAME(@pifdoc_id) select @comment2=@comment1 + ':зачисление паев' .OPERATION(@owner_id,@fund_plan_id,@reg_date,@acc7641_id,@acc96_id,@op_pay_sum,'RUR',@reg_date,0,@bal_qty,@comment2,0) .UPDATE_SUBC(D,'partners',@pay_owner_id) .UPDATE_SUBC(D,'paydocs',@paymt_id) .UPDATE_SUBC(K,'doc_item',@part_id) .UPDATE_SUBC(K,'partners',@pay_owner_id) .SUBC_CHECK if @agent_id is not null and @op_agent_sum>0 begin select @comment2=@comment1 + ':начисление вознаграждения агенту' .OPERATION(@owner_id,@fund_plan_id,@reg_date,@acc7641_id,@acc_agent_id,@op_agent_sum,'RUR',@reg_date,0,0,@comment2,0) .UPDATE_SUBC(D,'partners',@pay_owner_id) .UPDATE_SUBC(D,'paydocs',@paymt_id) .UPDATE_SUBC(K,'partners',@agent_id) .SUBC_CHECK end fetch sales_ops into @sum_for_transfer, @agent_sum, @share_qty, @agent_id, @pay_owner_id, @pifdoc_id, @paymt_id, @paydoc_sum end close sales_ops .DEALLOCATE sales_ops ----------------------------- -- SD - Проводки по погашению ----------------------------- -- BACK - declare .ID_VAR(@back_owner_id) .ID_VAR(@organisation_id) .ID_VAR(@plan_money_id) .ID_VAR(@plan_securs_id) .INT_VAR(@out_method_id) .ID_VAR(@client_contract_id) .ID_VAR(@portfolio_sub_id) .ID_VAR(@portfolio_id) .ID_VAR(@cur_id) .ID_VAR(@acc211_id) .ID_VAR(@acc360_id) .NAME_VAR(@opmess) .NAME_VAR(@subc211_str) .NAME_VAR(@subc360_str) declare @back_sum money select @back_owner_id=.ORGANIZATION declare @is_realiz int, @is_p2l_comis int, @is_com_in int, @is_allow_short4stocks int, @is_allow_short4money int, @asset4pereoc_type_id numeric .BACK_GET_ORG_PARMS(@back_owner_id,@organisation_id,@plan_money_id,@plan_securs_id,@out_method_id,@is_realiz,@is_p2l_comis,@is_com_in,@is_allow_short4stocks,@is_allow_short4money,@asset4pereoc_type_id) .BACK_GET_PIF_CONTRACT(@owner_id,@back_owner_id,@client_contract_id) .BACK_GET_PIF_SECTION(@client_contract_id,@portfolio_sub_id) .BACK_GET_PIF_PORTFOLIO(@client_contract_id,@portfolio_id) select @cur_id=.CUR('RUR') .ACCID_FROM_CONST2PLAN(@acc211_id,'BACK_ACC_FUND_MONEY_OUT',@plan_money_id,3,1,'ожид.расход ДС',@opmess) .ACCID_FROM_CONST2PLAN(@acc360_id,'BACK_ACC_FUND_MONEY_CHNG',@plan_money_id,3,1,'ожид.списание из фонда',@opmess) select @opmess='Резервирование ДС по заявке' -- end of BACK - declare declare buys cursor for select x.id, x.share_qty, x.is_manual_tax, x.tax_sum, x.tax_percent, x.is_new_tax, x.agent_dog_id, p.pay_owner_id, x.pay_agent_id, p.id, x.dop_sum_type, x.dop_sum_ed from tp_extract2claim x, tp_pif_queries p where x.extract_id=@id and x.claim_id = p.id and upper(.ITEM_TYPE_CODE(p.id))='PIF_PAY_BUY' order by p.pay_owner_id, p.agent_dog_id, p.agent_regs_date, p.agent_regs_no for read only open buys fetch buys into @pay2rep_id, @share_qty, @is_manual_tax, @tax_sum, @tax_percent, @is_new_tax, @agent_dog_id, @pay_owner_id, @agent_id, @pifdoc_id, @dop_sum_type, @dop_sum_ed while .CURSOR_STATE=0 begin if @is_new_tax=0 -- если 1 - % налога введен вручную select @tax_percent_c=null else select @tax_percent_c=@tax_percent exec ap_pifpay_out_parts @owner_id, @agent_dog_id, @pay_owner_id, @pifdoc_id, @reg_date, @pay_date, @share_qty, @is_manual_tax, @tax_percent_c, @tax_sum, @dop_sum_ed, @dop_sum_type, 1, -- с проводками @id, @action_id, @action_history_id, @sum_for_transfer_c out, -- сумма выплаты (без скидки и налога) @agent_sum_c out, -- скидка @tax out, -- налог @bal_out_sum out, -- бал.стоимость @dop_sum out, -- доп.расходы @alloc_date out, -- дата посл.партии @share_qty_bal out, -- все к-во с баланса @loss_used out, -- использованный убыток @income out -- прибыль if @@error != 0 begin if @@trancount<>0 rollback tran return end select @total_sum = @sum_for_transfer_c + isnull(@tax,0) + isnull(@agent_sum_c,0) - isnull(@bal_out_sum,0) select @comment1=.ITEM_NAME(@pifdoc_id) if @total_sum<>0 begin select @deb_id=@acc865_id, @cred_id=@acc7642_id if @total_sum<0 select @cred_id=@acc865_id, @deb_id=@acc7642_id, @total_sum=abs(@total_sum) .OPERATION(@owner_id,@fund_plan_id,@reg_date,@deb_id,@cred_id,@total_sum,'RUR',@reg_date,0,0,@comment1,0) .UPDATE_SUBC(D,'partners',@pay_owner_id) .UPDATE_SUBC(K,'partners',@pay_owner_id) if @deb_id=@acc7642_id begin .UPDATE_SUBC(D,'pifdocs',@pifdoc_id) end else begin .UPDATE_SUBC(K,'pifdocs',@pifdoc_id) end .SUBC_CHECK end if @agent_id is not null and isnull(@agent_sum_c,0)<>0 begin select @comment2 = @comment1 + ':начисление вознаграждения агенту' .OPERATION(@owner_id,@fund_plan_id,@reg_date,@acc7642_id,@acc_agent_id,@agent_sum_c,'RUR',@reg_date,0,0,@comment2,0) .UPDATE_SUBC(D,'pifdocs',@pifdoc_id) .UPDATE_SUBC(D,'partners',@pay_owner_id) .UPDATE_SUBC(K,'partners',@agent_id) .SUBC_CHECK end if isnull(@tax,0)<>0 begin select @comment2 = @comment1 + ':уплата налога' .OPERATION(@owner_id,@fund_plan_id,@reg_date,@acc7642_id,@acc_tax_id,@tax,'RUR',@reg_date,0,0,@comment2,0) .UPDATE_SUBC(D,'pifdocs',@pifdoc_id) .UPDATE_SUBC(D,'partners',@pay_owner_id) .SUBC_CHECK end -- BACK - oper - (3.6.0 - 2.11) select @back_sum = 0 select @back_sum = @sum_for_transfer_c + isnull(@tax,0) select @subc360_str=null select @subc211_str=null .SUBC_STR_ADD(@subc360_str,'investors',@client_contract_id) .SUBC_STR_ADD(@subc211_str,'investors',@client_contract_id) .SUBC_STR_ADD(@subc211_str,'investor2portfolio',@portfolio_sub_id) .SUBC_STR_ADD(@subc211_str,'portfolio',@portfolio_id) .SUBC_STR_ADD(@subc211_str,'docs4out_fund',@pifdoc_id) .OPERATION_SBC(@back_owner_id,@plan_money_id,@reg_date,@acc360_id,@acc211_id,@back_sum,@cur_id,@reg_date,null,null,@opmess,Y, @operation_id,null,null,@action_history_id,@back_sum,@back_sum,@subc360_str,@subc211_str) -- расчетные значения в привязку update tp_extract2claim set sum_for_transfer_c=@sum_for_transfer_c, agent_sum_c=@agent_sum_c, tax_sum=@tax, alloc_sum=@bal_out_sum + isnull(@dop_sum,0), alloc_date=@alloc_date, share_qty_c=@share_qty, agent_proc=null, loss_used=@loss_used, confirm_status=1, income=@income where id=@pay2rep_id fetch buys into @pay2rep_id, @share_qty, @is_manual_tax, @tax_sum, @tax_percent, @is_new_tax, @agent_dog_id, @pay_owner_id, @agent_id, @pifdoc_id, @dop_sum_type, @dop_sum_ed end close buys .DEALLOCATE buys ------------------------ -- Контроль регистратора ------------------------ if @is_reg_control=0 update tp_extract2claim set sum_for_transfer=sum_for_transfer_c, share_qty=share_qty_c, agent_sum=agent_sum_c where extract_id=@id if @is_reg_control=1 and exists(select 1 from tp_extract2claim e where e.extract_id=@id and .ITEMS_EXISTS(e.id) and (e.sum_for_transfer <> e.sum_for_transfer_c or e.share_qty <> e.share_qty_c or e.agent_sum <> e.agent_sum_c)) begin .ITEM_MOVE_STATE(@id,'BAD') update t_items set state_id=.STATE_ID_FROM_CODE((.TYPE_ID('PIF_PAYS2REPORT')),'FIX') from tp_extract2claim where t_items.id=tp_extract2claim.id and tp_extract2claim.extract_id=@id select @action_history_id=0 .OPERS_ROLL commit tran return end ---------- -- Статусы ---------- -- привязки заявок update t_items set state_id=.STATE_ID_FROM_CODE((.TYPE_ID('PIF_PAYS2REPORT')),'FIX') from tp_extract2claim where t_items.id=tp_extract2claim.id and tp_extract2claim.extract_id=@id -- заявки на погашение update t_items set state_id=.STATE_ID_FROM_CODE((.TYPE_ID('PIF_PAY_BUY')),'WAIT_CRT') from tp_pif_queries, tp_extract2claim where t_items.id=tp_pif_queries.id and upper(.ITEM_TYPE_CODE(tp_pif_queries.id)) = 'PIF_PAY_BUY' and tp_pif_queries.id = tp_extract2claim.claim_id and tp_extract2claim.extract_id=@id -- заявки на выдачу (одноразовые) update t_items set state_id=.STATE_ID_FROM_CODE((.TYPE_ID('PIF_PAY_ALLOCATE')),'CRT') from tp_pif_queries, tp_extract2claim where t_items.id=tp_pif_queries.id and tp_pif_queries.pif_pay_type_id=1 and upper(.ITEM_TYPE_CODE(tp_pif_queries.id)) = 'PIF_PAY_ALLOCATE' and tp_pif_queries.id = tp_extract2claim.claim_id and tp_extract2claim.extract_id=@id --------------------------- -- проведение исх.платежей --------------------------- if isnull((.GET_CONST('EXEC_PAYMENTS_WITH_CLAIMS')),'0') = '1' begin declare @pmt_sid varchar(30) declare pmts cursor for select convert(varchar(30),p.id) from t_paydocs p, tp_extract2claim ec where p.pif_pay_id = ec.claim_id and ec.extract_id = @id and .ITEM_STATE_CODE(ec.claim_id) = 'WAIT_CRT' and .ITEM_STATE_CODE(p.id) in ('ED','TOSEND') and .ITEM_TYPE_CODE(p.id) = 'SD_PAYBANK_OUT' for read only open pmts fetch pmts into @pmt_sid while .CURSOR_STATE = 0 begin .EXEC_ACTION(@pmt_sid,'SD_PAYBANK_OUT','OPS',Y) fetch pmts into @pmt_sid end close pmts .DEALLOCATE pmts end if rtrim(ltrim(.GET_CONST('CLIENT_CODE'))) = 'WEBINVEST' begin -------- Передача реестра ----------- declare tmp_pered_cur cursor for select tp_pif_queries.id from tp_pif_queries where tp_pif_queries.reestr_report_id = @id and .ITEMS_EXISTS_BY_TYPE(tp_pif_queries.id,'TP_PIF_PAYS_MOVES') and exists(select 1 from t_items, t_states, t_types where t_items.id=tp_pif_queries.id and t_states.id=t_items.state_id and t_states.class_id=0 and t_types.id=t_items.type_id and state_code<>'PROV' and upper(t_types.type_code)=upper('TP_PIF_PAYS_MOVES')) order by tp_pif_queries.id desc open tmp_pered_cur fetch tmp_pered_cur into @peredat_id while .CURSOR_STATE = 0 begin update tp_pif_queries set calc_date = (select reg_date from ts_reg_report where id=@id) where --calc_date is NULL and reestr_report_id=@id and id=@peredat_id .EXEC_ACTION(@peredat_id,'TP_PIF_PAYS_MOVES','ACTION_OPS',1) fetch tmp_pered_cur into @peredat_id end close tmp_pered_cur .DEALLOCATE tmp_pered_cur end commit tran /* --------------- -- ответ агенту --------------- .TRANSACTION_SAVE declare @a_id numeric, @agent_comis money, @mess_str varchar(255), @q_type int, @mess_type int declare docs4agent cursor for select a.a_id, e.agent_sum, p.type_queries from t_docs4agent_docs a, tp_extract2claim e, tp_pif_queries p where e.extract_id=@id and a.doc_id=e.claim_id and .ITEMS_EXISTS_BY_TYPE(a.query_id,'QUERY_FOR_AGENT_UK') and e.claim_id=p.id for read only open docs4agent fetch docs4agent into @a_id, @agent_comis, @q_type while .CURSOR_STATE=0 begin select @mess_str=null, @mess_type=-1 if @q_type=3 select @mess_str='Паи зачислены по обмену' if @q_type=4 select @mess_str='Паи списаны по обмену', @mess_type=-3 exec .CONCAT(.AGENTDB,ap_get_from_uk) @doc_id=@a_id, @mess_type=@mess_type, @uk_id=@id, @mess_str=@mess_str, @op_date=@reg_date, @agent_comis=@agent_comis if @@error<>0 begin if @@trancount>0 rollback tran return end fetch docs4agent into @a_id, @agent_comis, @q_type end close docs4agent .DEALLOCATE docs4agent .TRANSACTION_RESTORE */