-- 1. 建立待通知 SP
CREATE PROCEDURE [dbo].[TWORK_SKD_GET_PENDING_NOTIFY]
(@datetime datetime)
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM dbo.twork_vw_calendarevent
WHERE 已審核 = 'Y'
AND 是否停用 <> 'Y'
AND 通知 = 'Y'
AND 通知帳號 <> ''
AND 已通知 <> 'Y'
AND @datetime >= 通知時間;
END
GO
-- 2. 建立待自動執行 SP
CREATE PROCEDURE [dbo].[TWORK_SKD_GET_PENDING_AUTOEXEC]
(@datetime datetime)
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP 20 *
FROM twork_vw_calendarevent
WHERE 已完成 NOT IN ('Y', 'F')
AND (已完成 <> 'R' OR 執行開始時間 < DATEADD(MINUTE, -10, @datetime))
AND 已審核 = 'Y'
AND 是否停用 <> 'Y'
AND 是否自動執行 = 'Y'
ORDER BY 預定時間 ASC;
END
GO
ALTER PROCEDURE [dbo].[TWORK_SKD_UPDATE_EVENT_STATUS]
@LP_P1 varchar(1), -- 1 = 已通知, 2 = 已完成
@LP_P2 varchar(50), -- pkid
@LP_P3 varchar(1), -- 'R' / 'Y' / 'F' / ''
@LP_P4 varchar(20) -- yyyy/MM/dd HH:mm:ss 或 ''
AS
BEGIN
SET NOCOUNT ON;
DECLARE @StartTime datetime = NULL;
IF @LP_P4 <> ''
SET @StartTime = CONVERT(datetime, @LP_P4, 111);
IF @LP_P1 = '1'
UPDATE [twork_skd_eventitem]
SET [已通知] = @LP_P3,
[執行開始時間] = CASE WHEN @LP_P4 = '' THEN [執行開始時間] ELSE @StartTime END
WHERE [pkid] = @LP_P2;
ELSE IF @LP_P1 = '2'
UPDATE [twork_skd_eventitem]
SET [已完成] = @LP_P3,
[執行開始時間] = CASE WHEN @LP_P4 = '' THEN [執行開始時間] ELSE @StartTime END,
[完成時間] = CASE WHEN @LP_P3 = 'Y' THEN GETDATE() ELSE [完成時間] END,
[是否停用] = CASE WHEN @LP_P3 = 'Y' THEN 'Y' ELSE '' END
WHERE [pkid] = @LP_P2;
END
UPDATE twork_skd_eventitem SET 已完成 = 'R' WHERE 已完成 = 'X';
UPDATE twork_skd_vw_eventtemplated SET 執行方法 = 'CloseBook' WHERE 執行方法 = '關帳';
UPDATE twork_skd_vw_eventitem SET 執行方法 = 'CloseBook' WHERE 執行方法 = '關帳';
UPDATE twork_skd_vw_eventtemplated SET 執行方法 = 'BalanceReport' WHERE 執行方法 = 'CreateBalanceSheet';
UPDATE twork_skd_vw_eventitem SET 執行方法 = 'BalanceReport' WHERE 執行方法 = 'CreateBalanceSheet';
UPDATE twork_skd_vw_eventtemplated SET 執行方法 = 'PaymntpqQuery' WHERE 執行方法 = 'CreateEmail';
UPDATE twork_skd_vw_eventitem SET 執行方法 = 'PaymntpqQuery' WHERE 執行方法 = 'CreateEmail';