ALTER PROCEDURE [dbo].[NewFromNAV_PAY]
@TaskID int = null,
@SubcatID int = null,
@ExtParamID int = null,
@Mode varchar(max) = null,
@UserID int=3, -- SystemRobot
@ErrorMessage varchar(1000) = null out
AS
BEGIN
DECLARE @Task varchar(8000) = '', -- текст задачи
@OrderedTime datetime=NULL, -- желаемая дата завершения задачи в формате год-месяц-день час:мин:сек
@Category int, -- ID категории
@Comment varchar(8000) = '', -- первый комментарий
@extParamStr varchar(8000) = '', -- строка ДП
@perfID int = NULL, -- назначенный исполнитель
@priorityID int = 1, -- приоритет задачи
@D3TaskID int = 0, -- ID задачи
@ParentID int = 0, -- ID родительской задачи
@UserNick varchar(20) = '', -- ник пользователя, ставящего задачу
@remind bit = 0, -- напоминать ли о задаче
@PropagateSubscribers bit = 1
DECLARE @Str varchar (max)
DECLARE @tid varchar (max)
DECLARE @ID int
DECLARE @NumberNav varchar (max)
DECLARE @ErrorMessageFan varchar (max)
DEClARE @res int
SET @Category = 32
DECLARE @cur cursor
-- отбор платежей, поступивших из NAV, которых еще нет в 1Форме
SET @cur = cursor scroll FOR
SELECT DISTINCT
a.NAV_ID,
'#n191#v' + ISNULL(a.NAV_ID,'') -- Наименование
+'::#n365#v' + ISNULL(a.NAV_ID,'') -- Номер платежа в Навижн
+'::#n71#v' + ISNULL(CAST(b1.TaskID AS varchar(max)),'') -- Контрагент
+'::#n345#v' + ISNULL(CAST(b.TaskID AS varchar(max)),'') -- Смета
+'::#n366#v' + ISNULL(CAST(b2.TaskID AS varchar(max)),'') -- Статья бюджета
+'::#n134#v' + ISNULL(CAST(CAST(a.[Sum] AS decimal(16,2)) AS varchar(max)),'') -- Сумма
+'::#n240#v'+ CASE
WHEN ISNULL(CAST(a.[Curr] AS varchar(max)),'')=''
THEN 'RUB'
ELSE CAST(a.[Curr] AS varchar(max))
END -- Код оригинальной валюты
+'::#n135#v' + ISNULL(CAST(a.[DATE_PAY]AS varchar(max)),'') -- Дата платежа
+'::#n137#v' + ISNULL(a.[Comment],'') -- Номер счета, дата
+'::#n364#v' + ISNULL(CAST(a.[Status] AS varchar(max)),'') -- Статус записи
+'::#n382#v' + ISNULL(CAST(a.Rowid AS varchar(8000)),'') -- Номер строки
+'::'
FROM [dbo].[_NAVISION_PAY_NAV] a -- промежуточная таблица для обмена данными о платежах
LEFT JOIN TasksInSubcat34Denormalized b -- категория "Сметы"
ON a.[Smeta] = b.extparam141value
LEFT JOIN TasksInSubcat18Denormalized b1 -- категория "Контрагенты"
ON a.[Contragent] = b1.extparam214value
LEFT JOIN TasksInSubcat95Denormalized b2 -- категория "Статьи бюджета"
ON a.[State_bud] = b2.extparam389value
WHERE a.NAV_ID NOT IN (select extparam365value from TasksInSubcat32Denormalized) -- ДП "Номер платежа в NAV" в категории "Платежи"
-- перебор полученных результатов
OPEN @cur
FETCH NEXT FROM @cur INTO @NumberNav, @tID
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ErrorMessageFan = NULL
SET @ErrorMessage = NULL
SET @extParamStr=(select @tid)
-- создание новой задачи в 1Форме в категории "Платежи" по переданным данным
IF EXISTS (select name from sysobjects where name = 'tc_ws_newTask')
BEGIN
exec @res = [tc_ws_newTask] @UserID, @Task, @OrderedTime, @Category, @Comment, @extParamStr,
@perfID, @priorityID, @D3TaskID, @ParentID, @UserNick,
@remind, @PropagateSubscribers
END
-- если задача создалась без ошибки, в запись в промежуточной таблице записывается номер задачи в 1Форме, для дальнейшей синхронизации
IF (@res != '0' and @res != '')
BEGIN
UPDATE [dbo].[_NAVISION_PAY_NAV]
SET [Status] = 2, [1F_ID] = @res
WHERE NAV_ID = @NumberNav
END
-- если возникла ошибка при создании задачи, платеж в промежуточной таблице помечается как не синхронизированный
ELSE
BEGIN
UPDATE [dbo].[_NAVISION_PAY_NAV]
SET [Status] = 5
WHERE NAV_ID = @NumberNav
END
FETCH NEXT FROM @cur INTO @NumberNav, @tID
END
CLOSE @cur
DEALLOCATE @cur
END
|