create procedure dbo.%PROC% @f1 varchar(255) = null, -- тип документа @f2 varchar(255) = null, -- дата @f3 varchar(255) = null, -- номер фонда @f4 varchar(255) = null, -- номер заявки @f5 varchar(255) = null, -- дата заявки @f6 varchar(255) = null, -- полн. наименов. зарег. лица @f7 varchar(255) = null, -- документ @f8 varchar(255) = null, -- № платежного документа @f9 varchar(255) = null, -- дата платежного документа @f10 varchar(255) = null, -- дата регистрации @f11 varchar(255) = null, -- кол-во паев @f12 varchar(255) = null, -- стоимость пая @f13 varchar(255) = null, -- сумма операции @f14 varchar(255) = null, -- комиссия @f15 varchar(255) = null, -- налог @f16 varchar(255) = null, -- № лс @f17 varchar(255) = null -- тип операции as begin .DATE_VAR(@rep_date) .ID_VAR(@fund_id) .NAME_VAR(@query_no) .DATE_VAR(@query_date) .ID_VAR(@partner_id) .NAME_VAR(@paydoc_no) .DATE_VAR(@paydoc_date) .DATE_VAR(@reg_date) .MONEY_VAR(@stock_qty) .MONEY_VAR(@stock_price) .MONEY_VAR(@oper_sum) .MONEY_VAR(@oper_commis) .MONEY_VAR(@oper_tax) .NAME_VAR(@tmp) .NAME_VAR(@dd) .NAME_VAR(@mm) .NAME_VAR(@yy) .ID_VAR(@class_value_id) .ID_VAR(@report_id) .ID_VAR(@id) .ID_VAR(@query_type_id) .ID_VAR(@query_id) .ID_VAR(@peredat_id) .NAME_VAR(@peredat_id_s) .ID_VAR(@folder_id) .DATE_VAR(@price_date) .INT_VAR(@pos) .NAME_VAR(@doc_no) .NAME_VAR(@doc_serial) .NAME_VAR(@doc_type) ----================ДАННЫЕ ПО ОТЧЕТУ===================---- ----------------------Дата отчета-------------------------- if @f2 is not null begin select @yy = ltrim(rtrim(substring(@f2,1,4))) select @mm = ltrim(rtrim(substring(@f2,5,2))) select @dd = ltrim(rtrim(substring(@f2,7,2))) select @tmp = @dd + '/' + @mm + '/' + @yy if @tmp = '//' select @tmp = null select @rep_date = convert(datetime,@tmp,103) end select @folder_id = .FOLDER('import') ------------------ Дата ценообразования ------------------- if @f10 is not null begin select @yy = ltrim(rtrim(substring(@f10,1,4))) select @mm = ltrim(rtrim(substring(@f10,5,2))) select @dd = ltrim(rtrim(substring(@f10,7,2))) select @tmp = @dd + '/' + @mm + '/' + @yy if @tmp = '//' select @tmp = null select @price_date = convert(datetime,@tmp,103) end ----------------------------Фонд--------------------------- -- Получаем фонд .GET_CLASS_VALUE('PARTNER_CODE', 'FUND_CODE', 0, @class_value_id) IF @class_value_id is null .EXIT_MESSAGE('Не найдено значение классификатора FUND_CODE в классификаторе PARTNER_CODE') select @fund_id = t_partners.id FROM t_partners WHERE .ITEMS_EXISTS_BY_TYPE(t_partners.id, 'PIF_FUND') AND exists(select 1 from t_item2class where t_item2class.item_id = t_partners.id AND t_item2class.value_id = @class_value_id and .ITEMS_EXISTS_BY_TYPE(t_item2class.id,'ITEM2CLASSVALUES') and UPPER(t_item2class.code)=upper(@f3)) if @fund_id is null .EXIT_MESSAGE_PARM('Не найден фонд по классификатору PARTNER_CODE значению FUND_CODE', @f3) ----=================ДАННЫЕ ПО ЗАЯВКЕ==================---- select @query_no = ltrim(rtrim(@f4)) -----------------------Дата заявки------------------------- if @f5 is not null begin select @yy = ltrim(rtrim(substring(@f5,1,4))) select @mm = ltrim(rtrim(substring(@f5,5,2))) select @dd = ltrim(rtrim(substring(@f5,7,2))) select @tmp = @dd + '/' + @mm + '/' + @yy if @tmp = '//' select @tmp = null select @query_date = convert(datetime,@tmp,103) end --------------------------Клиент--------------------------- --if @f16 is not null --begin -- Получаем Клиента select @class_value_id = null .GET_CLASS_VALUE('PARTNER_CODE', 'LIC_ACCOUNT', 0, @class_value_id) IF @class_value_id is null .EXIT_MESSAGE('Не найдено значение классификатора LIC_ACCOUNT в классификаторе PARTNER_CODE') select @partner_id = t_partners.id FROM t_partners WHERE .ITEMS_EXISTS(t_partners.id) AND exists(select 1 from t_item2class where t_item2class.item_id = t_partners.id AND t_item2class.value_id = @class_value_id and .ITEMS_EXISTS_BY_TYPE(t_item2class.id,'ITEM2CLASSVALUES') and UPPER(t_item2class.code)=upper(@f16)) -- if @partner_id is null -- .EXIT_MESSAGE_PARM('Не найден пайщик по классификатору PARTNER_CODE значению LIC_ACCOUNT ',@f16) --end if @partner_id is null begin select @pos = charindex(',',@f7) if @pos > 0 begin select @tmp = substring(@f7,@pos+1,len(@f7)) select @doc_type = substring(@f7,1,@pos-1) select @pos = charindex(',',@tmp) if @pos > 0 begin select @doc_serial = substring(@tmp,1,@pos-1) select @doc_no = substring(@tmp,@pos+1,len(@tmp)) end end if upper(@doc_type) = 'ПАСПОРТ' begin select @partner_id = t_partners.id from t_partners, t_partners_fis where ltrim(rtrim(t_partners_fis.f_passport_serial)) = @doc_serial and ltrim(rtrim(t_partners_fis.f_passport_no)) = @doc_no and t_partners.id = t_partners_fis.id and .ITEMS_EXISTS(t_partners.id) if @partner_id is not null begin .SET_CLASS_VALUES_P(@partner_id, 'PARTNER_CODE', 'LIC_ACCOUNT', @f16, 'Y') end end else begin select @partner_id = t_partners.id from t_partners where t_partners.regist_sertificate_no = (@doc_serial + ' ' + @doc_no) and .ITEMS_EXISTS(t_partners.id) if @partner_id is not null begin .SET_CLASS_VALUES_P(@partner_id, 'PARTNER_CODE', 'LIC_ACCOUNT', @f16, 'Y') end end end -- if @partner_id is null -- .EXIT_MESSAGE('Не найден пайщик') -----------------------Дата платежа------------------------ if @f9 is not null begin select @yy = ltrim(rtrim(substring(@f9,1,4))) select @mm = ltrim(rtrim(substring(@f9,5,2))) select @dd = ltrim(rtrim(substring(@f9,7,2))) select @tmp = @dd + '/' + @mm + '/' + @yy if @tmp = '//' select @tmp = null select @paydoc_date = convert(datetime,@tmp,103) end ----------------------------------------------------------- select @stock_qty = convert(decimal(19,8),@f11) select @oper_sum = convert(decimal(19,8),@f13) select @oper_commis = convert(decimal(19,8),@f14) select @oper_tax = convert(decimal(19,8),@f15) select @report_id = ts_reg_report.id from ts_reg_report, td_depo_docs where ts_reg_report.reg_date = @rep_date and td_depo_docs.owner_id = @fund_id and td_depo_docs.id = ts_reg_report.id and .ITEMS_EXISTS_BY_TYPE(ts_reg_report.id,'PIF_PAY_REPORT') if @report_id is null ----- вставка отчета ----- begin .TYPE_INIT('PIF_PAY_REPORT',1) .TYPE_ASSIGN(owner_id,@fund_id,1) .TYPE_ASSIGN(reg_date,@rep_date,1) .TYPE_ASSIGN(folder_id,@folder_id,1) .TYPE_ASSIGN(pay_date,@price_date,1) .TYPE_ASSIGN(in_date,@rep_date,1) .TYPE_INSERT('PIF_PAY_REPORT','WAIT_CHECK',1) select @id = @id1_1 select @report_id = @id1_1 .DEPO_GEN_NO(@in_no1_1,1) .TYPE_UPDATE(@id1_1,'PIF_PAY_REPORT',1) ------------------------------------------------- if @report_id is not null and upper(@f17) <> upper('передаточное распоряжение') begin .TYPE_INIT('PIF_PAY2REP_IMP',2) .TYPE_ASSIGN(extract_id,@report_id,2) .TYPE_ASSIGN(payer,@f6,2) if @f8 is not null begin .TYPE_ID_FROM_CODE('PIF_PAY_ALLOCATE',@query_type_id) .TYPE_ASSIGN(q_type_id,@query_type_id,2) end else begin .TYPE_ID_FROM_CODE('PIF_PAY_BUY',@query_type_id) .TYPE_ASSIGN(q_type_id,@query_type_id,2) end .TYPE_ASSIGN(q_date,@query_date,2) .TYPE_ASSIGN(acc_no,@f16,2) .TYPE_ASSIGN(q_no,@query_no,2) .TYPE_ASSIGN(p_no,@f8,2) .TYPE_ASSIGN(p_date,@paydoc_date,2) .TYPE_ASSIGN(q_qty,@stock_qty,2) .TYPE_ASSIGN(q_sum,@oper_sum,2) .TYPE_ASSIGN(agent_sum,@oper_commis,2) .TYPE_ASSIGN(q_tax,@oper_tax,2) .TYPE_INSERT('PIF_PAY2REP_IMP','WAIT',2) end /*else .EXIT_MESSAGE('Не прошла вставка отчета')*/ ------------------------------------------------- end else ------ вставка заявок в отчет ------ begin select @query_id = tp_pay2rep_imp.id from tp_pay2rep_imp where tp_pay2rep_imp.extract_id = @report_id and tp_pay2rep_imp.q_date = @query_date and tp_pay2rep_imp.q_no = @query_no and tp_pay2rep_imp.q_qty = @stock_qty and tp_pay2rep_imp.p_no = @f8 and .ITEMS_EXISTS(tp_pay2rep_imp.id) if @query_id is null begin if upper(@f17) <> upper('передаточное распоряжение') begin .TYPE_INIT('PIF_PAY2REP_IMP',3) .TYPE_ASSIGN(extract_id,@report_id,3) .TYPE_ASSIGN(payer,@f6,3) if @f8 is not null begin .TYPE_ID_FROM_CODE('PIF_PAY_ALLOCATE',@query_type_id) .TYPE_ASSIGN(q_type_id,@query_type_id,3) end else begin .TYPE_ID_FROM_CODE('PIF_PAY_BUY',@query_type_id) .TYPE_ASSIGN(q_type_id,@query_type_id,3) end .TYPE_ASSIGN(q_date,@query_date,3) .TYPE_ASSIGN(acc_no,@f16,3) .TYPE_ASSIGN(q_no,@query_no,3) .TYPE_ASSIGN(p_no,@f8,3) .TYPE_ASSIGN(p_date,@paydoc_date,3) .TYPE_ASSIGN(q_qty,@stock_qty,3) .TYPE_ASSIGN(q_sum,@oper_sum,3) .TYPE_ASSIGN(agent_sum,@oper_commis,3) .TYPE_ASSIGN(q_tax,@oper_tax,3) .TYPE_INSERT('PIF_PAY2REP_IMP','WAIT',3) end end else .EXIT_MESSAGE_PARM('Существует заявка с номером ', @query_no) end ---- передача реестра ---- if upper(@f17) = upper('передаточное распоряжение') begin select @peredat_id = tp_pif_queries.id from tp_pif_queries, td_depo_docs where tp_pif_queries.agent_regs_no = @query_no and tp_pif_queries.agent_regs_date = @query_date and td_depo_docs.owner_id = @fund_id and td_depo_docs.id = tp_pif_queries.id and tp_pif_queries.stock_qty = @stock_qty and .ITEMS_EXISTS_BY_TYPE(tp_pif_queries.id, 'TP_PIF_PAYS_MOVES') update tp_pif_queries set tp_pif_queries.reestr_report_id = @report_id where tp_pif_queries.id = @peredat_id if @peredat_id is null .EXIT_MESSAGE_PARM('Не найдена заявка на передачу прав собственности на паи! №',@query_no) end end