IF [dbo].[ISSAM4]() = 0 BEGIN EXEC (' IF OBJECT_ID(N''KEYHM_BGDelete'', N''P'') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_BGDelete] END') EXEC (' CREATE PROCEDURE [dbo].[KEYHM_BGDelete] ( @DraftNo int, @BatchNo int) AS /***************************************************************************** * * * Deletes a the billing guide for specified bill * * SP only suitable for SAM3 * * * * Stored Procedure name : KEYHM_BGDelete * * Copied From : ky_BGDelete * * * * ????-??-?? ???? Created * * 2018-08-23 John Ginnane Added to SVN * * 2020-05-02 Vinodhan Created KAAS_BGDelete * * * Modification History : * * 2020-03-13 Rajesh P from ky_BGDelete *****************************************************************************/ BEGIN DELETE BGD from [dbo].[BGControl] BGC INNER JOIN [dbo].[BGGroups] BGG INNER JOIN [dbo].[BGDetail] BGD ON BGD.[BGGroupID] = BGG.[ID] ON BGG.[BGControlID] = BGC.[Id] WHERE ( (IsNull(@DraftNo, 0) <> 0) AND (BGC.[DraftNo] = IsNull(@DraftNo, 0))) OR ( (IsNull(@DraftNo, 0) = 0) AND (IsNull(@BatchNo, 0) <> 0) AND (BGC.[BatchNo] = @BatchNo)) DELETE BGG from [dbo].[BGControl] BGC INNER JOIN [dbo].[BGGroups] BGG ON BGG.[BGControlID] = BGC.[Id] WHERE ( (IsNull(@DraftNo, 0) <> 0) AND (BGC.[DraftNo] = IsNull(@DraftNo, 0))) OR ( (IsNull(@DraftNo, 0) = 0) AND (IsNull(@BatchNo, 0) <> 0) AND (BGC.[BatchNo] = @BatchNo)) DELETE BGC from [dbo].[BGControl] BGC WHERE ( (IsNull(@DraftNo, 0) <> 0) AND (BGC.[DraftNo] = IsNull(@DraftNo, 0))) OR ( (IsNull(@DraftNo, 0) = 0) AND (IsNull(@BatchNo, 0) <> 0) AND (BGC.[BatchNo] = @BatchNo)) END') END ELSE BEGIN EXEC (' IF OBJECT_ID(N''KEYHM_BGDeleteSAM4'', N''P'') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_BGDelete] END') EXEC (' CREATE PROCEDURE [dbo].[KEYHM_BGDelete] ( @DraftNo INT) AS /***************************************************************************** * * ky_BGDeleteSAM4 * * Deletes a the billing guide for specified bill * SP only suitable for SAM4 * * 2018-08-23 John Ginnane Created * * Modification History : * * 2020-03-13 Rajesh P from ky_BGDeleteSAM4 *****************************************************************************/ BEGIN DELETE BGF FROM [dbo].[BillingGuideFormated] AS BGF WHERE BGF.[BillGuideNo] = @DraftNo DELETE BCM FROM [dbo].[BillCompMatter] AS BCM WHERE BCM.[BillingNo] = @DraftNo DELETE BG FROM [dbo].[BillingGuide] AS BG WHERE BG.[BillingNo] = @DraftNo END') END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_CASEDIARYFetchActionTypes' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_CASEDIARYFetchActionTypes] END GO CREATE PROCEDURE [dbo].[KEYHM_CASEDIARYFetchActionTypes] (@LoginHandlerCode VARCHAR(10), @MatterCode VARCHAR(20) = '', @SearchText VARCHAR(4000) = '') AS /******************************************************************************************************* * This procedure is used to FETCH Action Type . * * * * Stored Procedure Name : [dbo].[KEYHM_CASEDIARYFetchActionTypes] * * Copied from : [dbo].[ky_NETCASEDIARYFetchActionTypes] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * * 2019-08-27 Vinodhan K Search functionality added (KEYHM-495) * *******************************************************************************************************/ BEGIN SET NOCOUNT ON DECLARE @Code VARCHAR(10) SET @Code = (SELECT RTRIM(ISNULL([CSM].[CSWKTCODE], '')) AS [CsWktCode] FROM [dbo].[CaseMaster] [CSM] WHERE [CSM].[CSCODE] = @MatterCode) SELECT ISNULL(RTRIM([TMP].[WKCODE]),'') AS [Code], RTRIM(ISNULL([TMP].[WKDESC], '')) AS [Actions] FROM [dbo].[Templates] [TMP] WHERE ( ISNULL(@SearchText, '') = '' OR RTRIM(LTRIM(@SearchText)) = '' OR ( [TMP].[WKDESC] LIKE '%' + @SearchText + '%' ) ) AND ( ISNULL([TMP].[Dept], '') = '' OR [TMP].[Dept] = (SELECT [HAN].[Dept] FROM [dbo].[Handlers] [HAN] WHERE [HAN].[CODE] = @LoginHandlerCode)) AND ( ISNULL([TMP].[Retired], 'N') <> 'Y' OR [TMP].[WKCODE] = @Code) SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_CASEDIARYFetchActionWorkTypebyActionCode' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_CASEDIARYFetchActionWorkTypebyActionCode] END GO CREATE PROCEDURE [KEYHM_CASEDIARYFetchActionWorkTypebyActionCode] (@ActionCode VARCHAR(5), @SearchText VARCHAR(4000) = '') AS /******************************************************************************************************* * This procedure is used to FETCH Work Type by Action code. * * * * Stored Procedure Name : [dbo].[KEYHM_CASEDIARYFetchActionWorkTypebyActionCode] * * Copied from : [dbo].[ky_NETCASEDIARYFetchActionWorkTypebyActionCode] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * * 2019-08-27 Vinodhan K Search functionality added (KEYHM-495) * *******************************************************************************************************/ BEGIN SET NOCOUNT ON --Case type action list SELECT T.[WORKTYPE], T.[ACTIONCODE], T.[SEQ], T.[TEXT1] AS [DESCRIPTION], T.[WKTCODE], T.[ACTIONCATEGORY], T.[STATUS], T.[MILESTONETYPE], T.[CASECODE], T.[DATE], T.[PROCESSTYPE], T.[FNCODE], T.[TEAMCODE], T.[DYSTARTTIME], T.[ACTIONID], T.[ORGINALACTIONID], T.[PRIORITY], T.[HIGHLIGHTED], T.[ATTACHMENTS], T.[PROCESSSTATE], T.[WORKPROCESS], T.[BILLABLE], T.[EMALADDRESS], T.[ADDRESSTO], T.[EMAIL], T.[SUBJECT], T.[DELEGATIONSTATUS], T.[DRAFTBILLNO], T.[DDStatus], T.[DStatus], T.[AlternativeRow], REPLACE( ( 'Double click the select action to process the following**Action Code: ' + ISNULL(T.[ACTIONCODE],'') + '**' + ISNULL(T.[TEXT1],'') + '****' + 'Associated document to generate:' + '**' + ISNULL((SELECT STUFF((SELECT '**' + RTRIM(ISNULL(TDTT.[NAME],'')) FROM [dbo].[TemplateActionDcouments] TADTT INNER JOIN [dbo].[TemplateDocuments] TDTT ON TADTT.[DOCUMENT] = TDTT.[CODE] WHERE TADTT.[ACTION] = T.[ACTIONCODE] FOR XML PATH('')), 1, 2, '')), 'Nil') + '****' + 'Associated action to process:**') + ISNULL((SELECT STUFF((SELECT '**' + Rtrim(Isnull(TATT.[DESC],'')) FROM [dbo].[TemplateActions] TATT INNER JOIN [dbo].[TemplateNextActions] TNATT ON TNATT.[NEXTACTION] = TATT.[ACTIONCODE] WHERE TNATT.[ACTION] = T.[ACTIONCODE] FOR XML PATH('')), 1, 2, '')), 'Nil') ,'**' ,CHAR(13)) AS [ToolTips], [Flag] FROM (SELECT AWT.[WORKTYPE], AWT.[ACTIONCODE], AWT.[SEQ], TAC.[DESC] AS [TEXT1], TAC.[WKTCODE], TAC.[ACTIONCATEGORY], TAC.[STATUS], TAC.[MILESTONETYPE], '' AS [CASECODE], NULL AS [DATE], TAC.[PROCESSTYPE], NULL AS [FNCODE], NULL AS [TEAMCODE], NULL AS [DYSTARTTIME], 0 AS [ACTIONID], NULL AS [ORGINALACTIONID], TAC.[PRIORITY], TAC.[HIGHLIGHTED], NULL AS [ATTACHMENTS], NULL AS [PROCESSSTATE], 0 AS [WORKPROCESS], NULL AS [BILLABLE], NULL AS [EMALADDRESS], NULL AS [ADDRESSTO], NULL AS [EMAIL], NULL AS [SUBJECT], 0 AS [DELEGATIONSTATUS], 0 AS [DRAFTBILLNO], 0 AS [DDStatus], 0 AS [DStatus], ROW_NUMBER() OVER(ORDER BY AWT.[WORKTYPE], AWT.[SEQ]) % 2 AS AlternativeRow, ISNULL(TAC.[flag], 0) AS [Flag] FROM dbo.[ActionWorkTypes] AWT INNER JOIN dbo.[TemplateActions] TAC ON AWT.[ACTIONCODE] = TAC.[ACTIONCODE] WHERE ( ISNULL(@SearchText, '') = '' OR RTRIM(LTRIM(@SearchText)) = '' OR ( [DESCRIPTION] LIKE '%' + @SearchText + '%' ) ) AND AWT.[WORKTYPE] = @ActionCode) AS T SET NOCOUNT OFF END GO IF OBJECT_ID(N'KEYHM_CaseSummaryPageLoad',N'P')IS NOT NULL DROP PROCEDURE [KEYHM_CaseSummaryPageLoad] GO CREATE PROCEDURE [dbo].[KEYHM_CaseSummaryPageLoad] (@CaseCode VARCHAR(20)) AS /******************************************************************************************************* * To get all detail about the matter to load it on to the grid. * * * * Stored Procedure Name : [dbo].[KEYHM_CaseSummaryPageLoad] * * Copied from : [dbo].[ky_NETCaseSummaryPageLoad] * * * * Modification History : * * 2019-04-16 Vinodhan K Created * * 2019-05-29 John Ginnane KEYD-5916 - Changed "Last Action" to be the last completed action * *******************************************************************************************************/ BEGIN DECLARE @NCOMMAND nvarchar(MAX) SET NOCOUNT ON DECLARE @DraftBillValue DECIMAL(18, 2) DECLARE @IsSAM4 bit SET @IsSAM4 = [dbo].[ISSAM4]() IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = N' SELECT @DraftBillValue = ISNULL(SUM(ISNULL(BD.[NET], 0)), 0) + ISNULL(SUM(ISNULL(BD.[VATVALUE], 0)), 0) FROM [dbo].[BillHeader] HED INNER JOIN [dbo].[BillDetails] BD ON BD.[DRAFTNO] = HED.[DRAFTNO] WHERE HED.[MATTER] = @CaseCode AND HED.[BILLNO] = 0' END ELSE BEGIN SET @NCOMMAND = N' SELECT @DraftBillValue = ISNULL(SUM(ISNULL(BD.[NetValue], 0)), 0) + ISNULL(SUM(ISNULL(BD.[VatValue], 0)), 0) FROM [dbo].[BillHead] HED INNER JOIN [dbo].[BillDetail] BD ON BD.[BillID] = HED.[BillingID] WHERE HED.[MatterCode] = @CaseCode AND HED.[BillStatus] <> ''Approved'' AND ISNULL(HED.[ProForma], '''') = ''Y''' END EXECUTE sp_executesql @NCOMMAND, N'@CaseCode VARCHAR(20),@DraftBillValue DECIMAL(18, 2) OUTPUT', @CaseCode = @CaseCode, @DraftBillValue=@DraftBillValue OUTPUT DECLARE @Section68 VARCHAR(10) DECLARE @IsApproved VARCHAR(10) DECLARE @TimeBal INT DECLARE @ChargeBal DECIMAL(19, 2) DECLARE @TotalCharge Decimal(19, 2) DECLARE @TotalTime INT --Matter values that are re-used elsewhere in this procedure. SELECT @Section68 = ISNULL(MAT.[Section68],''), @IsApproved = ISNULL(CON.[Approved],'') FROM [dbo].[matters] MAT LEFT OUTER JOIN [dbo].[Contacts] CON ON CON.[Code] = MAT.[ClientCode] WHERE MAT.[Code] = @CaseCode DECLARE @LDIADATE DATETIME DECLARE @LDIAACTIONTYPE VARCHAR(1) DECLARE @LDIATEXT1 VARCHAR(MAX) DECLARE @LDIAFNCODE VARCHAR(10) DECLARE @LDIAFNNAME VARCHAR(50) SELECT TOP 1 @LDIADATE = LDIA.[DATE], @LDIAACTIONTYPE = LDIA.[ACTIONTYPE], @LDIATEXT1 = LDIA.[TEXT1], @LDIAFNCODE = LDIA.[FNCODE], @LDIAFNNAME = [FEC].[Name] FROM [dbo].[diary] LDIA INNER JOIN [dbo].[FeeEarnerCodes] [FEC] ON LDIA.FNCODE = [FEC].[CODE] WHERE LDIA.[CASECODE] = @CaseCode AND LDIA.[STATUS] = 1 ORDER BY LDIA.[DATE] DESC DECLARE @MDIADATE DATETIME DECLARE @MDIAACTIONTYPE VARCHAR(1) DECLARE @MDIATEXT1 VARCHAR(MAX) DECLARE @MDIAFNCODE VARCHAR(10) DECLARE @MDIAFNNAME VARCHAR(50) SELECT TOP 1 @MDIADATE= MDIA.[DATE], @MDIAACTIONTYPE = MDIA.[ACTIONTYPE], @MDIATEXT1 = MDIA.[TEXT1], @MDIAFNCODE = MDIA.[FNCODE], @MDIAFNNAME = [FEC].[Name] FROM [dbo].[diary] MDIA INNER JOIN [dbo].[FeeEarnerCodes] [FEC] ON MDIA.FNCODE = [FEC].[CODE] WHERE MDIA.[CASECODE] = @CaseCode AND MDIA.[HIGHLIGHTED] = 'Y' ORDER BY MDIA.[DATE] DESC DECLARE @NDIADATE DATETIME DECLARE @NDIAACTIONTYPE VARCHAR(1) DECLARE @NDIATEXT1 VARCHAR(MAX) DECLARE @NDIAFNCODE VARCHAR(10) DECLARE @NDIAFNNAME VARCHAR(50) SELECT TOP 1 @NDIADATE = NDIA.[DATE], @NDIAACTIONTYPE = NDIA.[ACTIONTYPE], @NDIATEXT1 = NDIA.[TEXT1], @NDIAFNCODE = NDIA.[FNCODE], @NDIAFNNAME = [FEC].[Name] FROM dbo.[diary] NDIA INNER JOIN [dbo].[FeeEarnerCodes] [FEC] ON NDIA.FNCODE = [FEC].[CODE] WHERE NDIA.[CASECODE] = @CaseCode AND NDIA.[STATUS] = 0 ORDER BY NDIA.[DATE] ASC DECLARE @TIEDATE DATETIME --Pino 2015-05-27 Start --SELECT @TIEDATE = (MAX(TIE.[DATE])) -- FROM [dbo].[TimeEntry] TIE -- WHERE TIE.[Matter] = @CaseCode IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = N' SELECT @TIEDATE = MAX(CASE WHEN DLG.[DATE] IS NULL THEN CONVERT(DATETIME, NULL) WHEN DLG.[DATE] > GETDATE() THEN CONVERT(DATETIME, NULL) ELSE DLG.[DATE] END) FROM [dbo].[DebtorsLedger] DLG WHERE DLG.[MATTER] = @CaseCode' END ELSE BEGIN SET @NCOMMAND = N' SELECT @TIEDATE = MAX(CASE WHEN TRN.[TransDate] IS NULL THEN CONVERT(DATETIME, NULL) WHEN TRN.[TransDate] > GETDATE() THEN CONVERT(DATETIME, NULL) ELSE TRN.[TransDate] END) FROM [dbo].[Transactions] TRN WHERE TRN.[Posted] = ''Y'' AND TRN.[MatterCode] = @CaseCode AND TRN.[DebtorsValue] <> 0 AND TRN.[CorrectionInd] = ''L'' AND ( ( TRN.[XnType] = ''I'' AND TRN.[RecType] = ''H'') OR ( TRN.[XnType] = ''J'' AND TRN.[RecType] = ''D''))' END EXECUTE sp_executesql @NCOMMAND, N'@CaseCode VARCHAR(20), @TIEDATE DATETIME OUTPUT', @CaseCode = @CaseCode, @TIEDATE = @TIEDATE OUTPUT --Pino 2015-05-27 End DECLARE @LastTimeEntryDate DATETIME DECLARE @LastTimeEntryTime INT DECLARE @LastTimeEntryRate DECIMAL(10, 2) DECLARE @LastTimeEntryCharge DECIMAL(10, 2) DECLARE @LastTimeEntryTask VARCHAR(6) DECLARE @LastTimeEntryComment VARCHAR(1000) DECLARE @LastTimeEntryFE VARCHAR(10) DECLARE @LastTimeEntryFEName VARCHAR(50) DECLARE @TimeEntryTotalCharge DECIMAL(19, 2) DECLARE @TimeEntryTotalTime INT SELECT TOP (1) @LastTimeEntryDate = TIE.[DATE], @LastTimeEntryTime = TIE.[Time], @LastTimeEntryRate = TIE.[Rate], @LastTimeEntryCharge = TIE.[Charge], @LastTimeEntryTask = TIE.[Task], @LastTimeEntryComment = TIE.[Comment], @LastTimeEntryFE = TIE.[FeeEarn], @LastTimeEntryFEName = [FEC].[Name] FROM [dbo].[TimeEntry] TIE INNER JOIN [dbo].[FeeEarnerCodes] [FEC] ON [TIE].[FeeEarn] = [FEC].[CODE] WHERE TIE.[Matter] = @CaseCode AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun ORDER BY TIE.[Date] DESC, TIE.[Time] DESC SET @LastTimeEntryRate = ISNULL(@LastTimeEntryRate, 0) SET @LastTimeEntryCharge = ISNULL(@LastTimeEntryCharge, 0) -- Please see also: KAAS_MatterClosable. If you change any of these calculations, -- ensure the ones in there are changed as well. -- KAAS_PMatterClosable. If you change any of these calculations, -- ensure the ones in there are changed as well. -- KAAS_TLFetchTimeEntry. If you change any of these calculations, -- ensure the ones in there are changed as well. SELECT @TimeEntryTotalCharge = ISNULL(SUM(ISNULL(TIE.[Charge], 0)), 0), @TimeEntryTotalTime = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0), @TotalCharge = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 ELSE ISNULL(TIE.[Charge], 0) END), 0), @ChargeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[InvoiceNo], 0) <> 0 THEN 0 WHEN @IsSAM4 = 1 THEN ISNULL(TIE.[Charge], 0) ELSE ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0) END), 0), @TimeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[InvoiceNo], 0) <> 0 THEN 0 WHEN @IsSAM4 = 0 THEN CASE WHEN TIE.[Charge] = 0 THEN 0 ELSE CONVERT(INT, FLOOR(CONVERT(DECIMAL(18, 2), TIE.[TIME]) * ( (TIE.[Charge] - TIE.[BilledAmount]) / TIE.[Charge]))) END ELSE ISNULL(TIE.[Time], 0) END), 0), @TotalTime = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 ELSE ISNULL(TIE.[Time], 0) END), 0) FROM [dbo].[TimeEntry] TIE WHERE TIE.[Matter] = @CaseCode AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun DECLARE @DebtBal DECIMAL(19, 2) DECLARE @OutlayBal DECIMAL(19, 2) DECLARE @DebtBalDate DATETIME DECLARE @OutlayBalDate DATETIME DECLARE @ClientCurrent DECIMAL(19, 2) DECLARE @ClientDeposit DECIMAL(19, 2) -- Please see also: KAAS_MatterClosable. If you change any of these calculations, -- ensure the ones in there are changed as well. -- KAAS_TLFetchTimeEntry. If you change any of these calculations, -- ensure the ones in there are changed as well. -- To ensure SAM3 will retrieve these from [dbo].[matters] SET @DebtBal = 0 SET @OutlayBal = 0 SET @ClientCurrent = 0 SET @ClientDeposit = 0 IF @IsSAM4 = 1 BEGIN SET @NCOMMAND = N' SELECT @DebtBal = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[DebtorsValue], 0)), 0)), @DebtBalDate = MAX(CASE WHEN ISNULL(TRN.[DebtorsValue], 0) = 0 THEN NULL ELSE TRN.[TransDate] END), @OutlayBal = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[OutlayValue], 0)), 0)), @OutlayBalDate = MAX(CASE WHEN ISNULL(TRN.[OutlayValue], 0) = 0 THEN NULL ELSE TRN.[TransDate] END), @ClientCurrent = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[ClientCurrent], 0)), 0)), @ClientDeposit = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[ClientDeposit], 0)), 0)) FROM [dbo].[Transactions] TRN WHERE TRN.[MatterCode] = @CaseCode AND TRN.[Posted] = ''Y'' AND TRN.[RecType] <> ''V'' AND TRN.[CorrectionInd] = ''L''' EXECUTE sp_executesql @NCOMMAND, N'@CaseCode VARCHAR(20), @DebtBal DECIMAL(19, 2) OUTPUT, @DebtBalDate DATETIME OUTPUT, @OutlayBal DECIMAL(19, 2) OUTPUT, @OutlayBalDate DATETIME OUTPUT, @ClientCurrent DECIMAL(19, 2) OUTPUT, @ClientDeposit DECIMAL(19, 2) OUTPUT', @CaseCode = @CaseCode, @DebtBal = @DebtBal OUTPUT, @DebtBalDate = @DebtBalDate OUTPUT, @OutlayBal = @OutlayBal OUTPUT, @OutlayBalDate = @OutlayBalDate OUTPUT, @ClientCurrent = @ClientCurrent OUTPUT, @ClientDeposit = @ClientDeposit OUTPUT END --Result Set 0 --Matter Data SELECT RTRIM(ISNULL(MAT.[Code], '')) AS [Code], RTRIM(ISNULL(MAT.[Description], '')) AS [Description], RTRIM(ISNULL(MAT.[ClientCode], '')) AS [ClientCode], RTRIM(ISNULL(CLT.[CLNAME], '')) AS [CLName], RTRIM(ISNULL(CLT.[CLADDR], '')) AS [CLAddr], RTRIM(ISNULL(MAT.[FECode], '')) AS [FECode], RTRIM(ISNULL(HAN.[NAME], '')) AS [HandlerName], RTRIM(ISNULL(MAT.[Dept], '')) AS [Dept], RTRIM(ISNULL(DPT.[DESC], '')) AS [Desc], RTRIM(MAT.WType) AS [WType], RTRIM(ISNULL(WKT.[DESC], '')) AS [WorkType], MAT.[Started] AS [Started], MAT.[EstFee] AS [EstFee], MAT.[ExpBillD] AS [ExpBillD], CONVERT(DECIMAL(19, 2), CASE WHEN @DebtBal <> 0 THEN @DebtBal ELSE ISNULL(MAT.[DebtBal], 0) END) AS [DebtBal], CONVERT(DECIMAL(19, 2), CASE WHEN @OutlayBal <> 0 THEN @OutlayBal ELSE ISNULL(MAT.[OutlayBal], 0) END) AS [OutlayBal], MAT.[OutlayBud] AS [OutlayBud], CONVERT(DECIMAL(19, 2), CASE WHEN @ClientCurrent <> 0 THEN @ClientCurrent + @ClientDeposit WHEN @ClientDeposit <> 0 THEN @ClientCurrent + @ClientDeposit ELSE ISNULL(MAT.[ClientBal], 0) END) AS [ClientBal], CONVERT(DECIMAL(19, 2), CASE WHEN @ClientCurrent <> 0 THEN @ClientCurrent ELSE ISNULL(MAT.[ClientCurBal], 0) END) AS [ClientCurBal], CONVERT(DECIMAL(19, 2), CASE WHEN @ClientDeposit <> 0 THEN @ClientDeposit ELSE ISNULL(MAT.[ClientDepBal], 0) END) AS [ClientDepBal], MAT.[StatuteLimits] AS [StatuteLimits], CTL.USERPROMPT1 AS [User1Label], RTRIM(ISNULL(MAT.[User1], '')) AS [User1Value], CTL.USERPROMPT2 AS [User2Label], RTRIM(ISNULL(MAT.[User2], '')) AS [User2Value], CTL.USERPROMPT3 AS [User3Label], RTRIM(ISNULL(MAT.[User3], '')) AS [User3Value], CTL.YourRef AS [YourRefLabel], RTRIM(ISNULL(MAT.[YourRef], '')) AS [YourRefValue], MAT.[Value] AS [Value], @TimeBal AS [TimeBal], CONVERT(VARCHAR(20), (CONVERT(INT, @TimeBal) / 60)) + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + CONVERT(INT, @TimeBal) % 60), 2, 2) AS [TimeBalHours], @ChargeBal AS [ChargeBal], CONVERT(VARCHAR(20), (CONVERT(INT, @TotalTime) / 60)) + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + CONVERT(INT, @TotalTime) % 60), 2, 2) AS [TotalHours], @TotalCharge AS [TotalCharge], MAT.[FileColour] AS [FileColour], RTRIM(ISNULL(MAT.[OldRef], '')) AS [OldRef], RTRIM(ISNULL(MAT.[Status], '')) AS [Status], MAT.[StatuteLimits] AS [StatuteLims], RTRIM(ISNULL(MAT.[Comment], '')) AS [Comment], @DraftBillValue AS [DraftBillTotal], @TIEDATE AS [LastBillDate], @LDIADATE AS [LastActionDate], RTRIM(ISNULL(@LDIAActionType, '')) AS [LastActionType], RTRIM(ISNULL(@LDIATEXT1, '')) AS [LastActionText], RTRIM(ISNULL(@LDIAFNCODE, '')) AS [LastActionFE], RTRIM(ISNULL(@LDIAFNNAME, '')) AS [LastActionFEName], @MDIADATE AS [LastMilestoneDate], RTRIM(ISNULL(@MDIAActionType, '')) AS [LastMilestoneType], RTRIM(ISNULL(@MDIATEXT1, '')) AS [LastMilestoneText], RTRIM(ISNULL(@MDIAFNCODE, '')) AS [LastMilestoneFE], RTRIM(ISNULL(@MDIAFNNAME, '')) AS [LastMilestoneFEName], @NDIADATE AS [NextActionDate], RTRIM(ISNULL(@NDIAActionType, '')) AS [NextActionType], RTRIM(ISNULL(@NDIATEXT1, '')) AS [NextActionText], RTRIM(ISNULL(@NDIAFNCODE, '')) AS [NextActionFE], RTRIM(ISNULL(@NDIAFNNAME, '')) AS [NextActionFEName], @LastTimeEntryDate AS [LastTimeEntryDate], @LastTimeEntryTime AS [LastTimeEntryTime], @LastTimeEntryRate AS [LastTimeEntryRate], @LastTimeEntryCharge AS [LastTimeEntryCharge], @LastTimeEntryTask AS [LastTimeEntrytask], @LastTimeEntryComment AS [LastTimeEntryComment], @LastTimeEntryFE AS [LastTimeEntryFE], @LastTimeEntryFEName AS [LastTimeEntryFEName], @TimeEntryTotalCharge AS [TimeEntryTotalCharge], @TimeEntryTotalTime AS [TotalTime], STC.[DESCRIPTION] AS [StatusCodeDescription], CSM.[CSWKTCODE] AS [CSWKTCode], TMP.[WKDESC] AS [WKDesc], CASE WHEN MAT.[ShowCommentInAlarm] = 'Y' THEN 'True' ELSE 'False' END AS [ShowCommentInAlarm], RTRIM(ISNULL(FCL.[COLOURDESC], '')) AS [FileColourDescription], ISNULL(FCL.[RGBColour], -1) AS [FileColourRGB], @Section68 AS [Section68], @IsApproved AS [IsApproved] FROM dbo.[matters] MAT LEFT JOIN dbo.[WorkTypes] WKT ON WKT.[CODE] = MAT.[WType] LEFT OUTER JOIN dbo.[Departments] DPT ON DPT.[CODE] = MAT.[Dept] LEFT OUTER JOIN dbo.[Handlers] HAN ON HAN.[CODE] = MAT.[FECode] LEFT OUTER JOIN dbo.[client] CLT ON CLT.[CLCODE] = MAT.[ClientCode] LEFT OUTER JOIN dbo.[StatusCodes] STC ON STC.[CODE] = MAT.[Status] LEFT OUTER JOIN dbo.[CaseMaster] CSM LEFT OUTER JOIN dbo.[Templates] TMP ON TMP.[WKCODE] = CSM.[CSWKTCODE] ON CSM.[CSCODE] = MAT.[Code] LEFT OUTER JOIN [dbo].[FileColours] FCL ON FCL.[COLOURCODE] = MAT.[FileColour] CROSS JOIN [CONTROL] [Ctl] WHERE MAT.[Code] = @CaseCode --Result Set 1 --WIP SELECT TIES.[FeeEarn] AS [FeeEarn], TIES.[NAME] AS [Name], CONVERT(VARCHAR(20), TIES.[TOTALTIME] / 60) + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (TIES.[TOTALTIME] % 60)), 2, 2) AS [FETotalHours], TIES.[Charge] AS [FECharge], TIES.[ChargeBal] AS [FEChargeBal], CONVERT(VARCHAR(20), TIES.[WIPTOTALTIME] / 60) + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (TIES.[WIPTOTALTIME] % 60)), 2, 2) AS [FEWIPHours] FROM ( SELECT TIE.[FeeEarn] AS [FeeEarn], HAN.[NAME] AS [NAME], ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0) AS [TOTALTIME], SUM(CONVERT(DECIMAL(18, 2),ISNULL(TIE.[Charge],0))) AS [Charge], SUM(CONVERT(DECIMAL(18, 2), CASE WHEN @IsSAM4 = 1 AND TIE.[InvoiceNo] <> 0 THEN 0 WHEN @IsSAM4 = 0 THEN ISNULL(TIE.[Charge],0) - ISNULL(TIE.[BilledAmount],0) ELSE ISNULL(TIE.[Charge],0) END)) AS [ChargeBal], CONVERT(INT, FLOOR(CONVERT(DECIMAL(18, 2), ISNULL(SUM(CASE WHEN @IsSAM4 = 1 AND [TIE].[InvoiceNo] <> 0 THEN 0 WHEN [TIE].[Charge] - [TIE].[BilledAmount] = 0 THEN 0 ELSE TIE.[TIME] END) , 0)) * CASE WHEN SUM(CONVERT(DECIMAL(18, 2), CASE WHEN @IsSAM4 = 1 AND [TIE].[InvoiceNo] <> 0 THEN 0 WHEN [TIE].[Charge] - [TIE].[BilledAmount] = 0 THEN 0 ELSE TIE.[Charge] END)) = 0 THEN 0 ELSE SUM(CONVERT(DECIMAL(18, 2), CASE WHEN @IsSAM4 = 1 AND TIE.[InvoiceNo] <> 0 THEN 0 WHEN @IsSAM4 = 0 THEN ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0) ELSE ISNULL(TIE.[Charge],0) END)) / SUM(CONVERT(DECIMAL(18, 2), CASE WHEN @IsSAM4 = 1 AND [TIE].[InvoiceNo] <> 0 THEN 0 WHEN [TIE].[Charge] - [TIE].[BilledAmount] = 0 THEN 0 ELSE TIE.[Charge] END)) END)) AS [WIPTOTALTIME] FROM [dbo].[matters] MAT INNER JOIN [dbo].[TimeEntry] TIE ON TIE.[MATTER] = MAT.[Code] INNER JOIN [dbo].[Handlers] HAN ON HAN.[CODE] = TIE.[FeeEarn] WHERE TIE.[MATTER] = @CaseCode AND TIE.[DATE] < GETDATE() AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun AND TIE.[REC_IRR] <> 'N' GROUP BY TIE.[FEEEARN], HAN.[NAME]) TIES ORDER BY TIES.[ChargeBal] DESC, TIES.[TOTALTIME] DESC --Result Set 2 -- Critical dates SELECT ISNULL(CONVERT(VARCHAR, DIA.[DATE], 106), '') AS [DiaryDate], RTRIM(ISNULL(DIA.[FNCODE],'')) AS [Who], RTRIM(ISNULL(DIA.[TEXT1],'')) AS [Description], CASE RTRIM(ISNULL([Status], '')) WHEN '1' THEN 'True' ELSE 'False' END AS [Status] FROM [dbo].[diary] DIA WHERE DIA.[ACTIONTYPE] = 'c' AND DIA.[CASECODE] = @CaseCode ORDER BY DIA.[date] --Result Set 3 --Court Date Grid SELECT ISNULL(CONVERT(VARCHAR, DIA.[DATE], 106), '') AS [Date], DIA.[FNCODE] AS [FNCode], DIA.[TEXT1] AS [CourtDate] FROM [dbo].[diary] DIA WHERE DIA.[ACTIONTYPE] = 'o' AND DIA.[CASECODE] = @CaseCode --Result Set 4 --Activity to Date SELECT TIES.[Activity], CASE WHEN TIES.[TOTALTIME] < 0 THEN '-' ELSE '' END + CONVERT(VARCHAR(20), ABS(TIES.[TOTALTIME]) / 60) + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (ABS(TIES.[TOTALTIME]) % 60)), 2, 2) AS [ActivityToDateTime], TIES.[Value] AS [ActivityToDateValue] FROM ( SELECT TIE.[TASK] AS [Task], CASE WHEN TSC.[DESC] IS NULL THEN 'Task Code: ' + ISNULL(TIE.[TASK], '') ELSE RTRIM(ISNULL(TSC.[DESC],'')) END AS [Activity], ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0) AS [TOTALTIME], SUM(CONVERT(DECIMAL(18, 2), ISNULL(TIE.[Charge], 0))) AS [Value] FROM [dbo].[matters] MAT INNER JOIN [dbo].[TimeEntry] TIE LEFT OUTER JOIN [dbo].[TasksCodes] TSC ON TSC.[CODE] = TIE.[Task] ON TIE.[MATTER] = MAT.[Code] WHERE TIE.[MATTER] = @CaseCode AND TIE.[DATE] < GETDATE() AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun AND TIE.[REC_IRR] <> 'N' AND TIE.[Task] <> 'WRI' GROUP BY TIE.[TASK], CASE WHEN TSC.[DESC] IS NULL THEN 'Task Code: ' + ISNULL(TIE.[TASK], '') ELSE RTRIM(ISNULL(TSC.[DESC],'')) END) TIES ORDER BY TIES.[Value] DESC, TIES.[TOTALTIME] DESC --Result Set 5 --UNDERTAKINGS SELECT UND.[DESCRIPTION] AS [Description], UND.[VALUE] AS [Value], UND.[WHO] AS [Who], CASE [GIVENORRECEIVED] WHEN 'G' THEN 'Given' WHEN 'R' THEN 'Received' ELSE '' END AS [GivenOrReceived] FROM [dbo].[UNDERTAKINGS] UND WHERE UND.[MATTER] = @CaseCode --Result Set 6 --Total Time [Activity] SELECT CONVERT(VARCHAR(20), TIES.[TOTALTIME] / 60) + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (TIES.[TOTALTIME] % 60)), 2, 2) AS [ActivityTotalTime], TIES.[Value] AS [ActivityTotalValue] FROM ( SELECT ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0) AS [TOTALTIME], SUM(CONVERT(DECIMAL(18, 2), ISNULL(TIE.[Charge], 0))) AS [Value] FROM [dbo].[matters] MAT INNER JOIN [dbo].[TimeEntry] TIE ON TIE.[MATTER] = MAT.[Code] WHERE TIE.[MATTER] = @CaseCode AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) AND TIE.[TASK] <> 'WRI') TIES --Result Set 7 --Write off time SELECT TIES.[WriteOffValue] As [WriteOffValue] FROM ( SELECT SUM(CONVERT(DECIMAL(18, 2), ISNULL(TIE.[Charge], 0))) AS [WriteOffValue] FROM [dbo].[matters] MAT INNER JOIN [dbo].[TimeEntry] TIE ON TIE.[MATTER] = MAT.[Code] WHERE TIE.[MATTER] = @CaseCode AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) AND TIE.[Task] = 'WRI') TIES --Result Set 8 --Date for Debtor Ledger IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = N' SELECT [dbo].[KEYHM_FN_DateDiffVerbose](LDL.[LastDebtLedgerDate], LDL.[TODAY]) AS [DebtLedgerOSVerbose], CASE WHEN DATEDIFF(DAY, LDL.[LastDebtLedgerDate], LDL.[TODAY]) > 0 THEN DATEDIFF(DAY, LDL.[LastDebtLedgerDate], LDL.[TODAY]) ELSE 0 END AS [DebtLedgerOSDays] FROM ( SELECT GetDate() AS [TODAY], MAX(DTL.[DATE]) AS [LastDebtLedgerDate] FROM [dbo].[DebtorsLedger] DTL WHERE DTL.[MATTER] = @CaseCode) LDL' EXECUTE sp_executesql @NCOMMAND, N'@CaseCode VARCHAR(20)', @CaseCode = @CaseCode END ELSE BEGIN SET @NCOMMAND = N' SELECT [dbo].[KEYHM_FN_DateDiffVerbose](LDL.[LastDebtLedgerDate], LDL.[TODAY]) AS [DebtLedgerOSVerbose], CASE WHEN DATEDIFF(DAY, LDL.[LastDebtLedgerDate], LDL.[TODAY]) > 0 THEN DATEDIFF(DAY, LDL.[LastDebtLedgerDate], LDL.[TODAY]) ELSE 0 END AS [DebtLedgerOSDays] FROM ( SELECT GetDate() AS [TODAY], @DebtBalDate AS [LastDebtLedgerDate]) LDL' EXECUTE sp_executesql @NCOMMAND, N'@DebtBalDate DATETIME', @DebtBalDate = @DebtBalDate END --Result Set 9 --Date for Matter Ledger (Outstanding) IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = N' SELECT [dbo].[KEYHM_FN_DateDiffVerbose](LDL.[LastMatLedgerDate], LDL.[TODAY]) AS [MatLedgerOSVerbose], CASE WHEN DATEDIFF(DAY, LDL.[LastMatLedgerDate], LDL.[TODAY]) > 0 THEN DATEDIFF(DAY, LDL.[LastMatLedgerDate], LDL.[TODAY]) ELSE 0 END AS [MatLedgerOSDays] FROM ( SELECT GetDate() AS [TODAY], MAX(MAL.[DATE]) AS [LastMatLedgerDate] FROM [dbo].[MatterLedger] MAL WHERE MAL.[MATTER] = @CaseCode AND ISNULL(MAL.[VALUEO], 0) <> 0) LDL' EXECUTE sp_executesql @NCOMMAND, N'@CaseCode VARCHAR(20)', @CaseCode = @CaseCode END ELSE BEGIN SET @NCOMMAND = N' SELECT [dbo].[KEYHM_FN_DateDiffVerbose](LDL.[LastMatLedgerDate], LDL.[TODAY]) AS [MatLedgerOSVerbose], CASE WHEN DATEDIFF(DAY, LDL.[LastMatLedgerDate], LDL.[TODAY]) > 0 THEN DATEDIFF(DAY, LDL.[LastMatLedgerDate], LDL.[TODAY]) ELSE 0 END AS [MatLedgerOSDays] FROM ( SELECT GetDate() AS [TODAY], @OutlayBalDate AS [LastMatLedgerDate]) LDL' EXECUTE sp_executesql @NCOMMAND, N'@OutlayBalDate DATETIME', @OutlayBalDate = @OutlayBalDate END -- PLEASE NOTE THAT THE CALCULATION BELOW IS ALSO USED IN KAAS_TLFetchTimeEntry, so -- please modify both procedures if this needs to be changed. -- Result Set 10 -- The fees issued to date IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = N' SELECT ISNULL(SUM((CASE WHEN HED.[INVCR] = ''I'' THEN TRN.[VALUE] ELSE TRN.[VALUE] * - 1 END)), 0) AS [FeesIssued] FROM [dbo].[BatchH] HED INNER JOIN [dbo].[BatchDetails] TRN ON TRN.[BATCHNO] = HED.[BATCHNO] WHERE HED.[MATTER] = @CaseCode AND HED.[POSTED] = ''Y'' AND TRN.[TYPE] = ''I'' AND TRN.[OUTLAY] = ''F''' END ELSE BEGIN SET @NCOMMAND = N' DECLARE @TotalFeesBilled DECIMAL(22, 2) SELECT @TotalFeesBilled = ISNULL(SUM(ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * (-1)), 0) FROM [dbo].[TransactionsHeaders] HED INNER JOIN [dbo].[Transactions] TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND ( TRN.[CorrectionInd] = ''L'' OR TRN.[CorrectionInd] = ''X'') WHERE HED.[MatterCode] = @CaseCode --values imported from Axxia SELECT @TotalFeesBilled = @TotalFeesBilled + ISNULL(SUM(ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * (-1)), 0) FROM [dbo].[Transactions] TRN LEFT OUTER JOIN [dbo].[TransactionsHeaders] HED ON HED.[BatchNo] = TRN.[BatchNo] WHERE TRN.[MatterCode] = @CaseCode AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND ( TRN.[CorrectionInd] = ''L'' OR TRN.[CorrectionInd] = ''X'') AND HED.[BatchNo] IS NULL SELECT @TotalFeesBilled AS [FeesIssued]' END EXECUTE sp_executesql @NCOMMAND, N'@CaseCode VARCHAR(20)', @CaseCode = @CaseCode -- Result Set 11 -- Current outstanding fees IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = N' SELECT CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(DTL.[OSFees], 0)), 0)) AS [OSFees] FROM [dbo].[DebtorsLedger] DTL WHERE DTL.[matter] = @CaseCode' END ELSE BEGIN SET @NCOMMAND = N' SELECT CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[FeesOS], 0)), 0)) AS [OSFees] FROM [dbo].[Transactions] TRN WHERE TRN.[MatterCode] = @CaseCode AND TRN.[Posted] = ''Y'' AND TRN.[RecType] <> ''V'' AND TRN.[CorrectionInd] = ''L''' END EXECUTE sp_executesql @NCOMMAND, N'@CaseCode VARCHAR(20)', @CaseCode = @CaseCode -- Result set 12 -- Print job tracker totals - KEYD-4348 DECLARE @DOCBILLED DECIMAL(19, 2) IF [dbo].[ISSAM4]() = 1 BEGIN SET @NCOMMAND = N' SELECT @DOCBILLED = SUM(ISNULL(TRN.[NominalValue], 0)) * -1 FROM [dbo].[TransactionsHeaders] AS HED INNER JOIN [dbo].[Transactions] AS TRN ON HED.[BatchNo] = TRN.[BatchNo] WHERE HED.[Posted] = ''Y'' AND HED.[XnType] = ''I'' AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''M'' AND TRN.[OutlayCode] = ISNULL((SELECT TOP 1 [KeyValue] FROM [dbo].[Settings] WHERE [KeyName] = ''PrintLedgerOutlayCode''), '''') AND TRN.[CorrectionInd] = ''L'' AND HED.[MatterCode] = @CaseCode' EXECUTE SP_EXECUTESQL @NCOMMAND, N'@CaseCode VARCHAR(20), @DOCBILLED DECIMAL(19, 2)', @CaseCode = @CaseCode, @DOCBILLED = @DOCBILLED END ELSE BEGIN SET @NCOMMAND = N' SELECT @DOCBILLED = SUM(ISNULL(BAD.[VALUE], 0)) FROM [dbo].[BatchH] AS BAH INNER JOIN [dbo].[BatchDetails] AS BAD ON BAH.[BATCHNO] = BAD.[BATCHNO] INNER JOIN [dbo].[control] AS CON ON BAD.[CODE] = CON.[MISCOUTLAY] WHERE BAH.[POSTED] = ''Y'' AND BAH.[TYPE]= ''I'' AND BAD.[OUTLAY] = ''F'' AND BAD.[OUTLAYCODE] = ISNULL((SELECT TOP 1 [KeyValue] FROM [dbo].[Settings] WHERE [KeyName] = ''PrintLedgerOutlayCode''), '''') AND BAH.[MATTER] = @CaseCode' EXECUTE SP_EXECUTESQL @NCOMMAND, N'@CaseCode VARCHAR(20), @DOCBILLED DECIMAL(19, 2)', @CaseCode = @CaseCode, @DOCBILLED = @DOCBILLED END SELECT ISNULL(SUM(ISNULL(PJT.[Cost], 0)), 0) AS [TotalDoc], ISNULL(SUM(ISNULL(CASE WHEN ISNULL(PJT.[InvoiceNo], 0) <= 0 AND ISNULL(PJT.[Status], '') = 'Printed' THEN ISNULL(PJT.[Cost], 0) ELSE 0 END, 0)), 0) AS [UnbilledDoc], ISNULL(@DOCBILLED, 0) AS [BilledDoc], ISNULL(SUM(ISNULL(CASE WHEN ISNULL(PJT.[Status], '') <> 'Printed' THEN ISNULL(PJT.[Cost], 0) ELSE 0 END, 0)), 0) AS [WriteOffDoc] FROM [dbo].[matters] AS MAT LEFT OUTER JOIN [dbo].[PrintJobTracker] AS PJT ON MAT.[Code] = PJT.[MatterCode] WHERE MAT.[Code] = @CaseCode SET NOCOUNT OFF END GO IF OBJECT_ID(N'KEYHM_CheckUnpostableEntries',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_CheckUnpostableEntries] GO CREATE PROCEDURE [dbo].[KEYHM_CheckUnpostableEntries] (@HANDLER varchar(10)) AS /******************************************************************************************************* * Flags unpostable entries as "do not post". * * * * Stored Procedure Name : [dbo].[KEYHM_CheckUnpostableEntries] * * Copied from : [dbo].[ky_NETCheckUnpostableEntries] * * * * Modification History: * * 2019-04-24 Vinodhan K Created * *******************************************************************************************************/ BEGIN UPDATE TDB SET TDB.[POST] = CASE WHEN MAT.[CODE] IS NULL THEN 'N' ELSE 'Y' END FROM WDNTEID NTEID INNER JOIN [dbo].[TimeDayBook] TDB ON TDB.[RECORDID] = NTEID.[RECORDID] AND RTRIM(ISNULL(TDB.[MATTER], '')) <> '' INNER JOIN [dbo].[matters] MAT ON MAT.[Code] = TDB.[MATTER] WHERE NTEID.[HANDLER] = @HANDLER END GO IF OBJECT_ID(N'KEYHM_Dashboard',N'P')IS NOT NULL DROP PROCEDURE [KEYHM_Dashboard] GO CREATE PROCEDURE [dbo].[KEYHM_Dashboard] ( @Handler VARCHAR(10), @Fromdate DATETIME, @todate DATETIME) AS /******************************************************************************************************* * Populates the My Overview page * * * * Stored Procedure Name : [dbo].[KEYHM_Dashboard] * * Copied from : [dbo].[KY_NETDashboard3] * * * * Modification History : * * 2019-04-16 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @NCOMMAND NVARCHAR(MAX) DECLARE @TotalUndertakings INT DECLARE @TotalStatuteLimits INT DECLARE @IsSAM4 BIT DECLARE @BitWiseID BIGINT DECLARE @GETDATE DATETIME SET @GETDATE = GETDATE() SET @IsSAM4 = [dbo].[ISSAM4]() SET @handler = CASE WHEN RTRIM(ISNULL(@handler, '')) = '' THEN 'ADM' ELSE RTRIM(@handler) END SELECT @BitWiseID = HNG.[BitWiseID] FROM HandlerNETGroupMembership HNG WHERE HNG.[HANDLER] = CONVERT(VARCHAR(10), @handler) SET @BitWiseID = ISNULL(@BitWiseID, [dbo].[KEYHM_FN_GetOldPermissions](RTRIM(ISNULL(@handler, '')))) IF (@handler = 'ADM') BEGIN SET @BitWiseID = CONVERT(BIGINT, -1) END SELECT @TotalUndertakings = count(1) FROM dbo.[Undertakings] UND INNER JOIN [dbo].[matters] MAT ON MAT.[Code] = UND.[MATTER] WHERE UND.[AuthorisedByFE] = @Handler AND MAT.[Closed] <> 'Y' AND UND.[DISCHARGEDATE] IS NULL SELECT @TotalStatuteLimits = count(1) FROM dbo.[matters] MAT WHERE MAT.[FECode] = @Handler AND DATEDIFF(DD, @GETDATE, CASE WHEN ISNULL(MAT.[StatuteLimits], '21000101')='19000101' THEN '21000101' ELSE MAT.[StatuteLimits] END) <= 60 AND MAT.[Closed] <> 'Y' --Statement to get No. of Overdue and No. of Outstandings SELECT ISNULL(ADT.[Overdue Task], 0) AS [OverdueTask], ISNULL(ADT.[Outstanding Task], 0) AS [OutstandingTask], ISNULL(ADT.[Critical Tasks], 0) AS [CriticalTasks], ISNULL(ADT.[Court Dates], 0) AS [CourtDates], ISNULL(ADT.[High Priority], 0) AS [HighPriority], ISNULL(ADT.[Phone Message], 0) AS [PhoneMessage], @TotalUndertakings AS [UnderTaking], @TotalStatuteLimits AS [StatuteDateApproaching] FROM ( SELECT SUM(CASE WHEN DEL.[DATE] < @fromdate THEN 0 WHEN DEL.[DATE] >= DATEADD(DD, 1, CONVERT (DATETIME, CONVERT(VARCHAR, @GETDATE, 112))) THEN 0 WHEN [DEL].[STATUS] = 0 THEN 1 ELSE 0 END) AS [Overdue Task], SUM(CASE WHEN DEL.[DATE] < @fromdate THEN 0 WHEN DEL.[DATE] >= DATEADD(DD, 1, CONVERT (DATETIME, CONVERT(VARCHAR, @todate, 112))) THEN 0 WHEN [DEL].[STATUS] = 0 THEN 1 ELSE 0 END) AS [Outstanding Task], SUM(CASE WHEN DEL.[DATE] < @fromdate THEN 0 WHEN DEL.[DATE] >= DATEADD(DD, 1, CONVERT (DATETIME, CONVERT(VARCHAR, @todate, 112))) THEN 0 WHEN [DIA].[ActionType] = 'C' THEN 1 ELSE 0 END) AS [Critical Tasks], SUM(CASE WHEN DEL.[DATE] < @fromdate THEN 0 WHEN DEL.[DATE] >= DATEADD(DD, 1, CONVERT (DATETIME, CONVERT(VARCHAR, @todate, 112))) THEN 0 WHEN [DIA].[ActionType] = 'O' THEN 1 ELSE 0 END) AS [Court Dates], SUM(CASE WHEN DEL.[DATE] < @fromdate THEN 0 WHEN DEL.[DATE] >= DATEADD(DD, 1, CONVERT (DATETIME, CONVERT(VARCHAR, @todate, 112))) THEN 0 WHEN [DIA].[PRIORITY] = 'H' THEN 1 ELSE 0 END) AS [High Priority], SUM(CASE WHEN DEL.[DATE] < @fromdate THEN 0 WHEN DEL.[DATE] >= DATEADD(DD, 1, CONVERT (DATETIME, CONVERT(VARCHAR, @todate, 112))) THEN 0 WHEN [DIA].[ActionType] = 'T' THEN 1 ELSE 0 END) AS [Phone Message] FROM [dbo].[DiaryDelegations] DEL INNER JOIN [dbo].[Diary] DIA INNER JOIN [dbo].[matters] MAT INNER JOIN [dbo].[Contacts] CON ON CON.[CODE] = MAT.[CLIENTCODE] LEFT OUTER JOIN [dbo].[MatterNetPrivileges] MNP ON MNP.[MATTER] = MAT.[Code] ON MAT.[CODE] = DIA.[CASECODE] AND ISNULL(MAT.[Closed], 'N') <> 'Y' ON DIA.[ACTIONID] = DEL.[ACTIONID] WHERE DEL.[HANDLER] = @Handler AND DEL.[STATUS] = 0 AND DEL.[DelType] <> 'Completed' AND DEL.[DelType] <> 'Processed' AND DEL.[DelType] <> 'Returned' AND ( ISNULL(MNP.[Privileges], CONVERT (BIGINT, -1)) & @BitWiseID <> 0 OR ISNULL(MNP.[Privileges], CONVERT (BIGINT, 0)) = 0)) ADT SELECT 0 AS [Zero] DECLARE @MyTimeDayBook DECIMAL(18, 2) DECLARE @MyTimeDayBookHr VARCHAR(20) DECLARE @MyTimeDayBookWeek DECIMAL(18, 2) DECLARE @MyTimeDayBookWeekHr VARCHAR(20) DECLARE @MyTimeDayBookMonth DECIMAL(18, 2) DECLARE @MyTimeDayBookMonthHr VARCHAR(20) DECLARE @MyTimeDayBookYear DECIMAL(18, 2) DECLARE @MyTimeDayBookYearHr VARCHAR(20) DECLARE @AdminTimeDayBookMonth DECIMAL(18, 2) DECLARE @AdminTimeDayBookMonthHr VARCHAR(20) DECLARE @AdminTimeDayBookYear DECIMAL(18, 2) DECLARE @AdminTimeDayBookYearHr VARCHAR(20) DECLARE @DailyAverageMTD DECIMAL(18, 2) -- Average time recorded per day in the current month DECLARE @DailyAverageYTD DECIMAL(18, 2) -- Average time recorded per day in the current year DECLARE @TODAYNUM INT DECLARE @MONDAY DATETIME DECLARE @STARTOFMONTH DATETIME DECLARE @STARTOFYEAR DATETIME DECLARE @MONTHTODATE DATETIME -- This is the current date, up to the end of the financial month SELECT @TODAYNUM = DATEPART(WEEKDAY, @GETDATE) - DATEPART(WEEKDAY, '20000102') --the 2nd of January, 2000 was a Monday IF @TODAYNUM <= 0 SET @TODAYNUM = @TODAYNUM + 7 SET @MONDAY = CONVERT(DATETIME, CONVERT(VARCHAR, DATEADD(DAY, 1 - @TODAYNUM, @GETDATE), 112)) SELECT @TODAYNUM = DATEPART(DAY, @GETDATE) SELECT @STARTOFMONTH = KPI.[FromDate], @STARTOFYEAR = KPI.[StartOfYear], @MONTHTODATE = CASE WHEN @GETDATE > KPI.[ToDate] THEN KPI.[ToDate] ELSE @GETDATE END FROM [dbo].[KPIParameters] AS KPI SET @STARTOFYEAR = ISNULL(@STARTOFYEAR, CONVERT(DATETIME, CONVERT(VARCHAR(4), YEAR(@GETDATE)) + '0101')) SELECT @MyTimeDayBook = ISNULL(SUM(ISNULL(TDB.[TIME], 0)), 0) FROM [dbo].[TimeDayBook] TDB WHERE TDB.[FEEEARN] = @Handler AND TDB.[TIMEORCHARGE] = 'T' AND TDB.[Rec_irr] = 'C' SELECT @MyTimeDayBookWeek = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0) FROM [dbo].[TimeEntry] TIE WHERE TIE.[FEEEARN] = @Handler AND TIE.[TIMEORCHARGE] = 'T' AND TIE.[Rec_irr] = 'C' AND TIE.[Date] >= @MONDAY AND TIE.[DATE] <= @GETDATE AND ISNULL(TIE.[TASK], '') <> 'WRI' AND TIE.[Matter] <> '~' SELECT @MyTimeDayBookMonth = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0) FROM [dbo].[TimeEntry] TIE WHERE TIE.[FEEEARN] = @Handler AND TIE.[TIMEORCHARGE] = 'T' AND TIE.[Rec_irr] = 'C' AND TIE.[Date] >= @STARTOFMONTH AND TIE.[DATE] <= @MONTHTODATE AND ISNULL(TIE.[TASK], '') <> 'WRI' AND TIE.[Matter] <>'~' SELECT @MyTimeDayBookYear = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0) FROM [dbo].[TimeEntry] TIE WHERE TIE.[FEEEARN] = @Handler AND TIE.[TIMEORCHARGE] = 'T' AND TIE.[Rec_irr] = 'C' AND TIE.[Date] >= @STARTOFYEAR AND TIE.[DATE] <= @MONTHTODATE AND ISNULL(TIE.[TASK], '') <> 'WRI' AND TIE.[Matter] <>'~' SELECT @AdminTimeDayBookMonth = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0) FROM [dbo].[TimeEntry] TIE WHERE TIE.[FEEEARN] = @Handler AND TIE.[TIMEORCHARGE] = 'T' AND TIE.[Date] >= @STARTOFMONTH AND TIE.[DATE] <= @MONTHTODATE AND ISNULL(TIE.[TASK], '') <> 'WRI' AND TIE.[Matter] = '~' SELECT @AdminTimeDayBookYear = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0) FROM [dbo].[TimeEntry] TIE WHERE TIE.[FEEEARN] = @Handler AND TIE.[TIMEORCHARGE] = 'T' AND TIE.[Date] >= @STARTOFYEAR AND TIE.[DATE] <= @MONTHTODATE AND ISNULL(TIE.[TASK], '') <> 'WRI' AND TIE.[Matter] = '~' SET @MyTimeDayBook = CASE WHEN @MyTimeDayBook < 0 THEN 0 ELSE @MyTimeDayBook END SET @MyTimeDayBookHr = CASE WHEN LEN(CONVERT(INT, @MyTimeDayBook) / 60) < 2 THEN '0' + CAST(CONVERT(INT, @MyTimeDayBook) / 60 AS VARCHAR) ELSE CAST(CONVERT(INT, @MyTimeDayBook) / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (CONVERT(INT, @MyTimeDayBook) % 60)), 2, 2) SET @MyTimeDayBookWeek = CASE WHEN @MyTimeDayBookWeek < 0 THEN 0 ELSE @MyTimeDayBookWeek END SET @MyTimeDayBookWeekHr = CASE WHEN LEN(CONVERT(INT, @MyTimeDayBookWeek) / 60) < 2 THEN '0' + CAST(CONVERT(INT, @MyTimeDayBookWeek) / 60 AS VARCHAR) ELSE CAST(CONVERT(INT, @MyTimeDayBookWeek) / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (CONVERT(INT, @MyTimeDayBookWeek) % 60)), 2, 2) SET @MyTimeDayBookMonth = CASE WHEN @MyTimeDayBookMonth < 0 THEN 0 ELSE @MyTimeDayBookMonth END SET @MyTimeDayBookMonthHr = CASE WHEN LEN(CONVERT(INT, @MyTimeDayBookMonth) / 60) < 2 THEN '0' + CAST(CONVERT(INT, @MyTimeDayBookMonth) / 60 AS VARCHAR) ELSE CAST(CONVERT(INT, @MyTimeDayBookMonth) / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (CONVERT(INT, @MyTimeDayBookMonth) % 60)), 2, 2) SET @MyTimeDayBookYear = CASE WHEN @MyTimeDayBookYear < 0 THEN 0 ELSE @MyTimeDayBookYear END SET @MyTimeDayBookYearHr = CASE WHEN LEN(CONVERT(INT, @MyTimeDayBookYear) / 60) < 2 THEN '0' + CAST(CONVERT(INT, @MyTimeDayBookYear) / 60 AS VARCHAR) ELSE CAST(CONVERT(INT, @MyTimeDayBookYear) / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (CONVERT(INT, @MyTimeDayBookYear) % 60)), 2, 2) SET @AdminTimeDayBookMonth = CASE WHEN @AdminTimeDayBookMonth < 0 THEN 0 ELSE @AdminTimeDayBookMonth END SET @AdminTimeDayBookMonthHr = CASE WHEN LEN(CONVERT(INT, @AdminTimeDayBookMonth) / 60) < 2 THEN '0' + CAST(CONVERT(INT, @AdminTimeDayBookMonth) / 60 AS VARCHAR) ELSE CAST(CONVERT(INT, @AdminTimeDayBookMonth) / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (CONVERT(INT, @AdminTimeDayBookMonth) % 60)), 2, 2) SET @AdminTimeDayBookYear = CASE WHEN @AdminTimeDayBookYear < 0 THEN 0 ELSE @AdminTimeDayBookYear END SET @AdminTimeDayBookYearHr = CASE WHEN LEN(CONVERT(INT, @AdminTimeDayBookYear) / 60) < 2 THEN '0' + CAST(CONVERT(INT, @AdminTimeDayBookYear) / 60 AS VARCHAR) ELSE CAST(CONVERT(INT, @AdminTimeDayBookYear) / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (CONVERT(INT, @AdminTimeDayBookYear) % 60)), 2, 2) SELECT @DailyAverageMTD = SUM(ISNULL(TIE.[Time], 0)) / CASE WHEN ISNULL([dbo].[KEYHM_NetWorkingDays](@STARTOFMONTH, @MONTHTODATE), 0) = 0 THEN 1 ELSE [dbo].[KEYHM_NetWorkingDays](@STARTOFMONTH, @MONTHTODATE) END FROM [dbo].[TimeEntry] AS TIE WHERE TIE.[FeeEarn] = @HANDLER AND TIE.[Rec_Irr] = 'C' AND TIE.[TimeOrCharge] <> 'B' AND TIE.[Task] <> 'WRI' AND TIE.[Matter] <> '~' AND TIE.[Date] <= @MONTHTODATE AND TIE.[Date] >= @STARTOFMONTH SELECT @DailyAverageYTD = SUM(ISNULL(TIE.[Time], 0)) / CASE WHEN ISNULL([dbo].[KEYHM_NetWorkingDays](@STARTOFYEAR, @MONTHTODATE), 0) = 0 THEN 1 ELSE [dbo].[KEYHM_NetWorkingDays](@STARTOFYEAR, @MONTHTODATE) END FROM [dbo].[TimeEntry] AS TIE WHERE TIE.[FeeEarn] = @HANDLER AND TIE.[Rec_Irr] = 'C' AND TIE.[TimeOrCharge] <> 'B' AND TIE.[Task] <> 'WRI' AND TIE.[Matter] <> '~' AND TIE.[Date] <= @GETDATE AND TIE.[Date] >= @STARTOFYEAR -- Statement to get Time recorder value SELECT @MyTimeDayBookHr AS [MyTimedayBookHr], @MyTimeDayBookWeekHr AS [TimeRecordedThisWeekHr], @MyTimeDayBookMonthHr AS [TimeRecordedThisMonthHr], @MyTimeDayBookYearHr AS [TimeRecordedThisYearHr], @MyTimeDayBook AS [MyTimedayBook], @MyTimeDayBookWeek AS [TimeRecordedThisWeek], @MyTimeDayBookMonth AS [TimeRecordedThisMonth], @MyTimeDayBookYear AS [TimeRecordedThisYear], @AdminTimeDayBookMonthHr AS [AdminTimeRecordedThisMonthHr], @AdminTimeDayBookYearHr AS [AdminTimeRecordedThisYearHr], @AdminTimeDayBookMonth AS [AdminTimeRecordedThisMonth], @AdminTimeDayBookYear AS [AdminTimeRecordedThisYear], ISNULL(@DailyAverageMTD, 0) AS [AverageTimeMTD], ISNULL(@DailyAverageYTD, 0) AS [AverageTimeYTD] --Statement to get fees details DECLARE @FeesCurrent DECIMAL(18, 2) DECLARE @FeesLastPer DECIMAL(18, 2) DECLARE @FeesYTD DECIMAL(18, 2) DECLARE @FeesLastYTD DECIMAL(18, 2) DECLARE @FeesLastYear DECIMAL(18, 2) IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = ' SELECT @FeesCurrent = ISNULL(SUM(CASE WHEN BH.[INVCR] = ''I'' THEN BD.[VALUE] ELSE 0 END - CASE WHEN BH.[INVCR] = ''C'' THEN BD.[VALUE] ELSE 0 END), 0) FROM dbo.[BatchDetails] BD INNER JOIN dbo.[BatchH] BH ON BD.[BATCHNO] = BH.[BATCHNO] AND BH.[POSTED] = ''Y'' INNER JOIN [dbo].[KPIParameters] KPI ON KPI.[Year] = BD.[YEAR] AND KPI.[Period] = BD.[PERNO] WHERE BD.[FEE] = @Handler AND BD.[TYPE] = ''I'' AND BD.[OUTLAY] = ''F''' END ELSE BEGIN SET @NCOMMAND = ' SELECT @FeesCurrent = ISNULL(SUM(ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * (-1)), 0) FROM [dbo].[Transactions] HED INNER JOIN [dbo].[Transactions] TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND ( TRN.[CorrectionInd] = ''L'' OR TRN.[CorrectionInd] = ''X'') AND TRN.[FeeEarner] = @Handler INNER JOIN [dbo].[KPIParameters] KPI ON KPI.[Year] = HED.[PostingYear] AND KPI.[Period] = HED.[PostingPeriod] WHERE HED.[RecType] = ''H''' END EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10),@FeesCurrent DECIMAL(18, 2) OUTPUT', @Handler = @Handler, @FeesCurrent=@FeesCurrent OUTPUT IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = ' SELECT @FeesLastPer = ISNULL(SUM(CASE WHEN BH.[INVCR] = ''I'' THEN BD.[VALUE] ELSE 0 END - CASE WHEN BH.[INVCR] = ''C'' THEN BD.[VALUE] ELSE 0 END), 0) FROM dbo.[BatchDetails] BD INNER JOIN dbo.[BatchH] BH ON BD.[BATCHNO] = BH.[BATCHNO] AND BH.[POSTED] = ''Y'' INNER JOIN [dbo].[KPIParameters] KPI ON ( KPI.[Year] = BD.[YEAR] AND KPI.[Period] <> 1 AND KPI.[Period] - 1 = BD.[PERNO]) OR ( KPI.[Year] = BD.[YEAR] - 1 AND KPI.[Period] = 1 AND BD.[PERNO] = 12) WHERE BD.[FEE] = @Handler AND BD.[TYPE] = ''I'' AND BD.[OUTLAY] = ''F''' END ELSE BEGIN SET @NCOMMAND = ' SELECT @FeesLastPer = ISNULL(SUM(ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * (-1)), 0) FROM [dbo].[Transactions] HED INNER JOIN [dbo].[Transactions] TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND ( TRN.[CorrectionInd] = ''L'' OR TRN.[CorrectionInd] = ''X'') AND TRN.[FeeEarner] = @Handler INNER JOIN [dbo].[KPIParameters] KPI ON ( KPI.[Year] = HED.[PostingYear] AND KPI.[Period] <> 1 AND KPI.[Period] - 1 = HED.[PostingPeriod]) OR ( KPI.[Year] = HED.[PostingYear] - 1 AND KPI.[Period] = 1 AND HED.[PostingPeriod] = 12) WHERE HED.[RecType] = ''H''' END EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10),@FeesLastPer DECIMAL(18, 2) OUTPUT', @Handler = @Handler, @FeesLastPer=@FeesLastPer OUTPUT IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = ' SELECT @FeesYTD = ISNULL(SUM(CASE WHEN BH.[INVCR] = ''I'' THEN BD.[VALUE] ELSE 0 END - CASE WHEN BH.[INVCR] = ''C'' THEN BD.[VALUE] ELSE 0 END), 0) FROM dbo.[BatchDetails] BD INNER JOIN dbo.[BatchH] BH ON BD.[BATCHNO] = BH.[BATCHNO] AND BH.[POSTED] = ''Y'' INNER JOIN [dbo].[KPIParameters] KPI ON KPI.[Year] = BD.[YEAR] AND KPI.[Period] >= BD.[PERNO] WHERE BD.[FEE] = @Handler AND BD.[TYPE] = ''I'' AND BD.[OUTLAY] = ''F''' END ELSE BEGIN SET @NCOMMAND = ' SELECT @FeesYTD = ISNULL(SUM(ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * (-1)), 0) FROM [dbo].[Transactions] HED INNER JOIN [dbo].[Transactions] TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND ( TRN.[CorrectionInd] = ''L'' OR TRN.[CorrectionInd] = ''X'') AND TRN.[FeeEarner] = @Handler INNER JOIN [dbo].[KPIParameters] KPI ON KPI.[Year] = HED.[PostingYear] AND KPI.[Period] >= HED.[PostingPeriod] WHERE HED.[RecType] = ''H''' END EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10),@FeesYTD DECIMAL(18, 2) OUTPUT', @Handler = @Handler, @FeesYTD=@FeesYTD OUTPUT IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = 'SELECT @FeesLastYTD = ISNULL(SUM(CASE WHEN BH.[INVCR] = ''I'' THEN BD.[VALUE] ELSE 0 END - CASE WHEN BH.[INVCR] = ''C'' THEN BD.[VALUE] ELSE 0 END), 0) FROM dbo.[BatchDetails] BD INNER JOIN dbo.[BatchH] BH ON BD.[BATCHNO] = BH.[BATCHNO] AND BH.[POSTED] = ''Y'' INNER JOIN [dbo].[KPIParameters] KPI ON KPI.[Year]-1 = BD.[YEAR] AND KPI.[Period] >= BD.[PERNO] WHERE BD.[FEE] = @Handler AND BD.[TYPE] = ''I'' AND BD.[OUTLAY] = ''F''' END ELSE BEGIN SET @NCOMMAND = 'SELECT @FeesLastYTD = ISNULL(SUM(ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * (-1)), 0) FROM [dbo].[Transactions] HED INNER JOIN [dbo].[Transactions] TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND TRN.[CorrectionInd] IN (''L'', ''X'') AND TRN.[FeeEarner] = @Handler INNER JOIN [dbo].[KPIParameters] KPI ON KPI.[Year]-1 = HED.[PostingYear] AND KPI.[Period] >= HED.[PostingPeriod] WHERE HED.[RecType] = ''H''' END EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10),@FeesLastYTD DECIMAL(18, 2) OUTPUT', @Handler = @Handler, @FeesLastYTD=@FeesLastYTD OUTPUT IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = 'SELECT @FeesLastYear = ISNULL(SUM(CASE WHEN BH.[INVCR] = ''I'' THEN BD.[VALUE] ELSE 0 END - CASE WHEN BH.[INVCR] = ''C'' THEN BD.[VALUE] ELSE 0 END), 0) FROM dbo.[BatchDetails] BD INNER JOIN dbo.[BatchH] BH ON BD.[BATCHNO] = BH.[BATCHNO] AND BH.[POSTED] = ''Y'' INNER JOIN [dbo].[KPIParameters] KPI ON KPI.[Year]-1 = BD.[YEAR] WHERE BD.[FEE] = @Handler AND BD.[TYPE] = ''I'' AND BD.[OUTLAY] = ''F''' END ELSE BEGIN SET @NCOMMAND = 'SELECT @FeesLastYear = ISNULL(SUM(ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * (-1)), 0) FROM [dbo].[Transactions] HED INNER JOIN [dbo].[Transactions] TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND TRN.[CorrectionInd] IN (''L'', ''X'') AND TRN.[FeeEarner] = @Handler INNER JOIN [dbo].[KPIParameters] KPI ON KPI.[Year]-1 = HED.[PostingYear] WHERE HED.[RecType] = ''H''' END EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10),@FeesLastYear DECIMAL(18, 2) OUTPUT', @Handler = @Handler, @FeesLastYear=@FeesLastYear OUTPUT SELECT REPLACE(CONVERT(VARCHAR, CAST(ROUND(ISNULL(@FeesCurrent, 0), 0) AS MONEY), 1), '.00', '') AS [FeesIssuedCurrentMonth], REPLACE(CONVERT(VARCHAR, CAST(ROUND(ISNULL(@FeesLastPer, 0), 0) AS MONEY), 1), '.00', '') AS [FeesIssuedLastMonth], REPLACE(CONVERT(VARCHAR, CAST(ROUND(ISNULL(@FeesYTD, 0), 0) AS MONEY), 1), '.00', '') AS [FeesIssuedYearToDate], REPLACE(CONVERT(VARCHAR, CAST(ROUND(ISNULL(@FeesLastYTD, 0), 0) AS MONEY), 1), '.00', '') AS [FeesIssuedLastYearToDate], REPLACE(CONVERT(VARCHAR, CAST(ROUND(ISNULL(@FeesLastYear, 0), 0) AS MONEY), 1), '.00', '') AS [FeesIssuedLastYear] DECLARE @DraftInvoice DECIMAL(18, 2) IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = ' SELECT @DraftInvoice = ISNULL(SUM((ISNULL(BD.[NET], 0) + ISNULL(BD.[VATVALUE], 0)) * CASE WHEN ISNULL(BH.[INVCR], ''I'') = ''C'' THEN -1 ELSE 1 END), 0) FROM [dbo].[matters] MAT INNER JOIN [dbo].[BillHeader] BH INNER JOIN [dbo].[BillDetails] BD ON BD.[DRAFTNO] = BH.[DRAFTNO] ON BH.[MATTER] = MAT.[Code] AND BH.[BILLNO] = 0 WHERE MAT.[FECode] = @Handler' END ELSE BEGIN SET @NCOMMAND = ' SELECT @DraftInvoice = ISNULL(SUM((ISNULL(BD.[NetValue], 0) + ISNULL(BD.[VatValue], 0)) * CASE WHEN ISNULL(BH.[TYPE], ''I'') = ''C'' THEN -1 ELSE 1 END), 0) FROM [dbo].[matters] AS MAT INNER JOIN [dbo].[Billhead] BH ON BH.[MatterCode] = MAT.[Code] INNER JOIN [dbo].[BillDetail] BD ON BD.[BillID] = BH.[BillingID] AND BD.[RecordType] = ''F'' AND BD.[FeCode] = @Handler WHERE MAT.[FECode] = @Handler AND BH.[BillStatus] <> ''Approved''' END EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10),@DraftInvoice DECIMAL(18, 2) OUTPUT', @Handler = @Handler, @DraftInvoice=@DraftInvoice OUTPUT DECLARE @OSFees DECIMAL(19, 2) DECLARE @OSInvoices DECIMAL(19, 2) DECLARE @AVGDDays INT -- Pino 2015-05-26 - Please make sure that this calculation exactly mirrors the corresponding one -- in [dbo].[KAAS_DashboardCaseAlert] - if either is changed, change the other one -- accordingly IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = N' SELECT @OSFees = DT.[OSFees], @OSInvoices = DT.[OSInvoices], @AVGDDays = CASE WHEN DT.[DebtorEntries] = 0 THEN 0 ELSE DT.[DebtorDays] / DT.[DebtorEntries] END FROM (SELECT CONVERT(DECIMAL(19, 2), ISNULL(SUM(CONVERT(DECIMAL(19, 2), ISNULL(DTL.[OSFees], 0))), 0)) AS [OSFees], CONVERT(DECIMAL(19, 2), ISNULL(SUM(CONVERT(DECIMAL(19, 2), ISNULL(DTL.[OSVALUE], 0))), 0)) AS [OSInvoices], ISNULL(SUM(CASE WHEN DTL.[DATE] IS NULL THEN 0 WHEN DTL.[DATE] > @GETDATE THEN 0 WHEN DTL.[OSVALUE] = 0 THEN 0 ELSE DATEDIFF(Day, DTL.[DATE], @GETDATE) END), 0) AS [DebtorDays], ISNULL(SUM(CASE WHEN DTL.[DATE] IS NULL THEN 0 WHEN DTL.[DATE] > @GETDATE THEN 0 WHEN DTL.[OSVALUE] = 0 THEN 0 ELSE 1 END), 0) AS [DebtorEntries] FROM [dbo].[matters] MAT INNER JOIN [dbo].[DebtorsLedger] DTL ON DTL.[MATTER] = MAT.[Code] AND DTL.[OSValue] > 0 WHERE MAT.[FECode] = @Handler) DT' EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10), @GETDATE DATETIME, @OSFees DECIMAL(19, 2) OUTPUT, @OSInvoices DECIMAL(19, 2) OUTPUT, @AVGDDays INT OUTPUT', @Handler = @Handler, @GETDATE = @GETDATE, @OSFees = @OSFees OUTPUT, @OSInvoices = @OSInvoices OUTPUT, @AVGDDays = @AVGDDays OUTPUT END ELSE BEGIN SET @NCOMMAND = N' SELECT @OSFees = DT.[OSFees], @OSInvoices = DT.[OSInvoices], @AVGDDays = CASE WHEN DT.[DebtorEntries] = 0 THEN 0 ELSE DT.[DebtorDays] / DT.[DebtorEntries] END FROM (SELECT CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[DebtorsValueOS], 0)), 0)) AS [OSInvoices], CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[FeesOS], 0)), 0)) AS [OSFees], ISNULL(SUM(CASE WHEN TRN.[TransDate] IS NULL THEN 0 WHEN TRN.[TransDate] > @GETDATE THEN 0 WHEN TRN.[DebtorsValueOS] = 0 THEN 0 ELSE DATEDIFF(Day, TRN.[TransDate], @GETDATE) END), 0) AS [DebtorDays], ISNULL(SUM(CASE WHEN TRN.[TransDate] IS NULL THEN 0 WHEN TRN.[TransDate] > @GETDATE THEN 0 WHEN TRN.[DebtorsValueOS] = 0 THEN 0 ELSE 1 END), 0) AS [DebtorEntries] FROM [dbo].[matters] AS MAT INNER JOIN [dbo].[Transactions] TRN ON MAT.[Code] = TRN.[MatterCode] WHERE TRN.[Posted] = ''Y'' AND MAT.[FECode] = @Handler AND TRN.[CorrectionInd] = ''L'' AND TRN.[DebtorsValueOS] > 0 AND ((TRN.[XnType] = ''I'' AND TRN.[RecType] = ''H'') OR (TRN.[XnType] = ''J'' AND TRN.[RecType] = ''D''))) DT' EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10), @GETDATE DATETIME, @OSInvoices DECIMAL(19, 2) OUTPUT, @OSFees DECIMAL(19, 2) OUTPUT, @AVGDDays INT OUTPUT', @Handler = @Handler, @GETDATE = @GETDATE, @OSInvoices = @OSInvoices OUTPUT, @OSFees = @OSFees OUTPUT, @AVGDDays = @AVGDDays OUTPUT END DECLARE @WIP DECIMAL(19, 2) -- Pino 2015-05-26 - Please make sure that this calculation exactly mirrors the corresponding one -- in [dbo].[KAAS_DashboardCaseAlert] - if either is changed, change the other one -- accordingly -- John 2016-01-25 - Made query match the one in KAAS_DashboardCaseAlert IF @IsSAM4 = 0 BEGIN --SELECT @WIP = ISNULL(SUM(ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0)), 0) -- FROM [dbo].[TimeEntry] TIE -- INNER JOIN [dbo].[matters] MAT -- ON MAT.[Code] = TIE.[Matter] -- AND MAT.[Closed] = 'N' -- WHERE TIE.[FeeEarn] = @Handler -- AND TIE.[Rec_Irr] <> 'N' -- AND TIE.[Matter] <> '~' -- AND ( TIE.[TimeOrCharge] = 'T' -- OR TIE.[TimeOrCharge] = 'C') SELECT @WIP = ISNULL(SUM(WP.[WIP]), 0) FROM ( SELECT TIE.[Matter], ISNULL(SUM(ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0)), 0) AS [WIP] FROM [dbo].[TimeEntry] TIE INNER JOIN [dbo].[matters] MAT ON MAT.[Code] = TIE.[Matter] AND MAT.[Closed] = 'N' WHERE TIE.[FeeEarn] = @Handler AND TIE.[Rec_Irr] <> 'N' AND TIE.[Matter] <> '~' AND ( TIE.[TimeOrCharge] = 'T' OR TIE.[TimeOrCharge] = 'C') GROUP BY TIE.[Matter]) WP INNER JOIN [dbo].[matters] MT2 INNER JOIN [dbo].[Contacts] CON ON CON.[Code] = MT2.[ClientCode] ON MT2.[Code] = WP.[Matter] END ELSE BEGIN --SELECT @WIP = ISNULL(SUM(CASE WHEN TIE.[InvoiceNo] = 0 -- THEN ISNULL(TIE.[Charge], 0) -- ELSE 0 END), 0) -- FROM [dbo].[TimeEntry] TIE -- INNER JOIN [dbo].[matters] MAT -- ON MAT.[Code] = TIE.[Matter] -- AND MAT.[Closed] = 'N' -- WHERE TIE.[FeeEarn] = @Handler -- AND TIE.[Rec_Irr] <> 'N' -- AND TIE.[Matter] <> '~' -- AND ( TIE.[TimeOrCharge] = 'T' -- OR TIE.[TimeOrCharge] = 'C') SELECT @WIP = ISNULL(SUM(WP.[WIP]), 0) FROM ( SELECT TIE.[Matter], ISNULL(SUM(CASE WHEN TIE.[InvoiceNo] = 0 THEN ISNULL(TIE.[Charge], 0) ELSE 0 END), 0) AS [WIP] FROM [dbo].[TimeEntry] TIE INNER JOIN [dbo].[matters] MAT ON MAT.[Code] = TIE.[Matter] AND MAT.[Closed] = 'N' WHERE TIE.[FeeEarn] = @Handler AND TIE.[Rec_Irr] <> 'N' AND TIE.[Matter] <> '~' AND ( TIE.[TimeOrCharge] = 'T' OR TIE.[TimeOrCharge] = 'C') GROUP BY TIE.[Matter]) WP INNER JOIN [dbo].[matters] MT2 INNER JOIN [dbo].[Contacts] CON ON CON.[Code] = MT2.[ClientCode] ON MT2.[Code] = WP.[Matter] END -- Pino 2015-06-24 Start DECLARE @OutlayBalance DECIMAL(19, 2) IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = N' SELECT @OutlayBalance = ISNULL(SUM(ISNULL(MAT.[OutlayBal], 0)), 0) FROM [dbo].[matters] MAT WHERE MAT.[FECode] = @Handler AND MAT.[Closed] <> ''Y''' END ELSE BEGIN SET @NCOMMAND = N' SELECT @OutlayBalance = ISNULL(SUM(ISNULL(OBL.[OutlayBalance], 0)), 0) FROM ( SELECT MAT.[Code], ISNULL(SUM(ISNULL(TRN.[OutlayValue], 0)), 0) AS [OutlayBalance] FROM [dbo].[matters] MAT INNER JOIN [dbo].[Transactions] TRN ON TRN.[MatterCode] = MAT.[Code] AND ( ( (TRN.[Posted] = ''Y'') AND (TRN.[RecType] <> ''V'') AND (TRN.[CorrectionInd] = ''L'')) OR ( (TRN.[Posted] IS NULL) AND (TRN.[RecType] IS NULL) AND (TRN.[CorrectionInd] IS NULL))) WHERE MAT.[FECode] = @Handler AND MAT.[Closed] <> ''Y'' GROUP BY MAT.[Code]) OBL' END EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10), @OutlayBalance DECIMAL(19, 2) OUTPUT', @Handler = @Handler, @OutlayBalance = @OutlayBalance OUTPUT -- Pino 2015-06-24 END --Statement to get OS fee and invoice SELECT REPLACE(CONVERT(VARCHAR,CAST(ROUND(@OSInvoices,0) AS MONEY),1),'.00','') AS [OSInvoice], REPLACE(CONVERT(VARCHAR,CAST(ROUND(@OSFees,0) AS MONEY),1),'.00','') AS [OSFees], REPLACE(CONVERT(VARCHAR,CAST(ROUND(@AVGDDays,0) AS MONEY),1),'.00','') AS [AverageDebtorsDays], REPLACE(CONVERT(VARCHAR,CAST(ROUND(@WIP,0) AS MONEY),1),'.00','') AS [CurrentWIP], REPLACE(CONVERT(VARCHAR,CAST(ROUND(@DraftInvoice,0) AS MONEY),1),'.00','') AS [DraftInvoice], REPLACE(CONVERT(VARCHAR,CAST(ROUND((@OSInvoices + @OutlayBalance + @WIP),0) AS MONEY),1),'.00','') AS [CurrentLookupValue], --Pino 2015-09-29 REPLACE(CONVERT(VARCHAR,CAST(ROUND(@OutlayBalance,0) AS MONEY),1),'.00','') AS [OutlayBalance] --Added Pino 2015-06-24 DECLARE @Open INT DECLARE @Dormant INT DECLARE @Expectinvoice INT DECLARE @Noestimatefee INT DECLARE @Approachingestimatedfee INT DECLARE @Lockedupvalue INT DECLARE @Noestimategiven INT DECLARE @MoneyLaunderingchecks INT DECLARE @EffectivelyCompleted INT DECLARE @EstFeeWarningLimit DECIMAL(19, 2) DECLARE @LockupUpValue DECIMAL(19, 2) SELECT @EstFeeWarningLimit = CONVERT(DECIMAL(19, 2), ISNULL([SET].[KeyValue], '0')) FROM [dbo].[Settings] [SET] WHERE [SET].[KeyName] = 'EstFeeWarningLimit' SET @EstFeeWarningLimit = ISNULL(@EstFeeWarningLimit, 0) SELECT @LockupUpValue = CONVERT(DECIMAL(19, 2), ISNULL([SET].[KeyValue], '0')) FROM [dbo].[Settings] [SET] WHERE [SET].[KeyName] = 'LockupUpValue' SET @LockupUpValue = ISNULL(@LockupUpValue, 0) SELECT @Open = ISNULL(SUM(CASE WHEN MAT.[Closed] = 'Y' THEN 0 WHEN MAT.[ClientCode] = 'ZZZZZZ' THEN 0 WHEN isnumeric(MAT.[matter]) = 0 --system matters like ZZZZZZ/ZZZ2 THEN 0 WHEN convert(int, MAT.[matter]) = 0 --ignore "0" matter THEN 0 ELSE 1 END), 0), @Expectinvoice = ISNULL(SUM(CASE WHEN MAT.[ExpBillD] <= @GETDATE THEN 1 ELSE 0 END), 0), @Noestimatefee = ISNULL(SUM(CASE WHEN isnumeric(MAT.[matter]) = 0 --system matters like ZZZZZZ/ZZZ2 THEN 0 WHEN convert(int, MAT.[matter]) = 0 --ignore "0" matter THEN 0 WHEN MAT.[EstFee] = 0 THEN 1 ELSE 0 END), 0), @Approachingestimatedfee = ISNULL(SUM(CASE WHEN (COALESCE ((ISNULL(MAT.[ChargeBal], 0) / NULLIF (MAT.[EstFee], 0) * 100), 0)) > @EstFeeWarningLimit THEN 1 ELSE 0 END), 0), @Lockedupvalue = ISNULL(SUM(CASE WHEN (MAT.[ChargeBal] + MAT.[DebtBal] + MAT.[OutlayBal]) > @LockupUpValue THEN 1 ELSE 0 END), 0), @Noestimategiven = ISNULL(SUM(CASE WHEN isnumeric(MAT.[matter]) = 0 --system matters like ZZZZZZ/ZZZ2 THEN 0 WHEN convert(int, MAT.[matter]) = 0 --ignore "0" matter THEN 0 WHEN MAT.[Section68] = 'Y' THEN 0 ELSE 1 END), 0), @EffectivelyCompleted=ISNULL(SUM(CASE WHEN isnumeric(MAT.[matter]) = 0 --system matters like ZZZZZZ/ZZZ2 THEN 0 WHEN convert(int, MAT.[matter]) = 0 --ignore "0" matter THEN 0 WHEN ISNULL(MAT.PCODE, '') = '' AND ISNULL(PFECODE, '') = '' THEN 1 ELSE 0 END),0) FROM [dbo].[matters] MAT WHERE MAT.[FECode] = @Handler AND MAT.Closed <> 'Y' DECLARE @MATTERS TABLE ([Code] VARCHAR(20), [LastActionDate] DATETIME) INSERT INTO @MATTERS ([Code], [LastActionDate]) EXEC @Dormant = [dbo].[KEYHM_GetDormantMatters] @Handler SELECT @MoneyLaunderingchecks = COUNT(DISTINCT CON.[CODE]) FROM [dbo].[Contacts] CON INNER JOIN [dbo].[matters] MAT ON MAT.[ClientCode] = CON.[Code] AND MAT.[Closed] <> 'Y' WHERE CON.[FE] = @Handler AND ISNULL(CON.[Approved], 0) <> 1 SELECT ISNULL(@Open, 0) AS [OpenMatters], ISNULL(@Dormant, 0) AS [MyDormantMatters], ISNULL(@Expectinvoice, 0) AS [NoCaseWhereExpectInvoiceDateHasPassed], ISNULL(@Noestimatefee, 0) AS [NoCaseWithNoEstimateFee], ISNULL(@Approachingestimatedfee, 0) AS [NoCaseApproachingEstimatedFee], ISNULL(@Lockedupvalue, 0) AS [NoCaseApproachingLockedUpValue], ISNULL(@MoneyLaunderingchecks, 0) AS [NoClientsThatRequireMoneyLaunderingChecks], ISNULL(@Noestimategiven, 0) AS [NoCasesWithNoEstimateGiven], ISNULL(@EffectivelyCompleted, 0) AS [NoCasesEffectivelyComplete] END GO IF OBJECT_ID(N'KEYHM_DashboardCaseAlert', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_DashboardCaseAlert] END GO CREATE PROCEDURE [dbo].[KEYHM_DashboardCaseAlert] (@Handler VARCHAR(10), @Function VARCHAR(50), @PageNumber INT, @PageSize INT, @SearchText VARCHAR(100), @SortColumn VARCHAR(20), @SortDirection VARCHAR(10)) AS /******************************************************************************************************************************************************* * * Retrieves Detailed information for the entries displayed on the Dashboard (My Overview) page * * Stored Procedure Name : KEYHM_DashboardCaseAlert * Copied From : ky_NETDashboardCaseAlert * * Pino 2014-11-19 - changed statements for Open Matters and Dormant Matters. * assigned task to review remaining select statements * * Magesh 2015-05-05 - Changed conditions to get data more specifically * * Pino 2015-05-26 - SAM4 calculations * * Pino 2015-06-24 - Include Outlay Balance * * Pino 2015-06-25 - Fix drilldown for Clients Requiring Money Laundering Checks * Exclude zero balances from Outlay Balance drilldown * * Magesh 2015-08-31 - Added condition to the query used to find out @TotalStatuteLimits to exculed min date values '1900-01-01' * * Magesh 2015-09-15 - Added three more function for fees for current month , last month and year to date. * * Magesh 2015-10-10 - Added three more funtions to show timedaybook and time enty for week,month and year. * * Magesh 2015-10-09 - Added three more funtions to show Admin time enty for week,month and year. * * Magesh 2015-10-16 - Added extra funtions to show effectively complete matters. * * John 2015-11-09 - Fixed function 'TimeDayBookforWeek' looking for 'ADM' handler instead of @Handler * * John 2015-11-19 - KEYD-2939 - Changed the inner join from batchdetails to matters to now be * batchh to matters * John 2015-11-25 - KEYD-2943 - Wrapped a number of financial figures in new function ) * * John 2016-01-11 - Undid previous change as the VB .NET handles this now. * It was also messing up totals for the figures (e.g. can't add "(-123.45)" to "512.12") * Also excluding matters with no WIP from the WIP drill down * * John 2016-02-02 - Now excluding close matters from undertakings and statute approaching * http://jira1.dsrc.in:8080/browse/KEYD-3158 * * Arun 2016-02-05 - Specified the Varchar size * * Pino 2016-04-11 - Ignore No Estimate Fee calculation for system matters like ZZZZZZ/ZZZ2 and * for the "zero" matters * * Pino 2016-04-12 - Exclude further "zero" matters * * Suriya 2016-04-26 - KEYD-3536-In the My Overview page the "Admin time recorded this week" drill down list is not showing any details. * * Arun 2016-05-16 - Have added OSFees and Debtors Days in Dashboard alert * * John 2016-08-02 - Code refactor * * Sridharan 2016-08-16 - KEYD:3591: In "My over view" page the "Fee" column of the Fees issued Year to Date * drill down list is displayed wrong. * * John 2016-09-26 - KEYD-4090 Fees issued must now be posted before appearing in My Overview * * John 2017-03-20 - Added Last Year and Last Year to Date functions * Also serious overhaul of some queries * * John 2017-03-27 - Fixed getdate not being passed into SQL statement * Corrected SAM3 Fees Last Year (to Date) clause so it looks at last year, not next * * Pino 2017-03-28 - Fixed use of ISNULL(RTRIM( * * John 2017-06-06 - Time for this year now only looks at chargeable time (to be consistent with other time frames) * * Pino 2017-06-15 - Fixed calculation for Debtors Days - @GETDATE not passed in. * * John 2017-10-26 - Fixed potential mismatch with ky_NETDashboard_v2 * * John 2018-10-25 - KEYD-5519: Made date check for dormant matters consistent with warning on diary (using setting now) * * John 2018-11-05 - Dormant check now only looks at complete actions * * John 2018-11-08 - Dormant check looks at any activity in diary, time ledger, matter ledger and undertakings * * John 2018-11-09 - Fixed Outstanding Fees window not showing anything - KEYD-5558 * * John 2018-11-12 - Fixed SAM4 debtors days not showing anything - KEYD-5558 * * John 2018-12-06 - Added return for "DraftInvoices" - KEYD-5563 * * Vinodhan K 2019-18-07 - Added KAAS_DashboardCaseAlert * Ponni M 2024-10-18 - Isexist condition check changed *******************************************************************************************************************************************************/ BEGIN SET NOCOUNT ON DECLARE @NCOMMAND NVARCHAR(MAX) DECLARE @TODAYNUM INT DECLARE @MONDAY DATETIME DECLARE @STARTOFMONTH DATETIME DECLARE @STARTOFYEAR DATETIME DECLARE @MONTHTODATE DATETIME DECLARE @GETDATE DATETIME SELECT @GETDATE = GETDATE() SELECT @STARTOFMONTH = KPI.[FromDate], @STARTOFYEAR = KPI.[StartOfYear], @MONTHTODATE = CASE WHEN @GETDATE > KPI.[ToDate] THEN KPI.[ToDate] ELSE @GETDATE END FROM [dbo].[KPIParameters] AS KPI SELECT @STARTOFYEAR = ISNULL(@STARTOFYEAR, CONVERT(DATETIME, CONVERT(VARCHAR(4), YEAR(@GETDATE)) + '0101')), @TODAYNUM = DATEPART(WEEKDAY, @GETDATE) - DATEPART(WEEKDAY, '20000102') --the 2nd of January, 2000 was a Monday IF @TODAYNUM <= 0 SET @TODAYNUM = @TODAYNUM + 7 SET @MONDAY = CONVERT(DATETIME, CONVERT(VARCHAR, DATEADD(DAY, 1 - @TODAYNUM, @GETDATE), 112)) SELECT @FUNCTION = UPPER(ISNULL(@FUNCTION, '')) DECLARE @StartRow INT; DECLARE @EndRow INT; SET @PageNumber = ISNULL(@PageNumber, 0) - 1; -- 0 BASED INDEX IF(@PageNumber > -1) BEGIN SET @StartRow = ((@PageNumber) * @PageSize) + 1; SET @EndRow = (@StartRow + @PageSize) - 1; END IF @FUNCTION = 'OPENMATTER' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Code' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #OpenMatterTable FROM (SELECT RTRIM(ISNULL(MAT.[Code], '')) AS [Code], RTRIM(ISNULL(CON.[Name], '')) AS [Name], RTRIM(ISNULL(MAT.[Description], '')) AS [Description] FROM [dbo].[matters] MAT LEFT OUTER JOIN [dbo].[Contacts] CON ON CON.[Code] = MAT.[ClientCode] WHERE ( [MAT].[Code] LIKE '%' + @SearchText + '%' OR [CON].[NAME] LIKE '%' + @SearchText + '%' OR [MAT].[Description] LIKE '%' + @SearchText + '%' ) AND MAT.[FECode] = @Handler AND MAT.[ClientCode] <> 'ZZZZZZ' AND CASE WHEN ISNUMERIC(MAT.[matter]) = 0 THEN 1 WHEN CONVERT(INT, MAT.[matter]) = 0 THEN 1 ELSE 0 END = 0 AND MAT.[Closed] <> 'Y') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC SELECT * FROM #OpenMatterTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #OpenMatterTable END ELSE IF @FUNCTION = 'EFFECTIVELYCOMPLETE' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Code' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #EffectivelyCompleteTable FROM (SELECT RTRIM(ISNULL(MAT.[Code], '')) AS [Code], RTRIM(ISNULL(CON.[Name], '')) AS [Name], RTRIM(ISNULL(MAT.[Description], '')) AS [Description] FROM [dbo].[matters] AS MAT LEFT OUTER JOIN [dbo].[Contacts] AS CON ON CON.[Code] = MAT.[ClientCode] WHERE ( [MAT].[Code] LIKE '%' + @SearchText + '%' OR [CON].[NAME] LIKE '%' + @SearchText + '%' OR [MAT].[Description] LIKE '%' + @SearchText + '%' ) AND [MAT].[FECode] = @Handler AND ISNULL(MAT.[PCODE], '') = '' AND ISNULL(MAT.[PFECODE], '') = '' AND CASE WHEN ISNUMERIC(MAT.[matter]) = 0 THEN 1 WHEN CONVERT(INT, MAT.[matter]) = 0 THEN 1 ELSE 0 END = 0 AND MAT.[Closed] <> 'Y') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC SELECT * FROM #EffectivelyCompleteTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #EffectivelyCompleteTable END ELSE IF @FUNCTION = 'DORMANTMATTER' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Code' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END DECLARE @MATTERS TABLE ([Code] VARCHAR(20), [LastActionDate] DATETIME) INSERT INTO @MATTERS ([Code], [LastActionDate]) EXEC [dbo].[KEYHM_GetDormantMatters] @Handler SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #DormantMatterTable FROM (SELECT MAT.[Code] AS [Code], ISNULL(RTRIM([CNT].[Name]), '') AS [Name], ISNULL(RTRIM([MAT].[Description]), '') AS [Description], TMP.[LastActionDate] FROM [dbo].[matters] AS MAT LEFT OUTER JOIN [dbo].[Contacts] AS CNT ON MAT.[ClientCode] = CNT.[Code] INNER JOIN @MATTERS AS TMP ON MAT.[Code] = TMP.[Code] WHERE ( [MAT].[Code] LIKE '%' + @SearchText + '%' OR [CNT].[NAME] LIKE '%' + @SearchText + '%' OR [MAT].[Description] LIKE '%' + @SearchText + '%' )) AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC SELECT * FROM #DormantMatterTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #DormantMatterTable END ELSE IF @FUNCTION = 'INVOICEDATEPASSED' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Code' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #InvoiceDatePassedTable FROM (SELECT MAT.[Code] AS [Code], RTRIM(ISNULL(CON.[Name], '')) AS [Name], RTRIM(ISNULL(MAT.[Description], '')) AS [Description], MAT.[ExpBillD] AS [ExpectedBillDate], ISNULL(MAT.[EstFee], 0) AS [EstimatedFee], ISNULL(MAT.[ChargeBal], 0) AS [WIP] FROM [dbo].[matters] AS MAT LEFT JOIN [dbo].[Contacts] AS CON ON CON.[Code] = MAT.[ClientCode] WHERE ( [MAT].[Code] LIKE '%' + @SearchText + '%' OR [CON].[NAME] LIKE '%' + @SearchText + '%' OR [MAT].[Description] LIKE '%' + @SearchText + '%' OR [MAT].[ExpBillD] LIKE '%' + @SearchText + '%' OR [MAT].[EstFee] LIKE '%' + @SearchText + '%' OR [MAT].[ChargeBal] LIKE '%' + @SearchText + '%' ) AND MAT.[FECode] = @Handler AND MAT.[ExpBillD] <= @GETDATE AND MAT.[Closed] <> 'Y') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'ExpectedBillDate' THEN [ExpectedBillDate] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'ExpectedBillDate' THEN [ExpectedBillDate] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'EstimatedFee' THEN [EstimatedFee] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'EstimatedFee' THEN [EstimatedFee] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'WIP' THEN [WIP] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'WIP' THEN [WIP] END END DESC SELECT * FROM #InvoiceDatePassedTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #InvoiceDatePassedTable END ELSE IF @FUNCTION = 'NOESTIMATEFEE' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Code' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #NoEstimateFeeTable FROM (SELECT MAT.[Code] AS [Code], RTRIM(ISNULL(CON.[Name], '')) AS [Name], RTRIM(ISNULL(MAT.[Description], '')) AS [Description] FROM [dbo].[matters] AS MAT LEFT OUTER JOIN [dbo].[Contacts] AS CON ON CON.[Code] = MAT.[ClientCode] WHERE ( [MAT].[Code] LIKE '%' + @SearchText + '%' OR [CON].[NAME] LIKE '%' + @SearchText + '%' OR [MAT].[Description] LIKE '%' + @SearchText + '%' ) AND MAT.[FECode] = @Handler AND CASE WHEN ISNUMERIC(MAT.[matter]) = 0 THEN 1 WHEN CONVERT(INT, MAT.[matter]) = 0 THEN 1 ELSE MAT.[EstFee] END = 0 AND MAT.[Closed] <> 'Y') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC SELECT * FROM #NoEstimateFeeTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #NoEstimateFeeTable END ELSE IF @FUNCTION = 'APPROACHINGESTIMATEFEE' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Code' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #ApproachingEstimateFeeTable FROM (SELECT MAT.[Code] AS [Code], RTRIM(ISNULL(CON.[Name],'')) AS [Name], RTRIM(ISNULL(MAT.[Description],'')) AS [Description], ISNULL(EstFee,0) AS [EstimatedFee], ISNULL(ChargeBal,0) AS [WIP], CAST(CAST((COALESCE((ISNULL(MAT.[ChargeBal], 0) / NULLIF(MAT.[EstFee], 0) * 100), 0)) AS DECIMAL(18,2)) AS VARCHAR(100)) + '%' AS [PercentageOfEstimatedFee] FROM [dbo].[matters] AS MAT LEFT OUTER JOIN [dbo].[Contacts] AS CON ON CON.[Code] = MAT.[ClientCode] WHERE ( [MAT].[Code] LIKE '%' + @SearchText + '%' OR [CON].[Name] LIKE '%' + @SearchText + '%' OR [MAT].[Description] LIKE '%' + @SearchText + '%' OR [MAT].[EstFee] LIKE '%' + @SearchText + '%' OR [MAT].[ChargeBal] LIKE '%' + @SearchText + '%' OR (CAST(CAST((COALESCE((ISNULL(MAT.[ChargeBal], 0) / NULLIF(MAT.[EstFee], 0) * 100), 0)) AS DECIMAL(18,2)) AS VARCHAR(100)) + '%') LIKE '%' + @SearchText + '%' ) AND FECode = @Handler AND COALESCE((ISNULL(MAT.[ChargeBal], 0) / NULLIF(MAT.[EstFee], 0) * 100), 0) > (SELECT ISNULL([KeyValue], 0) FROM [dbo].[Settings] WHERE [KeyName] = 'EstFeeWarningLimit') AND MAT.[Closed] <> 'Y') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'EstimatedFee' THEN [EstimatedFee] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'EstimatedFee' THEN [EstimatedFee] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'WIP' THEN [WIP] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'WIP' THEN [WIP] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'PercentageOfEstimatedFee' THEN [PercentageOfEstimatedFee] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'PercentageOfEstimatedFee' THEN [PercentageOfEstimatedFee] END END DESC SELECT * FROM #ApproachingEstimateFeeTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #ApproachingEstimateFeeTable END ELSE IF @FUNCTION = 'APPROACHINGLOCKEDUP' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Code' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #ApproachingLockedupTable FROM (SELECT MAT.[Code] AS [Code], RTRIM(ISNULL(CON.[Name],'')) AS [Name], RTRIM(ISNULL(MAT.[Description],'')) AS [Description] FROM [dbo].[matters] AS MAT LEFT OUTER JOIN [dbo].[Contacts] AS CON ON CON.[Code] = MAT.[ClientCode] WHERE ( [MAT].[Code] LIKE '%' + @SearchText + '%' OR [CON].[NAME] LIKE '%' + @SearchText + '%' OR [MAT].[Description] LIKE '%' + @SearchText + '%' ) AND MAT.[FECode] = @Handler AND (ISNULL(MAT.[ChargeBal], 0) + ISNULL(MAT.[DebtBal], 0) + ISNULL(MAT.[OutlayBal], 0)) > (SELECT ISNULL([KeyValue], 0) FROM [dbo].[Settings] WHERE KeyName = 'LockupUpValue') AND MAT.[Closed] <> 'Y') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC SELECT * FROM #ApproachingLockedupTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #ApproachingLockedupTable END ELSE IF @Function='MONEYLANDERINGCHECKS' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Code' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #MoneyLanderingCheckTable FROM ( -- Pino 2015-06-25 Rewrite START SELECT RTRIM(ISNULL(CON.[Code], '')) AS [ClientCode], RTRIM(ISNULL(CON.[Name], '')) AS [Name], [dbo].[ky_RemoveSpuriousWhitespace2](RTRIM(ISNULL(CON.[Address], '')), 200) AS [Address], RM.[Code] AS [Code], RM.[Description] AS [Description] FROM [dbo].[Contacts] CON -- Get code and description of most recently started matter for this client -- Because it's a Cross Apply it works akin to an INNER JOIN so clients with -- no open matters are automatically excluded. CROSS APPLY ( SELECT TOP 1 RTRIM(ISNULL(MAT.[Code], '')) AS [Code], RTRIM(ISNULL(MAT.[Description], '')) AS [Description] FROM [dbo].[matters] MAT WHERE MAT.[ClientCode] = CON.[Code] AND MAT.[Closed] <> 'Y' ORDER BY MAT.[Started] DESC) RM WHERE ( [CON].[Code] LIKE '%' + @SearchText + '%' OR [CON].[Name] LIKE '%' + @SearchText + '%' OR [dbo].[ky_RemoveSpuriousWhitespace2](RTRIM(ISNULL(CON.[Address], '')), 200) LIKE '%' + @SearchText + '%' OR [RM].[Code] LIKE '%' + @SearchText + '%' OR [RM].[Description] LIKE '%' + @SearchText + '%' ) AND CON.[FE] = @Handler AND ISNULL(CON.[Approved], 0) <> 1 -- Pino 2015-06-25 Rewrite END ) AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'ClientCode' THEN [ClientCode] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'ClientCode' THEN [ClientCode] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Address' THEN [Address] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Address' THEN [Address] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC SELECT * FROM #MoneyLanderingCheckTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #MoneyLanderingCheckTable END ELSE IF @Function='NOESTIMATEGIVEN' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Code' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #NoEstimateGivenTable FROM (SELECT RTRIM(ISNULL(MAT.[Code], '')) AS [Code], RTRIM(ISNULL(CON.[Name], '')) AS [Name], RTRIM(ISNULL(MAT.[Description], '')) AS [Description] FROM [dbo].[matters] MAT INNER JOIN [dbo].[Contacts] CON ON CON.[Code] = MAT.[ClientCode] WHERE ( [MAT].[Code] LIKE '%' + @SearchText + '%' OR [CON].[NAME] LIKE '%' + @SearchText + '%' OR [MAT].[Description] LIKE '%' + @SearchText + '%' ) AND MAT.[FECode] = @Handler AND ISNULL(MAT.[Section68], '') <> 'Y' AND CASE WHEN isnumeric(MAT.[matter]) = 0 THEN 1 WHEN convert(int, MAT.[matter]) = 0 THEN 1 ELSE 0 END = 0 AND MAT.[Closed] <> 'Y') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC SELECT * FROM #NoEstimateGivenTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #NoEstimateGivenTable END ELSE IF @Function='WIP' -- Pino 2015-05-26 - Please make sure that this calculation exactly mirrors the corresponding one -- in [dbo].[Ky_NETDashBoard] - if either is changed, change the other one -- accordingly BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Code' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END IF [dbo].[ISSAM4]() = 0 BEGIN SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #WIPTable FROM (SELECT WP.[Matter] AS [Code], RTRIM(ISNULL(CON.[NAME], '')) AS [ClientName], RTRIM(ISNULL(CON.[CODE], '')) AS [ClientCode], RTRIM(ISNULL(MT2.[Description], '')) AS [Description], WP.[WIP] AS [WIP], WP.[LastTimeEntryDate] AS [LastTimeEntryDate] FROM ( SELECT TIE.[Matter], ISNULL(SUM(ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0)), 0) AS [WIP], MAX(TIE.[Date]) AS [LastTimeEntryDate] FROM [dbo].[TimeEntry] TIE INNER JOIN [dbo].[matters] MAT ON MAT.[Code] = TIE.[Matter] AND MAT.[Closed] = 'N' WHERE TIE.[FeeEarn] = @Handler AND TIE.[Rec_Irr] <> 'N' AND TIE.[Matter] <> '~' AND ( TIE.[TimeOrCharge] = 'T' OR TIE.[TimeOrCharge] = 'C') GROUP BY TIE.[Matter]) WP INNER JOIN [dbo].[matters] MT2 INNER JOIN [dbo].[Contacts] CON ON CON.[Code] = MT2.[ClientCode] ON MT2.[Code] = WP.[Matter] WHERE ( [WP].[Matter] LIKE '%' + @SearchText + '%' OR [CON].[NAME] LIKE '%' + @SearchText + '%' OR [CON].[CODE] LIKE '%' + @SearchText + '%' OR [MT2].[Description] LIKE '%' + @SearchText + '%' OR [WP].[WIP] LIKE '%' + @SearchText + '%' OR [WP].[LastTimeEntryDate] LIKE '%' + @SearchText + '%' ) AND WP.[WIP] <> 0) AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'ClientName' THEN [ClientName] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'ClientName' THEN [ClientName] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'ClientCode' THEN [ClientCode] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'ClientCode' THEN [ClientCode] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'WIP' THEN [WIP] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'WIP' THEN [WIP] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'LastTimeEntryDate' THEN [LastTimeEntryDate] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'LastTimeEntryDate' THEN [LastTimeEntryDate] END END DESC SELECT * FROM #WIPTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #WIPTable END ELSE BEGIN SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #WIPSamTable FROM (SELECT WP.[Matter] AS [Code], RTRIM(ISNULL(CON.[NAME], '')) AS [ClientName], RTRIM(ISNULL(CON.[CODE], '')) AS [ClientCode], RTRIM(ISNULL(MT2.[Description], '')) AS [Description], WP.[WIP] AS [WIP], WP.[LastTimeEntryDate] AS [LastTimeEntryDate] FROM ( SELECT TIE.[Matter], ISNULL(SUM(CASE WHEN TIE.[InvoiceNo] = 0 THEN ISNULL(TIE.[Charge], 0) ELSE 0 END), 0) AS [WIP], MAX(TIE.[Date]) AS [LastTimeEntryDate] FROM [dbo].[TimeEntry] TIE INNER JOIN [dbo].[matters] MAT ON MAT.[Code] = TIE.[Matter] AND MAT.[Closed] = 'N' WHERE TIE.[FeeEarn] = @Handler AND TIE.[Rec_Irr] <> 'N' AND TIE.[Matter] <> '~' AND ( TIE.[TimeOrCharge] = 'T' OR TIE.[TimeOrCharge] = 'C') GROUP BY TIE.[Matter]) WP INNER JOIN [dbo].[matters] MT2 INNER JOIN [dbo].[Contacts] CON ON CON.[Code] = MT2.[ClientCode] ON MT2.[Code] = WP.[Matter] WHERE ( [WP].[Matter] LIKE '%' + @SearchText + '%' OR [CON].[NAME] LIKE '%' + @SearchText + '%' OR [CON].[CODE] LIKE '%' + @SearchText + '%' OR [MT2].[Description] LIKE '%' + @SearchText + '%' OR [WP].[WIP] LIKE '%' + @SearchText + '%' OR [WP].[LastTimeEntryDate] LIKE '%' + @SearchText + '%' ) AND WP.[WIP] <> 0) AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'ClientName' THEN [ClientName] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'ClientName' THEN [ClientName] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'ClientCode' THEN [ClientCode] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'ClientCode' THEN [ClientCode] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'WIP' THEN [WIP] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'WIP' THEN [WIP] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'LastTimeEntryDate' THEN [LastTimeEntryDate] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'LastTimeEntryDate' THEN [LastTimeEntryDate] END END DESC SELECT * FROM #WIPSamTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #WIPSamTable END END ELSE IF @Function='OSINVOICE' -- Pino 2015-05-26 - Please make sure that this calculation exactly mirrors the corresponding one -- in [dbo].[Ky_NETDashBoard] - if either is changed, change the other one -- accordingly BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = N' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #OSInvoiceSAM3Table FROM (SELECT RTRIM(ISNULL(DLG.[Ref], '''')) AS [InvoiceRef], RTRIM(ISNULL(DLG.[MATTER], '''')) AS [Code], RTRIM(ISNULL(CON.[Name], '''')) AS [ClientName], RTRIM(ISNULL(MAT.[Description],'''')) AS [Description], ISNULL(CONVERT(VARCHAR,DLG.[DATE],106),'''') AS [InvoiceDate], CONVERT(DECIMAL(19, 2), DLG.OSVALUE) AS [Outstanding], DATEDIFF(dd, DLG.[DATE], @GETDATE) AS [DaysOld] FROM [dbo].[matters] MAT INNER JOIN [dbo].[DebtorsLedger] DLG ON DLG.[MATTER] = MAT.[Code] AND DLG.[OSVALUE] > 0 INNER JOIN [dbo].[Contacts] CON ON CON.[Code] = MAT.[ClientCode] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [DLG].[Ref] LIKE ''%' + @SearchText + '%'' OR [DLG].[MATTER] LIKE ''%' + @SearchText + '%'' OR [CON].[Name] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [DLG].[DATE] LIKE ''%' + @SearchText + '%'' OR [DLG].[OSVALUE] LIKE ''%' + @SearchText + '%'' ) ) AND MAT.[FECode] = @Handler) AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #OSInvoiceSAM3Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #OSInvoiceSAM3Table' END ELSE BEGIN SET @NCOMMAND = N' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #OSInvoiceSAM4Table FROM (SELECT TRN.[OutlayBill] AS [InvoiceRef], TRN.[MatterCode] AS [Code], RTRIM(ISNULL(CON.[Name], '''')) AS [ClientName], RTRIM(ISNULL(MAT.[Description], '''')) AS [Description], CONVERT(VARCHAR, TRN.[TransDate], 106) AS [InvoiceDate], CONVERT(DECIMAL(19, 2), ISNULL(TRN.[DebtorsValueOS], 0)) AS [Outstanding], CASE WHEN TRN.[TransDate] IS NULL THEN 0 WHEN TRN.[TransDate] > @GETDATE THEN 0 WHEN TRN.[DebtorsValueOS] = 0 THEN 0 ELSE DATEDIFF(Day, TRN.[TransDate], @GETDATE) END AS [DaysOld] FROM [dbo].[Transactions] TRN LEFT OUTER JOIN [dbo].[matters] MAT INNER JOIN [dbo].[contacts] CON ON CON.[Code] = MAT.[ClientCode] ON MAT.[code] = TRN.[MatterCode] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [TRN].[OutlayBill] LIKE ''%' + @SearchText + '%'' OR [TRN].[MatterCode] LIKE ''%' + @SearchText + '%'' OR [CON].[Name] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransDate] LIKE ''%' + @SearchText + '%'' OR [TRN].[DebtorsValueOS] LIKE ''%' + @SearchText + '%'' ) ) AND TRN.[Posted] = ''Y'' AND TRN.[FeeEarner] = @Handler AND TRN.[CorrectionInd] = ''L'' AND ( ( TRN.[XnType] = ''I'' AND TRN.[RecType] = ''H'') OR ( TRN.[XnType] = ''J'' AND TRN.[RecType] = ''D'')) AND TRN.[DebtorsValueOS] > 0) AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #OSInvoiceSAM4Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #OSInvoiceSAM4Table' END EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10), @GETDATE DATETIME, @SearchText VARCHAR(100), @StartRow INT, @EndRow INT', @Handler = @Handler, @GETDATE = @GETDATE, @SearchText = @SearchText, @StartRow = @StartRow, @EndRow = @EndRow END ELSE IF @Function='UNDERTAKINGS' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Code' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #UndertakingTable FROM (SELECT RTRIM(ISNULL(UND.MATTER,'')) AS Code, RTRIM(ISNULL(Contacts.[Name],'')) AS ClientName, RTRIM(ISNULL(M.[Description],'')) AS [Description], CASE WHEN UND.UNDDATE IS NULL THEN '' WHEN CONVERT(VARCHAR(11),UND.UNDDATE,23)='19000101' THEN '' ELSE CONVERT(VARCHAR(11),UND.UNDDATE ,20) END AS [Date] FROM dbo.[Undertakings] UND LEFT JOIN Matters AS M ON UND.MATTER = M.Code LEFT JOIN Contacts ON M.ClientCode = Contacts.Code WHERE ( [UND].[MATTER] LIKE '%' + @SearchText + '%' OR [Contacts].[Name] LIKE '%' + @SearchText + '%' OR [M].[Description] LIKE '%' + @SearchText + '%' ) AND UND.[AuthorisedByFE] = @Handler AND UND.[DISCHARGEDATE] IS NULL AND M.[Closed] <> 'Y') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'ClientName' THEN [ClientName] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'ClientName' THEN [ClientName] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC SELECT * FROM #UndertakingTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #UndertakingTable END ELSE IF @Function='STATUTEDATE' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Code' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #StatuteDateTable FROM (SELECT RTRIM(ISNULL(M.Code,'')) AS [Code], RTRIM(ISNULL(Contacts.[Name],'')) AS [ClientName], RTRIM(ISNULL(M.[Description],'')) AS [Description], CASE WHEN M.StatuteLimits IS NULL THEN '' WHEN CONVERT(VARCHAR(11),M.StatuteLimits,23)='19000101' THEN '' ELSE CONVERT(VARCHAR(11),M.StatuteLimits ,20) END AS [Date] FROM Matters AS M INNER JOIN Contacts ON M.ClientCode = Contacts.Code WHERE ( [M].[Code] LIKE '%' + @SearchText + '%' OR [Contacts].[Name] LIKE '%' + @SearchText + '%' OR [M].[Description] LIKE '%' + @SearchText + '%' ) AND M.FECode = @Handler AND DATEDIFF(DD, @GETDATE, CASE WHEN ISNULL(M.[StatuteLimits], '21000101')='19000101' THEN '21000101' ELSE M.[StatuteLimits] END) <= 60 AND M.[Closed] <> 'Y') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'ClientName' THEN [ClientName] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'ClientName' THEN [ClientName] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC SELECT * FROM #StatuteDateTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) As [TotalRecords] FROM #StatuteDateTable END ELSE IF @Function='OUTLAYBALANCE' BEGIN EXEC [dbo].[KEYHM_OutlayBalanceDrilldown] @Handler, @PageNumber, @PageSize, @SearchText, @SortColumn, @SortDirection END ELSE IF @Function='Fees Issued Current Month' BEGIN -- Rewrite by John START -- KEYD-3505 IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = ' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #FeeIssuedCurrentMonthSAM3Table FROM (SELECT RTRIM(ISNULL(MAT.[Code], '''')) AS [Code], RTRIM(ISNULL(CON.[Name], '''')) AS [Client], RTRIM(ISNULL(MAT.[Description], '''')) AS [Matter], ISNULL(BAD.[VALUE], 0) * CASE WHEN ISNULL(BAH.[INVCR], '''') = ''C'' THEN -1 ELSE 1 END AS [Fee], RTRIM(ISNULL(BAD.[REF], '''')) AS [Ref], RTRIM(ISNULL(BAD.[NARR], '''')) AS [Narrative], BAD.[DATE] AS [Date] FROM [dbo].[BatchDetails] AS BAD INNER JOIN [dbo].[BatchH] AS BAH ON BAD.[BATCHNO] = BAH.[BATCHNO] AND BAH.[Posted] = ''Y'' INNER JOIN [dbo].[KPIParameters] AS KPI ON KPI.[Year] = BAD.[YEAR] AND KPI.[Period] = BAD.[PERNO] INNER JOIN [dbo].[matters] AS MAT ON BAH.[MATTER] = MAT.[Code] INNER JOIN [dbo].[Contacts] AS CON ON MAT.[ClientCode] = CON.[Code] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [CON].[Name] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [BAD].[VALUE] LIKE ''%' + @SearchText + '%'' OR [BAH].[INVCR] LIKE ''%' + @SearchText + '%'' OR [BAD].[REF] LIKE ''%' + @SearchText + '%'' OR [BAD].[NARR] LIKE ''%' + @SearchText + '%'' ) ) AND ISNULL(BAD.[FEE], '''') = ''' + @HANDLER + ''' AND ISNULL(BAD.[TYPE], '''') = ''I'' AND ISNULL(BAD.[OUTLAY], '''') = ''F'') AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #FeeIssuedCurrentMonthSAM3Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #FeeIssuedCurrentMonthSAM3Table' END ELSE BEGIN SET @NCOMMAND = ' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #FeeIssuedCurrentMonthSAM4Table FROM (SELECT RTRIM(ISNULL(MAT.[Code], '''')) AS [Code], RTRIM(ISNULL(CON.[Name], '''')) AS [Client], RTRIM(ISNULL(MAT.[Description], '''')) AS [Matter], ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * -1 AS [Fee], RTRIM(ISNULL(TRN.[TransRef], '''')) AS [Ref], RTRIM(ISNULL(TRN.[Narrative], '''')) AS [Narrative], TRN.[TransDate] AS [Date] FROM [dbo].[Contacts] AS CON INNER JOIN [dbo].[matters] AS MAT ON CON.[Code] = MAT.[ClientCode] INNER JOIN [dbo].[Transactions] AS HED ON HED.[MatterCode] = MAT.[Code] INNER JOIN [dbo].[Transactions] AS TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND TRN.[CorrectionInd] IN (''L'', ''X'') AND TRN.[FeeEarner] = ''' + @Handler + ''' INNER JOIN [dbo].[KPIParameters] AS KPI ON KPI.[Year] = HED.[PostingYear] AND KPI.[Period] = HED.[PostingPeriod] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [CON].[Name] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [TRN].[FeesBilled] LIKE ''%' + @SearchText + '%'' OR [TRN].[DrCr] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransRef] LIKE ''%' + @SearchText + '%'' OR [TRN].[Narrative] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransDate] LIKE ''%' + @SearchText + '%'' ) ) AND ISNULL(HED.[RecType], '''') = ''H'') AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #FeeIssuedCurrentMonthSAM4Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #FeeIssuedCurrentMonthSAM4Table' END EXECUTE sp_executesql @NCOMMAND, N'@SearchText VARCHAR(100), @StartRow INT, @EndRow INT', @SearchText = @SearchText, @StartRow = @StartRow, @EndRow = @EndRow END ELSE IF @Function='Fees Issued Last Month' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = ' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #FeesIssuedLastMonthSAM3Table FROM (SELECT RTRIM(ISNULL(MAT.[Code], '''')) AS [Code], RTRIM(ISNULL(CON.[Name], '''')) AS [Client], RTRIM(ISNULL(MAT.[Description], '''')) AS [Matter], ISNULL(BAD.[VALUE], 0) * CASE WHEN ISNULL(BAH.[INVCR], '''') = ''C'' THEN -1 ELSE 1 END AS [Fee], RTRIM(ISNULL(BAD.[REF], '''')) AS [Ref], RTRIM(ISNULL(BAD.[NARR], '''')) AS [Narrative], BAD.[DATE] AS [Date] FROM [dbo].[BatchDetails] AS BAD INNER JOIN [dbo].[BatchH] AS BAH ON BAD.[BATCHNO] = BAH.[BATCHNO] AND BAH.[Posted] = ''Y'' INNER JOIN [dbo].[KPIParameters] AS KPI ON (KPI.[Year] = BAD.[YEAR] AND KPI.[Period] <> 1 AND KPI.[Period] - 1 = BAD.[PERNO]) OR (KPI.[Year] = BAD.[YEAR] - 1 AND KPI.[Period] = 1 AND BAD.[PERNO] = 12) INNER JOIN [dbo].[matters] AS MAT ON BAH.[MATTER] = MAT.[Code] INNER JOIN [dbo].[Contacts] AS CON ON MAT.[ClientCode] = CON.[Code] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [CON].[Name] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [BAD].[VALUE] LIKE ''%' + @SearchText + '%'' OR [BAH].[INVCR] LIKE ''%' + @SearchText + '%'' OR [BAD].[REF] LIKE ''%' + @SearchText + '%'' OR [BAD].[NARR] LIKE ''%' + @SearchText + '%'' OR [BAD].[DATE] LIKE ''%' + @SearchText + '%'' ) ) AND ISNULL(BAD.[FEE], '''') = ''' + @HANDLER + ''' AND ISNULL(BAD.[TYPE], '''') = ''I'' AND ISNULL(BAD.[OUTLAY], '''') = ''F'') AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #FeesIssuedLastMonthSAM3Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #FeesIssuedLastMonthSAM3Table' END ELSE BEGIN SET @NCOMMAND = ' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #FeesIssuedLastMonthSAM4Table FROM (SELECT RTRIM(ISNULL(MAT.[Code], '''')) AS [Code], RTRIM(ISNULL(CON.[Name], '''')) AS [Client], RTRIM(ISNULL(MAT.[Description], '''')) AS [Matter], ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * - 1 AS [Fee], RTRIM(ISNULL(TRN.[TransRef], '''')) AS [Ref], RTRIM(ISNULL(TRN.[Narrative], '''')) AS [Narrative], TRN.[TransDate] AS [Date] FROM [dbo].[Contacts] AS CON INNER JOIN [dbo].[matters] AS MAT ON CON.[Code] = MAT.[ClientCode] INNER JOIN [dbo].[Transactions] AS HED ON HED.[MatterCode] = MAT.[Code] INNER JOIN [dbo].[Transactions] AS TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND TRN.[CorrectionInd] IN (''L'', ''X'') AND TRN.[FeeEarner] = ''' + @HANDLER + ''' INNER JOIN [dbo].[KPIParameters] AS KPI ON (KPI.[Year] = HED.[PostingYear] AND KPI.[Period] <> 1 AND KPI.[Period] - 1 = HED.[PostingPeriod]) OR (KPI.[Year] = HED.[PostingYear] - 1 AND KPI.[Period] = 1 AND HED.[PostingYear] = 12) WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [CON].[Name] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [TRN].[FeesBilled] LIKE ''%' + @SearchText + '%'' OR [TRN].[DrCr] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransRef] LIKE ''%' + @SearchText + '%'' OR [TRN].[Narrative] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransDate] LIKE ''%' + @SearchText + '%'' ) ) AND ISNULL(HED.[RecType], '''') = ''H'') AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #FeesIssuedLastMonthSAM4Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #FeesIssuedLastMonthSAM4Table' END EXECUTE sp_executesql @NCOMMAND, N'@SearchText VARCHAR(100), @StartRow INT, @EndRow INT', @SearchText = @SearchText, @StartRow = @StartRow, @EndRow = @EndRow END ELSE IF @Function='Fees Issued Year to Date' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = ' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #FeesIssuedYearToDateSAM3Table FROM (SELECT RTRIM(ISNULL(MAT.[Code], '''')) AS [Code], RTRIM(ISNULL(CON.[Name], '''')) AS [Client], RTRIM(ISNULL(MAT.[Description], '''')) AS [Matter], CASE WHEN ISNULL(BAH.[INVCR], '''') = ''C'' THEN -BAD.[VALUE] WHEN ISNULL(BAH.[INVCR], '''') = ''I'' THEN BAD.[VALUE] ELSE 0 END AS [Fee], RTRIM(ISNULL(BAD.[REF], '''')) AS [Ref], RTRIM(ISNULL(BAD.[NARR], '''')) AS [Narrative], BAD.[DATE] AS [Date] FROM [dbo].[BatchDetails] AS BAD INNER JOIN [dbo].[BatchH] AS BAH ON BAD.[BATCHNO] = BAH.[BATCHNO] AND BAH.[Posted] = ''Y'' INNER JOIN [dbo].[KPIParameters] AS KPI ON KPI.[Year] = BAD.[YEAR] AND KPI.[Period] >= BAD.[PERNO] INNER JOIN [dbo].[matters] AS MAT ON BAH.[MATTER] = MAT.[Code] INNER JOIN [dbo].[Contacts] AS CON ON MAT.[ClientCode] = CON.[Code] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [CON].[Name] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [BAH].[INVCR] LIKE ''%' + @SearchText + '%'' OR [BAD].[REF] LIKE ''%' + @SearchText + '%'' OR [BAD].[NARR] LIKE ''%' + @SearchText + '%'' OR [BAD].[DATE] LIKE ''%' + @SearchText + '%'' ) ) AND ISNULL(BAD.[FEE], '''') = ''' + @HANDLER + ''' AND ISNULL(BAD.[TYPE], '''') = ''I'' AND ISNULL(BAD.[OUTLAY], '''') = ''F'') AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #FeesIssuedYearToDateSAM3Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #FeesIssuedYearToDateSAM3Table' END ELSE BEGIN SET @NCOMMAND = ' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #FeesIssuedYearToDateSAM4Table FROM (SELECT RTRIM(ISNULL(MAT.[Code], '''')) AS [Code], RTRIM(ISNULL(CON.[Name], '''')) AS [Client], RTRIM(ISNULL(MAT.[Description], '''')) AS [Matter], ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * - 1 AS [Fee], RTRIM(ISNULL(TRN.[TransRef], '''')) AS [Ref], RTRIM(ISNULL(TRN.[Narrative], '''')) AS [Narrative], TRN.[TransDate] AS [Date] FROM [dbo].[Contacts] AS CON INNER JOIN [dbo].[matters] AS MAT ON CON.[Code] = MAT.[ClientCode] INNER JOIN [dbo].[Transactions] AS HED ON MAT.[Code] = HED.[MatterCode] INNER JOIN [dbo].[Transactions] AS TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND (TRN.[CorrectionInd] = ''L'' OR TRN.[CorrectionInd] = ''X'') AND TRN.[FeeEarner] = ''' + @Handler + ''' INNER JOIN [dbo].[KPIParameters] AS KPI ON KPI.[Year] = HED.[PostingYear] AND KPI.[Period] >= HED.[PostingPeriod] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [CON].[Name] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [TRN].[FeesBilled] LIKE ''%' + @SearchText + '%'' OR [TRN].[DrCr] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransRef] LIKE ''%' + @SearchText + '%'' OR [TRN].[Narrative] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransDate] LIKE ''%' + @SearchText + '%'' ) ) AND HED.[RecType] = ''H'') AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #FeesIssuedYearToDateSAM4Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #FeesIssuedYearToDateSAM4Table' END EXECUTE sp_executesql @NCOMMAND, N'@SearchText VARCHAR(100), @StartRow INT, @EndRow INT', @SearchText = @SearchText, @StartRow = @StartRow, @EndRow = @EndRow END -- Rewrite by John END ELSE IF @Function='Fees Issued Last Year to Date' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = ' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #FeesIssuedLastYearToDateSAM3Table FROM (SELECT RTRIM(ISNULL(MAT.[Code], '''')) AS [Code], RTRIM(ISNULL(CON.[Name], '''')) AS [Client], RTRIM(ISNULL(MAT.[Description], '''')) AS [Matter], CASE WHEN ISNULL(BAH.[INVCR], '''') = ''C'' THEN -BAD.[VALUE] WHEN ISNULL(BAH.[INVCR], '''') = ''I'' THEN BAD.[VALUE] ELSE 0 END AS [Fee], RTRIM(ISNULL(BAD.[REF], '''')) AS [Ref], RTRIM(ISNULL(BAD.[NARR], '''')) AS [Narrative], BAD.[DATE] AS [Date] FROM [dbo].[BatchDetails] AS BAD INNER JOIN [dbo].[BatchH] AS BAH ON BAD.[BATCHNO] = BAH.[BATCHNO] AND BAH.[Posted] = ''Y'' INNER JOIN [dbo].[KPIParameters] AS KPI ON KPI.[Year] - 1 = BAD.[YEAR] AND KPI.[Period] >= BAD.[PERNO] INNER JOIN [dbo].[matters] AS MAT ON BAH.[MATTER] = MAT.[Code] INNER JOIN [dbo].[Contacts] AS CON ON MAT.[ClientCode] = CON.[Code] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [CON].[Name] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [BAH].[INVCR] LIKE ''%' + @SearchText + '%'' OR [BAD].[REF] LIKE ''%' + @SearchText + '%'' OR [BAD].[NARR] LIKE ''%' + @SearchText + '%'' OR [BAD].[DATE] LIKE ''%' + @SearchText + '%'' ) ) AND ISNULL(BAD.[FEE], '''') = ''' + @HANDLER + ''' AND ISNULL(BAD.[TYPE], '''') = ''I'' AND ISNULL(BAD.[OUTLAY], '''') = ''F'') AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #FeesIssuedLastYearToDateSAM3Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #FeesIssuedLastYearToDateSAM3Table' END ELSE BEGIN SET @NCOMMAND = ' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #FeesIssuedLastYearToDateSAM4Table FROM (SELECT RTRIM(ISNULL(MAT.[Code], '''')) AS [Code], RTRIM(ISNULL(CON.[Name], '''')) AS [Client], RTRIM(ISNULL(MAT.[Description], '''')) AS [Matter], ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * - 1 AS [Fee], RTRIM(ISNULL(TRN.[TransRef], '''')) AS [Ref], RTRIM(ISNULL(TRN.[Narrative], '''')) AS [Narrative], TRN.[TransDate] AS [Date] FROM [dbo].[Transactions] AS HED INNER JOIN [dbo].[Transactions] AS TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND TRN.[CorrectionInd] IN (''L'', ''X'') AND TRN.[FeeEarner] = ''' + @Handler + ''' INNER JOIN [dbo].[KPIParameters] AS KPI ON KPI.[Year] - 1 = HED.[PostingYear] AND KPI.[Period] >= HED.[PostingPeriod] LEFT OUTER JOIN [dbo].[matters] AS MAT ON MAT.[Code] = HED.[MatterCode] LEFT OUTER JOIN [dbo].[Contacts] AS CON ON CON.[Code] = MAT.[ClientCode] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [CON].[Name] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [TRN].[FeesBilled] LIKE ''%' + @SearchText + '%'' OR [TRN].[DrCr] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransRef] LIKE ''%' + @SearchText + '%'' OR [TRN].[Narrative] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransDate] LIKE ''%' + @SearchText + '%'' ) ) AND HED.[RecType] = ''H'') AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #FeesIssuedLastYearToDateSAM4Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #FeesIssuedLastYearToDateSAM4Table' END EXECUTE sp_executesql @NCOMMAND, N'@SearchText VARCHAR(100), @StartRow INT, @EndRow INT', @SearchText = @SearchText, @StartRow = @StartRow, @EndRow = @EndRow END ELSE IF @Function='Fees Issued Last Year' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = ' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #FeesIssuedLastYearSAM3Table FROM (SELECT RTRIM(ISNULL(MAT.[Code], '''')) AS [Code], RTRIM(ISNULL(CON.[Name], '''')) AS [Client], RTRIM(ISNULL(MAT.[Description], '''')) AS [Matter], CASE WHEN ISNULL(BAH.[INVCR], '''') = ''C'' THEN -BAD.[VALUE] WHEN ISNULL(BAH.[INVCR], '''') = ''I'' THEN BAD.[VALUE] ELSE 0 END AS [Fee], RTRIM(ISNULL(BAD.[REF], '''')) AS [Ref], RTRIM(ISNULL(BAD.[NARR], '''')) AS [Narrative], BAD.[DATE] AS [Date] FROM [dbo].[BatchDetails] AS BAD INNER JOIN [dbo].[BatchH] AS BAH ON BAD.[BATCHNO] = BAH.[BATCHNO] AND BAH.[Posted] = ''Y'' INNER JOIN [dbo].[KPIParameters] AS KPI ON KPI.[Year] - 1 = BAD.[YEAR] INNER JOIN [dbo].[matters] AS MAT ON BAH.[MATTER] = MAT.[Code] INNER JOIN [dbo].[Contacts] AS CON ON MAT.[ClientCode] = CON.[Code] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [CON].[Name] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [BAH].[INVCR] LIKE ''%' + @SearchText + '%'' OR [BAD].[REF] LIKE ''%' + @SearchText + '%'' OR [BAD].[NARR] LIKE ''%' + @SearchText + '%'' OR [BAD].[DATE] LIKE ''%' + @SearchText + '%'' ) ) AND ISNULL(BAD.[FEE], '''') = ''' + @HANDLER + ''' AND ISNULL(BAD.[TYPE], '''') = ''I'' AND ISNULL(BAD.[OUTLAY], '''') = ''F'') AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #FeesIssuedLastYearSAM3Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #FeesIssuedLastYearSAM3Table' END ELSE BEGIN SET @NCOMMAND = ' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #FeesIssuedLastYearSAM4Table FROM (SELECT RTRIM(ISNULL(MAT.[Code], '''')) AS [Code], RTRIM(ISNULL(CON.[Name], '''')) AS [Client], RTRIM(ISNULL(MAT.[Description], '''')) AS [Matter], ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * - 1 AS [Fee], RTRIM(ISNULL(TRN.[TransRef], '''')) AS [Ref], RTRIM(ISNULL(TRN.[Narrative], '''')) AS [Narrative], TRN.[TransDate] AS [Date] FROM [dbo].[Transactions] AS HED INNER JOIN [dbo].[Transactions] AS TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND TRN.[CorrectionInd] IN (''L'', ''X'') AND TRN.[FeeEarner] = ''' + @Handler + ''' INNER JOIN [dbo].[KPIParameters] AS KPI ON KPI.[Year] - 1 = HED.[PostingYear] LEFT OUTER JOIN [dbo].[matters] AS MAT ON MAT.[Code] = HED.[MatterCode] LEFT OUTER JOIN [dbo].[Contacts] AS CON ON CON.[Code] = MAT.[ClientCode] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [CON].[Name] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [TRN].[FeesBilled] LIKE ''%' + @SearchText + '%'' OR [TRN].[DrCr] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransRef] LIKE ''%' + @SearchText + '%'' OR [TRN].[Narrative] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransDate] LIKE ''%' + @SearchText + '%'' ) ) AND HED.[RecType] = ''H'') AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #FeesIssuedLastYearSAM4Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #FeesIssuedLastYearSAM4Table' END EXECUTE sp_executesql @NCOMMAND, N'@SearchText VARCHAR(100), @StartRow INT, @EndRow INT', @SearchText = @SearchText, @StartRow = @StartRow, @EndRow = @EndRow END ELSE IF @Function='TimeDayBook' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #TimeDayBookTable FROM (SELECT ISNULL(TDB.[Matter], '') AS [Code], RTRIM(ISNULL(CNT.[Name], '')) AS [Client], RTRIM(ISNULL(MAT.[Description], '')) AS [Description], ISNULL(TDB.[Date], '') AS [Date], RTRIM(ISNULL(TDB.[Comment], '')) AS [Comment], ISNULL(TDB.[Time], 0) AS [Time], ISNULL(TDB.[Charge], 0) AS [Charge] FROM [dbo].[TimeDayBook] TDB LEFT OUTER JOIN [dbo].[matters] AS MAT ON TDB.[Matter] = MAT.[Code] LEFT OUTER JOIN [dbo].[Contacts] AS CNT ON MAT.[ClientCode] =CNT.[Code] WHERE ( [TDB].[Matter] LIKE '%' + @SearchText + '%' OR [CNT].[Name] LIKE '%' + @SearchText + '%' OR [MAT].[Description] LIKE '%' + @SearchText + '%' OR [TDB].[Date] LIKE '%' + @SearchText + '%' OR [TDB].[Comment] LIKE '%' + @SearchText + '%' OR [TDB].[Time] LIKE '%' + @SearchText + '%' OR [TDB].[Charge] LIKE '%' + @SearchText + '%' ) AND TDB.[FeeEarn] = @Handler AND TDB.[TimeOrCharge] = 'T' AND TDB.[Rec_irr] = 'C') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Client' THEN [Client] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Client' THEN [Client] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END DESC SELECT * FROM #TimeDayBookTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS [TotalRecords] FROM #TimeDayBookTable END ELSE IF @Function='TimeDayBookforWeek' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #TimeDayBookForWeekTable FROM (SELECT ISNULL(TIE.[Matter],'') AS [Code], RTRIM(ISNULL(CON.[Name],'')) AS [Client], RTRIM(ISNULL(MAT.[Description],'')) AS [Description], ISNULL(TIE.[Date],'') AS [Date], RTRIM(ISNULL(TIE.[Comment],'')) AS [Comment], ISNULL(TIE.[Time],0) AS [Time], ISNULL(TIE.[Charge],0) AS [Charge] FROM [dbo].[TimeEntry] AS TIE LEFT OUTER JOIN [dbo].[matters] AS MAT ON TIE.[Matter] = MAT.[Code] LEFT OUTER JOIN [dbo].[Contacts] AS CON ON MAT.[ClientCode] = CON.[Code] WHERE ( [TIE].[Matter] LIKE '%' + @SearchText + '%' OR [CON].[Name] LIKE '%' + @SearchText + '%' OR [MAT].[Description] LIKE '%' + @SearchText + '%' OR [TIE].[Date] LIKE '%' + @SearchText + '%' OR [TIE].[Comment] LIKE '%' + @SearchText + '%' OR [TIE].[Time] LIKE '%' + @SearchText + '%' OR [TIE].[Charge] LIKE '%' + @SearchText + '%' ) AND TIE.[FeeEarn] = @Handler AND TIE.[TimeOrCharge] = 'T' AND TIE.[Date] >= @MONDAY AND TIE.[Date] <= @GETDATE AND TIE.[Rec_irr] = 'C' AND ISNULL(TIE.[Task], '') <> 'WRI') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Client' THEN [Client] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Client' THEN [Client] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END DESC SELECT * FROM #TimeDayBookForWeekTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS [TotalRecords] FROM #TimeDayBookForWeekTable END ELSE IF @Function='TimeDayBookforMonth' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #TimeDayBookForMonthTable FROM (SELECT ISNULL(TIE.[Matter], '') AS [Code], RTRIM(ISNULL(CON.[Name], '')) AS [Client], RTRIM(ISNULL(MAT.[Description], '')) AS [Description], TIE.[Date] AS [Date], RTRIM(ISNULL(TIE.[Comment], '')) AS [Comment], ISNULL(TIE.[Time], 0) AS [Time], ISNULL(TIE.[Charge], 0) AS [Charge] FROM [dbo].[TimeEntry] AS TIE LEFT OUTER JOIN [dbo].[matters] AS MAT ON TIE.[Matter] =MAT.[Code] LEFT OUTER JOIN [dbo].[Contacts] AS CON ON MAT.[ClientCode] =CON.[Code] WHERE ( [TIE].[Matter] LIKE '%' + @SearchText + '%' OR [CON].[Name] LIKE '%' + @SearchText + '%' OR [MAT].[Description] LIKE '%' + @SearchText + '%' OR [TIE].[Date] LIKE '%' + @SearchText + '%' OR [TIE].[Comment] LIKE '%' + @SearchText + '%' OR [TIE].[Time] LIKE '%' + @SearchText + '%' OR [TIE].[Charge] LIKE '%' + @SearchText + '%' ) AND TIE.[FeeEarn] = @Handler AND TIE.[TimeOrCharge] = 'T' AND TIE.[Rec_irr] = 'C' AND TIE.[Date] >= @STARTOFMONTH AND TIE.[Date] <= @MONTHTODATE AND ISNULL(TIE.[Task], '') <> 'WRI') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Client' THEN [Client] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Client' THEN [Client] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END DESC SELECT * FROM #TimeDayBookForMonthTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS [TotalRecords] FROM #TimeDayBookForMonthTable END ELSE IF @Function='TimeDayBookforYear' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #TimeDayBookForYearTable FROM (SELECT ISNULL(TIE.[Matter],'') AS [Code], RTRIM(ISNULL(CON.[Name],'')) AS [Client], RTRIM(ISNULL(MAT.[Description],'')) AS [Description], TIE.[Date] AS [Date], RTRIM(ISNULL(TIE.[Comment], '')) AS [Comment], ISNULL(TIE.[Time], 0) AS [Time], ISNULL(TIE.[Charge], 0) AS [Charge] FROM [dbo].[TimeEntry] AS TIE LEFT OUTER JOIN [dbo].[matters] AS MAT ON TIE.[Matter] = MAT.[Code] LEFT OUTER JOIN [dbo].[Contacts] AS CON ON MAT.[ClientCode] = CON.[Code] WHERE ( [TIE].[Matter] LIKE '%' + @SearchText + '%' OR [CON].[Name] LIKE '%' + @SearchText + '%' OR [MAT].[Description] LIKE '%' + @SearchText + '%' OR [TIE].[Date] LIKE '%' + @SearchText + '%' OR [TIE].[Comment] LIKE '%' + @SearchText + '%' OR [TIE].[Time] LIKE '%' + @SearchText + '%' OR [TIE].[Charge] LIKE '%' + @SearchText + '%' ) AND TIE.[FeeEarn] = @Handler AND TIE.[TimeOrCharge] = 'T' AND TIE.[Rec_irr] = 'C' AND TIE.[Date] >= @STARTOFYEAR AND TIE.[Date] <= @MONTHTODATE AND ISNULL(TIE.[Task], '') <> 'WRI') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Client' THEN [Client] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Client' THEN [Client] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Description' THEN [Description] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END DESC SELECT * FROM #TimeDayBookForYearTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS [TotalRecords] FROM #TimeDayBookForYearTable END ELSE IF @Function='AdminTimeDayBookforWeek' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #AdminTimeDayBookforWeekTable FROM (SELECT ISNULL(TIE.[Matter],'') AS [Code], ISNULL(TIE.[Date],'') AS [Date], RTRIM(ISNULL(TIE.[Comment],'')) AS [Comment], ISNULL(TIE.[Time],0) AS [Time], ISNULL(TIE.[Charge],0) AS [Charge] FROM [dbo].[TimeEntry] AS TIE WHERE ( [TIE].[Matter] LIKE '%' + @SearchText + '%' OR [TIE].[Date] LIKE '%' + @SearchText + '%' OR [TIE].[Comment] LIKE '%' + @SearchText + '%' OR [TIE].[Time] LIKE '%' + @SearchText + '%' OR [TIE].[Charge] LIKE '%' + @SearchText + '%' ) AND TIE.[FeeEarn] = @Handler AND TIE.[TimeOrCharge] = 'T' AND TIE.[Date] >= @MONDAY AND TIE.[Date] <= @MONTHTODATE AND ISNULL(TIE.[TASK], '') <> 'WRI' AND TIE.[Matter] = '~') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END DESC SELECT * FROM #AdminTimeDayBookforWeekTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS [TotalRecords] FROM #AdminTimeDayBookforWeekTable END ELSE IF @Function='AdminTimeDayBookforMonth' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #AdminTimeDayBookforMonthTable FROM (SELECT ISNULL(TIE.[Matter], '') AS [Code], ISNULL(TIE.[Date], '') AS [Date], RTRIM(ISNULL(TIE.[Comment], '')) AS [Comment], ISNULL(TIE.[Time], 0) AS [Time], ISNULL(TIE.[Charge], 0) AS [Charge] FROM [dbo].[TimeEntry] AS TIE WHERE ( [TIE].[Matter] LIKE '%' + @SearchText + '%' OR [TIE].[Date] LIKE '%' + @SearchText + '%' OR [TIE].[Comment] LIKE '%' + @SearchText + '%' OR [TIE].[Time] LIKE '%' + @SearchText + '%' OR [TIE].[Charge] LIKE '%' + @SearchText + '%' ) AND TIE.[FeeEarn] = @Handler AND TIE.[TimeOrCharge] = 'T' AND TIE.[Date] >= @STARTOFMONTH AND TIE.[Date] <= @MONTHTODATE AND ISNULL(TIE.[Task], '') <> 'WRI' AND TIE.[Matter] = '~') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END DESC SELECT * FROM #AdminTimeDayBookforMonthTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS [TotalRecords] FROM #AdminTimeDayBookforMonthTable END ELSE IF @Function='AdminTimeDayBookforYear' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #AdminTimeDayBookforYearTable FROM (SELECT ISNULL(TIE.[Matter], '') AS [Code], ISNULL(TIE.[Date], '') AS [Date], RTRIM(ISNULL(TIE.[Comment], '')) AS [Comment], ISNULL(TIE.[Time], 0) AS [Time], ISNULL(TIE.[Charge], 0) AS [Charge] FROM [dbo].[TimeEntry] TIE WHERE ( [TIE].[Matter] LIKE '%' + @SearchText + '%' OR [TIE].[Date] LIKE '%' + @SearchText + '%' OR [TIE].[Comment] LIKE '%' + @SearchText + '%' OR [TIE].[Time] LIKE '%' + @SearchText + '%' OR [TIE].[Charge] LIKE '%' + @SearchText + '%' ) AND TIE.[FeeEarn] = @Handler AND TIE.[TimeOrCharge] = 'T' AND TIE.[Date] >= @STARTOFYEAR AND TIE.[Date] <= @MONTHTODATE AND ISNULL(TIE.[Task], '') <> 'WRI' AND TIE.[Matter] = '~') AS FoundTable ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Code' THEN [Code] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Date' THEN [Date] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Time' THEN [Time] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END DESC SELECT * FROM #AdminTimeDayBookforYearTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS [TotalRecords] FROM #AdminTimeDayBookforYearTable END ELSE IF @Function='OSFees' BEGIN IF [dbo].[ISSAM4]() = 0 BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SET @NCOMMAND = N' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #OSFeesSAM3Table FROM (SELECT MAT.[Code], MAT.[Description], DTL.[OSFEES] AS [OSFees] FROM [dbo].[matters] MAT INNER JOIN [dbo].[DebtorsLedger] DTL ON DTL.[MATTER] = MAT.[Code] AND DTL.[OSValue] > 0 WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [DTL].[OSFEES] LIKE ''%' + @SearchText + '%'' ) ) AND MAT.[FECode] = @Handler) AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #OSFeesSAM3Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #OSFeesSAM3Table' END ELSE BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END SET @NCOMMAND = N' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #OSFeesSAM4Table FROM (SELECT MAT.[Code] AS [Code], ISNULL(MAT.[Description], '''') AS [Description], ISNULL(TRN.[FeesOS], 0) AS [OSFees] FROM [dbo].[matters] AS MAT INNER JOIN [dbo].[Transactions] TRN ON TRN.[MatterCode] = MAT.[Code] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [TRN].[FeesOS] LIKE ''%' + @SearchText + '%'' ) ) AND TRN.[Posted] = ''Y'' AND MAT.[FECode] = @Handler AND TRN.[CorrectionInd] = ''L'' AND TRN.[DebtorsValueOS] > 0 AND ((TRN.[XnType] = ''I'' AND TRN.[RecType] = ''H'') OR (TRN.[XnType] = ''J'' AND TRN.[RecType] = ''D''))) AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #OSFeesSAM4Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #OSFeesSAM4Table' END EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10), @SearchText VARCHAR(100), @StartRow INT, @EndRow INT', @Handler = @Handler, @SearchText = @SearchText, @StartRow = @StartRow, @EndRow = @EndRow END ELSE IF @Function='DebtorDays' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = N' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #DebtorDaysSAM3Table FROM (SELECT MAT.[Code], ISNULL(MAT.[Description], '''') AS [Description], DTL.[DATE] AS [TransDate], ISNULL(CASE WHEN DTL.[DATE] IS NULL THEN 0 WHEN DTL.[DATE] > @GETDATE THEN 0 WHEN DTL.[OSVALUE] = 0 THEN 0 ELSE DATEDIFF(Day, DTL.[DATE], @GETDATE) END, 0) AS [DebtorDays], ISNULL(CASE WHEN DTL.[DATE] IS NULL THEN 0 WHEN DTL.[DATE] > @GETDATE THEN 0 WHEN DTL.[OSVALUE] = 0 THEN 0 ELSE 1 END, 0) AS [DebtorEntries] FROM [dbo].[matters] MAT INNER JOIN [dbo].[DebtorsLedger] DTL ON DTL.[MATTER] = MAT.[Code] AND DTL.[OSValue] > 0 WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [DTL].[DATE] LIKE ''%' + @SearchText + '%'' OR [DTL].[OSVALUE] LIKE ''%' + @SearchText + '%'' ) ) AND MAT.[FECode] = @Handler) AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #DebtorDaysSAM3Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #DebtorDaysSAM3Table' END ELSE BEGIN SET @NCOMMAND = N' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #DebtorDaysSAM4Table FROM (SELECT MAT.[Code], ISNULL(MAT.[Description], '''') AS [Description], TRN.[TransDate] AS [TransDate], ISNULL(CASE WHEN TRN.[TransDate] IS NULL THEN 0 WHEN TRN.[TransDate] > @GETDATE THEN 0 WHEN TRN.[DebtorsValueOS] = 0 THEN 0 ELSE DATEDIFF(Day, TRN.[TransDate], @GETDATE) END, 0) AS [DebtorDays], ISNULL(CASE WHEN TRN.[TransDate] IS NULL THEN 0 WHEN TRN.[TransDate] > @GETDATE THEN 0 WHEN TRN.[DebtorsValueOS] = 0 THEN 0 ELSE 1 END, 0) AS [DebtorEntries] FROM [dbo].[matters] AS MAT INNER JOIN [dbo].[Transactions] TRN ON MAT.[Code] = TRN.[MatterCode] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransDate] LIKE ''%' + @SearchText + '%'' OR [TRN].[DebtorsValueOS] LIKE ''%' + @SearchText + '%'' ) ) AND TRN.[Posted] = ''Y'' AND MAT.[FECode] = @Handler AND TRN.[CorrectionInd] = ''L'' AND ((TRN.[XnType] = ''I'' AND TRN.[RecType] = ''H'') OR (TRN.[XnType] = ''J'' AND TRN.[RecType] = ''D'')) AND TRN.[DebtorsValueOS] > 0) AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #DebtorDaysSAM4Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #DebtorDaysSAM4Table' END EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10), @GETDATE DateTime, @SearchText VARCHAR(100), @StartRow INT, @EndRow INT', @Handler = @Handler, @GETDATE = @GETDATE, @SearchText = @SearchText, @StartRow = @StartRow, @EndRow = @EndRow END ELSE IF @Function='DraftInvoices' BEGIN IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = N' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #DraftInvoiceSAM3Table FROM (SELECT MAT.[Code], MAT.[Description], BIH.[DATE] AS [Date], (ISNULL(BID.[Fee], 0) + ISNULL(BID.[Outlay], 0) + ISNULL(BID.[MiscOutlay], 0) + ISNULL(BID.[VAT], 0)) * CASE WHEN BIH.[INVCR] = ''C'' THEN -1 ELSE 1 END AS [Total], ISNULL(BID.[Fee], 0) * CASE WHEN BIH.[INVCR] = ''C'' THEN -1 ELSE 1 END AS [Fee], ISNULL(BID.[Outlay], 0) * CASE WHEN BIH.[INVCR] = ''C'' THEN -1 ELSE 1 END AS [Outlay], ISNULL(BID.[MiscOutlay], 0) * CASE WHEN BIH.[INVCR] = ''C'' THEN -1 ELSE 1 END AS [MiscOutlay], ISNULL(BID.[VAT], 0) * CASE WHEN BIH.[INVCR] = ''C'' THEN -1 ELSE 1 END AS [VAT] FROM [dbo].[matters] AS MAT INNER JOIN [dbo].[BillHeader] AS BIH ON MAT.[Code] = BIH.[MATTER] LEFT OUTER JOIN (SELECT BID.[DRAFTNO], SUM(CASE WHEN BID.[TYPE] = ''F'' THEN BID.[NET] ELSE 0 END) AS [Fee], SUM(CASE WHEN BID.[TYPE] = ''O'' THEN BID.[NET] ELSE 0 END) AS [Outlay], SUM(CASE WHEN BID.[TYPE] = ''M'' THEN BID.[NET] ELSE 0 END) AS [MiscOutlay], SUM(BID.[VATVALUE]) AS [VAT] FROM [dbo].[BillDetails] AS BID GROUP BY BID.[DRAFTNO]) AS BID ON BID.[DRAFTNO] = BIH.[DRAFTNO] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [BIH].[DATE] LIKE ''%' + @SearchText + '%'' ) ) AND BIH.[BILLNO] = 0 AND MAT.[FECode] = @Handler) AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #DraftInvoiceSAM3Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #DraftInvoiceSAM3Table' END ELSE BEGIN SET @NCOMMAND = N' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #DraftInvoiceSAM4Table FROM (SELECT MAT.[Code], MAT.[Description], BH.[BillDate] AS [Date], (ISNULL(BD.[Fee], 0) + ISNULL(BD.[Outlay], 0) + ISNULL(BD.[MiscOutlay], 0) + ISNULL(BD.[VAT], 0)) * CASE WHEN BH.[Type] = ''C'' THEN -1 ELSE 1 END AS [Total], ISNULL(BD.[Fee], 0) * CASE WHEN BH.[Type] = ''C'' THEN -1 ELSE 1 END AS [Fee], ISNULL(BD.[Outlay], 0) * CASE WHEN BH.[Type] = ''C'' THEN -1 ELSE 1 END AS [Outlay], ISNULL(BD.[MiscOutlay], 0) * CASE WHEN BH.[Type] = ''C'' THEN -1 ELSE 1 END AS [MiscOutlay], ISNULL(BD.[VAT], 0) * CASE WHEN BH.[Type] = ''C'' THEN -1 ELSE 1 END AS [VAT] FROM [dbo].[matters] AS MAT INNER JOIN [dbo].[Billhead] AS BH ON MAT.[Code] = BH.[MatterCode] LEFT OUTER JOIN (SELECT BD.[BillID], SUM(CASE WHEN BD.[RecordType] = ''F'' THEN BD.[NetValue] ELSE 0 END) AS [Fee], SUM(CASE WHEN BD.[RecordType] = ''O'' THEN BD.[NetValue] ELSE 0 END) AS [Outlay], SUM(CASE WHEN BD.[RecordType] = ''M'' THEN BD.[NetValue] ELSE 0 END) AS [MiscOutlay], SUM(BD.[VatValue]) AS [VAT] FROM [dbo].[BillDetail] AS BD GROUP BY BD.[BillID]) AS BD ON BH.[BillingID] = BD.[BillID] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[Code] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [BH].[BillDate] LIKE ''%' + @SearchText + '%'' ) ) AND BH.[BillStatus] <> ''Approved'' AND MAT.[FECode] = @Handler) AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #DraftInvoiceSAM4Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #DraftInvoiceSAM4Table' END EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10), @SearchText VARCHAR(100), @StartRow INT, @EndRow INT', @Handler = @Handler, @SearchText = @SearchText, @StartRow = @StartRow, @EndRow = @EndRow END SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_Dashboardmaxlimit' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_Dashboardmaxlimit] END GO CREATE PROCEDURE [dbo].[KEYHM_Dashboardmaxlimit] (@HANDLER NVARCHAR(10))--@HANDLER MUST be NVARCHAR as it's defined as such in [dbo].[UserSettings] AS /******************************************************************************************************* * * * * * Stored Procedure Name : [dbo].[KEYHM_Dashboardmaxlimit] * * Copied from : [dbo].[Ky_NETDashboardmaxlimit] * * * * Modification History : * * 2019-04-11 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON DECLARE @TIMEDAYBOOKLIMIT DECIMAL(18, 2) DECLARE @TIMEDAYBOOKLIMITHR VARCHAR(20) DECLARE @TIMEFORWEEK DECIMAL(18, 2) DECLARE @TIMEFORWEEKHR VARCHAR(20) DECLARE @TIMEFORMONTH DECIMAL(18, 2) DECLARE @TIMEFORMONTHHR VARCHAR(20) DECLARE @TIMEFORYEAR DECIMAL(18, 2) DECLARE @TIMEFORYEARHR VARCHAR(20) DECLARE @TIMEYTD DECIMAL(18, 2) DECLARE @TIMEYTDHR VARCHAR(20) DECLARE @NCTIMEFORMONTH DECIMAL(18, 2) DECLARE @NCTIMEFORMONTHHR VARCHAR(20) DECLARE @NCTIMEFORYEAR DECIMAL(18, 2) DECLARE @NCTIMEFORYEARHR VARCHAR(20) DECLARE @FEESISSUEDCURMONTH DECIMAL(18, 2) DECLARE @FEESISSUEDLASTMONTH DECIMAL(18, 2) DECLARE @FEESISSUEDYTD DECIMAL(18, 2) DECLARE @FEESISSUEDLASTYTD DECIMAL(18, 2) DECLARE @FEESISSUEDLASTYEAR DECIMAL(18, 2) DECLARE @OSINVOICELIMIT DECIMAL(18, 2) DECLARE @CURRENTWIPLIMIT DECIMAL(18, 2) DECLARE @DRAFTINVOICELIMIT DECIMAL(18, 2) DECLARE @YEAR INT DECLARE @PERIOD INT -- Get the financial year and period from the KPI, if not there then control, if not there then use now. IF [dbo].[ISSAM4]() = 0 BEGIN SELECT @YEAR = ISNULL(KPI.[Year], ISNULL(CON.[YEAR], YEAR(GETDATE()))) FROM [dbo].[KPIParameters] AS KPI OUTER APPLY [dbo].[control] AS CON SELECT @PERIOD = ISNULL(KPI.[Period], ISNULL(CON.[CURPER], MONTH(GETDATE()))) FROM [dbo].[KPIParameters] AS KPI OUTER APPLY [dbo].[control] AS CON END ELSE BEGIN SELECT @YEAR = ISNULL(KPI.[Year], ISNULL(CON.[NumValue], YEAR(GETDATE()))) FROM [dbo].[KPIParameters] AS KPI OUTER APPLY (SELECT TOP 1 NUM.[NumValue] FROM [dbo].[CtrlNum] AS NUM WHERE NUM.[Code] = 'CurYear') AS CON SELECT @PERIOD = ISNULL(KPI.[Period], ISNULL(CON.[NumValue], MONTH(GETDATE()))) FROM [dbo].[KPIParameters] AS KPI OUTER APPLY (SELECT TOP 1 NUM.[NumValue] FROM [dbo].[CtrlNum] AS NUM WHERE NUM.[Code] = 'CurPeriod') AS CON END -- This is very unwieldy but not much choice when converting time values stored as strings into time formats (7.5 -> 07:30) SELECT @TIMEDAYBOOKLIMIT = 60.0 * CONVERT(DECIMAL(18, 5), CASE WHEN ISNULL(US.[Value], '') = '' THEN '0' ELSE US.[Value] END), @TIMEDAYBOOKLIMITHR = CONVERT(VARCHAR(5), DATEADD(SECOND, 3600.0 * CONVERT(DECIMAL(18, 2), CASE WHEN ISNULL(US.[Value], '') = '' THEN '0' ELSE US.[Value] END), 0), 108), @TIMEFORWEEK = 60.0 * CONVERT(DECIMAL(18, 5), CASE WHEN ISNULL(US.[Value], '') = '' THEN '0' ELSE US.[Value] END) * 5.0, @TIMEFORWEEKHR = RIGHT('00' + CONVERT(VARCHAR, FLOOR(CONVERT(DECIMAL(18, 5), CASE WHEN ISNULL(US.[Value], '') = '' THEN '0' ELSE US.[Value] END) * 5.0)), 2) + ':' + RIGHT('00' + LEFT(CONVERT(VARCHAR, CONVERT(INT, (60.0 * CONVERT(DECIMAL(18, 5), CASE WHEN ISNULL(US.[Value], '') = '' THEN '0' ELSE US.[Value] END) * 5.0) % 60.0)), 2), 2) FROM [dbo].[UserSettings] AS US WHERE US.[Handler] = @HANDLER AND UPPER(RTRIM(US.[Key])) = 'TIMEDAYBOOKLIMIT' SELECT @OSINVOICELIMIT = CONVERT(DECIMAL(18, 5), CASE WHEN ISNULL(US.[Value], '') = '' THEN '0' ELSE US.[Value] END) FROM [dbo].[UserSettings] AS US WHERE US.[Handler] = @HANDLER AND UPPER(RTRIM(US.[Key])) = 'OSINVOICELIMIT' SELECT @DRAFTINVOICELIMIT = CONVERT(DECIMAL(18, 5), CASE WHEN ISNULL(US.[Value], '') = '' THEN '0' ELSE US.[Value] END) FROM [dbo].[UserSettings] AS US WHERE US.[Handler] = @HANDLER AND UPPER(RTRIM(US.[Key])) = 'DRAFTINVOICELIMIT' SELECT @CURRENTWIPLIMIT = CONVERT(DECIMAL(18, 5), CASE WHEN ISNULL(US.[Value], '') = '' THEN '0' ELSE US.[Value] END) FROM [dbo].[UserSettings] AS US WHERE US.[Handler] = @HANDLER AND UPPER(RTRIM(US.[Key])) = 'CURRENTWIPLIMIT' SELECT @TIMEFORMONTH = CASE WHEN FLOOR((SUM(ISNULL(BDG.[ChargableTimeBudget], 0))) * 60.0) < 10 THEN RIGHT('00' + FLOOR((SUM(ISNULL(BDG.[ChargableTimeBudget], 0))) * 60.0), 2) ELSE FLOOR((SUM(ISNULL(BDG.[ChargableTimeBudget], 0))) * 60.0) END, @TIMEFORMONTHHR = CONVERT(VARCHAR, CONVERT(INT, SUM(ISNULL(BDG.[ChargableTimeBudget], 0)))) + ':' + RIGHT('00' + LEFT(CONVERT(VARCHAR, CONVERT(INT, (SUM(ISNULL(BDG.[ChargableTimeBudget], 0)) * 60.0) % 60)), 2), 2), @NCTIMEFORMONTH = FLOOR((SUM(ISNULL(BDG.[NonChargableTimeBudget], 0))) * 60.0), @NCTIMEFORMONTHHR = CONVERT(VARCHAR, CONVERT(INT, SUM(ISNULL(BDG.[NonChargableTimeBudget], 0)))) + ':' + RIGHT('00' + LEFT(CONVERT(VARCHAR, CONVERT(INT, (SUM(ISNULL(BDG.[NonChargableTimeBudget], 0)) * 60.0) % 60)), 2), 2), @FEESISSUEDCURMONTH = SUM(ISNULL(BDG.[FeesBudget], 0)) FROM [dbo].[HandlerBudgets] AS BDG WHERE BDG.[HANDLER] = @HANDLER AND BDG.[MONTH] = @PERIOD AND BDG.[YEAR] = @YEAR SELECT @FEESISSUEDLASTMONTH = FLOOR(SUM(ISNULL(BDG.[FeesBudget], 0))) FROM [dbo].[HandlerBudgets] AS BDG WHERE BDG.[Handler] = @HANDLER AND BDG.[Month] = CASE WHEN @PERIOD - 1 = 0 THEN 12 ELSE @PERIOD END AND BDG.[Year] = CASE WHEN @PERIOD - 1 = 0 THEN @YEAR - 1 ELSE @YEAR END SELECT @FEESISSUEDYTD = FLOOR(SUM(BDG.[FeesBudget])), @TIMEYTD = SUM(ISNULL(BDG.[ChargableTimeBudget], 0)) * 60.0, @TIMEYTDHR = CONVERT(VARCHAR, CONVERT(INT, SUM(ISNULL(BDG.[ChargableTimeBudget], 0)) * 60.0)) + ':' + RIGHT('00' + LEFT(CONVERT(VARCHAR, CONVERT(INT, (SUM(ISNULL(BDG.[ChargableTimeBudget], 0)) * 60.0) % 60)), 2), 2) FROM [dbo].[HandlerBudgets] AS BDG WHERE BDG.[Handler] = @HANDLER AND BDG.[Month] <= @PERIOD AND BDG.[Year] = @YEAR SELECT @TIMEFORYEAR = FLOOR(SUM(ISNULL(BDG.[ChargableTimeBudget], 0)) * 60.0), @TIMEFORYEARHR = CONVERT(VARCHAR, CONVERT(INT, SUM(ISNULL(BDG.[ChargableTimeBudget], 0)))) + ':' + RIGHT('00' + LEFT(CONVERT(VARCHAR, CONVERT(INT, (SUM(ISNULL(BDG.[ChargableTimeBudget], 0)) * 60.0) % 60)), 2), 2), @NCTIMEFORYEAR = FLOOR(SUM(ISNULL(BDG.[NonChargableTimeBudget], 0)) * 60.0), @NCTIMEFORYEARHR = CONVERT(VARCHAR, CONVERT(INT, SUM(ISNULL(BDG.[NonChargableTimeBudget], 0)))) + ':' + RIGHT('00' + LEFT(CONVERT(VARCHAR, CONVERT(INT, (SUM(ISNULL(BDG.[NonChargableTimeBudget], 0)) * 60.0) % 60)), 2), 2) FROM [dbo].[HandlerBudgets] AS BDG WHERE BDG.[Handler] = @HANDLER AND BDG.[Year] = @YEAR SELECT @FEESISSUEDLASTYTD = FLOOR(SUM(ISNULL(CASE WHEN BDG.[Month] <= @PERIOD THEN BDG.[FeesBudget] ELSE 0 END, 0))), @FEESISSUEDLASTYEAR = FLOOR(SUM(ISNULL(BDG.[FeesBudget], 0))) FROM [dbo].[HandlerBudgets] AS BDG WHERE BDG.[Handler] = @HANDLER AND BDG.[Year] = @YEAR - 1 SELECT ISNULL(@TIMEDAYBOOKLIMIT,0) AS [TIMEDAYBOOKLIMIT], ISNULL(@TIMEFORWEEK ,0) AS [TIMEFORWEEK], ISNULL(@TIMEFORMONTH ,0) AS [TIMEFORMONTH], ISNULL(@TIMEFORYEAR, 0) AS [TIMEFORYEAR], ISNULL(@NCTIMEFORMONTH, 0) AS [NCTIMEFORMONTH], ISNULL(@NCTIMEFORYEAR, 0) AS [NCTIMEFORYEAR], ISNULL(@TIMEYTD, 0) AS [TIMEYTD], REPLACE(CONVERT(VARCHAR, ROUND(ISNULL(@FEESISSUEDCURMONTH, 0), 0), 1), '.00', '') AS [FEESISSUEDCURMONTH], REPLACE(CONVERT(VARCHAR, ROUND(ISNULL(@FEESISSUEDLASTMONTH, 0), 0), 1), '.00', '') AS [FEESISSUEDLASTMONTH], REPLACE(CONVERT(VARCHAR, ROUND(ISNULL(@FEESISSUEDYTD, 0), 0), 1), '.00', '') AS [FEESISSUEDYTD], REPLACE(CONVERT(VARCHAR, ROUND(ISNULL(@FEESISSUEDLASTYTD, 0), 0), 1), '.00', '') AS [FEESISSUEDLASTYTD], REPLACE(CONVERT(VARCHAR, ROUND(ISNULL(@FEESISSUEDLASTYEAR, 0), 0), 1), '.00', '') AS [FEESISSUEDLASTYEAR], REPLACE(CONVERT(VARCHAR, ROUND(ISNULL(@OSINVOICELIMIT, 0), 0), 1), '.00', '') AS [OSINVOICELIMIT], REPLACE(CONVERT(VARCHAR, ROUND(ISNULL(@CURRENTWIPLIMIT, 0), 0), 1), '.00', '') AS [CURRENTWIPLIMIT], REPLACE(CONVERT(VARCHAR, ROUND(ISNULL(@DRAFTINVOICELIMIT, 0), 0), 1), '.00', '') AS [DRAFTINVOICELIMIT], ISNULL(@TIMEDAYBOOKLIMITHR, '00:00') AS [TIMEDAYBOOKLIMITHR], ISNULL(@TIMEFORWEEKHR, '00:00') AS [TIMEFORWEEKHR], ISNULL(@TIMEFORMONTHHR, '00:00') AS [TIMEFORMONTHHR], ISNULL(@TIMEFORYEARHR, '00:00') AS [TIMEFORYEARHR], ISNULL(@NCTIMEFORMONTHHR, '00:00') AS [NCTIMEFORMONTHHR], ISNULL(@NCTIMEFORYEARHR, '00:00') AS [NCTIMEFORYEARHR], ISNULL(@TIMEYTDHR, '00:00') AS [TIMEYTDHR] SET NOCOUNT OFF END GO IF OBJECT_ID(N'KEYHM_DeleteAction',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_DeleteAction] GO CREATE PROCEDURE [dbo].[KEYHM_DeleteAction] ( @ACTIONID INT, @HANDLERCODE VARCHAR(10) ) /******************************************************************************************************* * This procedure is used Delete an Action from the Case Diary. * * * * Stored Procedure Name : [dbo].[KEYHM_DeleteAction] * * Copied from : [dbo].[ky_NETAADelete] * * * * Modification History : * * 2019-04-22 Vinodhan K Created * 2021-03-17 Sadiq Added condition to check Config settings @AllowUserToDeleteAction from * Settings Table and returning Error if @AllowUserToDeleteAction is false* * 2021-03-18 Sadiq Need to delete Action if user cancels delete action * * 2022-02-23 Arun Log the diary attachment delete * * 2024-03-13 Pino Carafa Handle the absence of triggers * * Please use the following Aliases for the [deletedrow]: * * [dbo].[diary] - [Diary] * * [dbo].[DiaryAttachments] - [DiaryAttachments] * * [dbo].[DiaryDelegations] - [DiaryDelegations] * * 2024-03-13 Pino Carafa This procedure appears to have been left behind after modifications to * * the corresponding KAAS procedure. I will make sure that ALL the code * * is present in the new KEYHM_DeleteAction2 procedure, and that this one * * calls it with 0 in the additional parameter * * Please review calls to this procedure in Mobile. * * * *******************************************************************************************************/ AS BEGIN EXEC [dbo].[KEYHM_DeleteAction2] @ACTIONID = @ACTIONID, @HANDLERCODE = @HANDLERCODE, @IsAddAction = 0 END GO IF OBJECT_ID(N'KEYHM_DeleteAction2',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_DeleteAction2] GO CREATE PROCEDURE [dbo].[KEYHM_DeleteAction2] ( @ACTIONID INT, @HANDLERCODE VARCHAR(10), @IsAddAction BIT ) /******************************************************************************************************* * This procedure is used Delete an Action from the Case Diary. * * * * Stored Procedure Name : [dbo].[KAAS_DeleteAction2] * * Copied from : [dbo].[ky_NETAADelete] * * * * Modification History : * * 2019-04-22 Vinodhan K Created * 2021-03-17 Sadiq Added condition to check Config settings @AllowUserToDeleteAction from * Settings Table and returning Error if @AllowUserToDeleteAction is false* * 2021-03-18 Sadiq Need to delete Action if user cancels delete action * * 2022-02-23 Arun Log the diary attachment delete * * 2024-03-13 Pino Carafa Handle the absence of triggers * * Please use the following Aliases for the [deletedrow]: * * [dbo].[diary] - [Diary] * * [dbo].[DiaryAttachments] - [DiaryAttachments] * * [dbo].[DiaryDelegations] - [DiaryDelegations] * *******************************************************************************************************/ AS BEGIN DECLARE @Error VARCHAR(200) DECLARE @NCOMMAND nvarchar(MAX) DECLARE @AllowUserToDeleteOthersAction BIT; DECLARE @AllowUserToDeleteAction BIT; DECLARE @Loginame NVARCHAR(128) SELECT @Loginame = RTRIM([P].[loginame]) FROM sys.sysprocesses [P] WHERE [P].[spid] = @@SPID --2024-03-13 SET NOCOUNT ON IF @IsAddAction = 0 BEGIN SELECT @AllowUserToDeleteAction = (CASE WHEN [SET].[KeyValue] = '1' THEN 1 ELSE 0 END) FROM [dbo].[Settings] [SET] WHERE [SET].[KeyName] = 'AllowToDeleteAction' SET @AllowUserToDeleteAction = ISNULL(@AllowUserToDeleteAction, 0);-- If null '0', So that, Settings screen data and functionality is matched IF @AllowUserToDeleteAction = 0 BEGIN SELECT 'you are not allowed to delete this action.!' RETURN; END END SELECT @AllowUserToDeleteOthersAction = (CASE WHEN [SET].[KeyValue] = '1' THEN 1 ELSE 0 END) FROM [dbo].[Settings] [SET] WHERE [SET].[KeyName] = 'AllowToDeleteOtherAction' SET @AllowUserToDeleteOthersAction = ISNULL(@AllowUserToDeleteOthersAction, 0);-- If null '0', So that, Settings screen data and functionality is matched IF @AllowUserToDeleteOthersAction = 0 BEGIN IF NOT EXISTS(SELECT TOP 1 1 FROM diary WHERE ACTIONID = @ACTIONID AND FNCODE = @HANDLERCODE) BEGIN SELECT 'You are not allowed to delete other user action!' RETURN; END END IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = N' IF EXISTS (SELECT TOP 1 1 FROM [dbo].[BillHeader] BH WHERE BH.[RELEASED] = ''Y'' AND BH.[BILLNO] <> 0 AND BH.[ACTIONID] = ' + CONVERT(NVARCHAR(10), @ActionID) + N') BEGIN SET @Error = ''You cannot delete a Draft Bill Action.'' END ELSE BEGIN SET @Error = NULL END' EXECUTE sp_executesql @NCOMMAND, N'@ActionID INT,@Error VARCHAR(200) OUTPUT', @ActionID = @ActionID, @Error=@Error OUTPUT END ELSE BEGIN SET @NCOMMAND = N' IF EXISTS (SELECT TOP 1 1 FROM [dbo].[diary] DIA INNER JOIN [dbo].[Billhead] BH ON BH.[BillingID] = DIA.[DRAFTBILLNO] AND BH.[InvoiceNo] <> 0 WHERE DIA.[ACTIONID] = ' + CONVERT(NVARCHAR(10), @ActionID) + N') BEGIN SET @Error = ''You cannot delete a Draft Bill Action.'' END ELSE BEGIN SET @Error = NULL END' EXECUTE sp_executesql @NCOMMAND, N'@ActionID INT,@Error VARCHAR(200) OUTPUT', @ActionID = @ActionID, @Error=@Error OUTPUT END IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = N' IF EXISTS (SELECT TOP 1 1 FROM [dbo].[diary] DIA INNER JOIN [dbo].[ChequeRequisitionHeader] CRH ON CRH.[REQNO] = DIA.[CHEQUEREQNO] AND CRH.[REQNO] <> 0 AND CRH.[Status] = 2 WHERE DIA.[ACTIONID] = ' + CONVERT(NVARCHAR(10), @ActionID) + N') BEGIN SET @Error = ''You cannot delete an approved Cheque.'' END ELSE BEGIN SET @Error = NULL END' EXECUTE sp_executesql @NCOMMAND, N'@ActionID INT,@Error VARCHAR(200) OUTPUT', @ActionID = @ActionID, @Error=@Error OUTPUT END ELSE BEGIN SET @NCOMMAND = N' IF EXISTS (SELECT TOP 1 1 FROM [dbo].[diary] DIA INNER JOIN [dbo].[ChequeRequisitions] CRQ ON CRQ.[RecordID] = DIA.[CHEQUEREQNO] AND CRQ.[RecordID] <> 0 AND CRQ.[ChequeStatus] = ''Approved'' WHERE DIA.[ACTIONID] = ' + CONVERT(NVARCHAR(10), @ActionID) + N') BEGIN SET @Error = ''You cannot delete an approved Cheque.'' END ELSE BEGIN SET @Error = NULL END' EXECUTE sp_executesql @NCOMMAND, N'@ActionID INT,@Error VARCHAR(200) OUTPUT', @ActionID = @ActionID, @Error=@Error OUTPUT END IF (@Error IS NULL) BEGIN IF EXISTS(SELECT TOP 1 1 FROM [dbo].[diary] DIA WHERE DIA.[STATUS] = 1 AND DIA.[ACTIONID] = @ACTIONID) BEGIN SET @Error = 'You cannot delete ANY Complete Action' END END IF (@Error IS NULL) BEGIN IF EXISTS(SELECT TOP 1 1 FROM [dbo].[diary] DIA WHERE DIA.[ACTIONTYPE] = 'U' AND DIA.[ACTIONID] = @ACTIONID) BEGIN SET @Error = 'You cannot delete Undertakings Action.' END END IF (@Error IS NULL) BEGIN IF EXISTS(SELECT TOP 1 1 FROM [dbo].[diary] DIA WHERE DIA.[ACTIONTYPE] = 'S' AND DIA.[ACTIONID] = @ACTIONID) BEGIN SET @Error = 'You cannot delete a Statute of Limitations Action.' END END IF (@Error IS NULL) BEGIN IF EXISTS(SELECT TOP 1 1 FROM [dbo].[diary] DIA WHERE DIA.[ACTIONTYPE] = 'C' AND [ACTIONID] = @ACTIONID) BEGIN SET @Error = 'You cannot delete a Critical Date Action' END END IF (@Error IS NULL) BEGIN IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = N' IF EXISTS (SELECT TOP 1 1 FROM [dbo].[diary] DIA INNER JOIN [dbo].[BillHeader] BH ON BH.[BILLNO] <> 0 AND BH.[DRAFTNO] = DIA.[DRAFTBILLNO] WHERE DIA.[ACTIONID] = ' + CONVERT(NVARCHAR(10), @ActionID) + N') BEGIN SET @Error = ''You cannot delete a Draft Bill Action.'' END ELSE BEGIN SET @Error = NULL END' END END IF (@Error IS NULL) BEGIN IF EXISTS(SELECT 1 FROM [dbo].[diary] DIA INNER JOIN [dbo].[TemplateActions] TAC ON TAC.[ACTIONCODE] = DIA.[ACTIONCODE] AND TAC.[RequiredAction] = 'Y' WHERE DIA.[ACTIONID] = @ACTIONID) BEGIN SET @Error = 'This is a required action for this case and cannot be removed.' END END IF (@Error IS NULL) BEGIN --Before delete, log the entry in DiaryAttachmentAccess --Step1: Taking Diary attachment track reference id DECLARE @DeletedLog TABLE ( TrackReference INT ) INSERT INTO @DeletedLog SELECT [DAT].TrackReference FROM [dbo].[DiaryAttachments] DAT WHERE DAT.[DiaryID] = @ACTIONID --Step2: Delete entry from Diary Attachment -- 2024-03-13 START (1) IF NOT EXISTS (SELECT TOP 1 1 FROM sys.objects [SO] WHERE [SO].[name] = 'ky_NETTRDeleteDiaryAttachment' AND [SO].[type] = 'TR') BEGIN INSERT INTO [dbo].[DiaryAttachmentDeletionLog] ([on], [by], [Login], [HandlerCode], [ActionID], [TrackReference], [deletedrow]) SELECT GetDate(), APP_NAME(), @Loginame, @HANDLERCODE, [DEL].[DiaryID], [DEL].[TrackReference], (SELECT * FROM [dbo].[DiaryAttachments] [DiaryAttachments] WHERE [DiaryAttachments].[TrackReference] = [DEL].[TrackReference] FOR XML AUTO) AS [deletedrow] FROM [dbo].[DiaryAttachments] [DEL] WHERE [DEL].[DiaryID] = @ACTIONID INSERT INTO [dbo].[DiaryAttachmentAccess] ([TrackReference], [Handler], [Comment]) SELECT [DEL].[TrackReference], @HANDLERCODE, 'Deleted' FROM [dbo].[DiaryAttachments] [DEL] WHERE [DEL].[DiaryID] = @ACTIONID END -- 2024-03-13 END (1) DELETE DAT FROM [dbo].[DiaryAttachments] DAT WHERE DAT.[DiaryID] = @ACTIONID --Step3: Update Diary attachment entries -2024-03-13 no.... --UPDATE DAT --SET [DAT].Handler = @HANDLERCODE -- FROM [dbo].[DiaryAttachmentAccess] [DAT] -- WHERE [DAT].[Comment] = 'Deleted' -- AND [DAT].TrackReference IN --( --SELECT TrackReference FROM @DeletedLog --) -- 2024-03-13 START (2) IF NOT EXISTS (SELECT TOP 1 1 FROM sys.objects [SO] WHERE [SO].[name] = 'ky_NETTRDeleteDiaryDelegations' AND [SO].[type] = 'TR') BEGIN INSERT INTO [dbo].[DiaryDelegationDeletionLog] ([on], [by], [Login], [HandlerCode], [deletedrow], [ActionID], [AssignNo]) SELECT GetDate(), APP_NAME(), @Loginame, @HANDLERCODE, (SELECT * FROM [dbo].[DiaryDelegations] [DiaryDelegations] WHERE [DiaryDelegations].[AssignNo] = [DEL].[AssignNo] FOR XML AUTO) AS [deletedrow], [DEL].[ActionID], [DEL].[AssignNo] FROM [dbo].[DiaryDelegations] [DEL] WHERE [DEL].[ACTIONID] = @ACTIONID END -- 2024-03-13 END (2) DELETE [DEL] FROM [dbo].[DiaryDelegations] [DEL] WHERE [DEL].[ACTIONID] = @ACTIONID DELETE DLK FROM [dbo].[DiaryLinks] DLK WHERE DLK.[ACTIONID] = @ACTIONID DELETE DTM FROM [dbo].[DiaryTemp] DTM WHERE DTM.[ACTIONID] = @ACTIONID DELETE OLA FROM [dbo].[OLApptXref] OLA WHERE OLA.[ACTIONID] = @ACTIONID DECLARE @COMMAND VARCHAR(MAX) DECLARE @DRAFTBILLNO INT SELECT @DRAFTBILLNO = DIA.[DRAFTBILLNO] FROM [dbo].[diary] DIA WHERE DIA.[ACTIONID] = @ACTIONID IF ISNULL(@DRAFTBILLNO, 0) > 0 BEGIN DECLARE @SQL NVARCHAR(MAX) SET @SQL = 'EXEC [dbo].[KAAS_DeleteDraftBillOnly{SAM4}] ' + CONVERT(VARCHAR(10), @DRAFTBILLNO) + ', ''' + @HANDLERCODE + '''' IF [dbo].[ISSAM4]() = 0 BEGIN SET @SQL = REPLACE(@SQL, '{SAM4}', '') END ELSE BEGIN SET @SQL = REPLACE(@SQL, '{SAM4}', 'SAM4') END EXEC sp_executesql @SQL END IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = 'ChequeRequisitions' AND SO.[type] = 'U') BEGIN SET @COMMAND = ' DELETE CHRQ FROM [dbo].[diary] DIA INNER JOIN [dbo].[ChequeRequisitions] CHRQ ON CHRQ.[RecordId] = DIA.[CHEQUEREQNO] WHERE DIA.[ACTIONID] = ' + CONVERT(VARCHAR(10), @ACTIONID) EXEC (@COMMAND) END IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = 'ChequeRequisitionDetail' AND SO.[type] = 'U') BEGIN SET @COMMAND = ' DELETE CHRD FROM [dbo].[diary] DIA INNER JOIN [dbo].[ChequeRequisitionDetail] CHRD ON CHRD.[REQNO] = DIA.[CHEQUEREQNO] WHERE DIA.[ACTIONID] = ' + CONVERT(VARCHAR(10), @ACTIONID) EXEC (@COMMAND) END IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = 'ChequeRequisitionHeader' AND SO.[type] = 'U') BEGIN SET @COMMAND = ' DELETE CHRH FROM [dbo].[diary] DIA INNER JOIN [dbo].[ChequeRequisitionHeader] CHRH ON CHRH.[REQNO] = DIA.[CHEQUEREQNO] WHERE DIA.[ACTIONID] = ' + CONVERT(VARCHAR(10), @ACTIONID) EXEC (@COMMAND) END IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = 'ChequeRequisitionLog' AND SO.[type] = 'U') BEGIN SET @COMMAND = ' DELETE CRL FROM [dbo].[diary] AS DIA INNER JOIN [ChequeRequisitionLog] AS CRL ON CRL.[ID] = DIA.[CHEQUEREQNO] WHERE DIA.[ACTIONID] = ' + CONVERT(VARCHAR(10), @ACTIONID) EXEC (@COMMAND) END EXEC [dbo].[KAAS_UpdateActionAlarm] @ACTIONID -- 2024-03-13 START (3) IF NOT EXISTS (SELECT TOP 1 1 FROM sys.objects [SO] WHERE [SO].[name] = 'ky_NETTRDeleteDiary' AND [SO].[type] = 'TR') BEGIN INSERT INTO [dbo].[DiaryDeletionLog] ([on], [by], [Login], [HandlerCode], [ActionId], [CASECODE], [deletedrow]) SELECT GetDate(), APP_NAME(), @Loginame, @HANDLERCODE, [DEL].[ActionID], [DEL].[CASECODE], (SELECT * FROM [dbo].[diary] [Diary] WHERE [Diary].[ActionID] = [DEL].[ActionID] FOR XML AUTO) AS [deletedrow] FROM [dbo].[diary] [DEL] WHERE [DEL].[ACTIONID] = @ACTIONID END -- 2024-03-13 END (3) DELETE DIA FROM [dbo].[diary] DIA WHERE DIA.[ACTIONID] = @ACTIONID SELECT 'True' END ELSE BEGIN SELECT @Error END SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_DeleteAttachments' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_DeleteAttachments] END GO CREATE PROCEDURE [dbo].[KEYHM_DeleteAttachments] (@TRACKREFERENCE INT) AS /***************************************************************************** Stored Procedure Name : KEYHM_DeleteAttachments Copied From : [ky_NETAADeleteAttachments] Description: This procedure is used Delete the Contact for ClientCase Page. Imported into Framework for backward compatibility 22MAR2016 Sridharan KEYD-3422Changes to the Firm Undertakings Grid and Form * 2019-06-11 ????? Created KAAS_DeleteAttachments * 2021-10-06 Arun V Set Context info * 2024-03-13 Pino Carafa this procedure is obsolete and needs to be replaced with a call to [KEYHM_DeleteAttachments2], passing in the current handler *****************************************************************************/ BEGIN --2024-03-13 EXEC [dbo].[KEYHM_DeleteAttachments2] @TRACKREFERENCE = @TRACKREFERENCE, @Handler = NULL END GO IF OBJECT_ID(N'KEYHM_DeleteAttachments2', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_DeleteAttachments2] END GO CREATE PROCEDURE [dbo].[KEYHM_DeleteAttachments2] (@TRACKREFERENCE INT, @Handler VARCHAR(10)) AS /***************************************************************************** Stored Procedure Name : KEYHM_DeleteAttachments2 Copied From : [KAAS_DeleteAttachments] supersedes KEYHM_DeleteAttachments, which should no longer be used Description: This procedure is used to delete diary attachments Imported into Framework for backward compatibility 22MAR2016 Sridharan KEYD-3422Changes to the Firm Undertakings Grid and Form * 2019-06-11 ????? Created KAAS_DeleteAttachments * 2021-10-06 Arun V Set Context info * 2024-03-13 Pino Carafa use Handler Parameter * 2024-10-18 Ponni M Isexist condition check changed *****************************************************************************/ BEGIN SET NOCOUNT ON DECLARE @ActionID INT DECLARE @Description VARCHAR(500) DECLARE @Loginame NVARCHAR(128) SELECT @Loginame = RTRIM([P].[loginame]) FROM sys.sysprocesses [P] WHERE [P].[spid] = @@SPID --2024-03-13 SELECT @ActionID = [DAT].[DiaryID], @Description = (SELECT 'Attachment Deleted: ' + CHAR(13) + CHAR(10) + 'Date: ' + CONVERT(VARCHAR(12),CONVERT(DATETIME, [DAT].[DATEENTERED]),106) + CHAR(13) + CHAR(10) + 'Document Name: ' + [DAT].[DOCUMENT] + CHAR(13) + CHAR(10) + 'Document Class: ' + [DAT].[DOCCLASS] + CHAR(13) + CHAR(10)) FROM [dbo].[DiaryAttachments] [DAT] WHERE [DAT].[TrackReference] = @TRACKREFERENCE DECLARE @UserName VARCHAR(30) DECLARE @HandlerCode VARCHAR(10) IF (@Handler IS NOT NULL) BEGIN --Handler needs to be passed in here ... SELECT @UserName = [HN].[NAME], @HandlerCode = [HN].[CODE] FROM [dbo].[HandlerNames] [HN] WHERE [HN].[CODE] = @Handler END IF (@HandlerCode IS NULL) BEGIN -- ... but if the Obsolete version of this SP is still used, it won't be so fall back to old mechanism SELECT @UserName = [HN].[NAME], @HandlerCode = [HN].[CODE] FROM [dbo].[HandlerNames] [HN] WHERE [HN].[CODE] = @Handler SELECT @UserName = [HAN].[NAME], @HandlerCode = [HAN].[CODE] FROM [Diary] [DIA] LEFT OUTER JOIN [dbo].[Handlers] [HAN] ON [HAN].[CODE] = [DIA].[FNCODE] WHERE [ACTIONID] = @ActionID END IF EXISTS (SELECT TOP 1 1 FROM sys.objects [SO] WHERE [SO].[name] = 'ky_NETTRDeleteDiaryAttachment' AND [SO].[type] = 'TR') BEGIN --As long as this trigger still exists we need to keep setting the CONTEXT_INFO DECLARE @HandlerBin VARBINARY(128) SET @HandlerBin = CONVERT(VARBINARY(128), @HandlerCode) SET CONTEXT_INFO @HandlerBin END IF (@ActionID IS NOT NULL) BEGIN IF EXISTS(SELECT TOP 1 1 FROM [dbo].[diary] [DIA] WHERE [DIA].[ACTIONID] = @ActionID AND [DIA].[ACTIONTYPE] = 'U') BEGIN INSERT INTO [dbo].[UndertakingLog] ([UndertakingID], [FieldChanges], [FromValue], [ToValue], [ByWho], [ModifiedDate]) VALUES(@ActionID, 'Documents Deleted', '', @Description, @UserName, CONVERT(DATETIME,GETDATE(),112)) END -- 2024-03-13 START (1) IF NOT EXISTS (SELECT TOP 1 1 FROM sys.objects [SO] WHERE [SO].[name] = 'ky_NETTRDeleteDiaryAttachment' AND [SO].[type] = 'TR') BEGIN INSERT INTO [dbo].[DiaryAttachmentDeletionLog] ([on], [by], [Login], [HandlerCode], [ActionID], [TrackReference], [deletedrow]) SELECT GetDate(), APP_NAME(), @Loginame, @HANDLERCODE, [DEL].[DiaryID], [DEL].[TrackReference], (SELECT * FROM [dbo].[DiaryAttachments] [DiaryAttachments] WHERE [DiaryAttachments].[TrackReference] = [DEL].[TrackReference] FOR XML AUTO) AS [deletedrow] FROM [dbo].[DiaryAttachments] [DEL] WHERE [DEL].[DiaryID] = @ACTIONID INSERT INTO [dbo].[DiaryAttachmentAccess] ([TrackReference], [Handler], [Comment]) SELECT [DEL].[TrackReference], @HANDLERCODE, 'Deleted' FROM [dbo].[DiaryAttachments] [DEL] WHERE [DEL].[DiaryID] = @ACTIONID END -- 2024-03-13 END (1) DELETE [DAT] FROM [dbo].[DiaryAttachments] [DAT] WHERE [DAT].[TrackReference] = @TRACKREFERENCE END SET NOCOUNT OFF END GO IF [dbo].[ISSAM4]() = 0 BEGIN EXEC (' IF OBJECT_ID(N''KEYHM_DeleteDraftBillOnly'',N''P'') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_DeleteDraftBillOnly] END') EXEC (' CREATE PROCEDURE [dbo].[KEYHM_DeleteDraftBillOnly] (@ID INT, @HANDLERCODE VARCHAR(10)) /*************************************************************************************** * * * Stored Procedure Name : KEYHM_DeleteDraftBillOnly * * Copied From : [ky_NETSPDeleteDraftBillOnly] * * * * Description: This procedure is used to delete the Bill related details * * for a draft bill. This procedure can be called from: * * ky_NETAADelete * * ky_NETSPDeleteDraftBill * * The above procedures take care of the associated Action as * * well as the Bill information. This procedure only looks at * * the Bill information, and assumes that the Action is taken * * care of. * * * * Do NOT call this procedure on its own. * * * * Modification History: 2018-08-23 John Split this proc in two: SAM3 and SAM4 * * 2020-02-05 Vinodhan Created KEYHM_DeleteDraftBillOnly * 2020-03-13 Rajesh P from ky_NETSPDeleteDraftBillOnly * * * *************************************************************************************/ AS BEGIN DECLARE @xml XML SET @xml = (SELECT BH.[MATTER], BH.[DRAFTNO], BH.[DATE], BH.[USER], BH.[ADDRESSEE], BH.[INVCR], BH.[BILLNO], BH.[OURREF], BH.[YOURREF], BH.[TOTAL], BH.[FEES], BH.[OUTLAY], BH.[TOTALVAT], BH.[FEEVATCODE], BH.[NET0], BH.[RATE1], BH.[NETRATE1], BH.[VATRATE1], BH.[RATE2], BH.[NETRATE2], BH.[VATRATE2], BH.[RATE3], BH.[NETRATE3], BH.[VATRATE3], BH.[RELEASED], BH.[RETURNREASON], BH.[MATTERDESCRIPTION], BH.[TRANSFER], BH.[WRITEDOWN], BH.[WRITEBACKHOURS], BH.[WRITEBACKVALUE], BH.[ACTIONID], BH.[OPENINVOICE], BH.[BATCHNO], BH.[FEMISCTOTAL], BH.[CreditInvoiceNo], BH.[ManualFeeBreakDown], BH.[BillSent], BH.[DefaultBillLayoutReportID] FROM [dbo].[BillHeader] BH WHERE BH.[DRAFTNO] = @ID FOR XML AUTO) INSERT INTO [dbo].[BillLogging] ([DATE], [Handler], [DRAFTNO], [Action]) SELECT GETDATE(), @HANDLERCODE, BH.[DRAFTNO], ''Deleted FROM Action: '' + CONVERT(VARCHAR(MAX), @xml) FROM [dbo].[BillHeader] BH WHERE BH.[DRAFTNO] = @ID EXEC [dbo].[KEYHM_BGDelete] @ID, 0 DELETE BIH FROM [dbo].[BillHeader] AS BIH WHERE BIH.[DRAFTNO] = @ID DELETE BID FROM [dbo].[BillDetails] AS BID WHERE BID.[DRAFTNO] = @ID DELETE BFBD FROM [dbo].[BillFeeBreakDown] AS BFBD WHERE BFBD.[DRAFTNO] = @ID END') END ELSE BEGIN EXEC (' IF OBJECT_ID(N''KEYHM_DeleteDraftBillOnly'',N''P'') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_DeleteDraftBillOnly] END') EXEC (' CREATE PROCEDURE [dbo].[KEYHM_DeleteDraftBillOnly] (@ID INT, @HANDLERCODE VARCHAR(10)) /***************************************************************************** * * [ky_NETSPDeleteDraftBillOnlySAM4] * This procedure is used to delete the Bill related details * for a draft bill. This procedure can be called from: * KAAS_DeleteAction * KAAS_DeleteDraftBill * The above procedures take care of the associated Action as * well as the Bill information. This procedure only looks at * the Bill information, and assumes that the Action is taken * care of. * * Do NOT call this procedure on its own. * * Suitable for SAM4 only * * 2018-08-23 John Ginnane Created * 2018-11-23 John Ginnane KEYD-5577 - Fixed time not being unmarked as "draft in progress" * 2019-10-22 John Ginnane KEYD-6161 - Added document reproduction support * * Modification History : * * 2020-03-13 Rajesh P from ky_NETSPDeleteDraftBillOnly *****************************************************************************/ AS BEGIN DECLARE @xml XML SET @xml = (SELECT BH.[BillingID], BH.[MatterCode], BH.[BillDescription], BH.[Addressee], BH.[FeCode], BH.[InvoiceTo], BH.[Address], BH.[Ref], BH.[Type], BH.[OpenInvoice], BH.[BillDate], BH.[TimeWriteDownDate], BH.[TransferToPay], BH.[Message], BH.[InvoiceNo], BH.[CreateBy], BH.[EntryDate], BH.[BillStatus], BH.[ReleasedBy], BH.[ReleasedDate], BH.[AccountsClearedBy], BH.[AccountsClearedDate], BH.[Billlayout], BH.[Branch], BH.[CreditInvoiceNo], BH.[ProForma], BH.[DefaultBillLayoutReportID] FROM [dbo].[Billhead] BH WHERE BH.[BillingID] = @ID FOR XML AUTO) INSERT INTO [dbo].[BillLogging] ([DATE], [Handler], [DRAFTNO], [Action]) SELECT GETDATE(), @HANDLERCODE, BH.[BillingID], ''Deleted FROM Action: '' + CONVERT(VARCHAR(MAX), @xml) FROM [dbo].[Billhead] BH WHERE BH.[BillingID] = @ID EXEC [dbo].[KEYHM_BGDelete] @ID DELETE FROM [dbo].[Billhead] WHERE [BillingID] = @ID DELETE FROM [dbo].[BillDetail] WHERE [BillID] = @ID DELETE FROM [dbo].[BillingGuideFormated] WHERE [BillGuideNo] = @ID DELETE FROM [dbo].[BillingGuide] WHERE [BillingNo] = @ID DELETE FROM [dbo].[BillBreakdown] WHERE [BillingNo] = @ID DELETE FROM [dbo].[BillingLog] WHERE [BillingId] = @ID DELETE FROM [dbo].[BillCompMatter] WHERE [BillingNo] = @ID UPDATE TIE SET TIE.[BILLED] = 0 FROM [dbo].[TimeEntry] AS TIE WHERE TIE.[BILLED] = @ID * - 1 AND @ID <> 0 UPDATE TRN SET TRN.[DraftNo] = 0 FROM [dbo].[Transactions] AS TRN WHERE TRN.[DraftNo] = @ID * -1 AND @ID <> 0 UPDATE [PJT] SET [PJT].[InvoiceNo] = 0 FROM [dbo].[PrintJobTracker] AS [PJT] WHERE [PJT].[InvoiceNo] = @ID * -1 AND @ID <> 0 SET NOCOUNT OFF END') END GO IF [dbo].[ISSAM4]() = 1 BEGIN EXEC (' IF OBJECT_ID(N''KEYHM_DeleteDraftBillOnlySAM4'',N''P'') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_DeleteDraftBillOnlySAM4] END') EXEC (' CREATE PROCEDURE [dbo].[KEYHM_DeleteDraftBillOnlySAM4] (@ID INT, @HANDLERCODE VARCHAR(10)) /******************************************************************************************************* * This procedure is used to delete the Bill related details for a draft bill. * * This procedure can be called from: * * KEYHM_DeleteAction * * KEYHM_DeleteDraftBillSAM4 * * The above procedures take care of the associated Action as well as the Bill information. * * This procedure only looks at the Bill information, and assumes that the Action is taken care of. * * * * Do NOT call this procedure on its own. * * Suitable for SAM4 only * * * * Stored Procedure Name : [dbo].[KEYHM_DeleteDraftBillOnlySAM4] * * Copied from : [dbo].[ky_NETSPDeleteDraftBillOnlySAM4] * * * * Modification History : * * 2019-04-22 Vinodhan K Created * *******************************************************************************************************/ AS BEGIN DECLARE @xml XML SET @xml = (SELECT BH.[BillingID], BH.[MatterCode], BH.[BillDescription], BH.[Addressee], BH.[FeCode], BH.[InvoiceTo], BH.[Address], BH.[Ref], BH.[Type], BH.[OpenInvoice], BH.[BillDate], BH.[TimeWriteDownDate], BH.[TransferToPay], BH.[Message], BH.[InvoiceNo], BH.[CreateBy], BH.[EntryDate], BH.[BillStatus], BH.[ReleasedBy], BH.[ReleasedDate], BH.[AccountsClearedBy], BH.[AccountsClearedDate], BH.[Billlayout], BH.[Branch], BH.[CreditInvoiceNo], BH.[ProForma], BH.[DefaultBillLayoutReportID] FROM [dbo].[Billhead] BH WHERE BH.[BillingID] = @ID FOR XML AUTO) INSERT INTO [dbo].[BillLogging] ([DATE], [Handler], [DRAFTNO], [Action]) SELECT GETDATE(), @HANDLERCODE, BH.[BillingID], ''Deleted FROM Action: '' + CONVERT(VARCHAR(MAX), @xml) FROM [dbo].[Billhead] BH WHERE BH.[BillingID] = @ID EXEC [dbo].[ky_BGDeleteSAM4] @ID DELETE FROM [dbo].[Billhead] WHERE [BillingID] = @ID DELETE FROM [dbo].[BillDetail] WHERE [BillID] = @ID DELETE FROM [dbo].[BillingGuideFormated] WHERE [BillGuideNo] = @ID DELETE FROM [dbo].[BillingGuide] WHERE [BillingNo] = @ID DELETE FROM [dbo].[BillBreakdown] WHERE [BillingNo] = @ID DELETE FROM [dbo].[BillingLog] WHERE [BillingId] = @ID DELETE FROM [dbo].[BillCompMatter] WHERE [BillingNo] = @ID UPDATE TIE SET TIE.[BILLED] = 0 FROM [dbo].[TimeEntry] AS TIE WHERE TIE.[BILLED] = @ID * - 1 UPDATE TRN SET TRN.[DraftNo] = 0 FROM [dbo].[Transactions] AS TRN WHERE TRN.[DraftNo] = @ID * -1 SET NOCOUNT OFF END') END GO IF OBJECT_ID(N'[KEYHM_DeleteIntellisense]',N'P')IS NOT NULL DROP PROCEDURE [KEYHM_DeleteIntellisense] GO CREATE PROCEDURE [KEYHM_DeleteIntellisense] ( @Handler VARCHAR(6), @Id INT ) AS /******************************************************************************************************* * This procedure is used To Delete the Intellisense. * * * * Stored Procedure Name : [dbo].[KEYHM_DeleteIntellisense] * * Copied from : [dbo].[ky_NETDeleteIntellisense] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON DELETE FROM Intellisense WHERE Id = @Id SELECT RTRIM(Id) AS Id, RTRIM(Handler) AS Handler, RTRIM(Narrative) AS Narrative FROM Intellisense WHERE Handler = @Handler ORDER by Narrative SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_DeleteMyDayBook' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_DeleteMyDayBook] END GO CREATE PROCEDURE [dbo].[KEYHM_DeleteMyDayBook] @RecordID INT AS /******************************************************************************************************* * Delete a time book from [dbo].[Timedaybook] for the selected record. * * * * Stored Procedure Name : [dbo].[KEYHM_DeleteMyDayBook] * * Copied from : [dbo].[ky_NETDeleteMyDayBook] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN DELETE Timedaybook WHERE RECORDID=@RecordID END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_DuplicateDocFolderTree' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_DuplicateDocFolderTree] END GO CREATE PROCEDURE [dbo].[KEYHM_DuplicateDocFolderTree] (@originalid INT) AS /******************************************************************************************************* * Duplicates a folder tree to a new root * * * * Stored Procedure Name : [dbo].[KEYHM_DuplicateDocFolderTree] * * Copied from : [dbo].[ky_NETSPDuplicateDocFolderTree] * * * * Modification History: * * 2019-04-23 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @fromid INT SELECT TOP 1 @fromid = [DF].[id] FROM [dbo].[DocFolders] [DF] WHERE [DF].[id] = @originalid AND [DF].[parent] IS NULL DECLARE @MAX INT DECLARE @data TABLE ([seq] INT IDENTITY(1, 1) NOT NULL PRIMARY KEY, [id] INT NOT NULL, [parent] INT NOT NULL, [foldername] VARCHAR(500) NOT NULL, [foldericon] INT NOT NULL, [newfolder] BIT NOT NULL, [deletefolder] BIT NOT NULL) IF (@fromid IS NOT NULL) BEGIN INSERT INTO @data ([id], [parent], [foldername], [foldericon], [newfolder], [deletefolder]) SELECT SRC.[id], SRC.[parent], SRC.[foldername], SRC.[foldericon], 1, 0 FROM [dbo].[KEYHM_TF_GetDocFolders3](@fromid, 1, 1) SRC END SELECT @MAX = ISNULL(MAX([DF].[id]), 0) FROM [dbo].[DocFolders] [DF] DECLARE @new TABLE ([seq] INT IDENTITY(1, 1) NOT NULL PRIMARY KEY, [oldid] INT NOT NULL UNIQUE NONCLUSTERED, [newid] INT NOT NULL) INSERT INTO @new ([oldid], [newid]) SELECT [DT].[id], 0 FROM @data [DT] WHERE [DT].[newfolder] = 1 UPDATE [nw] SET [nw].[newid] = @MAX + [nw].[seq] FROM @new [NW] SET IDENTITY_INSERT [dbo].[DocFolders] ON INSERT INTO [dbo].[DocFolders] ([id], [foldername], [parent], [foldericon]) SELECT [nw].[newid] AS [id], [dt].[foldername] AS [foldername], CASE ISNULL([pr].[newid], 0) WHEN 0 THEN CASE ISNULL([dt].[parent], 0) WHEN 0 THEN NULL ELSE [dt].[parent] END ELSE [pr].[newid] END AS [parent], [dt].[foldericon] AS [foldericon] FROM @data [dt] INNER JOIN @new [nw] ON [nw].[oldid] = [dt].[id] LEFT OUTER JOIN @new [pr] ON [pr].[oldid] = [dt].[parent] SET IDENTITY_INSERT [dbo].[DocFolders] OFF SELECT @MAX = ISNULL(MAX([DF].[id]), 0) + 1 FROM [dbo].[DocFolders] [DF] DBCC CHECKIDENT('DocFolders', RESEED, @MAX) DELETE [DF] FROM @data [dt] INNER JOIN [dbo].[DocFolders] [DF] ON [DF].[id] = [dt].[id] WHERE [dt].[deletefolder] = 1 UPDATE [DF] SET [DF].[foldername] = [dt].[foldername], [DF].[parent] = CASE ISNULL([dt].[parent], 0) WHEN 0 THEN NULL ELSE [dt].[parent] END, [DF].[foldericon] = [dt].[foldericon] FROM @data [dt] INNER JOIN [dbo].[DocFolders] [DF] ON [DF].[id] = [dt].[id] WHERE [dt].[deletefolder] = 0 AND [dt].[newfolder] = 0 DECLARE @newid INT SELECT TOP 1 @newid = ISNULL([nw].[newid], dt.[id]) FROM @data [dt] LEFT OUTER JOIN @new [nw] ON [nw].[oldid] = [dt].[id] SELECT @newid [id] RETURN @newid END GO IF OBJECT_ID(N'KEYHM_FetchAccountSetting',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_FetchAccountSetting] GO CREATE PROCEDURE [dbo].[KEYHM_FetchAccountSetting] AS /******************************************************************************************************* * * * Stored Procedure Name : [dbo].[KEYHM_FetchAccountSetting] * * Copied from : NA * * * * Modification History : * * 2019-04-22 Vinodhan K Created * *******************************************************************************************************/ BEGIN SELECT NAME AS [Name] FROM [control] END GO IF OBJECT_ID(N'KEYHM_FetchAllDiary',N'P')IS NOT NULL DROP PROCEDURE [KEYHM_FetchAllDiary] GO CREATE PROCEDURE [KEYHM_FetchAllDiary] ( @ACTIONID INT, @LoggedInHandler VARCHAR(10) = NULL) /******************************************************************************************************* * This procedure is used to fetch diary item by actionid. * * * * Stored Procedure Name : [dbo].[KEYHM_FetchAllDiary] * * Copied from : NA * * * * Modification History : * * 2019-04-16 Vinodhan K Created * * 2020-05-04 Arun V DYSTARTTIME convertsion issue fixes, KEYHM-592 * ********************************************************************************************************/ AS BEGIN SET NOCOUNT ON SELECT RTRIM(ISNULL(D.[CASECODE], '')) AS CASECODE, dbo.KEYHM_FNConvertUTCDateToTargetTimeZone(D.[DATE], @LoggedInHandler) AS [DATE], RTRIM(ISNULL(D.[STATUS], 0)) AS [STATUS], RTRIM(ISNULL(D.[ACTIONCODE], '')) AS ACTIONCODE, RTRIM(ISNULL(D.[ACTIONSTATUS], '')) AS ACTIONSTATUS, RTRIM(ISNULL(D.[ACTIONTYPE], '')) AS ACTIONTYPE, RTRIM(ISNULL(D.[PROCESSTYPE], '')) AS PROCESSTYPE, RTRIM(ISNULL(D.[FNCODE], '')) AS FNCODE, RTRIM(ISNULL(D.[TEAMCODE], '')) AS TEAMCODE, CAST(RTRIM(LTRIM(CAST(D.[TEXT1] AS nVARCHAR(max)))) AS TEXT) as text3, ISNULL(D.[TEXT1], '') AS TEXT1, ISNULL(D.[TEXT2], '') AS TEXT2, RTRIM(ISNULL(D.[DELEGATEDFNR], '')) AS DELEGATEDFNR, RTRIM(ISNULL(D.[DELEGATEDDATE], '')) AS DELEGATEDDATE, RTRIM(ISNULL(D.[DELEGATEDBACKDATE], '')) AS DELEGATEDBACKDATE, RTRIM(ISNULL(D.[DEFERRED], '')) AS DEFERRED, dbo.KEYHM_FNConvertUTCDateToTargetTimeZone(D.[DUEDATE], @LoggedInHandler) AS [DUEDATE], RTRIM(ISNULL(D.[IMAGENO], '')) AS IMAGENO, RTRIM(ISNULL(D.[PUBLISH], '')) AS PUBLISH, --UTC time to LoggedIn Handler Time Zone , in case Logged In Handler is empty default to GMT CONVERT(VARCHAR(10),dbo.KEYHM_FNConvertUTCDateToTargetTimeZone( DATEADD(day, DATEDIFF(day, 0, GETDATE()), dbo.KEYHM_FN_ConvertClarionTimeToHHMM(D.[DYSTARTTIME])) , @LoggedInHandler), 108) AS [DYSTARTTIME], --UTC time to LoggedIn Handler Time Zone , in case Logged In Handler is empty default to GMT CONVERT(VARCHAR(10),dbo.KEYHM_FNConvertUTCDateToTargetTimeZone( DATEADD(day, DATEDIFF(day, 0, GETDATE()), dbo.KEYHM_FN_ConvertClarionTimeToHHMM(D.[DYENDTIME])), @LoggedInHandler), 108) AS [DYENDTIME], RTRIM(D.[DYSTARTTIME]) AS [DYSTARTTIME1], RTRIM(D.[DYENDTIME]) AS [DYENDTIME1], --CONVERT(VARCHAR, DATEADD(ms, 10 * (ISNULL(D.DYSTARTTIME, 0) - 0), CONVERT(VARCHAR, GETDATE(), 112)), 108) AS DYSTARTTIME, --CONVERT(VARCHAR, DATEADD(ms, 10 * (ISNULL(D.DYENDTIME, 0) - 0), CONVERT(VARCHAR, GETDATE(), 112)), 108) AS DYENDTIME, --stuff( right(CONVERT(VARCHAR, DATEADD(ms, 10 * (DYSTARTTIME - 1), CONVERT(VARCHAR, GETDATE(), 108)), 109), 15 ), 7, 7, ' ' ) AS DYSTARTTIME, --stuff( right(CONVERT(VARCHAR, DATEADD(ms, 10 * (DYENDTIME - 1), CONVERT(VARCHAR, getDate(), 108)), 109), 15 ), 7, 7, ' ' ) AS DYENDTIME, RTRIM(ISNULL(D.[DURATION], 0)) AS DURATION, RTRIM(ISNULL(D.[ACTIONID], 0)) AS ACTIONID, RTRIM(ISNULL(D.[ORGINALACTIONID], 0)) AS ORGINALACTIONID, RTRIM(ISNULL(D.[PRIORITY], '')) AS [PRIORITY], RTRIM(ISNULL(D.[HIGHLIGHTED], '')) AS HIGHLIGHTED, RTRIM(ISNULL(D.[MILESTEONETYPE], '')) AS MILESTONETYPE, RTRIM(ISNULL(D.[ATTACHMENTS], '')) AS ATTACHMENTS, RTRIM(ISNULL(D.[PROCESSSTATUS], 0)) AS PROCESSSTATUS, RTRIM(ISNULL(D.[WORKPROCESS], 0)) AS WORKPROCESS, RTRIM(ISNULL(D.[BILLABLE], 0)) AS BILLABLE, RTRIM(ISNULL(D.[BILLDESCRIPTION], '')) AS BILLDESCRIPTION, RTRIM(ISNULL(D.[EMAILADDRESS], '')) AS EMAILADDRESS, ISNULL(D.[ADDRESSTO], '') AS ADDRESSTO, ISNULL(D.[CCTo], '') AS CCTo, ISNULL(D.[BCCTo], '') AS BCCTo, RTRIM(ISNULL(D.[EMAIL], '')) AS EMAIL, ISNULL(D.[SUBJECT], '') AS [SUBJECT], RTRIM(ISNULL([DELEGATIONSTATUS], 0)) AS DELEGATIONSTATUS, RTRIM(ISNULL([DRAFTBILLNO], 0)) AS DRAFTBILLNO, RTRIM(ISNULL(D.[CHEQUEREQNO], 0)) AS CHEQUEREQNO, RTRIM(ISNULL(D.[TxmSent], 0)) AS TxmSent, RTRIM(ISNULL(D.[Location], '')) AS Location, RTRIM(ISNULL(D.[HearingType], '')) AS HearingType, RTRIM(ISNULL(D.[ForCopy], '')) AS ForCopy, RTRIM(ISNULL(D.[TxmDate], '')) AS TxmDate, RTRIM(ISNULL(D.[TxmSeqNo], 0)) AS TxmSeqNo, RTRIM(ISNULL(D.[Flag],0)) AS Flag, RTRIM(ISNULL(H.[RETIRED],'')) AS Retired, RTRIM(ISNULL(H.[NAME],'')) AS [Name], M.[Closed] AS [Closed], ISNULL(D.[KYC],'N') AS KYC, ISNULL(S.[Retired],'N') AS ActionRetired, RTRIM(ISNULL(TA.[Arrangement],'')) AS [Arrangement], RTRIM(ISNULL(M.[ChargeArrangement],'')) AS [ChargeArrangement], RTRIM(ISNULL([TA].[DESC], '')) AS [ActionCodeDescription] FROM [DIARY] D LEFT JOIN [Handlers] H ON D.[FNCODE] = H.[CODE] LEFT JOIN [matters] M ON D.[CASECODE] = M.[Code] LEFT JOIN [StatusCodes] S ON D.[ACTIONSTATUS] = S.[CODE] LEFT OUTER JOIN TemplateActions TA ON D.ACTIONCODE = TA.ACTIONCODE LEFT OUTER JOIN Templates T ON T.[WKCODE] = TA.WKTCODE WHERE [ACTIONID] = @ACTIONID SET NOCOUNT OFF END GO IF OBJECT_ID(N'KEYHM_FetchAllRecentMatterList',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_FetchAllRecentMatterList] GO CREATE PROCEDURE [dbo].[KEYHM_FetchAllRecentMatterList] (@Search NVARCHAR(MAX), @PageNumber INT, @PageSize INT) AS /******************************************************************************************************* * Performs a matter search based on search criteria passed in in XML format through @Search. * * * * Stored Procedure Name : [dbo].[KEYHM_FetchAllRecentMatterList] * * Copied from : [dbo].[ky_NETSPXMLMatterSearch2] * * * * Modification History: * * 2019-05-02 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @closed NCHAR(1) DECLARE @orderby NVARCHAR(50) DECLARE @order NVARCHAR(4) DECLARE @howmany INT DECLARE @handler NVARCHAR(10) DECLARE @which INT DECLARE @BitWiseID BIGINT DECLARE @searchtext VARCHAR(MAX) DECLARE @searchonlycode VARCHAR(3) DECLARE @departmentdesc VARCHAR(50) DECLARE @department VARCHAR(5) DECLARE @worktypedesc VARCHAR(50) DECLARE @worktype VARCHAR(5) DECLARE @filecolourdesc VARCHAR(20) DECLARE @filecolour VARCHAR(3) DECLARE @feecode VARCHAR(10) DECLARE @includename BIT DECLARE @includedescription BIT DECLARE @includeaddress BIT DECLARE @includeemail BIT DECLARE @includecode BIT DECLARE @includeoldref BIT DECLARE @includeuser1 BIT DECLARE @andorname VARCHAR(3) DECLARE @andornamevalue VARCHAR(200) DECLARE @andordescription VARCHAR(3) DECLARE @andordescriptionvalue VARCHAR(200) DECLARE @andoraddress VARCHAR(3) DECLARE @andoraddressvalue VARCHAR(200) DECLARE @andorcode VARCHAR(3) DECLARE @andorcodevalue VARCHAR(200) DECLARE @andorfeecode VARCHAR(3) DECLARE @andorfeecodevalue VARCHAR(200) DECLARE @andoroldref VARCHAR(3) DECLARE @andoroldrefvalue VARCHAR(200) DECLARE @andordept VARCHAR(3) DECLARE @andordeptvalue VARCHAR(200) DECLARE @andoruser1 VARCHAR(3) DECLARE @andoruser1value VARCHAR(200) DECLARE @andoruser2 VARCHAR(3) DECLARE @andoruser2value VARCHAR(200) DECLARE @andoruser3 VARCHAR(3) DECLARE @andoruser3value VARCHAR(200) DECLARE @andoryourref VARCHAR(3) DECLARE @andoryourrefvalue VARCHAR(200) DECLARE @andorwtype VARCHAR(3) DECLARE @andorwtypevalue VARCHAR(200) DECLARE @iSL INT DECLARE @StartRow INT; DECLARE @EndRow INT; SET @PageNumber = ISNULL(@PageNumber, 0) - 1; -- 0 BASED INDEX IF(@PageNumber > -1) BEGIN SET @StartRow = ((@PageNumber) * @PageSize) + 1; SET @EndRow = (@StartRow + @PageSize) - 1; END BEGIN TRY EXEC sp_xml_preparedocument @iSL OUTPUT, @Search END TRY BEGIN CATCH EXEC sp_xml_preparedocument @iSL OUTPUT, N'' END CATCH SELECT @closed = CASE ISNULL(SRC.[closed], N'N') WHEN N'Y' THEN N'Y' WHEN N'B' THEN N'B' ELSE N'N' END, @orderby = ISNULL(SRC.[orderby], N''), @order = CASE ISNULL(SRC.[order], N'DESC') WHEN N'DESC' THEN N'DESC' ELSE N'ASC' END, @howmany = ISNULL(SRC.[howmany], 500), @handler = ISNULL(SRC.[handler], N''), @which = CASE ISNULL(SRC.[which], 0) WHEN 1 THEN 1 --My Matters WHEN 2 THEN 2 --Recent Matters ELSE 0 END, --All Matters @searchtext = ISNULL(SRC.[search], ''), @searchonlycode = ISNULL(SRC.[searchonlycode], ''), @departmentdesc = ISNULL(SRC.[dept], ''), @worktypedesc = ISNULL(SRC.[wtype], ''), @filecolourdesc = ISNULL(SRC.[colour], ''), @feecode = ISNULL(SRC.[feecodefilter], ''), @includeaddress = ISNULL(SRC.[includeaddress], 0), @includeemail = ISNULL(SRC.[includeemail], 0), @includecode = ISNULL(SRC.[includecode], 0), @includedescription = ISNULL(SRC.[includedescription], 0), @includename = ISNULL(SRC.[includename], 0), @includeoldref = ISNULL(SRC.[includeoldref], 0), @includeuser1 = ISNULL(SRC.[includeuser1], 0), @andorname = ISNULL(SRC.[andorname], ''), @andornamevalue = ISNULL(SRC.[andornamevalue], ''), @andordescription = ISNULL(SRC.[andordescription], ''), @andordescriptionvalue = ISNULL(SRC.[andordescriptionvalue], ''), @andoraddress = ISNULL(SRC.[andoraddress], ''), @andoraddressvalue = ISNULL(SRC.[andoraddressvalue], ''), @andorcode = ISNULL(SRC.[andorcode], ''), @andorcodevalue = ISNULL(SRC.[andorcodevalue], ''), @andorfeecode = ISNULL(SRC.[andorfeecode], ''), @andorfeecodevalue = ISNULL(SRC.[andorfeecodevalue], ''), @andoroldref = ISNULL(SRC.[andoroldref], ''), @andoroldrefvalue = ISNULL(SRC.[andoroldrefvalue], ''), @andordept = ISNULL(SRC.[andordept], ''), @andordeptvalue = ISNULL(SRC.[andordeptvalue], ''), @andoruser1 = ISNULL(SRC.[andoruser1], ''), @andoruser1value = ISNULL(SRC.[andoruser1value], ''), @andoruser2 = ISNULL(SRC.[andoruser2], ''), @andoruser2value = ISNULL(SRC.[andoruser2value], ''), @andoruser3 = ISNULL(SRC.[andoruser3], ''), @andoruser3value = ISNULL(SRC.[andoruser3value], ''), @andoryourref = ISNULL(SRC.[andoryourref], ''), @andoryourrefvalue = ISNULL(SRC.[andoryourrefvalue], ''), @andorwtype = ISNULL(SRC.[andorwtype], ''), @andorwtypevalue = ISNULL(SRC.[andorwtypevalue], '') FROM OPENXML(@iSL, N'search') WITH ([closed] NCHAR(1) '@closed', [orderby] NVARCHAR(50) '@orderby', [order] NVARCHAR(4) '@order', [howmany] INT '@howmany', [handler] NVARCHAR(10) '@handler', [which] INT '@which', [search] VARCHAR(MAX) '@search', [searchonlycode] VARCHAR(3) '@searchonlycode', [dept] VARCHAR(50) '@departmentfilter', [wtype] VARCHAR(50) '@worktypefilter', [colour] VARCHAR(20) '@filecolourfilter', [feecodefilter] VARCHAR(10) '@feecodefilter', [includeaddress] BIT 'include/includefield[@name="address"]', [includecode] BIT 'include/includefield[@name="code"]', [includedescription] BIT 'include/includefield[@name="description"]', [includename] BIT 'include/includefield[@name="name"]', [includeoldref] BIT 'include/includefield[@name="oldref"]', [includeuser1] BIT 'include/includefield[@name="user1"]', [includeemail] BIT 'include/includefield[@name="email"]', [andorname] VARCHAR(3) 'andor/andorfield[@name="name"]/@andor', [andornamevalue] VARCHAR(100) 'andor/andorfield[@name="name"]/@search', [andordescription] VARCHAR(3) 'andor/andorfield[@name="description"]/@andor', [andordescriptionvalue] VARCHAR(100) 'andor/andorfield[@name="description"]/@search', [andoraddress] VARCHAR(3) 'andor/andorfield[@name="address"]/@andor', [andoraddressvalue] VARCHAR(100) 'andor/andorfield[@name="address"]/@search', [andorcode] VARCHAR(3) 'andor/andorfield[@name="code"]/@andor', [andorcodevalue] VARCHAR(100) 'andor/andorfield[@name="code"]/@search', [andorfeecode] VARCHAR(3) 'andor/andorfield[@name="feecode"]/@andor', [andorfeecodevalue] VARCHAR(100) 'andor/andorfield[@name="feecode"]/@search', [andoroldref] VARCHAR(3) 'andor/andorfield[@name="oldref"]/@andor', [andoroldrefvalue] VARCHAR(100) 'andor/andorfield[@name="oldref"]/@search', [andordept] VARCHAR(3) 'andor/andorfield[@name="dept"]/@andor', [andordeptvalue] VARCHAR(100) 'andor/andorfield[@name="dept"]/@search', [andoruser1] VARCHAR(3) 'andor/andorfield[@name="user1"]/@andor', [andoruser1value] VARCHAR(100) 'andor/andorfield[@name="user1"]/@search', [andoruser2] VARCHAR(3) 'andor/andorfield[@name="user2"]/@andor', [andoruser2value] VARCHAR(100) 'andor/andorfield[@name="user2"]/@search', [andoruser3] VARCHAR(3) 'andor/andorfield[@name="user3"]/@andor', [andoruser3value] VARCHAR(100) 'andor/andorfield[@name="user3"]/@search', [andoryourref] VARCHAR(3) 'andor/andorfield[@name="yourref"]/@andor', [andoryourrefvalue] VARCHAR(100) 'andor/andorfield[@name="yourref"]/@search', [andorwtype] VARCHAR(3) 'andor/andorfield[@name="wtype"]/@andor', [andorwtypevalue] VARCHAR(100) 'andor/andorfield[@name="wtype"]/@search') SRC IF @filecolourdesc <> '' BEGIN SELECT @filecolour = FC.[COLOURCODE] FROM [dbo].[FileColours] FC WITH (NOLOCK) WHERE FC.[COLOURDESC] = @filecolourdesc END SET @filecolour = ISNULL(@filecolour, '') IF @departmentdesc <> '' BEGIN SELECT @department = DP.[CODE] FROM [dbo].[Departments] DP WITH (NOLOCK) WHERE DP.[DESCRIPTION] = @departmentdesc END SET @department = ISNULL(@department, '') IF @worktypedesc <> '' BEGIN IF @worktypedesc LIKE 'Unknown Worktype: %' BEGIN SELECT @worktype = WT.[CODE] FROM [dbo].[WorkTypes] WT WITH (NOLOCK) WHERE 'Unknown Worktype: ' + WT.[CODE] = @worktypedesc OR WT.[DESC] = @worktypedesc END ELSE BEGIN SELECT @worktype = WT.[CODE] FROM [dbo].[WorkTypes] WT WITH (NOLOCK) WHERE WT.[DESC] = @worktypedesc END END SET @worktype = ISNULL(@worktype, '') SET @feecode = ISNULL(@feecode, '') EXEC sp_xml_removedocument @iSL DECLARE @NCOMMAND NVARCHAR(MAX) DECLARE @HasWhere BIT SET @HasWhere = 0 SET @handler = CASE WHEN RTRIM(ISNULL(@handler, '')) = '' THEN 'ADM' ELSE RTRIM(@handler) END SELECT @BitWiseID = HNG.[BitWiseID] FROM HandlerNETGroupMembership HNG WITH (NOLOCK) WHERE HNG.[HANDLER] = CONVERT(VARCHAR(10), @handler) SET @BitWiseID = ISNULL(@BitWiseID, [dbo].[KEYHM_FN_GetOldPermissions](RTRIM(ISNULL(@handler, '')))) IF (@handler = 'ADM') BEGIN SET @BitWiseID = CONVERT(BIGINT, -1) END SET @NCOMMAND = N' --SELECT ''How Many: '' + CONVERT(VARCHAR(10), @HowMany) --SELECT ''Handler: '' + @Handler --SELECT ''BitWise ID: '' + CONVERT(VARCHAR(10), @BitWiseID) DECLARE @Result TABLE ([id] INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED, [Code] VARCHAR(20) NOT NULL, [Name] VARCHAR(256) NOT NULL, [Description] VARCHAR(200) NOT NULL) INSERT INTO @Result ([Code], [Name], [Description]) SELECT SM.[Code] AS [Code], SM.[Name] AS [Name], SM.[Description] AS [Description] FROM [dbo].[SearchMatters] SM WITH (NOLOCK) CROSS APPLY (SELECT SUBSTRING(CONVERT(VARCHAR, DATEADD(minute, ISNULL(SUM(ISNULL(TDB.[time], 0)), 0), ''19000101''), 108), 1, 5) AS [TOTALTIME] FROM [dbo].[TimeDayBook] TDB WITH (NOLOCK) WHERE TDB.[FeeEarn] = @Handler AND TDB.[matter] = SM.[code]) TTT' SET @NCOMMAND = @NCOMMAND + N' LEFT OUTER JOIN [dbo].[RecentMatterList] RML WITH (NOLOCK) ON RML.[FEE] = @handler AND RML.[MATTER] = SM.[Code]' IF (@BitWiseID = 0) BEGIN SET @NCOMMAND = @NCOMMAND + N' WHERE ( SM.[Privileges] = 0 OR SM.[Privileges] = -1)' END ELSE IF (@BitWiseID = -1) BEGIN SET @NCOMMAND = @NCOMMAND + N' WHERE 1 = 1' END ELSE BEGIN SET @NCOMMAND = @NCOMMAND + N' WHERE SM.[Privileges] & @BitWiseID <> 0' END IF (@which = 1) BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[FECode] = @handler' END IF (@closed = 'N') BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[Closed] = 0' END IF (@closed = 'Y') BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[Closed] = 1' END IF (@worktype <> '') BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[WType] = @WorkType' END IF (@department <> '') BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[Dept] = @department' END IF (@filecolour <> '') BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[FileColour] = @filecolour' END IF (@feecode <> '') BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[FECode] = @feecode' END DECLARE @SearchIncludes NVARCHAR(MAX) SET @SearchIncludes = N'' IF (@searchtext <> '') BEGIN IF SUBSTRING(@searchtext, 1, 1) <> '%' BEGIN SET @searchtext = '%' + @searchtext END IF SUBSTRING(@searchtext, LEN(@searchtext), 1) <> '%' BEGIN SET @searchtext = @searchtext + '%' END SET @searchtext = @searchtext COLLATE SQL_Latin1_General_Cp1251_CS_AS IF (@includeaddress = 0) AND (@includecode = 0) AND (@includedescription = 0) AND (@includename = 0) AND (@includeoldref = 0) AND (@includeuser1 = 0) AND (@includeemail = 0) BEGIN -- This is the standard call - not from Advanced Matter Search, so we search in everything IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END IF @searchonlycode <> 'yes' BEGIN SET @SearchIncludes = @SearchIncludes + N'SM.[NCDescription] LIKE @searchtext OR SM.[Code] LIKE @searchtext OR SM.[User1] LIKE @searchtext OR SM.[User2] LIKE @searchtext OR SM.[User3] LIKE @searchtext OR SM.[OldRef] LIKE @searchtext OR SM.[YourRef] LIKE @searchtext OR SM.[NCName] LIKE @searchtext OR SM.[NCAddress] LIKE @searchtext OR SM.[Email] LIKE @searchtext OR SM.[NCHandlerName] LIKE @searchtext OR SM.[NCPartnerName] LIKE @searchtext OR SM.[DeptDescription] LIKE @searchtext OR SM.[WTypeDescription] LIKE @searchtext OR SM.[FileColourDescription] LIKE @searchtext OR SM.[MatterStatusDescription] LIKE @searchtext' END ELSE BEGIN SET @SearchIncludes = @SearchIncludes + N'SM.[Code] LIKE @searchtext' END END ELSE BEGIN IF (@includeaddress = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[NCAddress] LIKE @searchtext' END IF (@includecode = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[Code] LIKE @searchtext' END IF (@includedescription = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[NCDescription] LIKE @searchtext' END IF (@includename = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[NCName] LIKE @searchtext' END IF (@includeoldref = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[OldRef] LIKE @searchtext' END IF (@includeuser1 = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[User1] LIKE @searchtext' END IF (@includeemail = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[Email] LIKE @searchtext' END END END IF @andoraddress = 'OR' BEGIN IF SUBSTRING(@andoraddressvalue, 1, 1) <> '%' BEGIN SET @andoraddressvalue = '%' + @andoraddressvalue END IF SUBSTRING(@andoraddressvalue, LEN(@andoraddressvalue), 1) <> '%' BEGIN SET @andoraddressvalue = @andoraddressvalue + '%' END SET @andoraddressvalue = @andoraddressvalue COLLATE SQL_Latin1_General_Cp1251_CS_AS IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[NCAddress] LIKE @andoraddressvalue' END IF @andorcode = 'OR' BEGIN IF CHARINDEX('%', @andorcodevalue, 1) = 0 BEGIN IF SUBSTRING(@andorcodevalue, 1, 1) <> '%' BEGIN SET @andorcodevalue = '%' + @andorcodevalue END IF SUBSTRING(@andorcodevalue, LEN(@andorcodevalue), 1) <> '%' BEGIN SET @andorcodevalue = @andorcodevalue + '%' END END IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[Code] LIKE @andorcodevalue' END IF @andordept = 'OR' BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[Dept]= @andordeptvalue' END IF @andordescription = 'OR' BEGIN IF SUBSTRING(@andordescriptionvalue, 1, 1) <> '%' BEGIN SET @andordescriptionvalue = '%' + @andordescriptionvalue END IF SUBSTRING(@andordescriptionvalue, LEN(@andordescriptionvalue), 1) <> '%' BEGIN SET @andordescriptionvalue = @andordescriptionvalue + '%' END SET @andordescriptionvalue = @andordescriptionvalue COLLATE SQL_Latin1_General_Cp1251_CS_AS IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[NCDescription] LIKE @andordescriptionvalue' END IF @andorfeecode = 'OR' BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[FECode] = @andorfeecodevalue' END IF @andorname = 'OR' BEGIN IF SUBSTRING(@andornamevalue, 1, 1) <> '%' BEGIN SET @andornamevalue = '%' + @andornamevalue END IF SUBSTRING(@andornamevalue, LEN(@andornamevalue), 1) <> '%' BEGIN SET @andornamevalue = @andornamevalue + '%' END SET @andornamevalue = @andornamevalue COLLATE SQL_Latin1_General_Cp1251_CS_AS IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[NCName] LIKE @andornamevalue' END IF @andoroldref = 'OR' BEGIN IF SUBSTRING(@andoroldrefvalue, 1, 1) <> '%' BEGIN SET @andoroldrefvalue = '%' + @andoroldrefvalue END IF SUBSTRING(@andoroldrefvalue, LEN(@andoroldrefvalue), 1) <> '%' BEGIN SET @andoroldrefvalue = @andoroldrefvalue + '%' END IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[OldRef] LIKE @andoroldrefvalue' END IF @andoruser1 = 'OR' BEGIN IF SUBSTRING(@andoruser1value, 1, 1) <> '%' BEGIN SET @andoruser1value = '%' + @andoruser1value END IF SUBSTRING(@andoruser1value, LEN(@andoruser1value), 1) <> '%' BEGIN SET @andoruser1value = @andoruser1value + '%' END IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[User1] LIKE @andoruser1value' END IF @andoruser2 = 'OR' BEGIN IF SUBSTRING(@andoruser2value, 1, 1) <> '%' BEGIN SET @andoruser2value = '%' + @andoruser2value END IF SUBSTRING(@andoruser2value, LEN(@andoruser2value), 1) <> '%' BEGIN SET @andoruser2value = @andoruser2value + '%' END IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[User2] LIKE @andoruser2value' END IF @andoruser3 = 'OR' BEGIN IF SUBSTRING(@andoruser3value, 1, 1) <> '%' BEGIN SET @andoruser3value = '%' + @andoruser3value END IF SUBSTRING(@andoruser3value, LEN(@andoruser3value), 1) <> '%' BEGIN SET @andoruser3value = @andoruser3value + '%' END IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[User3] LIKE @andoruser3value' END IF @andorwtype = 'OR' BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[WType] = @andorwtypevalue' END IF @andoryourref = 'OR' BEGIN IF SUBSTRING(@andoryourrefvalue, 1, 1) <> '%' BEGIN SET @andoryourrefvalue = '%' + @andoryourrefvalue END IF SUBSTRING(@andoryourrefvalue, LEN(@andoryourrefvalue), 1) <> '%' BEGIN SET @andoryourrefvalue = @andoryourrefvalue + '%' END IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[YourRef] LIKE @andoryourrefvalue' END --SELECT @SearchIncludes IF @SearchIncludes <> '' BEGIN SET @NCOMMAND = @NCOMMAND + N' AND ( ' + @SearchIncludes + N')' END IF @andoraddress = 'AND' BEGIN IF SUBSTRING(@andoraddressvalue, 1, 1) <> '%' BEGIN SET @andoraddressvalue = '%' + @andoraddressvalue END IF SUBSTRING(@andoraddressvalue, LEN(@andoraddressvalue), 1) <> '%' BEGIN SET @andoraddressvalue = @andoraddressvalue + '%' END SET @andoraddressvalue = @andoraddressvalue COLLATE SQL_Latin1_General_Cp1251_CS_AS SET @NCOMMAND = @NCOMMAND + N' AND SM.[NCAddress] LIKE @andoraddressvalue' END IF @andorcode = 'AND' BEGIN IF SUBSTRING(@andorcodevalue, 1, 1) <> '%' BEGIN SET @andorcodevalue = '%' + @andorcodevalue END IF SUBSTRING(@andorcodevalue, LEN(@andorcodevalue), 1) <> '%' BEGIN SET @andorcodevalue = @andorcodevalue + '%' END SET @NCOMMAND = @NCOMMAND + N' AND SM.[Code] LIKE @andorcodevalue' END IF @andordept = 'AND' BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[Dept] = @andordeptvalue' END IF @andordescription = 'AND' BEGIN IF SUBSTRING(@andordescriptionvalue, 1, 1) <> '%' BEGIN SET @andordescriptionvalue = '%' + @andordescriptionvalue END IF SUBSTRING(@andordescriptionvalue, LEN(@andordescriptionvalue), 1) <> '%' BEGIN SET @andordescriptionvalue = @andordescriptionvalue + '%' END SET @andordescriptionvalue = @andordescriptionvalue COLLATE SQL_Latin1_General_Cp1251_CS_AS SET @NCOMMAND = @NCOMMAND + N' AND SM.[NCDescription] LIKE @andordescriptionvalue' END IF @andorfeecode = 'AND' BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[FECode] = @andorfeecodevalue' END IF @andorname = 'AND' BEGIN IF SUBSTRING(@andornamevalue, 1, 1) <> '%' BEGIN SET @andornamevalue = '%' + @andornamevalue END IF SUBSTRING(@andornamevalue, LEN(@andornamevalue), 1) <> '%' BEGIN SET @andornamevalue = @andornamevalue + '%' END SET @andornamevalue = @andornamevalue COLLATE SQL_Latin1_General_Cp1251_CS_AS SET @NCOMMAND = @NCOMMAND + N' AND SM.[NCName] LIKE @andornamevalue' END IF @andoroldref = 'AND' BEGIN IF SUBSTRING(@andoroldrefvalue, 1, 1) <> '%' BEGIN SET @andoroldrefvalue = '%' + @andoroldrefvalue END IF SUBSTRING(@andoroldrefvalue, LEN(@andoroldrefvalue), 1) <> '%' BEGIN SET @andoroldrefvalue = @andoroldrefvalue + '%' END SET @NCOMMAND = @NCOMMAND + N' AND SM.[OldRef] LIKE @andoroldrefvalue' END IF @andoruser1 = 'AND' BEGIN IF SUBSTRING(@andoruser1value, 1, 1) <> '%' BEGIN SET @andoruser1value = '%' + @andoruser1value END IF SUBSTRING(@andoruser1value, LEN(@andoruser1value), 1) <> '%' BEGIN SET @andoruser1value = @andoruser1value + '%' END SET @NCOMMAND = @NCOMMAND + N' AND SM.[User1] LIKE @andoruser1value' END IF @andoruser2 = 'AND' BEGIN IF SUBSTRING(@andoruser2value, 1, 1) <> '%' BEGIN SET @andoruser2value = '%' + @andoruser2value END IF SUBSTRING(@andoruser2value, LEN(@andoruser2value), 1) <> '%' BEGIN SET @andoruser2value = @andoruser2value + '%' END SET @NCOMMAND = @NCOMMAND + N' AND SM.[User2] LIKE @andoruser2value' END IF @andoruser3 = 'AND' BEGIN IF SUBSTRING(@andoruser3value, 1, 1) <> '%' BEGIN SET @andoruser3value = '%' + @andoruser3value END IF SUBSTRING(@andoruser3value, LEN(@andoruser3value), 1) <> '%' BEGIN SET @andoruser3value = @andoruser3value + '%' END SET @NCOMMAND = @NCOMMAND + N' AND SM.[User3] LIKE @andoruser3value' END IF @andorwtype = 'AND' BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[WType] = @andorwtypevalue' END IF @andoryourref = 'AND' BEGIN IF SUBSTRING(@andoryourrefvalue, 1, 1) <> '%' BEGIN SET @andoryourrefvalue = '%' + @andoryourrefvalue END IF SUBSTRING(@andoryourrefvalue, LEN(@andoryourrefvalue), 1) <> '%' BEGIN SET @andoryourrefvalue = @andoryourrefvalue + '%' END SET @NCOMMAND = @NCOMMAND + N' AND SM.[YourRef] LIKE @andoryourrefvalue' END --SELECT @orderby, @order SET @NCOMMAND = @NCOMMAND + N' ORDER BY ' + CASE @orderby WHEN N'description' THEN N'CASE WHEN SM.[Description] = '''' THEN 1 ELSE 0 END, SM.[Description] ' + @order + N', SM.[Code] ' + @order WHEN N'Code' THEN N'CASE WHEN SM.[Code] = '''' THEN 1 ELSE 0 END, SM.[Code] ' + @order WHEN N'Name' THEN N'CASE WHEN SM.[Name] = '''' THEN 1 ELSE 0 END, SM.[Name] ' + @order + N', SM.[Code] ' + @order WHEN N'Address' THEN N'CASE WHEN SM.[Address] = '''' THEN 1 ELSE 0 END, SM.[Address] ' + @order + N', SM.[Code] ' + @order WHEN N'Email' THEN N'CASE WHEN SM.[Email] = '''' THEN 1 ELSE 0 END, SM.[Email] ' + @order + N', SM.[Code] ' + @order WHEN N'PhoneNumber' THEN N'CASE WHEN SM.[PhoneNumber] = '''' THEN 1 ELSE 0 END, SM.[PhoneNumber] ' + @order + N', SM.[Code] ' + @order WHEN N'user1' THEN N'CASE WHEN SM.[User1] = '''' THEN 1 ELSE 0 END, SM.[User1] ' + @order + N', SM.[Code] ' + @order WHEN N'user2' THEN N'CASE WHEN SM.[User2] = '''' THEN 1 ELSE 0 END, SM.[User2] ' + @order + N', SM.[Code] ' + @order WHEN N'user3' THEN N'CASE WHEN SM.[User3] = '''' THEN 1 ELSE 0 END, SM.[User3] ' + @order + N', SM.[Code] ' + @order WHEN N'yourref' THEN N'CASE WHEN SM.[YourRef] = '''' THEN 1 ELSE 0 END, SM.[YourRef] ' + @order + N', SM.[Code] ' + @order WHEN N'OldRef' THEN N'CASE WHEN SM.[OldRef] = '''' THEN 1 ELSE 0 END, SM.[OldRef] ' + @order + N', SM.[Code] ' + @order WHEN N'FileNum' THEN N'CASE WHEN SM.[FileNum] = 0 THEN 1 ELSE 0 END, SM.[FileNum] ' + @order + N', SM.[Code] ' + @order WHEN N'department' THEN N'CASE WHEN SM.[DeptDescription] = '''' THEN 1 ELSE 0 END, SM.[DeptDescription] ' + @order + N', SM.[Code] ' + @order WHEN N'Dept' THEN N'CASE WHEN SM.[DeptDescription] = '''' THEN 1 ELSE 0 END, SM.[DeptDescription] ' + @order + N', SM.[Code] ' + @order WHEN N'worktype' THEN N'CASE WHEN SM.[WTypeDescription] = '''' THEN 1 ELSE 0 END, SM.[WTypeDescription] ' + @order + N', SM.[Code] ' + @order WHEN N'FeeCode' THEN N'CASE WHEN SM.[FECode] = '''' THEN 2 WHEN SM.[FECode] = ''ADM'' THEN 1 ELSE 0 END, SM.[FECode] ' + @order + N', SM.[Code] ' + @order WHEN N'FeeEarner' THEN N'CASE WHEN SM.[HandlerName] = '''' AND SM.[FECode] = '''' THEN 3 WHEN SM.[HandlerName] = '''' THEN 2 WHEN SM.[HandlerName] = ''Admin'' THEN 1 ELSE 0 END, SM.[HandlerName] ' + @order + N', SM.[Code] ' + @order WHEN N'FileColour_Fld' THEN N'CASE WHEN SM.[FileColourDescription] = '''' THEN 1 ELSE 0 END, SM.[FileColourDescription] ' + @order + N', SM.[Code] ' + @order WHEN N'FileColour' THEN N'CASE WHEN SM.[FileColourDescription] = '''' THEN 1 ELSE 0 END, SM.[FileColourDescription] ' + @order + N', SM.[Code] ' + @order WHEN N'started' THEN N'SM.[Started] ' + @order + N', SM.[Code] ' + @order WHEN N'LastAccessed' THEN N'CASE WHEN RML.[DateField] IS NULL THEN 1 ELSE 0 END, RML.[DateField] ' + @order + N', SM.[Code] ' + @order WHEN N'closedate' THEN N'CASE WHEN SM.[CloseDate] IS NULL THEN 1 ELSE 0 END, SM.[CloseDate] ' + @order + N', SM.[Code] ' + @order WHEN N'orgcloseddate' THEN N'CASE WHEN SM.[orgcloseddate] IS NULL THEN 1 ELSE 0 END, SM.[orgcloseddate] ' + @order + N', SM.[Code] ' + @order WHEN N'casestatusdesc' THEN N'CASE WHEN SM.[MatterStatusDescription] IS NULL THEN 1 ELSE 0 END, SM.[MatterStatusDescription] ' + @order + N', SM.[Code] ' + @order ELSE CASE WHEN @Which <> 2 THEN N'SM.[Code] ' + @order ELSE N'CASE WHEN RML.[DateField] IS NULL THEN 1 ELSE 0 END, RML.[DateField] DESC, SM.[Code] ' + @order END END SET @NCOMMAND = @NCOMMAND + N' SELECT * FROM( SELECT ROW_NUMBER() OVER(ORDER BY [RES].[id]) AS [RowNumber], [RES].[Code], [RES].[Name], [RES].[Description] FROM @Result [RES])AS MatterTable WHERE MatterTable.[RowNumber] BETWEEN @StartRow AND @EndRow ORDER BY MatterTable.[RowNumber] ASC SELECT COUNT([RES].[id]) AS [TotalRecord] FROM @Result [RES]' --SELECT @NCOMMAND EXECUTE sp_executesql @NCOMMAND, N'@HowMany INT, @BitWiseID BIGINT, @Handler VARCHAR(10), @WorkType VARCHAR(5), @department VARCHAR(5), @filecolour VARCHAR(3), @feecode VARCHAR(10), @searchtext VARCHAR(MAX), @andoraddressvalue VARCHAR(200), @andorcodevalue VARCHAR(200), @andordeptvalue VARCHAR(200), @andordescriptionvalue VARCHAR(200), @andorfeecodevalue VARCHAR(200), @andornamevalue VARCHAR(200), @andoroldrefvalue VARCHAR(200), @andoruser1value VARCHAR(200), @andoruser2value VARCHAR(200), @andoruser3value VARCHAR(200), @andorwtypevalue VARCHAR(200), @andoryourrefvalue VARCHAR(200), @StartRow INT, @EndRow INT', @Howmany, @BitWiseID, @handler, @worktype, @department, @filecolour, @feecode, @searchtext, @andoraddressvalue, @andorcodevalue, @andordeptvalue, @andordescriptionvalue, @andorfeecodevalue, @andornamevalue, @andoroldrefvalue, @andoruser1value, @andoruser2value, @andoruser3value, @andorwtypevalue, @andoryourrefvalue, @StartRow, @EndRow END GO IF OBJECT_ID(N'KEYHM_FetchContactForEdit_KEYHM',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_FetchContactForEdit_KEYHM] GO CREATE PROCEDURE [dbo].[KEYHM_FetchContactForEdit_KEYHM] (@Code VARCHAR(20), @Handler VARCHAR(10), @SearchText VARCHAR(4000)) AS /*************************************************************************************************************** * This stored procedure is used to FETCH CLIENT and OTHER details by Contact Code to update details * * for Keyhouse Mobile App * * * * Stored Procedure Name: [dbo].[KEYHM_FetchContactForEdit_KEYHM] * * Copied from : [dbo].[ky_NETCONFetchContactForEdit] * * * * Modification History: * * 2019-04-26 Vinodhan K Created * * 2019-07-01 Vinodhan K Full name will be filled with Firstname and Surname if its empty or null * * 2024-10-18 Ponni M DOB and Marriagedate field length changed from varchar(11) to varchar(12) * ***************************************************************************************************************/ BEGIN SET NOCOUNT ON --Client Details SELECT [CON].[Code], [CON].[Name], [CON].[Address], [CON].[Salut], [CON].[Tel], [CON].[Fax], [CON].[Email], [CON].[Principal], [CON].[FE], [CON].[Nation], [CON].[Spouse], CONVERT(VARCHAR(10), [CON].[DOB], 112) AS [DOB], CONVERT(VARCHAR(10), [CON].[SpouseDOB], 112) AS [SpouseDOB], [CON].[Introducer], [CON].[IntroFE], [CON].[Comments], CASE WHEN ISNULL([CON].[Corporate], 'N') = 'Y' THEN '1' ELSE '0' END AS [Corporate], CONVERT(VARCHAR(10), [CON].[DateOfMarriage], 112) AS [DateOfMarriage], CASE WHEN ISNULL([CON].[SpouseDead], 'N') = 'Y' THEN '1' ELSE '0' END AS [IsDead], CASE WHEN ISNULL([CON].[Separated], 'N') = 'Y' THEN '1' ELSE '0' END AS [IsSeparated], [CON].[HowSeparated], [CON].[Partner], CONVERT(VARCHAR(10), [CON].[PartnerSince], 112) AS [PartnerSince], [CON].[Occupation], [CON].[OtherRef], [CON].[ChargeArrangement], [CON].[BillingMethod], [CON].[Approved] AS [Approved], [CON].[SpousePPS], [CON].[ClientGroup], [CON].[ClientVATNo], CASE WHEN ISNULL([CON].[ChargeOutRateInd], 'N') = 'Y' THEN '1' ELSE '0' END AS [ChargeOutRateInd], [CON].[TaxType], [CLT].[CLGRP], [CLT].[ClLegalName] AS [ClLegalName], [CLT].[CllegalAddr] AS [CllegalAddr], [CLT].[CLTEL] AS [CLTEL], [CLT].[CLMobNo], [CLT].[CLMartialCde], [CLT].[CLOccupCDE], [CLT].[CLEmployer], [CLT].[CLContactCde], [CLT].[DcoumentFolder] AS [DcoumentFolder], [CON].[CompFrequency], CASE WHEN ISNULL([CON].[InActive], 'N') = 'Y' THEN '1' ELSE '0' END AS [IsDeceased], CONVERT(VARCHAR(10), [CON].DateInActive, 112) AS [DOD], [CON].[RSINo] AS [PPSNo], CASE WHEN ISNULL([CON].[Statements], 'N') = 'Y' THEN '1' ELSE '0' END AS [IsStatement], CASE WHEN ISNULL([CON].[Inactive], 'N') = 'Y' THEN '1' ELSE '0' END AS [InActive], CONVERT(VARCHAR(10), [CON].[DateInactive], 112) AS [Dateinactive], CONVERT(VARCHAR(10), [CON].[LastAR], 112) AS [LastAr], [CON].[CRONumber], [CON].[CompanyWebSite], [CON].[OtherAddress], [CON].[County], [CON].[PostalCode], [CON].[CompMatter], [CON].[BankName], [CON].[BankAddress], [CON].[BankSortCode], [CON].[BankAccNo], [CON].[IBan], [CON].[Bic], [CON].[EnvelopeName], [CON].[ChargeLevel] AS [ChargeLevel], [CON].[WarningMsg] AS [WarningMessage], ISNULL([CON].[DisallowNewMatter], 0) AS [DisallowNewMatter], ISNULL([MC].[Retired], 'N') AS [Retired], [DXAddress] AS [DXAddress], [SecondaryEmail] AS [SecondaryEmail], REPLACE(ISNULL([FC].[Retired], 'N'),' ','N') AS [FeeEarnerRetired], [CON].[Password], CASE WHEN ISNULL([CON].[RemoteAccess], 'N') = 'Y' THEN '1' ELSE '0' END AS [RemoteAccess], ISNULL([CON].[BankType], '') AS [BankType] FROM [dbo].[matters] [MAT] LEFT OUTER JOIN [dbo].[Contacts] [CON] ON [CON].[Code] = [MAT].[ClientCode] LEFT OUTER JOIN [dbo].[client] [CLT] LEFT OUTER JOIN [dbo].[MiscCodes] [MC] ON [MC].[CDECODE] = [CLT].[ClMartialCde] ON [CLT].[CLCODE] = [MAT].[ClientCode] LEFT OUTER JOIN [dbo].[FeeEarnerCodes] [FC] ON [FC].[Code] = [CON].[FE] WHERE [MAT].[Code] = @Code --Other Contacts DECLARE @ClientCode VARCHAR(20) SET @ClientCode = (SELECT TOP 1 [MAT].[ClientCode] FROM [dbo].[matters] [MAT] WHERE [MAT].[Code] = @Code) SELECT [CC].[CLINITS] AS [Initials], CASE WHEN ISNULL(CC.[CLNAMECON], '') = '' OR CC.[CLNAMECON] = '' THEN [CC].[FIRSTNAME] + ' ' + [CC].[SURNAME] ELSE [CC].[CLNAMECON] END AS [FullName], [CC].[HomePhone] AS [HomePhone], [CC].[WorkPhone] AS [WorkPhone], [CC].[Mobile] AS [Mobile], [CC].[FIRSTNAME] AS [FirstName], [CC].[SURNAME] AS [Surname], [CC].[CLSALUTE] AS [Salutation], [CC].[PPSNo] AS [PPSNumber], [CC].[CLTITLE] AS [Title], [CC].[Address], [CC].[EmailAddress], CONVERT(VARCHAR(12), [CC].[DOB], 106) AS [DOB], CONVERT(VARCHAR(12), [CC].[MarrigeDate], 106) AS [MarriageDate], [CC].[Occupation], [CC].[DateofDeath] AS [DateOfDeath], [MC].[CDEDESC] AS [MaritalStatus], [CC].[MartialStatus] AS [MStatus], [CC].[FaxNumber], [CC].[PostalCode], [CC].[County], [CC].[CLNUMCONTACT], [CC].[DXREF] FROM [dbo].[ClientContacts] [CC] LEFT OUTER JOIN [dbo].[MiscCodes] [MC] ON [MC].[CDECODE] = [CC].[MartialStatus] AND [MC].[CDETYPE] = 'MRS' WHERE [CC].[CLCODE] = @ClientCode AND ( @SearchText = '' OR ([CC].[CLNAMECON] LIKE '%' + @SearchText + '%') ) SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_FetchDiaryAttachments' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_FetchDiaryAttachments] END GO CREATE PROCEDURE [dbo].[KEYHM_FetchDiaryAttachments] (@DIARYID Integer, @Handler VARCHAR(10)) /******************************************************************************************************* * This procedure is used load the data for TaskAddAction page Attachment Grid. * * * * Stored Procedure Name : [dbo].[KEYHM_FetchDiaryAttachments] * * Copied from : [dbo].[ky_NETCCFetchDiaryAttachments] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * * 2021-08-04 Arun V Have added Last access field from diary attachment access table * * 2021-08-05 Arun V correct the last access value if null, returned document date intead * * new date * * 2023-03-01 Vignesh Fix for empty TrackRef & Upload issue at 0% - PROD issue * *******************************************************************************************************/ AS BEGIN SET NOCOUNT ON INSERT INTO [dbo].[DiaryAttachmentAccess] ([TrackReference], [Handler], [Comment]) SELECT [DAT].[TrackReference], @Handler, 'Listed for Action' FROM [dbo].[DiaryAttachmentSelector] [DAT] WHERE [DAT].[ActionID] = @DIARYID SELECT [DAT].[DiaryID] AS [DIARYID], [DAT].[TRACKREFERENCE] AS [TRACKREFERENCE], RTRIM(ISNULL([DAT].[CASECODE], '')) AS [CASECODE], RTRIM(ISNULL([DAT].[NAME], '')) AS [NAME], RTRIM(ISNULL([DAT].[DOCUMENT], '')) AS [DOCUMENT], CASE WHEN [UNC].[UNC] IS NULL THEN RTRIM(ISNULL([DAT].[FILEPATH], '')) ELSE [UNC].[UNC] + SUBSTRING(RTRIM(ISNULL([DAT].[FILEPATH], '')), 3, LEN(RTRIM(ISNULL([DAT].[FILEPATH], ''))) - 2) END AS [FILEPATH], CASE WHEN [UNC].[UNC] IS NULL THEN RTRIM(ISNULL([DAT].[FILEPATH], '')) ELSE [UNC].[UNC] + SUBSTRING(RTRIM(ISNULL([DAT].[FILEPATH], '')), 3, LEN(RTRIM(ISNULL([DAT].[FILEPATH], ''))) - 2) END AS [LFILEPATH], RTRIM(ISNULL([DAT].[TYPE], '')) AS [TYPE], RTRIM(ISNULL([DCL].[CLASSCODE], '')) AS [DOCCLASS], RTRIM(ISNULL([DCL].[CLASSDESCRIPTION], '')) AS [DOCCLASSDESC], CONVERT(VARCHAR, [DAT].[DATEENTERED], 20) AS [DATEENTERED], RTRIM(ISNULL([DAT].[DOCCLASS], '')) AS [DOCCLASS], --CONVERT(VARCHAR, [DAT].[DiaryDate], 20) AS [LASTACCESSDATE], RTRIM(ISNULL([DAT].[SOURCE], '')) AS [Source], [DV].[CurrentVersion] AS [CurrentVersion], RTRIM(ISNULL([DX].[IMDocID], '')) AS [IMDocID], [MAT].[uniqueid] AS [UniqueId], [DLA].[AccessDate] AS [LASTACCESSDATE] FROM [dbo].[DiaryAttachments] [DAT] LEFT JOIN [dbo].[diary] [DIA] INNER JOIN [dbo].[matters] [MAT] ON [MAT].[Code] = [DIA].[CASECODE] ON [DIA].[ActionID] = [DAT].[DiaryID] CROSS APPLY (SELECT ISNULL(MAX([DAV].[Version]), 0) + 1 AS [CurrentVersion] FROM [dbo].[DiaryAttachmentVersioning] [DAV] WHERE [DAV].[TrackReference] = [DAT].[TRACKREFERENCE]) DV LEFT OUTER JOIN [dbo].[DocumentClasses] [DCL] ON [DCL].[CLASSCODE] = [DAT].[DOCCLASS] LEFT OUTER JOIN [dbo].[UNCAlias] [UNC] ON SUBSTRING([DAT].[FilePath], 2, 1) = ':' AND [UNC].[Drive] = SUBSTRING([DAT].[FilePath], 1, 1) LEFT OUTER JOIN [dbo].[DAIMXRef] [DX] ON [DX].[TrackReference] = [DAT].[TRACKREFERENCE] CROSS APPLY (SELECT ISNULL(MAX([DAA].[AccessDate]), [DAT].[DATEENTERED]) AS [AccessDate] FROM [dbo].[DiaryAttachmentAccess] [DAA] WHERE [DAA].[TrackReference] = [DAT].[TRACKREFERENCE] AND [DAA].[Comment] = 'Updated') DLA WHERE [DAT].[DiaryID] = @DIARYID ORDER BY [DAT].[TRACKREFERENCE] DESC SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_FetchDiaryByMatterCode' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_FetchDiaryByMatterCode] END GO CREATE PROCEDURE [dbo].[KEYHM_FetchDiaryByMatterCode] (@Matter VARCHAR(20), @Search VARCHAR(200) = NULL, @PageNumber INT = NULL, @PageSize INT = NULL, @ActionTypeXML XML = NULL, @PriorityXML XML = NULL, @FlagXML XML = NULL, @DateXML XML = NULL, @LoggedInHandler VARCHAR(10) = NULL ) AS /************************************************************************************************************* * * * [dbo].[KEYHM_FetchDiaryByMatterCode] * * * * Fetch Diary Items by Matter Code, with support for pagination and for filtering on ActionType, * * Priority and/or Flag. * * * * @Search can be any string. Wildcard % will be appended at start and finish * * @ActionTypeXML: example - '' * * @PriorityXML: example - '' * * @DateXML: example - '' * * @FlagXML: example- '' * * * * Compatibility information - PLEASE update older versions if necessary to ensure the compatible software * * remains fully functional * * ***************************************************************************************************** * * * * * * * Supersedes: [dbo].[ky_NETCASEDIARYFetchDiarybyMatterCode] * * * * Original: [dbo].[ky_NETSPFetchDiaryByMatterCode] * * * * First compatible version: 5.7.2.1 * * * * Last compatible software version: - * * * * Superseded by: - * * * * * * * ***************************************************************************************************** * * * * Modification History * * 2019-04-02 Pino Carafa Created * * 2019-04-30 Pino Carafa Added Subject search and Date Range * * 2019-05-21 Saravanan Performance tuning done * * 2019-05-29 Arun KEYHM-402 - Sorting order was correct till @FOUND table * variable(Line No: 232), after this, few column have joined for desired * output, at that time, sorting order gets changed, so explicitily have * soredted by id column after join operation completed(Line no: 380). * * 2019-10-23 Vinodhan If Flag is null, it be replaced with 0 and filtered while filtering the case diary data * soredted by id column after join operation completed(Line no: 380). * * 2019-10-29 Arun Have used KEYHM_FNConvertUTCDateToTargetTimeZone function to convert * action date to utc * *************************************************************************************************************/ BEGIN SET NOCOUNT ON DECLARE @ShowFromToSynopsis BIT DECLARE @FromDate DATETIME DECLARE @ToDate DATETIME SET @ShowFromToSynopsis = CASE WHEN ISNULL((SELECT TOP 1 [SET].[KeyValue] FROM [dbo].[Settings] [SET] WHERE [SET].[KeyName] = 'ShowFromToSynopsis'), 'True') = 'False' THEN 0 ELSE 1 END -- Convert @ActionTypesXML etc into Table Variables for easier reference in later scripts START DECLARE @ACTIONTYPES TABLE ([ActionType] VARCHAR(1) PRIMARY KEY) DECLARE @ACTIONTYPESFILTERED BIT SET @ACTIONTYPESFILTERED = 0 --Squeeze the last little bit of performance out of this DECLARE @PRIORITIES TABLE ([Priority] VARCHAR(1) PRIMARY KEY) DECLARE @PRIORITIESFILTERED BIT SET @PRIORITIESFILTERED = 0 --Squeeze the last little bit of performance out of this DECLARE @Flags TABLE ([Flag] TINYINT PRIMARY KEY) DECLARE @FLAGSFILTERED BIT SET @FLAGSFILTERED = 0 --Squeeze the last little bit of performance out of this IF NOT (@DateXML IS NULL) IF NOT (CONVERT(VARCHAR(MAX), @DateXML) = '') BEGIN SELECT [FromDate], [ToDate] FROM (SELECT [DT].[COL].value('@FromDate', 'DATETIME') AS [FromDate], -- Use >= for comparison DATEADD(DAY, 1, [DT].[COL].value('@ToDate', 'DATETIME')) AS [ToDate] -- Add 1 Day to ToDate so that we can use < for comparison FROM @DateXML.nodes('/Dates') AS [DT]([COL])) [DTP] END IF NOT (@ActionTypeXML IS NULL) IF NOT (CONVERT(VARCHAR(MAX), @ActionTypeXML) = '') BEGIN INSERT INTO @ACTIONTYPES ([ActionType]) SELECT [ActionType] FROM (SELECT [AT].[COL].value('@Value', 'VARCHAR(10)') AS [ActionType] FROM @ActionTypeXML.nodes('/ActionType') AS [AT]([COL])) [ATP] SELECT @ACTIONTYPESFILTERED = CASE COUNT(1) WHEN 0 THEN 0 ELSE 1 END FROM @ACTIONTYPES END --Select * from @ActionTypes IF NOT (@PriorityXML IS NULL) IF NOT (CONVERT(VARCHAR(MAX), @PriorityXML) = '') BEGIN INSERT INTO @PRIORITIES ([Priority]) SELECT [Priority] FROM (SELECT [PT].[COL].value('@Value', 'VARCHAR(10)') AS [Priority] FROM @PriorityXML.nodes('/Priority') AS [PT]([COL])) [PTY] SELECT @PRIORITIESFILTERED = CASE COUNT(1) WHEN 0 THEN 0 ELSE 1 END FROM @PRIORITIES END IF NOT (@FlagXML IS NULL) IF NOT (CONVERT(VARCHAR(MAX), @FlagXML) = '') BEGIN INSERT INTO @Flags ([Flag]) SELECT [Flag] FROM (SELECT [FG].[COL].value('@Value', 'INT') AS [Flag] FROM @FlagXML.nodes('/Flag') AS [FG]([COL])) [FLG] SELECT @FLAGSFILTERED = CASE COUNT(1) WHEN 0 THEN 0 ELSE 1 END FROM @Flags END -- Convert @ActionTypesXML etc into Table Variables for easier reference in later scripts END -- Set @SearchText to NULL if nothing entered, otherwise ensure search starts and ends with -- a wildcard character % - START DECLARE @SEARCHTEXT VARCHAR(202) SET @SearchText = CASE WHEN RTRIM(ISNULL(@Search, '')) = '' THEN NULL ELSE RTRIM(ISNULL(@Search, '')) END IF @SearchText IS NOT NULL BEGIN IF SUBSTRING(@SearchText, 1, 1) <> '%' BEGIN SET @SearchText = '%' + @SearchText END IF SUBSTRING(@SearchText, LEN(@SearchText), 1) <> '%' BEGIN SET @SearchText = @SearchText + '%' END END -- Set @SearchText to NULL if nothing entered, otherwise ensure search starts and ends with -- a wildcard character % - END -- Avoid Unnecessary Join START DECLARE @ChargeArrangement VARCHAR(3) SELECT @ChargeArrangement = RTRIM(ISNULL([MAT].[ChargeArrangement], '')) FROM [dbo].[matters] [MAT] WHERE [MAT].[Code] = @Matter -- Avoid Unnecessary Join END --SELECT ActionType FROM #ACTIONTYPES -- Table to contain all matching ActionIDs in the desired order DECLARE @FOUND TABLE ([id] INT IDENTITY(1, 1) PRIMARY KEY, [ActionID] INT) -- Insert ONLY the Primary Keys into the @FOUND Table so that it's much faster to retrieve only the requested page - Performance! INSERT INTO @FOUND ([ActionID]) SELECT [DIA].[ActionID] FROM [dbo].[diary] [DIA] LEFT OUTER JOIN [dbo].[Handlers] [FN] ON [FN].[CODE] = [DIA].[FNCODE] WHERE [DIA].[CASECODE] = @Matter -- -- Use the CASE Construct to ensure it doesn't perform the PATINDEX unless it's actually necessary - Performance! AND CASE WHEN @SEARCHTEXT IS NULL THEN 0 WHEN PATINDEX(@SEARCHTEXT, [DIA].[TEXT1]) > 0 THEN 0 WHEN PATINDEX(@SEARCHTEXT, [DIA].[SUBJECT]) > 0 THEN 0 WHEN [FN].[NAME] IS NULL THEN 1 WHEN PATINDEX(@SEARCHTEXT, [FN].[NAME]) > 0 THEN 0 ELSE 1 END = 0 -- Use the CASE Construct to ensure it doesn't perform SELECT until an actual filter is specified - Performance! AND CASE WHEN @FromDate IS NULL THEN 0 WHEN [DIA].[DATE] >= @FromDate THEN 0 ELSE 1 END = 0 -- Use the CASE Construct to ensure it doesn't perform SELECT until an actual filter is specified - Performance! AND CASE WHEN @ToDate IS NULL THEN 0 WHEN [DIA].[DATE] < @ToDate THEN 0 ELSE 1 END = 0 -- Use the CASE Construct to ensure it doesn't perform SELECT until an actual filter is specified - Performance! AND (@ACTIONTYPESFILTERED = 0 Or ([DIA].[ActionType] in (SELECT * FROM @ACTIONTYPES))) -- -- Use the CASE Construct to ensure it doesn't perform SELECT until an actual filter is specified - Performance! AND (@PRIORITIESFILTERED = 0 OR ([DIA].[Priority] IN (SELECT * FROM @Priorities))) -- -- Use the CASE Construct to ensure it doesn't perform SELECT until an actual filter is specified - Performance! AND (@FLAGSFILTERED = 0 OR (ISNULL([DIA].[Flag], 0) IN (SELECT * FROM @Flags))) -- The Order By Clause is only required here, as further down the @FOUND table will return values ordered by [id] -- which is the exact order they were entered into it here - Again, Performance! ORDER BY [DIA].[CASECODE] ASC, [DIA].[STATUS] ASC, [DIA].[DATE] DESC, [DIA].[DYSTARTTIME] DESC, [DIA].[ACTIONID] DESC --for debugging uncomment this below line, after completion please dont forget to uncomment --select * from @FOUND DECLARE @TOTAL INT SET @TOTAL = (SELECT COUNT(1) FROM @FOUND) SELECT @TOTAL AS [TotalRecords] declare @HandlerTimeZone nvarchar(100) -- Only do the full SELECT with all columns when returning the actual result set. Driven from @FOUND SELECT --[FND].[id], RTRIM(ISNULL([DIA].[CASECODE], '')) AS [CASECODE], --CONVERT(VARCHAR, [DIA].[DATE], 20) AS [DATE], --CONVERT(VARCHAR(5), [DIA].[DATE], 108) AS [Time], dbo.KEYHM_FNConvertUTCDateToTargetTimeZone([DIA].[DATE], @LoggedInHandler) AS [DATE], CONVERT(VARCHAR(5),dbo.KEYHM_FNConvertUTCDateToTargetTimeZone([DIA].[DATE], @LoggedInHandler), 108) AS [Time], RTRIM(ISNULL([DIA].[STATUS], 0)) AS [DStatus], RTRIM(ISNULL([DIA].[ACTIONCODE], '')) AS [ACTIONCODE], RTRIM(ISNULL([DIA].[ACTIONTYPE], '')) AS [ACTIONTYPE], RTRIM(ISNULL([DIA].[PROCESSTYPE], '')) AS [PROCESSTYPE], RTRIM(ISNULL([DIA].[FNCODE], '')) AS [FNCODE], RTRIM(ISNULL([FN].[NAME], '')) AS [FNNAME], RTRIM(ISNULL([DIA].[TEAMCODE], '')) AS [TEAMCODE], RTRIM(ISNULL([DIA].[DisplayText], '')) AS [TEXT1], ISNULL(CASE WHEN ISNUMERIC([DIA].[DYSTARTTIME]) = 1 THEN [DIA].[DYSTARTTIME] ELSE [dbo].[ky_ConvertTimeToClarion]([DIA].[DYSTARTTIME]) END, 0) AS [DYSTARTTIME], ISNULL(CASE WHEN ISNUMERIC([DIA].[DYENDTIME]) = 1 THEN [DIA].[DYENDTIME] ELSE [dbo].[ky_ConvertTimeToClarion]([DIA].[DYENDTIME]) END, 0) AS [DYENDTIME], ISNULL([DIA].[ACTIONID],0) AS [ACTIONID], ISNULL([DIA].[ORGINALACTIONID],0) AS [ORGINALACTIONID], RTRIM(ISNULL([DIA].[PRIORITY], '')) AS [PRIORITY], RTRIM(ISNULL([DIA].[HIGHLIGHTED], 'N')) AS [HIGHLIGHTED], [HAT].[HasAttachments] AS [ATTACHMENTS], ISNULL([DIA].[PROCESSSTATUS], 0) AS [PROCESSSTATUS], ISNULL([DIA].[WORKPROCESS], 0) AS [WORKPROCESS], ISNULL([DIA].[BILLABLE], 0) AS [BILLABLE], RTRIM(ISNULL([DIA].[EMAILADDRESS], '')) AS [EMAILADDRESS], RTRIM(ISNULL(CONVERT(VARCHAR(200), [DIA].[ADDRESSTO]), '')) AS [ADDRESSTO], RTRIM(ISNULL([DIA].[EMAIL], 'N')) AS [EMAIL], RTRIM(ISNULL(CONVERT(VARCHAR(200), [DIA].[SUBJECT]), '')) AS [SUBJECT], ISNULL([DIA].[DELEGATIONSTATUS], 0) AS [DELEGATIONSTATUS], ISNULL([DIA].[DRAFTBILLNO], 0) AS [DRAFTBILLNO], ISNULL([DIA].[CHEQUEREQNO], 0) AS [CHEQUEREQNO], CAST(CASE WHEN RTRIM(ISNULL([DIA].[ACTIONTYPE],'')) ='E' AND @ShowFromToSynopsis = 1 THEN CASE WHEN ISNULL([DIA].[PROCESSTYPE],'O')='I' THEN 'Email From:' + (RTRIM(ISNULL(CAST([DIA].[EMAILADDRESS] AS VARCHAR(300)), ''))) + ' - ' + ISNULL(CAST ([DIA].[Subject] AS VARCHAR(300)),'') ELSE 'Email To:' + RTRIM(CAST(ISNULL([DIA].[AddressTo], '') AS VARCHAR(300))) + ' - ' + ISNULL(CAST([DIA].[Subject] AS VARCHAR(300)), '') END ELSE CASE WHEN DATALENGTH([DIA].[SUBJECT]) = 0 THEN CASE WHEN SUBSTRING([DIA].[DisplayText], 0, CHARINDEX(CHAR(13), [DIA].[DisplayText])) = '' THEN ISNULL([DIA].[TEXT1], '') ELSE SUBSTRING([DIA].[DisplayText], 0, CHARINDEX(CHAR(13), [DIA].[DisplayText])) END WHEN RTRIM(CAST([DIA].[SUBJECT] AS VARCHAR(300))) = '' THEN CASE WHEN SUBSTRING([DIA].[DisplayText], 0, CHARINDEX(CHAR(13), [DIA].[DisplayText])) = '' THEN ISNULL([DIA].[TEXT1], '') ELSE SUBSTRING([DIA].[DisplayText], 0, CHARINDEX(CHAR(13), [DIA].[DisplayText])) END WHEN [DIA].[SUBJECT] IS NULL THEN CASE WHEN SUBSTRING([DIA].[DisplayText], 0, CHARINDEX(CHAR(13), [DIA].[DisplayText])) = '' THEN ISNULL([DIA].[TEXT1], '') ELSE SUBSTRING([DIA].[DisplayText], 0, CHARINDEX(CHAR(13), [DIA].[DisplayText])) END ELSE [DIA].[SUBJECT] END END AS VARCHAR(300)) AS [Synopsis], ISNULL([DIA].[Flag],0) AS [Flag], CASE WHEN RTRIM(ISNULL([DIA].[ForCopy], 0)) = '1' THEN 'True' ELSE 'False' END AS [ForCopy], CASE WHEN ISNULL([DIA].[WORKPROCESS], 0) = 1 AND ISNULL([DIA].[STATUS], 0) <> 1 THEN 'G' WHEN ISNULL([DIA].[STATUS], 0) = 1 THEN 'C' ELSE '' END AS [COMPELETEORGENERATE], CASE WHEN ISNULL([DIA].[WORKPROCESS], 0) = 1 AND ISNULL([DIA].[STATUS], 0) <> 1 THEN 'G' WHEN ISNULL([DIA].[STATUS], 0) = 1 THEN 'C' ELSE '' END AS [COMPELETEORGENERATEDD], ISNULL([TAC].[DESC], '') AS [ActionTitle], ISNULL([TMP].[WKDESC], '') AS [WorkFlow], CASE WHEN ISNULL([UND].[NeedsAttention], 0) = 1 THEN 'Yes' ELSE 'No' END AS [Needs Attention], CASE WHEN ISNULL([UND].[NeedsAttention], 0) = 1 THEN 'Visible' ELSE 'Collapsed' END AS [NeedsAttentionIcon], CASE WHEN @SearchText IS NULL THEN '' WHEN PATINDEX(@SearchText, [DIA].[TEXT1]) > 0 THEN @Search ELSE '' END AS [SearchMatch], ISNULL([DIA].[CreationDate], CONVERT(DATETIME, [DIA].[DATE])) AS [CreationDate], CASE WHEN [DIA].[DUEDATE] != NULL OR [DIA].[DUEDATE] != '' THEN CONVERT(VARCHAR, dbo.KEYHM_FNConvertUTCDateToTargetTimeZone([DIA].[DUEDATE], @LoggedInHandler) , 20) ELSE CONVERT(VARCHAR, dbo.KEYHM_FNConvertUTCDateToTargetTimeZone([DIA].[DATE], @LoggedInHandler) , 20) END AS [DUEDATE], RTRIM(ISNULL([DIA].[DELEGATEDFNR], '')) AS [DelegatedFE], RTRIM(ISNULL([TAC].[Arrangement], '')) AS [Arrangement], @ChargeArrangement AS [ChargeArrangement] FROM @FOUND [FND] INNER JOIN [dbo].[diary] [DIA] LEFT OUTER JOIN [dbo].[Handlers] [FN] ON [FN].[CODE] = [DIA].[FNCODE] ON [DIA].[ActionID] = [FND].[ActionID] LEFT OUTER JOIN [dbo].[TemplateActions] [TAC] LEFT OUTER JOIN [dbo].[Templates] [TMP] ON [TMP].[WKCODE] = [TAC].[WKTCODE] ON [TAC].[ACTIONCODE] = [DIA].[ACTIONCODE] LEFT OUTER JOIN [dbo].[Undertakings] [UND] ON [UND].[ActionID] = [DIA].[ACTIONID] AND [UND].[ActionID] <> 0 AND [UND].[ActionID] IS NOT NULL CROSS APPLY (SELECT CASE WHEN COUNT(1) = 0 THEN 'N' ELSE 'Y' END AS [HasAttachments] FROM [dbo].[DiaryAttachments] [DAT] WHERE [DAT].[DiaryID] = [DIA].[ACTIONID]) [HAT] WHERE CASE WHEN @PageNumber = 0 THEN 0 WHEN [FND].[ID] <= (@PageNumber - 1) * @PageSize THEN 1 WHEN [FND].[ID] > @PageNumber * @PageSize THEN 1 ELSE 0 END = 0 ORDER BY [FND].[id] End GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_FetchDiaryDelegations' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_FetchDiaryDelegations] END GO CREATE PROCEDURE [dbo].[KEYHM_FetchDiaryDelegations] (@ACTIONID INT, @ASSIGNNO INT, @STATUS INT) /******************************************************************************************************* * This procedure is used load the data for TaskAddAction page Delegation Grid. * * * * Stored Procedure Name : [dbo].[KEYHM_FetchDiaryDelegations] * * Copied from : [dbo].[ky_NETCCFetchDiaryDelegations] * * * * Modification History : * * 2019-04-11 Vinodhan K Created * *******************************************************************************************************/ AS BEGIN SET NOCOUNT ON DECLARE @BY VARCHAR(100) DECLARE @FOR VARCHAR(100) IF(@STATUS = 2) BEGIN SELECT D.[ACTIONID] AS [ACTIONID], RTRIM(ISNULL(D.[HANDLER], '')) AS [HANDLER], RTRIM(ISNULL(D.[TEAM], '')) AS [TEAM], D.[DATE] AS [DATE], CONVERT(VARCHAR(5), [dbo].[ky_ConvertDateAndClarionTimeToDateTime]('19000101', D.[TIME]), 108) AS [TIME], D.[DATER] AS [DATER], CASE WHEN D.[TIMER] IS NULL THEN '' ELSE CONVERT(VARCHAR(5), [dbo].[ky_ConvertDateAndClarionTimeToDateTime]('19000101', D.[TIMER]), 108) END AS [TIMER], D.[DUEDATE] AS [DUEDATE], CONVERT(VARCHAR(5), [dbo].[ky_ConvertDateAndClarionTimeToDateTime]('19000101', D.[DUETIME]), 108) AS [DUETIME], RTRIM(ISNULL(D.[REVIEW], '')) AS [REVIEW], RTRIM(ISNULL(D.[STATUS], 0)) AS [STATUS], RTRIM(ISNULL(D.[OWNER], 'N')) AS [OWNER], RTRIM(ISNULL(D.[DELEGATE], '')) AS [DELEGATE], RTRIM(ISNULL(D.[DELEGATESTATUS], 0)) AS [DELEGATESTATUS], RTRIM(ISNULL(D.[ACTIONTYPE], '')) AS [ACTIONTYPE], RTRIM(ISNULL(D.[ASSIGNNO], 0)) AS [ASSIGNNO], RTRIM(ISNULL(D.[FROMHANDLER], '')) AS [FROMHANDLER], RTRIM(ISNULL(D.[RETURNEDBY], '')) AS [RETURNEDBY], RTRIM(ISNULL(D.[DELTYPE], '')) AS [DELTYPE], CASE WHEN ISNULL(D.[DelType], '') = 'Created' THEN RTRIM(H.[NAME]) + '(' + RTRIM(ISNULL(D.[HANDLER], '')) + ')' WHEN ISNULL(D.[ReturnedBy], '') = '' THEN RTRIM(GH.[NAME]) + '(' + RTRIM(ISNULL(D.[FromHandler], '')) + ')' ELSE RTRIM(FH.[NAME]) + '(' + RTRIM(ISNULL(D.[ReturnedBy], '')) + ')' END AS [BY], RTRIM(ISNULL(H.[NAME], '')) + '(' + RTRIM(D.[HANDLER]) + ')' AS [FOR] FROM dbo.[DiaryDelegations] D LEFT OUTER JOIN [dbo].[Handlers] H ON H.[CODE] = D.[HANDLER] LEFT OUTER JOIN [dbo].[Handlers] FH ON FH.[CODE] = D.[ReturnedBy] LEFT OUTER JOIN [dbo].[Handlers] GH ON GH.[CODE] = D.[FromHandler] WHERE D.[ACTIONID] = @ACTIONID ORDER BY D.[AssignNo] DESC END ELSE BEGIN SELECT D.[ACTIONID] AS [ACTIONID], RTRIM(ISNULL(D.[HANDLER], '')) AS [HANDLER], RTRIM(ISNULL(D.[TEAM], '')) AS [TEAM], D.[DATE] AS [DATE], CONVERT(VARCHAR(5), [dbo].[ky_ConvertDateAndClarionTimeToDateTime]('19000101', D.[TIME]), 108) AS [TIME], D.[DATER] AS [DATER], CASE WHEN D.[TIMER] IS NULL THEN '' ELSE CONVERT(VARCHAR(5), [dbo].[ky_ConvertDateAndClarionTimeToDateTime]('19000101', D.[TIMER]), 108) END AS [TIMER], D.[DUEDATE] AS [DUEDATE], CONVERT(VARCHAR(5), [dbo].[ky_ConvertDateAndClarionTimeToDateTime]('19000101', D.[DUETIME]), 108) AS [DUETIME], RTRIM(ISNULL(D.[REVIEW], '')) AS [REVIEW], RTRIM(ISNULL(D.[STATUS], 0)) AS [STATUS], RTRIM(ISNULL(D.[OWNER], 'N')) AS [OWNER], RTRIM(ISNULL(D.[DELEGATE], '')) AS [DELEGATE], RTRIM(ISNULL(D.[DELEGATESTATUS], 0)) AS [DELEGATESTATUS], RTRIM(ISNULL(D.[ACTIONTYPE], '')) AS [ACTIONTYPE], RTRIM(ISNULL(D.[ASSIGNNO], 0)) AS [ASSIGNNO], RTRIM(ISNULL(D.[FROMHANDLER], '')) AS [FROMHANDLER], RTRIM(ISNULL(D.[RETURNEDBY], '')) AS [RETURNEDBY], RTRIM(ISNULL(D.[DELTYPE], '')) AS [DELTYPE], CASE WHEN ISNULL(D.[DelType], '') = 'Created' THEN RTRIM(H.[NAME]) + '(' + RTRIM(ISNULL(D.[HANDLER], '')) + ')' WHEN ISNULL(D.[ReturnedBy], '') = '' THEN RTRIM(GH.[NAME]) + '(' + RTRIM(ISNULL(D.[FromHandler], '')) + ')' ELSE RTRIM(FH.[NAME]) + '(' + RTRIM(ISNULL(D.[ReturnedBy], '')) + ')' END AS [BY], RTRIM(ISNULL(H.[NAME], '')) + '(' + RTRIM(D.[HANDLER]) + ')' AS [FOR] FROM dbo.[DiaryDelegations] D LEFT OUTER JOIN [dbo].[Handlers] H ON H.[CODE] = D.[HANDLER] LEFT OUTER JOIN [dbo].[Handlers] FH ON FH.[CODE] = D.[ReturnedBy] LEFT OUTER JOIN [dbo].[Handlers] GH ON GH.[CODE] = D.[FromHandler] WHERE D.[AssignNo] = @ASSIGNNO END SET NOCOUNT OFF END GO IF OBJECT_ID(N'[KEYHM_FetchIntellisense]',N'P')IS NOT NULL DROP PROCEDURE [KEYHM_FetchIntellisense] GO CREATE PROCEDURE [KEYHM_FetchIntellisense] ( @Handler VARCHAR(6) ) AS /******************************************************************************************************* * This procedure is used To fetch the Intellisense. * * * * Stored Procedure Name : [dbo].[KEYHM_FetchIntellisense] * * Copied from : [dbo].[ky_NETFetchIntellisense] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON SELECT RTRIM(Id) AS Id, RTRIM(Handler) AS Handler, RTRIM(Narrative) AS Narrative FROM Intellisense WHERE Handler = @Handler ORDER by Narrative SET NOCOUNT OFF END GO IF OBJECT_ID(N'KEYHM_FetchMinutesPerUnit',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_FetchMinutesPerUnit] GO CREATE PROCEDURE [dbo].[KEYHM_FetchMinutesPerUnit] AS /******************************************************************************************************* * * * * * Stored Procedure Name : [dbo].[KEYHM_FetchMinutesPerUnit] * * Copied from : [dbo].[ky_NETDashboardCaseAlert] * * * * Modification History: * * 2019-04-22 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @TUTNUMVALUE DECIMAL(17, 2) SELECT @TUTNUMVALUE = CTN.[NumValue] FROM [dbo].[CtrlNum] CTN WHERE CTN.[Code] = 'TimeUnit' SET @TUTNUMVALUE = CASE WHEN ISNULL(@TUTNUMVALUE, 0) = 0 THEN 6 ELSE @TUTNUMVALUE END SELECT @TUTNUMVALUE AS [MinutesPerUnit] END GO IF OBJECT_ID(N'KEYHM_FetchTimeEntry',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_FetchTimeEntry] GO CREATE PROCEDURE [dbo].[KEYHM_FetchTimeEntry] (@CaseCode VARCHAR(20)) AS /******************************************************************************************************* * This procedure is used to get net Action Code based on the given Action ID. * * * * Stored Procedure Name : [dbo].[KEYHM_FetchTimeEntry] * * Copied from : [dbo].[ky_NETTLFetchTimeEntry3] * * * * Modification History: * * 2019-04-24 Vinodhan K Created * * 2019-04-24 Vinodhan K TimeInHours Format modified to be dispalyed as '00:00' format * * 2020-05-04 Arun V Have corrected the Writeoff MInutes calculation issue. KEYHM-574 * * 2020-05-04 Arun V Have corrected the Writeoff Value TimeInCharge value make it as ABS, * * In UI, negative value is handled and added minus in Front END * * KEYHM-574 * *******************************************************************************************************/ BEGIN SET NOCOUNT ON DECLARE @IsSAM4 bit DECLARE @TimeEntryTotalCharge DECIMAL(19, 2) DECLARE @TimeEntryTotalTime INT DECLARE @TotalCharge Decimal(19, 2) DECLARE @TotalTime INT DECLARE @TimeBal INT DECLARE @ChargeBal DECIMAL(19, 2) DECLARE @ChargeableBal DECIMAL(19, 2) DECLARE @NonChargeableBal DECIMAL(19, 2) DECLARE @NonChargeableTimeBal INT DECLARE @ChargeableTimeBal INT DECLARE @NCOMMAND NVARCHAR(MAX) DECLARE @TotalFeesIssued DECIMAL(19, 2) SET @IsSAM4 = [dbo].[ISSAM4]() SELECT TIE.[RecordID] AS [RecordID], RTRIM(ISNULL(HAN.[CODE], '')) AS [HandlerCode], RTRIM(ISNULL(HAN.[NAME], '')) AS [FEEEARN], TIE.[DATE] AS [DATE], [dbo].[KEYHM_FN_RemoveSpuriousWhitespace](TIE.[COMMENT], 200) AS [COMMENT], CASE TIE.[TimeOrCharge] WHEN 'T' THEN 'Time' WHEN 'B' THEN 'Bill' WHEN 'C' THEN 'Charge' END AS [TIMEORCHARGE], TIE.[TIME] AS [TIME], CASE WHEN ([TIME] = 0) THEN ('00:00') WHEN ([Time] > 0) THEN CASE WHEN LEN([TIME] / 60) < 2 THEN '0' + CAST([TIME] / 60 AS VARCHAR) ELSE CAST([TIME] / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + CONVERT(NVARCHAR(10), CONVERT(NVARCHAR(5), [TIME] - (60 * ([TIME] / 60))))), 2, 2) WHEN ([TIME] < 0) THEN CASE WHEN LEN([TIME] / 60) < 2 THEN '0' + CAST(ABS([TIME]) / 60 AS VARCHAR) ELSE CAST(ABS([TIME]) / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + CONVERT(NVARCHAR(10), CONVERT(NVARCHAR(5), -[TIME] - (60 * (-[TIME] / 60))))), 2, 2) END AS [TimeInHours], CASE TIE.[Rec_Irr] WHEN 'C' THEN 'Chargeable' WHEN 'N' THEN 'Non-Chargeable' WHEN '' THEN 'Chargeable' END AS [REC_IRR], ISNULL(TIE.[CHARGE], 0.00) AS [CHARGE], ISNULL(TIE.[BILLEDAMOUNT], 0.00) AS [BILLEDAMOUNT], ISNULL(TIE.[INVOICENO], 0) AS [INVOICENO], CASE WHEN TC.[DESC] IS NULL THEN TIE.[TASK] WHEN TC.[DESC] IS NOT NULL THEN TC.[DESC] ELSE '' END AS [TASK], CASE WHEN ISNULL(TIE.[WriteOffID], 0) = 0 THEN '' ELSE CONVERT(VARCHAR(MAX), ISNULL(TIE.[WriteOffID], 0)) END AS [WriteOffID], TIE.[WriteOffDT] AS [WriteOffDT], ISNULL(TIE.[Rate], 0) AS [Rate], ISNULL(TIE.[IncludeInBill], 0) AS [IncludeInBill], CASE WHEN TIE.[TIMEORCHARGE] = 'B' OR TIE.[IncludeInBill] = 2 OR TIE.[Rec_Irr] <> 'C' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[INVOICENO], 0) <> 0 THEN 0 WHEN @IsSAM4 <> 1 THEN ISNULL(TIE.[CHARGE], 0) - ISNULL(TIE.[BILLEDAMOUNT], 0) ELSE ISNULL(TIE.[CHARGE], 0) END AS [WIP], TIE.[Task] AS [TaskCode] FROM [dbo].[TimeEntry] TIE LEFT OUTER JOIN [dbo].[Matters] MAT ON MAT.[Code] = TIE.[Matter] LEFT OUTER JOIN [dbo].[TasksCodes] TC ON TC.[CODE] = TIE.[Task] LEFT OUTER JOIN [dbo].[Handlers] HAN ON HAN.[CODE] = TIE.[FeeEarn] WHERE TIE.[Matter] = @CaseCode -- Please see also: KEYHM_FN_MatterClosable. If you change any of these calculations, -- ensure the ones in there are changed as well. -- KAAS_MatterClosable. If you change any of these calculations, -- ensure the ones in there are changed as well. -- KAAS_CaseSummaryPageLoad. If you change any of these calculations, -- ensure the ones in there are changed as well. SELECT @TimeEntryTotalCharge = ISNULL(SUM(ISNULL(TIE.[Charge], 0)), 0), @TimeEntryTotalTime = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0), @TotalCharge = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 ELSE ISNULL(TIE.[Charge], 0) END), 0), @ChargeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[InvoiceNo], 0) <> 0 THEN 0 WHEN @IsSAM4 = 1 THEN ISNULL(TIE.[Charge], 0) ELSE ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0) END), 0), @NonChargeableBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' AND ISNULL(TIE.[Task], '') <> 'WRI' THEN ISNULL(TIE.[Charge], 0) ELSE 0 END), 0), @ChargeableBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') <> 'N' AND ISNULL(TIE.[Task], '') <> 'WRI' THEN ISNULL(TIE.[Charge], 0) ELSE 0 END), 0), @TimeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[InvoiceNo], 0) <> 0 THEN 0 WHEN @IsSAM4 = 0 THEN CASE WHEN TIE.[Charge] = 0 THEN 0 ELSE CONVERT(INT,FLOOR(CONVERT(DECIMAL(18, 2), TIE.[TIME]) * ((TIE.[Charge] - TIE.[BilledAmount]) / TIE.[Charge]))) END ELSE ISNULL(TIE.[Time], 0) END), 0), @NonChargeableTimeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' AND ISNULL(TIE.[Task], '') <> 'WRI' THEN ISNULL(TIE.[TIME], 0) ELSE 0 END), 0), @ChargeableTimeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' OR ISNULL(TIE.[Task], '') = 'WRI' THEN 0 ELSE ISNULL(TIE.[TIME], 0) END), 0), @TotalTime = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' OR ISNULL(TIE.[Task], '') = 'WRI' THEN 0 ELSE ISNULL(TIE.[Time], 0) END), 0) FROM [dbo].[TimeEntry] TIE WHERE TIE.[Matter] = @CaseCode AND ((TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun -- PLEASE NOTE THAT THIS MUST BE IDENTICAL TO RESULT SET 10 IN KAAS_CaseSummaryPageLoad. Please -- modify both procedures if this needs to be changed. -- Result Set 10 -- The fees issued to date IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = N' SELECT @TotalFeesIssued = ISNULL(SUM((CASE WHEN HED.[INVCR] = ''I'' THEN TRN.[VALUE] ELSE TRN.[VALUE] * - 1 END)), 0) FROM [dbo].[BatchH] HED INNER JOIN [dbo].[BatchDetails] TRN ON TRN.[BATCHNO] = HED.[BATCHNO] WHERE HED.[MATTER] = @CaseCode AND HED.[POSTED] = ''Y'' AND TRN.[TYPE] = ''I'' AND TRN.[OUTLAY] = ''F''' END ELSE BEGIN SET @NCOMMAND = N' SELECT @TotalFeesIssued = ISNULL(SUM(ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * (-1)), 0) FROM [dbo].[TransactionsHeaders] HED INNER JOIN [dbo].[Transactions] TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND ( TRN.[CorrectionInd] = ''L'' OR TRN.[CorrectionInd] = ''X'') WHERE HED.[MatterCode] = @CaseCode --values imported from Axxia SELECT @TotalFeesIssued = @TotalFeesIssued + ISNULL(SUM(ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * (-1)), 0) FROM [dbo].[Transactions] TRN LEFT OUTER JOIN [dbo].[TransactionsHeaders] HED ON HED.[BatchNo] = TRN.[BatchNo] WHERE TRN.[MatterCode] = @CaseCode AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND ( TRN.[CorrectionInd] = ''L'' OR TRN.[CorrectionInd] = ''X'') AND HED.[BatchNo] IS NULL' END EXECUTE sp_executesql @NCOMMAND, N'@CaseCode VARCHAR(20), @TotalFeesIssued DECIMAL(19, 2) OUTPUT', @CaseCode = @CaseCode, @TotalFeesIssued = @TotalFeesIssued OUTPUT /*WIP Calculations*/ SELECT CASE WHEN LEN(@TimeBal / 60) < 2 THEN '0' + CAST(@TimeBal / 60 AS VARCHAR) ELSE CAST(@TimeBal / 60 AS VARCHAR) END AS [WIPHrs], SUBSTRING(CONVERT(VARCHAR(3), 100 + @TimeBal - (60 * (@TimeBal / 60))), 2, 2) AS [WIPMins], @ChargeBal AS [WIPAmt] /*Total Record Calculations*/ SELECT CASE WHEN LEN(@TimeEntryTotalTime / 60) < 2 THEN '0' + CAST(@TimeEntryTotalTime / 60 AS VARCHAR) ELSE CAST(@TimeEntryTotalTime / 60 AS VARCHAR) END AS [TotalHours], SUBSTRING(CONVERT(VARCHAR(3), 100 + @TimeEntryTotalTime - (60 * (@TimeEntryTotalTime / 60))), 2, 2) AS [TotalMins], @TimeEntryTotalCharge AS [TotalAmt], CASE WHEN LEN(@NonChargeableTimeBal / 60) < 2 THEN '0' + CAST(@NonChargeableTimeBal / 60 AS VARCHAR) ELSE CAST(@NonChargeableTimeBal / 60 AS VARCHAR) END AS [RecNonChargeableHrs], SUBSTRING(CONVERT(VARCHAR(3), 100 + @NonChargeableTimeBal - (60 * (@NonChargeableTimeBal / 60))), 2, 2) AS [RecNonChargeableMins], @NonChargeableBal AS [RecNonChargeableAmt], CASE WHEN LEN(@ChargeableTimeBal / 60) < 2 THEN '0' + CAST(@ChargeableTimeBal / 60 AS VARCHAR) ELSE CAST(@ChargeableTimeBal / 60 AS VARCHAR) END AS [RecChargeableHrs], SUBSTRING(CONVERT(VARCHAR(3), 100 + @ChargeableTimeBal - (60 * (@ChargeableTimeBal / 60))), 2, 2) AS [RecChargeableMins], @ChargeableBal AS [RecChargeableAmt], CASE WHEN LEN((@ChargeableTimeBal + @NonChargeableTimeBal) / 60) < 2 THEN '0' + CAST((@ChargeableTimeBal + @NonChargeableTimeBal) / 60 AS VARCHAR) ELSE CAST((@ChargeableTimeBal + @NonChargeableTimeBal) / 60 AS VARCHAR) END AS [RecTotalHrs], SUBSTRING(CONVERT(VARCHAR(3), 100 + (@ChargeableTimeBal + @NonChargeableTimeBal) - (60 * ((@ChargeableTimeBal + @NonChargeableTimeBal) / 60))), 2, 2) AS [RecTotalMins], @ChargeableBal + @NonChargeableBal AS [RecTotalAmt], @TotalFeesIssued AS [TotalBilled], @TotalFeesIssued - (@ChargeableBal + @NonChargeableBal) AS [ProfitLoss] -- Current Profit/Loss = TotalBilled - RecTotalAmt; /*Write Off Calculations*/ SELECT CASE WHEN TIES.[WriteOffTime] > 0 THEN '-' ELSE '' END + CASE WHEN LEN(TIES.[WriteOffTime] / 60) < 2 THEN '0' + CAST(TIES.[WriteOffTime] / 60 AS VARCHAR) ELSE CAST(TIES.[WriteOffTime] / 60 AS VARCHAR) END AS [WOHrs], CONVERT(VARCHAR(5), (TIES.[WriteOffTime] % 60)*-1) AS [WOMins], ---TIES.[WriteOffTime] / 60 AS [WOHrs], ---TIES.[WriteOffTime] % 60 AS [WOMins], TIES.[WriteOffValue] As [WOAmt] FROM (SELECT ISNULL(SUM(CONVERT(DECIMAL(18, 2), ISNULL(TIE.[Charge], 0))), 0) AS [WriteOffValue], ISNULL(SUM(ISNULL(TIE.[Time], 0)), 0) AS [WriteOffTime] FROM [dbo].[matters] MAT INNER JOIN [dbo].[TimeEntry] TIE ON TIE.[MATTER] = MAT.[Code] WHERE TIE.[MATTER] = @CaseCode AND ((TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) AND TIE.[Task] = 'WRI') TIES /*Total Billed Amount Calculations */ ------ Commented out as reversed KEYD-3657 --IF @IsSAM4 = 0 -- SELECT ISNULL(SUM(ISNULL([TIE].[BilledAmount], 0)), 0) AS [TotalBill] -- FROM [dbo].[TimeEntry] [TIE] -- WHERE [TIE].[Matter] = @CaseCode --ELSE -- SELECT @TotalFeesIssued AS [TotalBill] -- FROM [dbo].[TimeEntry] [TIE] -- WHERE [TIE].[Matter] = @CaseCode DECLARE @DraftBillValue DECIMAL(18, 2) SET @IsSAM4 = [dbo].[ISSAM4]() IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = N' SELECT @DraftBillValue = ISNULL(SUM(ISNULL(BD.[NET], 0)), 0) + ISNULL(SUM(ISNULL(BD.[VATVALUE], 0)), 0) FROM [dbo].[BillHeader] HED INNER JOIN [dbo].[BillDetails] BD ON BD.[DRAFTNO] = HED.[DRAFTNO] WHERE HED.[MATTER] = @CaseCode AND HED.[BILLNO] = 0' END ELSE BEGIN SET @NCOMMAND = N' SELECT @DraftBillValue = ISNULL(SUM(ISNULL(BD.[NetValue], 0)), 0) + ISNULL(SUM(ISNULL(BD.[VatValue], 0)), 0) FROM [dbo].[BillHead] HED INNER JOIN [dbo].[BillDetail] BD ON BD.[BillID] = HED.[BillingID] WHERE HED.[MatterCode] = @CaseCode AND HED.[BillStatus] <> ''Approved'' AND ISNULL(HED.[ProForma], '''') = ''Y''' END EXECUTE sp_executesql @NCOMMAND, N'@CaseCode VARCHAR(20),@DraftBillValue DECIMAL(18, 2) OUTPUT', @CaseCode = @CaseCode, @DraftBillValue=@DraftBillValue OUTPUT DECLARE @Section68 VARCHAR(10) DECLARE @IsApproved VARCHAR(10) DECLARE @CSTimeBal INT DECLARE @CSChargeBal DECIMAL(19, 2) DECLARE @CSTotalCharge Decimal(19, 2) DECLARE @CSTotalTime INT --Matter values that are re-used elsewhere in this procedure. SELECT @Section68 = ISNULL(MAT.[Section68],''), @IsApproved = ISNULL(CON.[Approved],'') FROM [dbo].[matters] MAT LEFT OUTER JOIN [dbo].[Contacts] CON ON CON.[Code] = MAT.[ClientCode] WHERE MAT.[Code] = @CaseCode DECLARE @LDIADATE DATETIME DECLARE @LDIAACTIONTYPE VARCHAR(1) DECLARE @LDIATEXT1 VARCHAR(MAX) DECLARE @LDIAFNCODE VARCHAR(10) DECLARE @LDIAFNNAME VARCHAR(50) SELECT TOP 1 @LDIADATE = LDIA.[DATE], @LDIAACTIONTYPE = LDIA.[ACTIONTYPE], @LDIATEXT1 = LDIA.[TEXT1], @LDIAFNCODE = LDIA.[FNCODE], @LDIAFNNAME = [FEC].[Name] FROM [dbo].[diary] LDIA INNER JOIN [dbo].[FeeEarnerCodes] [FEC] ON LDIA.FNCODE = [FEC].[CODE] WHERE LDIA.[CASECODE] = @CaseCode ORDER BY LDIA.[DATE] DESC DECLARE @MDIADATE DATETIME DECLARE @MDIAACTIONTYPE VARCHAR(1) DECLARE @MDIATEXT1 VARCHAR(MAX) DECLARE @MDIAFNCODE VARCHAR(10) DECLARE @MDIAFNNAME VARCHAR(50) SELECT TOP 1 @MDIADATE= MDIA.[DATE], @MDIAACTIONTYPE = MDIA.[ACTIONTYPE], @MDIATEXT1 = MDIA.[TEXT1], @MDIAFNCODE = MDIA.[FNCODE], @MDIAFNNAME = [FEC].[Name] FROM [dbo].[diary] MDIA INNER JOIN [dbo].[FeeEarnerCodes] [FEC] ON MDIA.FNCODE = [FEC].[CODE] WHERE MDIA.[CASECODE] = @CaseCode AND MDIA.[HIGHLIGHTED] = 'Y' ORDER BY MDIA.[DATE] DESC DECLARE @NDIADATE DATETIME DECLARE @NDIAACTIONTYPE VARCHAR(1) DECLARE @NDIATEXT1 VARCHAR(MAX) DECLARE @NDIAFNCODE VARCHAR(10) DECLARE @NDIAFNNAME VARCHAR(50) SELECT TOP 1 @NDIADATE = NDIA.[DATE], @NDIAACTIONTYPE = NDIA.[ACTIONTYPE], @NDIATEXT1 = NDIA.[TEXT1], @NDIAFNCODE = NDIA.[FNCODE], @NDIAFNNAME = [FEC].[Name] FROM dbo.[diary] NDIA INNER JOIN [dbo].[FeeEarnerCodes] [FEC] ON NDIA.FNCODE = [FEC].[CODE] WHERE NDIA.[CASECODE] = @CaseCode AND NDIA.[STATUS] = 0 ORDER BY NDIA.[DATE] ASC DECLARE @TIEDATE DATETIME --Pino 2015-05-27 Start --SELECT @TIEDATE = (MAX(TIE.[DATE])) -- FROM [dbo].[TimeEntry] TIE -- WHERE TIE.[Matter] = @CaseCode IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = N' SELECT @TIEDATE = MAX(CASE WHEN DLG.[DATE] IS NULL THEN CONVERT(DATETIME, NULL) WHEN DLG.[DATE] > GETDATE() THEN CONVERT(DATETIME, NULL) ELSE DLG.[DATE] END) FROM [dbo].[DebtorsLedger] DLG WHERE DLG.[MATTER] = @CaseCode' END ELSE BEGIN SET @NCOMMAND = N' SELECT @TIEDATE = MAX(CASE WHEN TRN.[TransDate] IS NULL THEN CONVERT(DATETIME, NULL) WHEN TRN.[TransDate] > GETDATE() THEN CONVERT(DATETIME, NULL) ELSE TRN.[TransDate] END) FROM [dbo].[Transactions] TRN WHERE TRN.[Posted] = ''Y'' AND TRN.[MatterCode] = @CaseCode AND TRN.[DebtorsValue] <> 0 AND TRN.[CorrectionInd] = ''L'' AND ( ( TRN.[XnType] = ''I'' AND TRN.[RecType] = ''H'') OR ( TRN.[XnType] = ''J'' AND TRN.[RecType] = ''D''))' END EXECUTE sp_executesql @NCOMMAND, N'@CaseCode VARCHAR(20), @TIEDATE DATETIME OUTPUT', @CaseCode = @CaseCode, @TIEDATE = @TIEDATE OUTPUT --Pino 2015-05-27 End DECLARE @LastTimeEntryDate DATETIME DECLARE @LastTimeEntryTime INT DECLARE @LastTimeEntryRate DECIMAL(10, 2) DECLARE @LastTimeEntryCharge DECIMAL(10, 2) DECLARE @LastTimeEntryTask VARCHAR(6) DECLARE @LastTimeEntryComment VARCHAR(1000) DECLARE @LastTimeEntryFE VARCHAR(10) DECLARE @LastTimeEntryFEName VARCHAR(50) DECLARE @CSTimeEntryTotalCharge DECIMAL(19, 2) DECLARE @CSTimeEntryTotalTime INT SELECT TOP (1) @LastTimeEntryDate = TIE.[DATE], @LastTimeEntryTime = TIE.[Time], @LastTimeEntryRate = TIE.[Rate], @LastTimeEntryCharge = TIE.[Charge], @LastTimeEntryTask = TIE.[Task], @LastTimeEntryComment = TIE.[Comment], @LastTimeEntryFE = TIE.[FeeEarn], @LastTimeEntryFEName = [FEC].[Name] FROM [dbo].[TimeEntry] TIE INNER JOIN [dbo].[FeeEarnerCodes] [FEC] ON [TIE].[FeeEarn] = [FEC].[CODE] WHERE TIE.[Matter] = @CaseCode AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun ORDER BY TIE.[Date] DESC, TIE.[Time] DESC SET @LastTimeEntryRate = ISNULL(@LastTimeEntryRate, 0) SET @LastTimeEntryCharge = ISNULL(@LastTimeEntryCharge, 0) -- Please see also: KAAS_FN_MatterClosable. If you change any of these calculations, -- ensure the ones in there are changed as well. -- KAAS_MatterClosable. If you change any of these calculations, -- ensure the ones in there are changed as well. SELECT @CSTimeEntryTotalCharge = ISNULL(SUM(ISNULL(TIE.[Charge], 0)), 0), @CSTimeEntryTotalTime = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0), @CSTotalCharge = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 ELSE ISNULL(TIE.[Charge], 0) END), 0), @CSChargeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[InvoiceNo], 0) <> 0 THEN 0 WHEN @IsSAM4 = 1 THEN ISNULL(TIE.[Charge], 0) ELSE ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0) END), 0), @CSTimeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[InvoiceNo], 0) <> 0 THEN 0 WHEN @IsSAM4 = 0 THEN CASE WHEN TIE.[Charge] = 0 THEN 0 ELSE CONVERT(INT, FLOOR(CONVERT(DECIMAL(18, 2), TIE.[TIME]) * ( (TIE.[Charge] - TIE.[BilledAmount]) / TIE.[Charge]))) END ELSE ISNULL(TIE.[Time], 0) END), 0), @CSTotalTime = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 ELSE ISNULL(TIE.[Time], 0) END), 0) FROM [dbo].[TimeEntry] TIE WHERE TIE.[Matter] = @CaseCode AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun DECLARE @DebtBal DECIMAL(19, 2) DECLARE @OutlayBal DECIMAL(19, 2) DECLARE @DebtBalDate DATETIME DECLARE @OutlayBalDate DATETIME DECLARE @ClientCurrent DECIMAL(19, 2) DECLARE @ClientDeposit DECIMAL(19, 2) -- Please see also: KAAS_FN_MatterClosable. If you change any of these calculations, -- ensure the ones in there are changed as well. -- -- To ensure SAM3 will retrieve these from [dbo].[matters] SET @DebtBal = 0 SET @OutlayBal = 0 SET @ClientCurrent = 0 SET @ClientDeposit = 0 IF @IsSAM4 = 1 BEGIN SET @NCOMMAND = N' SELECT @DebtBal = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[DebtorsValue], 0)), 0)), @DebtBalDate = MAX(CASE WHEN ISNULL(TRN.[DebtorsValue], 0) = 0 THEN NULL ELSE TRN.[TransDate] END), @OutlayBal = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[OutlayValue], 0)), 0)), @OutlayBalDate = MAX(CASE WHEN ISNULL(TRN.[OutlayValue], 0) = 0 THEN NULL ELSE TRN.[TransDate] END), @ClientCurrent = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[ClientCurrent], 0)), 0)), @ClientDeposit = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[ClientDeposit], 0)), 0)) FROM [dbo].[Transactions] TRN WHERE TRN.[MatterCode] = @CaseCode AND TRN.[Posted] = ''Y'' AND TRN.[RecType] <> ''V'' AND TRN.[CorrectionInd] = ''L''' EXECUTE sp_executesql @NCOMMAND, N'@CaseCode VARCHAR(20), @DebtBal DECIMAL(19, 2) OUTPUT, @DebtBalDate DATETIME OUTPUT, @OutlayBal DECIMAL(19, 2) OUTPUT, @OutlayBalDate DATETIME OUTPUT, @ClientCurrent DECIMAL(19, 2) OUTPUT, @ClientDeposit DECIMAL(19, 2) OUTPUT', @CaseCode = @CaseCode, @DebtBal = @DebtBal OUTPUT, @DebtBalDate = @DebtBalDate OUTPUT, @OutlayBal = @OutlayBal OUTPUT, @OutlayBalDate = @OutlayBalDate OUTPUT, @ClientCurrent = @ClientCurrent OUTPUT, @ClientDeposit = @ClientDeposit OUTPUT END --Result Set 1 --WIP SELECT TIES.[FeeEarn] AS [FeeEarn], TIES.[NAME] AS [Name], CASE WHEN LEN(TIES.[TOTALTIME] / 60) < 2 THEN '0' + CAST(TIES.[TOTALTIME] / 60 AS VARCHAR) ELSE CAST(TIES.[TOTALTIME] / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (TIES.[TOTALTIME] % 60)), 2, 2) AS [FETotalHours], TIES.[Charge] AS [FECharge], TIES.[ChargeBal] AS [FEChargeBal], CASE WHEN LEN(TIES.[WIPTOTALTIME] / 60) < 2 THEN '0' + CAST(TIES.[WIPTOTALTIME] / 60 AS VARCHAR) ELSE CAST(TIES.[WIPTOTALTIME] / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (TIES.[WIPTOTALTIME] % 60)), 2, 2) AS [FEWIPHours] FROM ( SELECT TIE.[FeeEarn] AS [FeeEarn], HAN.[NAME] AS [NAME], ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0) AS [TOTALTIME], SUM(CONVERT(DECIMAL(18, 2), ISNULL(TIE.[Charge], 0))) AS [Charge], SUM(CONVERT(DECIMAL(18, 2), CASE WHEN @IsSAM4 = 1 AND TIE.[InvoiceNo] <> 0 THEN 0 WHEN @IsSAM4 = 0 THEN ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0) ELSE ISNULL(TIE.[Charge], 0) END)) AS [ChargeBal], CONVERT(INT, FLOOR(CONVERT(DECIMAL(18, 2), ISNULL(SUM(CASE WHEN @IsSAM4 = 1 AND [TIE].[InvoiceNo] <> 0 THEN 0 WHEN [TIE].[Charge] - [TIE].[BilledAmount] = 0 THEN 0 ELSE TIE.[TIME] END) , 0)) * CASE WHEN SUM(CONVERT(DECIMAL(18, 2), CASE WHEN @IsSAM4 = 1 AND [TIE].[InvoiceNo] <> 0 THEN 0 WHEN [TIE].[Charge] - [TIE].[BilledAmount] = 0 THEN 0 ELSE TIE.[Charge] END)) = 0 THEN 0 ELSE SUM(CONVERT(DECIMAL(18, 2), CASE WHEN @IsSAM4 = 1 AND TIE.[InvoiceNo] <> 0 THEN 0 WHEN @IsSAM4 = 0 THEN ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0) ELSE ISNULL(TIE.[Charge], 0) END)) / SUM(CONVERT(DECIMAL(18, 2), CASE WHEN @IsSAM4 = 1 AND [TIE].[InvoiceNo] <> 0 THEN 0 WHEN [TIE].[Charge] - [TIE].[BilledAmount] = 0 THEN 0 ELSE TIE.[Charge] END)) END)) AS [WIPTOTALTIME] FROM [dbo].[matters] MAT INNER JOIN [dbo].[TimeEntry] TIE ON TIE.[MATTER] = MAT.[Code] INNER JOIN [dbo].[Handlers] HAN ON HAN.[CODE] = TIE.[FeeEarn] WHERE TIE.[MATTER] = @CaseCode AND TIE.[DATE] < GETDATE() AND ((TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun AND TIE.[REC_IRR] <> 'N' GROUP BY TIE.[FEEEARN], HAN.[NAME]) TIES ORDER BY TIES.[ChargeBal] DESC, TIES.[TOTALTIME] DESC --Result Set 4 --Activity to Date SELECT TIES.[Activity], CASE WHEN TIES.[TOTALTIME] < 0 THEN '-' ELSE '' END + CASE WHEN LEN(TIES.[TOTALTIME] / 60) < 2 THEN '0' + CAST(TIES.[TOTALTIME] / 60 AS VARCHAR) ELSE CAST(TIES.[TOTALTIME] / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (ABS(TIES.[TOTALTIME]) % 60)), 2, 2) AS [ActivityToDateTime], TIES.[Value] AS [ActivityToDateValue] FROM ( SELECT TIE.[TASK] AS [Task], CASE WHEN TSC.[DESC] IS NULL THEN 'Task Code: ' + ISNULL(TIE.[TASK], '') ELSE RTRIM(ISNULL(TSC.[DESC],'')) END AS [Activity], ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0) AS [TOTALTIME], SUM( CONVERT(DECIMAL(18, 2), ISNULL(TIE.[Charge], 0))) AS [Value] FROM [dbo].[matters] MAT INNER JOIN [dbo].[TimeEntry] TIE LEFT OUTER JOIN [dbo].[TasksCodes] TSC ON TSC.[CODE] = TIE.[Task] ON TIE.[MATTER] = MAT.[Code] WHERE TIE.[MATTER] = @CaseCode AND TIE.[DATE] < GETDATE() AND ((TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun AND TIE.[REC_IRR] <> 'N' AND TIE.[Task] <> 'WRI' GROUP BY TIE.[TASK], CASE WHEN TSC.[DESC] IS NULL THEN 'Task Code: ' + ISNULL(TIE.[TASK], '') ELSE RTRIM(ISNULL(TSC.[DESC],'')) END) TIES ORDER BY TIES.[Value] DESC, TIES.[TOTALTIME] DESC --Result Set 6 --Total Time [Activity] SELECT CASE WHEN LEN(TIES.[TOTALTIME] / 60) < 2 THEN '0' + CAST(TIES.[TOTALTIME] / 60 AS VARCHAR) ELSE CAST(TIES.[TOTALTIME] / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (TIES.[TOTALTIME] % 60)), 2, 2) AS [ActivityTotalTime], TIES.[Value] AS [ActivityTotalValue] FROM ( SELECT ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0) AS [TOTALTIME], SUM(CONVERT(DECIMAL(18, 2), ISNULL(TIE.[Charge], 0))) AS [Value] FROM [dbo].[matters] MAT INNER JOIN [dbo].[TimeEntry] TIE ON TIE.[MATTER] = MAT.[Code] WHERE TIE.[MATTER] = @CaseCode AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) AND TIE.[TASK] <> 'WRI') TIES --Result Set 0 --Matter Data SELECT RTRIM(ISNULL(MAT.[Code], '')) AS [Code], RTRIM(ISNULL(MAT.[Description], '')) AS [Description], RTRIM(ISNULL(MAT.[ClientCode], '')) AS [ClientCode], RTRIM(ISNULL(CLT.[CLNAME], '')) AS [CLName], RTRIM(ISNULL(CLT.[CLADDR], '')) AS [CLAddr], RTRIM(ISNULL(MAT.[FECode], '')) AS [FECode], RTRIM(ISNULL(HAN.[NAME], '')) AS [HandlerName], RTRIM(ISNULL(MAT.[Dept], '')) AS [Dept], RTRIM(ISNULL(DPT.[DESC], '')) AS [Desc], RTRIM(MAT.WType) AS [WType], RTRIM(ISNULL(WKT.[DESC], '')) AS [WorkType], MAT.[Started] AS [Started], MAT.[EstFee] AS [EstFee], MAT.[ExpBillD] AS [ExpBillD], CONVERT(DECIMAL(19, 2), CASE WHEN @DebtBal <> 0 THEN @DebtBal ELSE ISNULL(MAT.[DebtBal], 0) END) AS [DebtBal], CONVERT(DECIMAL(19, 2), CASE WHEN @OutlayBal <> 0 THEN @OutlayBal ELSE ISNULL(MAT.[OutlayBal], 0) END) AS [OutlayBal], MAT.[OutlayBud] AS [OutlayBud], CONVERT(DECIMAL(19, 2), CASE WHEN @ClientCurrent <> 0 THEN @ClientCurrent + @ClientDeposit WHEN @ClientDeposit <> 0 THEN @ClientCurrent + @ClientDeposit ELSE ISNULL(MAT.[ClientBal], 0) END) AS [ClientBal], CONVERT(DECIMAL(19, 2), CASE WHEN @ClientCurrent <> 0 THEN @ClientCurrent ELSE ISNULL(MAT.[ClientCurBal], 0) END) AS [ClientCurBal], CONVERT(DECIMAL(19, 2), CASE WHEN @ClientDeposit <> 0 THEN @ClientDeposit ELSE ISNULL(MAT.[ClientDepBal], 0) END) AS [ClientDepBal], MAT.[StatuteLimits] AS [StatuteLimits], RTRIM(ISNULL(MAT.[User1], '')) AS [User1], RTRIM(ISNULL(MAT.[User2], '')) AS [User2], RTRIM(ISNULL(MAT.[User3], '')) AS [User3], MAT.[Value] AS [Value], @CSTimeBal AS [TimeBal], CASE WHEN LEN(@CSTimeBal / 60) < 2 THEN '0' + CAST(@CSTimeBal / 60 AS VARCHAR) ELSE CAST(@CSTimeBal / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + CONVERT(INT, @CSTimeBal) % 60), 2, 2) AS [TimeBalHours], @CSChargeBal AS [ChargeBal], CASE WHEN LEN(@CSTotalTime / 60) < 2 THEN '0' + CAST(@CSTotalTime / 60 AS VARCHAR) ELSE CAST(@CSTotalTime / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + CONVERT(INT, @CSTotalTime) % 60), 2, 2) AS [TotalHours], @CSTotalCharge AS [TotalCharge], MAT.[FileColour] AS [FileColour], RTRIM(ISNULL(MAT.[OldRef], '')) AS [OldRef], RTRIM(ISNULL(MAT.[Status], '')) AS [Status], MAT.[StatuteLimits] AS [StatuteLims], RTRIM(ISNULL(MAT.[Comment], '')) AS [Comment], @DraftBillValue AS [DraftBillTotal], @TIEDATE AS [LastBillDate], @LDIADATE AS [LastActionDate], RTRIM(ISNULL(@LDIAActionType, '')) AS [LastActionType], RTRIM(ISNULL(@LDIATEXT1, '')) AS [LastActionText], RTRIM(ISNULL(@LDIAFNCODE, '')) AS [LastActionFE], RTRIM(ISNULL(@LDIAFNNAME, '')) AS [LastActionFEName], @MDIADATE AS [LastMilestoneDate], RTRIM(ISNULL(@MDIAActionType, '')) AS [LastMilestoneType], RTRIM(ISNULL(@MDIATEXT1, '')) AS [LastMilestoneText], RTRIM(ISNULL(@MDIAFNCODE, '')) AS [LastMilestoneFE], RTRIM(ISNULL(@MDIAFNNAME, '')) AS [LastMilestoneFEName], @NDIADATE AS [NextActionDate], RTRIM(ISNULL(@NDIAActionType, '')) AS [NextActionType], RTRIM(ISNULL(@NDIATEXT1, '')) AS [NextActionText], RTRIM(ISNULL(@NDIAFNCODE, '')) AS [NextActionFE], RTRIM(ISNULL(@NDIAFNNAME, '')) AS [NextActionFEName], @LastTimeEntryDate AS [LastTimeEntryDate], @LastTimeEntryTime AS [LastTimeEntryTime], @LastTimeEntryRate AS [LastTimeEntryRate], @LastTimeEntryCharge AS [LastTimeEntryCharge], @LastTimeEntryTask AS [LastTimeEntrytask], @LastTimeEntryComment AS [LastTimeEntryComment], @LastTimeEntryFE AS [LastTimeEntryFE], @LastTimeEntryFEName AS [LastTimeEntryFEName], @CSTimeEntryTotalCharge AS [TimeEntryTotalCharge], @CSTimeEntryTotalTime AS [TotalTime], STC.[DESCRIPTION] AS [StatusCodeDescription], CSM.[CSWKTCODE] AS [CSWKTCode], TMP.[WKDESC] AS [WKDesc], CASE WHEN MAT.[ShowCommentInAlarm] = 'Y' THEN 'True' ELSE 'False' END AS [ShowCommentInAlarm], RTRIM(ISNULL(FCL.[COLOURDESC], '')) AS [FileColourDescription], ISNULL(FCL.[RGBColour], -1) AS [FileColourRGB], @Section68 AS [Section68], @IsApproved AS [IsApproved] FROM dbo.[matters] MAT LEFT JOIN dbo.[WorkTypes] WKT ON WKT.[CODE] = MAT.[WType] LEFT OUTER JOIN dbo.[Departments] DPT ON DPT.[CODE] = MAT.[Dept] LEFT OUTER JOIN dbo.[Handlers] HAN ON HAN.[CODE] = MAT.[FECode] LEFT OUTER JOIN dbo.[client] CLT ON CLT.[CLCODE] = MAT.[ClientCode] LEFT OUTER JOIN dbo.[StatusCodes] STC ON STC.[CODE] = MAT.[Status] LEFT OUTER JOIN dbo.[CaseMaster] CSM LEFT OUTER JOIN dbo.[Templates] TMP ON TMP.[WKCODE] = CSM.[CSWKTCODE] ON CSM.[CSCODE] = MAT.[Code] LEFT OUTER JOIN [dbo].[FileColours] FCL ON FCL.[COLOURCODE] = MAT.[FileColour] WHERE MAT.[Code] = @CaseCode SET NOCOUNT OFF END GO IF OBJECT_ID(N'KEYHM_FlagGetDetails', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_FlagGetDetails] END GO CREATE PROCEDURE [dbo].[KEYHM_FlagGetDetails] ( @CalledFrom INT=0 ) AS /******************************************************************************************************* * This Procedure is used to Action Flag Details * * * * Stored Procedure Name : [dbo].[KEYHM_FlagGetDetails] * * Copied from : [dbo].[Ky_NETFlagGetDetails] * * * * Modification History: * * 2019-04-22 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON IF (@CalledFrom =1) SELECT [ActionFlagID], RTRIM(ISNULL([Description],'')) as [Description], [IsActive] FROM [dbo].[ActionFlag] ORDER BY [ActionFlagID] ELSE SELECT [ActionFlagID], RTRIM(ISNULL([Description],'')) as [Description] FROM [dbo].[ActionFlag] WHERE [IsActive] = 1 ORDER BY [ActionFlagID] SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_FNConvertDateToUTC' AND SO.[type] = 'FN') BEGIN DROP FUNCTION [dbo].[KEYHM_FNConvertDateToUTC] END GO DECLARE @Compatible BIT SET @Compatible = CASE WHEN ServerProperty('EngineEdition') = 5 THEN 1 WHEN @@VERSION LIKE '%SQL Server 2008%' THEN 0 WHEN @@VERSION LIKE '%SQL Server 2012%' THEN 0 WHEN @@VERSION LIKE '%SQL Server 2014%' THEN 0 ELSE 1 END IF @Compatible = 1 BEGIN EXEC ('CREATE FUNCTION [dbo].[KEYHM_FNConvertDateToUTC] ( @Date DATETIME, @Handler NVARCHAR(10) ) RETURNS DATETIME AS /******************************************************************************************************* * This function is used to convert local time to UTC * * * * Function : KEYHM_FNGetDateForTimeZone * * * * Modification History : * * 2019-10-29 Arun V Created * * 2022-05-16 Vignesh M Modified Condition added for time conversion * *******************************************************************************************************/ BEGIN Declare @NewDate DATETIME IF CONVERT(TIME, @Date) <> ''00:00:00:000'' SELECT @NewDate = @Date AT TIME ZONE dbo.KEYHM_FNGetHandlerTimeZone(@Handler) AT TIME ZONE ''UTC'' ELSE SELECT @NewDate = @Date RETURN (SELECT @NewDate) End') END ELSE BEGIN EXEC ('CREATE FUNCTION [dbo].[KEYHM_FNConvertDateToUTC] ( @Date DATETIME, @Handler NVARCHAR(10) ) RETURNS DATETIME AS /******************************************************************************************************* * This function is used to convert local time to UTC * * * * Function : KEYHM_FNConvertDateToUTC * * * * Modification History : * * 2019-10-29 Arun V Created * *******************************************************************************************************/ BEGIN RETURN ( SELECT @Date ) End') END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_FNConvertUTCDateToTargetTimeZone' AND SO.[type] = 'FN') BEGIN DROP FUNCTION [dbo].[KEYHM_FNConvertUTCDateToTargetTimeZone] END GO DECLARE @Compatible BIT SET @Compatible = CASE WHEN ServerProperty('EngineEdition') = 5 THEN 1 WHEN @@VERSION LIKE '%SQL Server 2008%' THEN 0 WHEN @@VERSION LIKE '%SQL Server 2012%' THEN 0 WHEN @@VERSION LIKE '%SQL Server 2014%' THEN 0 ELSE 1 END IF @Compatible = 1 BEGIN EXEC ('CREATE FUNCTION [dbo].[KEYHM_FNConvertUTCDateToTargetTimeZone] ( @Date DATETIME, @Handler NVARCHAR(10) ) RETURNS DATETIME AS /******************************************************************************************************* * This function is used to convert local time to specified zone time. default is GMT * * * * Function : KEYHM_FNGetDateForTimeZone * * * * Modification History : * * 2019-07-03 Rajesh P Created * *******************************************************************************************************/ BEGIN RETURN ( SELECT CONVERT(DATETIME,CONVERT(DATETIMEOFFSET, @Date) AT TIME ZONE (SELECT dbo.KEYHM_FNGetHandlerTimeZone(@Handler))) ) End') END ELSE BEGIN EXEC ('CREATE FUNCTION [dbo].[KEYHM_FNConvertUTCDateToTargetTimeZone] ( @Date DATETIME, @Handler NVARCHAR(10) ) RETURNS DATETIME AS /******************************************************************************************************* * This function is used to convert local time to specified zone time. default is GMT * * * * Function : KEYHM_FNGetDateForTimeZone * * * * Modification History : * * 2019-07-03 Rajesh P Created * *******************************************************************************************************/ BEGIN RETURN ( SELECT @Date ) End') END GO IF OBJECT_ID('KEYHM_FNGetHandlerTimeZone',N'FN') IS NOT NULL DROP FUNCTION KEYHM_FNGetHandlerTimeZone GO CREATE FUNCTION [dbo].[KEYHM_FNGetHandlerTimeZone]( @Handler VARCHAR(10) ) RETURNS NVARCHAR(50) AS /******************************************************************************************************* * This function is used to get the handler time zone, for now its default to GMT standard Time * * * * Function : KEYHM_FNGetDateForTimeZone * * * * Modification History : * * 2019-07-03 Rajesh P Created * * 2019-09-24 Arun V Handler Code added to get used based time zone, default to GMT * *******************************************************************************************************/ BEGIN DECLARE @HandlerTimeZone NVARCHAR(50) SELECT @HandlerTimeZone = [Value] FROM UserSettings WHERE [Handler] = @Handler AND [Key] = 'TimeZone' SELECT @HandlerTimeZone = ISNULL(@HandlerTimeZone, 'GMT Standard Time') RETURN @HandlerTimeZone End GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_FN_ConvertClarionTimeToHHMM' AND SO.[type] = 'FN') BEGIN DROP FUNCTION [dbo].[KEYHM_FN_ConvertClarionTimeToHHMM] END GO create function [dbo].[KEYHM_FN_ConvertClarionTimeToHHMM] (@ClarionTime INT) returns VARCHAR(5) AS /************************************************************************************** * * converts an integer value between 1 and 8640000, representing a Clarion Time Value * in 1/100 of a Second since Midnight to a Time representation in HH:MM format * * Stored Procedure name : KEYHM_FN_ConvertClarionTimeToHHMM * Copied From : ky_NETFNConvertClarionTimeToHHMM * * This function prevents Cardinality Estimate Warnings when used in SELECT statements * **************************************************************************************/ BEGIN DECLARE @HHMM VARCHAR(5) DECLARE @HOUR INT DECLARE @MINUTE INT IF @ClarionTime IS NULL BEGIN SET @HHMM = '' END ELSE IF @ClarionTime < 1 BEGIN SET @HHMM = '' END ELSE IF @ClarionTime > 8640000 BEGIN SET @HHMM = '' END ELSE BEGIN SET @ClarionTime = @ClarionTime - 1 SET @HOUR = FLOOR(@ClarionTime / 360000) SET @ClarionTime = @ClarionTime - (@HOUR * 360000) SET @MINUTE = FLOOR(@ClarionTime / 6000) SET @HHMM = SUBSTRING(CONVERT(VARCHAR(3), 100 + @HOUR), 2, 2) + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + @MINUTE), 2, 2) END RETURN @HHMM END GO IF EXISTS (SELECT * FROM SYS.[objects] SO WHERE SO.[name] = 'KEYHM_FN_DateDiffVerbose' AND SO.[type] = 'FN') BEGIN DROP FUNCTION [dbo].[KEYHM_FN_DateDiffVerbose] END GO CREATE FUNCTION [dbo].[KEYHM_FN_DateDiffVerbose] (@FromDate DATETIME, @ToDate DATETIME) RETURNS VARCHAR(200) AS /******************************************************************************************************* * Fetch Attachment list by diary number * * * * Stored Procedure Name : [dbo].[KEYHM_FN_DateDiffVerbose] * * Copied from : [dbo].[ky_NETFNDateDiffVerbose] * * * * Modification History : * * 2019-04-16 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @OUTPUT VARCHAR(200) IF @FromDate IS NULL BEGIN RETURN '' END IF @ToDate IS NULL BEGIN RETURN '' END IF (@FromDate >= @ToDate) BEGIN RETURN '' END DECLARE @Work DATETIME DECLARE @YEARS INT SET @YEARS = DATEDIFF(YEAR, @FromDate, @ToDate) SET @Work = DATEADD(YEAR, @YEARS, @FromDate) IF (@Work > @ToDate) BEGIN SET @YEARS = @YEARS - 1 END SET @OUTPUT = '' IF @YEARS = 1 BEGIN IF @OUTPUT <> '' BEGIN SET @OUTPUT = @OUTPUT + ', ' END SET @OUTPUT = @OUTPUT + '1 Year' END IF @YEARS > 1 BEGIN IF @OUTPUT <> '' BEGIN SET @OUTPUT = @OUTPUT + ', ' END SET @OUTPUT = @OUTPUT + CONVERT(VARCHAR(10), @YEARS) + ' Years' END SET @FromDate = DATEADD(YEAR, @YEARS, @FromDate) DECLARE @MONTHS INT SET @MONTHS = DATEDIFF(MONTH, @FromDate, @ToDate) SET @Work = DATEADD(MONTH, @MONTHS, @FromDate) IF (@Work > @ToDate) BEGIN SET @MONTHS = @MONTHS - 1 END IF @MONTHS = 1 BEGIN IF @OUTPUT <> '' BEGIN SET @OUTPUT = @OUTPUT + ', ' END SET @OUTPUT = @OUTPUT + '1 Month' END IF @MONTHS > 1 BEGIN IF @OUTPUT <> '' BEGIN SET @OUTPUT = @OUTPUT + ', ' END SET @OUTPUT = @OUTPUT + CONVERT(VARCHAR(10), @MONTHS) + ' Months' END SET @FromDate = DATEADD(MONTH, @MONTHS, @FromDate) DECLARE @DAYS INT SET @DAYS = DATEDIFF(DAY, @FromDate, @ToDate) IF @DAYS = 1 BEGIN IF @OUTPUT <> '' BEGIN SET @OUTPUT = @OUTPUT + ' and ' END SET @OUTPUT = @OUTPUT + '1 Day' END IF @DAYS > 1 BEGIN IF @OUTPUT <> '' BEGIN SET @OUTPUT = @OUTPUT + ' and ' END SET @OUTPUT = @OUTPUT + CONVERT(VARCHAR(10), @DAYS) + ' Days' END RETURN @OUTPUT END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = 'KEYHM_FN_GetDefaultRate' AND SO.[type] = 'FN') BEGIN DROP FUNCTION [dbo].[KEYHM_FN_GetDefaultRate] END GO CREATE FUNCTION [dbo].[KEYHM_FN_GetDefaultRate] (@MATTER VARCHAR(20), @FEEEARN VARCHAR(10), @NCCCODE VARCHAR(10), @TASK VARCHAR(6)) RETURNS DECIMAL(18, 2) AS /******************************************************************************************************* * Calculates the default Rate for a FeeEarner/Matter * * * * Stored Procedure Name : [dbo].[KEYHM_FN_GetDefaultRate] * * Copied from : [dbo].[ky_NETFNGetDefaultRate] * * * * Modification History : * * 2019-04-24 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @CLIENT VARCHAR(10) DECLARE @MatterChargeLevel INT DECLARE @MCRRATE DECIMAL(18, 2) DECLARE @MCRRATE2 DECIMAL(18, 2) DECLARE @CCRRATE DECIMAL(18, 2) DECLARE @CCRRATE2 DECIMAL(18, 2) DECLARE @HDLRATE DECIMAL(10, 2) DECLARE @TASKCODE VARCHAR(10) DECLARE @CHARGEFACTOR DECIMAL(4, 2) DECLARE @ACTUALRATE DECIMAL(18, 2) SELECT @CLIENT = RTRIM(ISNULL(MAT.[ClientCode], '')), @MatterChargeLevel = ISNULL(MAT.[ChargeLevel], 3), @TASKCODE = CASE RTrim(IsNull(@MATTER, '')) WHEN '' THEN RTRIM(ISNULL(@NCCCODE, '')) ELSE RTRIM(ISNULL(@TASK, '')) END FROM [dbo].[matters] MAT WHERE MAT.[Code] = @MATTER SELECT @MCRRATE = MCOR.[Rate] FROM [dbo].[MatterChargeOutRates] MCOR WHERE MCOR.[FeCode] = @FEEEARN AND MCOR.[MatterCode] = @MATTER SELECT @MCRRATE2 = MCORG.[Rate] FROM [dbo].[Handlers] HANG INNER JOIN [dbo].[MatterChargeOutRates] MCORG ON MCORG.[FeCode] = HANG.[ChargeGroup] AND MCORG.[MatterCode] = @MATTER WHERE HANG.[CODE] = @FEEEARN SET @MCRRATE2 = ISNULL(@MCRRATE2, 0) SET @MCRRATE = ISNULL(@MCRRATE, @MCRRATE2) SELECT @CCRRATE = CCOR.[Rate] FROM [dbo].[ClientChargeOutRates] CCOR WHERE CCOR.[FeCode] = @FEEEARN AND CCOR.[ClientCode] = @CLIENT SELECT @CCRRATE2 = CCORG.[Rate] FROM [dbo].[Handlers] HANG2 INNER JOIN [dbo].[ClientChargeOutRates] CCORG ON CCORG.[FeCode] = HANG2.[ChargeGroup] AND CCORG.[ClientCode] = @CLIENT WHERE HANG2.[CODE] = @FEEEARN SET @CCRRATE2 = ISNULL(@CCRRATE2, 0) SET @CCRRATE = ISNULL(@CCRRATE, @CCRRATE2) SELECT @HDLRATE = CASE IsNull(@MatterChargeLevel, 3) WHEN 1 THEN IsNull(HDL.[RATE1], 0) WHEN 2 THEN IsNull(HDL.[RATE2], 0) WHEN 3 THEN IsNull(HDL.[RATE3], 0) WHEN 4 THEN IsNull(HDL.[RATE4], 0) WHEN 5 THEN IsNull(HDL.[RATE5], 0) ELSE IsNull(HDL.[RATE], 0) END FROM [dbo].[Handlers] HDL WHERE HDL.[CODE] = @FEEEARN SET @HDLRATE = ISNULL(@HDLRATE, 0) SELECT @CHARGEFACTOR = CASE IsNull(TAC.[ChargeLevel], 'C') WHEN 'A' THEN 0.33 WHEN 'B' THEN 0.67 WHEN 'C' THEN 1.00 WHEN 'D' THEN 1.33 WHEN 'E' THEN 1.67 ELSE 1.00 END FROM [dbo].[TasksCodes] TAC WHERE TAC.[CODE] = @TASKCODE SET @CHARGEFACTOR = ISNULL(@CHARGEFACTOR, 1) SELECT @ACTUALRATE = Case When IsNull(MAT.[ChargeOutRateInd], 'N') = 'Y' THEN @MCRRATE When IsNull(CON.[ChargeOutRateInd], 'N') = 'Y' THEN @CCRRATE ELSE @CHARGEFACTOR * @HDLRATE END FROM [dbo].[matters] MAT INNER JOIN [dbo].[contacts] CON ON CON.[Code] = MAT.[ClientCode] WHERE MAT.[code] = @MATTER SET @ACTUALRATE = ISNULL(@ACTUALRATE, @CHARGEFACTOR * @HDLRATE) RETURN @ACTUALRATE END GO IF OBJECT_ID(N'KEYHM_FN_GetDocFolders',N'TF')IS NOT NULL DROP FUNCTION KEYHM_FN_GetDocFolders GO CREATE FUNCTION [dbo].[KEYHM_FN_GetDocFolders] (@MatterCode VARCHAR(20), @parentid INT, @fulltree BIT, @includeparent BIT) RETURNS @DocFolders TABLE ([seq] INT IDENTITY (1, 1) NOT NULL PRIMARY KEY, [id] INT NOT NULL, [parent] INT NOT NULL, [foldername] VARCHAR(500) NOT NULL, [foldericon] INT NOT NULL, [folderimage] VARBINARY(MAX), [foldershared] BIT NOT NULL, [folderisours] BIT NOT NULL, [documentcount] INT NOT NULL) AS /************************************************************************************************************* * * * Stored Procedure Name: [dbo].[KEYHM_FN_GetDocFolders] * * Copied from : [dbo].[ky_NETTFGetDocFolders4] * * * * * * Retrieve a document folder tree * * @parentid - the ID of the root folder * * @fulltree - get the complete tree for @parentid * * 0 - get only the first level child nodes * * 1 - get all child nodes * * @includeparent - include the parent node itself * * 0 - the top level returned are the child nodes * * 1 - the top level returned is the parent node * * * * Modification History: * * 2018-12-06 Arun.V Created to return file count * * 2019-04-26 Vinodhan.K Added folderimage field * * 2019-08-16 Arun V Changed [docfoldercount] to update the files count, * *************************************************************************************************************/ BEGIN Declare @DocFoldersX Table ([seq] INT IDENTITY (0, 1) NOT NULL PRIMARY KEY, [id] INT NOT NULL, [parent] INT NOT NULL, [foldername] VARCHAR(500) NOT NULL, [foldericon] INT NOT NULL, [folderimage] VARBINARY(MAX), [foldershared] BIT NOT NULL, [folderisours] BIT NOT NULL, [docfoldercount] INT NOT NULL, [Iteration] INT NULL) DECLARE @AllFilesCount INT =0 IF(@includeparent =1) BEGIN SET @AllFilesCount = (SELECT count(*) FROM DiaryAttachments where CASECODE = @MatterCode) INSERT INTO @DocFolders ([id], [parent], [foldername], [foldericon], [folderimage], [foldershared], [folderisours], [documentcount]) SELECT 0, -1, -- To avoid recusrive loop in WebApi 'All', 0, NULL, 0, 0, @AllFilesCount END IF ISNULL(@parentid, 0) = 0 BEGIN INSERT INTO @DocFoldersX ([id], [parent], [foldername], [foldericon], [folderimage], [foldershared], [folderisours], [docfoldercount], Iteration) SELECT [DF].[id], 0, [DF].[foldername], [DF].[foldericon], [DFU].[image], 0, 1, 0, 0 FROM [dbo].[DocFolders] [DF] LEFT JOIN [dbo].[DocFolderUploadedImages] [DFU] ON [DF].[foldericon] = [DFU].[id] WHERE [DF].[parent] IS NULL ORDER BY [DF].[foldername], [DF].[id] END ELSE BEGIN IF @includeparent = 1 BEGIN INSERT INTO @DocFoldersX ([id], [parent], [foldername], [foldericon], [folderimage], [foldershared], [folderisours], [docfoldercount], Iteration) SELECT [DF].[id], ISNULL([DF].[parent], 0), [DF].[foldername], [DF].[foldericon], [DFU].[image], 0, 1, 0, 0 FROM [dbo].[DocFolders] [DF] LEFT JOIN [dbo].[DocFolderUploadedImages] [DFU] ON [DF].[foldericon] = [DFU].[id] WHERE [DF].[id] = @parentid ORDER BY [DF].[foldername], [DF].[id] END ELSE BEGIN INSERT INTO @DocFoldersX ([id], [parent], [foldername], [foldericon], [folderimage], [foldershared], [folderisours], [docfoldercount], Iteration) SELECT [DF].[id], ISNULL([DF].[parent], 0), [DF].[foldername], [DF].[foldericon], [DFU].[image], 0, 1, 0, 0 FROM [dbo].[DocFolders] [DF] LEFT JOIN [dbo].[DocFolderUploadedImages] [DFU] ON [DF].[foldericon] = [DFU].[id] WHERE [DF].[parent] = @parentid ORDER BY [DF].[foldername], [DF].[id] END END UPDATE [DFX] SET [DFX].[foldershared] = [FSDF].[Shared], [DFX].[folderisours] = [IO].[IsOurs] FROM @DocFoldersX [DFX] INNER JOIN [dbo].[FileSharingDocFolders] [FSDF] CROSS APPLY (SELECT CASE WHEN COUNT(CASE WHEN ISNULL([FSS].[CollabDocFolderID], 0) = 0 THEN 1 ELSE NULL END) = 0 THEN 0 ELSE 1 END AS [IsOurs] FROM [dbo].[FileSharingMapping] [FSM] INNER JOIN [dbo].[FileSharingServers] [FSS] ON [FSS].[id] = [FSM].[FileSharingServersID] WHERE [FSM].[FileSharingDocFoldersID] = [FSDF].[DocFolderID]) [IO] ON [FSDF].[DocFolderID] = [DFX].[id] DECLARE @ITEM INT=0 WHILE EXISTS(SELECT NULL FROM [dbo].[DocFolders] [DF] INNER JOIN @DocFoldersX DocFoldersX ON DF.parent=DocFoldersX.Id And Iteration=@Item) BEGIN INSERT INTO @DocFoldersX ([id] ,[parent] ,[foldername] ,[foldericon] ,[folderimage] ,[foldershared] ,[folderisours] ,[docfoldercount] ,Iteration) SELECT [DF].[id], ISNULL(DocFoldersX.ID, 0) [parent], DF.[foldername], [DF].[foldericon], [DFU].[image], 0 [foldershared], 1 [folderisours], 0 [docfoldercount], --INTO #DocFoldersX_Itr @ITEM + 1 [Iteration] FROM [dbo].[DocFolders] [DF] INNER JOIN @DocFoldersX DocFoldersX ON DF.parent=DocFoldersX.Id LEFT JOIN [dbo].[DocFolderUploadedImages] [DFU] ON [DF].[foldericon] = [DFU].[id] WHERE DocFoldersX.Iteration=@ITEM ORDER BY [DF].[foldername], [DF].[id] SET @ITEM=@ITEM+1 END UPDATE [DF] SET [DF].[docfoldercount] = [TTD].[TOTAL] FROM @DocFoldersX [DF] CROSS APPLY (SELECT COUNT(1) AS [TOTAL] FROM [dbo].[DocFolderDocuments] [DFD] WHERE [DFD].[DocFolderID] = [DF].[id]) [TTD] WHERE [DF].[Parent] <> -1 Insert into @DocFolders([id],[parent],[foldername],[foldericon],[folderimage],[foldershared],[folderisours],[documentcount]) select [id],[parent],[foldername],[foldericon],[folderimage],[foldershared],[folderisours],[docfoldercount] from @DocFoldersX Order by Foldername, Case when parent =0 then Id else parent end RETURN END GO IF OBJECT_ID(N'[KEYHM_FN_GETFILEPATH]',N'FN')IS NOT NULL DROP FUNCTION [KEYHM_FN_GETFILEPATH] GO CREATE FUNCTION [dbo].[KEYHM_FN_GETFILEPATH] (@DOCUMENT VARCHAR(500), @FPATH VARCHAR(500)) RETURNS VARCHAR(255) AS /******************************************************************************************************* * This function is used to restrict file not exceed 255 character. * * * * Stored Procedure Name : [dbo].[KEYHM_FN_GETFILEPATH] * * Copied from : [dbo].[ky_NETFNGETFILEPATH] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @LEN INT DECLARE @RPATH VARCHAR(2000) SET @RPATH = SUBSTRING(@FPATH,LEN(@FPATH)-CHARINDEX ('\',REVERSE(@FPATH))+2,LEN(@FPATH)) SET @FPATH = REPLACE(@FPATH,@RPATH,@DOCUMENT ) SET @LEN = CHARINDEX ('_',REVERSE(@DOCUMENT)) IF( @LEN = 0) BEGIN SET @RPATH = @FPATH END ELSE BEGIN SET @RPATH = REPLACE(@FPATH,SUBSTRING(@DOCUMENT,0,LEN(@DOCUMENT)-CHARINDEX ('_',REVERSE(@DOCUMENT))+1) ,'') END IF(LEN(@FPATH) > 255) BEGIN IF(LEN(@RPATH) < 255) BEGIN DECLARE @PLENGTH INT SET @PLENGTH = 255 - LEN(@RPATH ) DECLARE @FNAME VARCHAR(200) -- PINO 2015-04-20 SET @FNAME = SUBSTRING(@DOCUMENT,0,LEN(@DOCUMENT)-CHARINDEX ('_',REVERSE(@DOCUMENT))+1) --PINO 2015-04-20 SET @RPATH = SUBSTRING(@FNAME,0,@PLENGTH) SET @FPATH = REPLACE(@FPATH, @FNAME, @RPATH) RETURN @FPATH END ELSE IF(LEN(@RPATH) = 255) BEGIN RETURN @RPATH END ELSE BEGIN RETURN 'NOCHANGE' END END ELSE BEGIN RETURN @FPATH END RETURN 'NOCHANGE' END GO IF EXISTS (SELECT * FROM SYS.[objects] SO WHERE SO.[name] = 'KEYHM_FN_GetOldPermissions' AND SO.[type] = 'FN') BEGIN DROP FUNCTION [dbo].[KEYHM_FN_GetOldPermissions] END GO CREATE FUNCTION [dbo].[KEYHM_FN_GetOldPermissions] (@HANDLER VARCHAR(10)) RETURNS BIGINT AS /******************************************************************************************************* * * * * * Stored Procedure Name : [dbo].[KEYHM_FN_GetOldPermissions] * * Copied from : [dbo].[ky_NETFNGetOldPermissions] * * * * Modification History: * * 2019-04-26 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @PERMISSIONS BIGINT DECLARE @LOGONS TABLE ([CODE] VARCHAR(10), [LOGON] VARCHAR(10), [NAME] varchar(50), [OPE_NUMBER] int) DECLARE @LOGONS2 TABLE ([CODE] VARCHAR(10), [LOGON] VARCHAR(10), [NAME] varchar(50), [OPE_NUMBER] int) /* To aid uniformity, all queries have the same form. In this first one it should not be necessary to join to @LOGONs but doing so is harmless and it makes this query look the same as all the others. The Outer Apply links to DS1, DS2, DS3 and DS4 check that the DSSW21 entry has not already been matched to a handler. If this is so, it tries to match the DSSW21 record to a handler with an exact name match. */ INSERT INTO @LOGONS2 ([CODE], [LOGON], [NAME], [OPE_NUMBER]) SELECT MTC.[CODE], MTC.[LOGON], MTC.[NAME], MTC.[MATCH] FROM (select HAN.[CODE], HAN.[LOGON], HAN.[NAME], CASE WHEN DS1.[OPE_NUMBER] IS NOT NULL THEN DS1.[OPE_NUMBER] ELSE DS2.[OPE_NUMBER] END AS [Match] from [dbo].[Handlers] HAN OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS WHERE RTrim(HAN.[NAME]) LIKE RTrim(DS.[OPE_FIRSTNAME]) + '%' + RTRIM(DS.[OPE_SURNAME])) DS1 OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS WHERE RTrim(HAN.[NAME]) LIKE RTrim(DS.[OPE_SURNAME]) + '%' + RTRIM(DS.[OPE_FIRSTNAME])) DS2 OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS WHERE Soundex(RTrim(HAN.[NAME])) = SOUNDEX(RTrim(DS.[OPE_SURNAME]) + ' ' + RTRIM(DS.[OPE_FIRSTNAME]))) DS3 OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS WHERE Soundex(RTrim(HAN.[NAME])) = SOUNDEX(RTrim(DS.[OPE_FIRSTNAME]) + ' ' + RTRIM(DS.[OPE_SURNAME]))) DS4 OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS LEFT OUTER JOIN [dbo].[Handlers] HN ON HN.[NAME] LIKE RTrim(DS.[OPE_FIRSTNAME]) + '%' + RTRIM(DS.[OPE_SURNAME]) OR HN.[NAME] LIKE RTrim(DS.[OPE_SURNAME]) + '%' + RTRIM(DS.[OPE_FIRSTNAME]) WHERE DS1.[OPE_NUMBER] IS NULL AND DS2.[OPE_NUMBER] IS NULL AND DS3.[OPE_NUMBER] IS NULL AND DS4.[OPE_NUMBER] IS NULL AND HN.[CODE] IS NULL AND ( RTrim(HAN.[NAME]) LIKE '%' + RTrim(DS.[OPE_FIRSTNAME]) + '%' OR RTrim(HAN.[NAME]) LIKE '%' + RTrim(DS.[OPE_SURNAME]) + '%')) DS5 WHERE HAN.[CODE] = @HANDLER AND RTRIM(ISNULL(HAN.[Logon], '')) <> '') MTC LEFT OUTER JOIN @LOGONS LO ON LO.[OPE_NUMBER] = MTC.[Match] WHERE MTC.[Match] IS NOT NULL AND LO.[OPE_NUMBER] IS NULL -- This eliminates duplicate matches. If there are more than one handler matching a DSSW21 entry, we can't be sure which one it is, -- and we will ignore the match. We only include the ones that have exactly ONE match INSERT INTO @LOGONS ([CODE], [LOGON], [NAME], [OPE_NUMBER]) SELECT LO.[CODE], LO.[LOGON], LO.[NAME], LO.[OPE_NUMBER] FROM ( SELECT OPE_NUMBER from @LOGONS2 GROUP BY OPE_NUMBER HAVING COUNT(1) = 1) MH INNER JOIN @LOGONS2 LO ON LO.[OPE_NUMBER] = MH.[OPE_NUMBER] DELETE @LOGONS2 /* The Outer Apply links to DS1, DS2, DS3 and DS4 check that the DSSW21 entry has not already been matched to a handler. If this is so, it tries to match the DSSW21 record to a handler with an exact name match. */ INSERT INTO @LOGONS2 ([CODE], [LOGON], [NAME], [OPE_NUMBER]) SELECT MTC.[CODE], MTC.[LOGON], MTC.[NAME], MTC.[MATCH] FROM (select HAN.[CODE], HAN.[LOGON], HAN.[NAME], CASE WHEN DS1.[OPE_NUMBER] IS NOT NULL THEN DS1.[OPE_NUMBER] WHEN DS2.[OPE_NUMBER] IS NOT NULL THEN DS2.[OPE_NUMBER] WHEN DS3.[OPE_NUMBER] IS NOT NULL THEN DS3.[OPE_NUMBER] ELSE DS4.[OPE_NUMBER] END AS [Match] from [dbo].[Handlers] HAN OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS WHERE RTrim(HAN.[NAME]) LIKE RTrim(DS.[OPE_FIRSTNAME]) + '%' + RTRIM(DS.[OPE_SURNAME])) DS1 OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS WHERE RTrim(HAN.[NAME]) LIKE RTrim(DS.[OPE_SURNAME]) + '%' + RTRIM(DS.[OPE_FIRSTNAME])) DS2 OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS WHERE Soundex(RTrim(HAN.[NAME])) = SOUNDEX(RTrim(DS.[OPE_SURNAME]) + ' ' + RTRIM(DS.[OPE_FIRSTNAME]))) DS3 OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS WHERE Soundex(RTrim(HAN.[NAME])) = SOUNDEX(RTrim(DS.[OPE_FIRSTNAME]) + ' ' + RTRIM(DS.[OPE_SURNAME]))) DS4 OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS LEFT OUTER JOIN [dbo].[Handlers] HN ON HN.[NAME] LIKE RTrim(DS.[OPE_FIRSTNAME]) + '%' + RTRIM(DS.[OPE_SURNAME]) OR HN.[NAME] LIKE RTrim(DS.[OPE_SURNAME]) + '%' + RTRIM(DS.[OPE_FIRSTNAME]) WHERE DS1.[OPE_NUMBER] IS NULL AND DS2.[OPE_NUMBER] IS NULL AND DS3.[OPE_NUMBER] IS NULL AND DS4.[OPE_NUMBER] IS NULL AND HN.[CODE] IS NULL AND ( RTrim(HAN.[NAME]) LIKE '%' + RTrim(DS.[OPE_FIRSTNAME]) + '%' OR RTrim(HAN.[NAME]) LIKE '%' + RTrim(DS.[OPE_SURNAME]) + '%')) DS5 WHERE HAN.[CODE] = @HANDLER AND RTRIM(ISNULL(HAN.[Logon], '')) <> '') MTC LEFT OUTER JOIN @LOGONS LO ON LO.[OPE_NUMBER] = MTC.[Match] WHERE MTC.[Match] IS NOT NULL AND LO.[OPE_NUMBER] IS NULL INSERT INTO @LOGONS ([CODE], [LOGON], [NAME], [OPE_NUMBER]) SELECT LO.[CODE], LO.[LOGON], LO.[NAME], LO.[OPE_NUMBER] FROM ( SELECT OPE_NUMBER from @LOGONS2 GROUP BY OPE_NUMBER HAVING COUNT(1) = 1) MH INNER JOIN @LOGONS2 LO ON LO.[OPE_NUMBER] = MH.[OPE_NUMBER] DELETE @LOGONS2 INSERT INTO @LOGONS2 ([CODE], [LOGON], [NAME], [OPE_NUMBER]) SELECT MTC.[CODE], MTC.[LOGON], MTC.[NAME], MTC.[MATCH] FROM (select HAN.[CODE], HAN.[LOGON], HAN.[NAME], CASE WHEN DS1.[OPE_NUMBER] IS NOT NULL THEN DS1.[OPE_NUMBER] WHEN DS2.[OPE_NUMBER] IS NOT NULL THEN DS2.[OPE_NUMBER] WHEN DS3.[OPE_NUMBER] IS NOT NULL THEN DS3.[OPE_NUMBER] WHEN DS4.[OPE_NUMBER] IS NOT NULL THEN DS4.[OPE_NUMBER] ELSE DS5.[OPE_NUMBER] END AS [Match] from [dbo].[Handlers] HAN OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS WHERE RTrim(HAN.[NAME]) LIKE RTrim(DS.[OPE_FIRSTNAME]) + '%' + RTRIM(DS.[OPE_SURNAME])) DS1 OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS WHERE RTrim(HAN.[NAME]) LIKE RTrim(DS.[OPE_SURNAME]) + '%' + RTRIM(DS.[OPE_FIRSTNAME])) DS2 OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS WHERE Soundex(RTrim(HAN.[NAME])) = SOUNDEX(RTrim(DS.[OPE_SURNAME]) + ' ' + RTRIM(DS.[OPE_FIRSTNAME]))) DS3 OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS WHERE Soundex(RTrim(HAN.[NAME])) = SOUNDEX(RTrim(DS.[OPE_FIRSTNAME]) + ' ' + RTRIM(DS.[OPE_SURNAME]))) DS4 OUTER APPLY (SELECT TOP 1 DS.[OPE_NUMBER] FROM [dbo].[DSSW21] DS LEFT OUTER JOIN [dbo].[Handlers] HN ON HN.[NAME] LIKE RTrim(DS.[OPE_FIRSTNAME]) + '%' + RTRIM(DS.[OPE_SURNAME]) OR HN.[NAME] LIKE RTrim(DS.[OPE_SURNAME]) + '%' + RTRIM(DS.[OPE_FIRSTNAME]) WHERE DS1.[OPE_NUMBER] IS NULL AND DS2.[OPE_NUMBER] IS NULL AND DS3.[OPE_NUMBER] IS NULL AND DS4.[OPE_NUMBER] IS NULL AND HN.[CODE] IS NULL AND ( RTrim(HAN.[NAME]) LIKE '%' + RTrim(DS.[OPE_FIRSTNAME]) + '%' OR RTrim(HAN.[NAME]) LIKE '%' + RTrim(DS.[OPE_SURNAME]) + '%')) DS5 WHERE HAN.[CODE] = @HANDLER AND RTRIM(ISNULL(HAN.[Logon], '')) <> '') MTC LEFT OUTER JOIN @LOGONS LO ON LO.[OPE_NUMBER] = MTC.[Match] WHERE MTC.[Match] IS NOT NULL AND LO.[OPE_NUMBER] IS NULL INSERT INTO @LOGONS ([CODE], [LOGON], [NAME], [OPE_NUMBER]) SELECT LO.[CODE], LO.[LOGON], LO.[NAME], LO.[OPE_NUMBER] FROM ( SELECT OPE_NUMBER from @LOGONS2 GROUP BY OPE_NUMBER HAVING COUNT(1) = 1) MH INNER JOIN @LOGONS2 LO ON LO.[OPE_NUMBER] = MH.[OPE_NUMBER] DELETE @LOGONS2 SELECT @PERMISSIONS = CONVERT(BIGINT, ISNULL(JP.[JPER_Permissions], 0)) from [dbo].[Handlers] HAN LEFT OUTER JOIN @LOGONS LO INNER JOIN [dbo].[DSSW21] DS ON DS.[OPE_NUMBER] = LO.[OPE_NUMBER] ON LO.[CODE] = HAN.[CODE] LEFT OUTER JOIN JPermissions JP ON JP.[JPER_UserNumber] = LO.[OPE_NUMBER] WHERE LO.[OPE_NUMBER] IS NOT NULL ORDER BY LO.[OPE_NUMBER] SET @PERMISSIONS = ISNULL(@PERMISSIONS, 0) RETURN @PERMISSIONS END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_FN_GetUNCPathFromFile' AND SO.[type] = 'FN') BEGIN DROP FUNCTION [dbo].[KEYHM_FN_GetUNCPathFromFile] END GO CREATE FUNCTION [dbo].[KEYHM_FN_GetUNCPathFromFile] (@strFileName varchar(max)) RETURNS varchar(max) AS /************************************************************************ * * Get the UNC Location of a file (provided the drive is stored in * the UNCAlias table) * * Modification History * 2015-10-20 Pino Carafa Imported into Framework * 2019-12-26 Arun V Copied from Ky_GetUNCPathFromFile ************************************************************************/ BEGIN DECLARE @strUNCFileName varchar(max) SET @strFileName = ISNULL(@strFileName, '') SET @strUNCFileName = @strFileName IF (SUBSTRING(@strUNCFileName, 2, 1) = ':') BEGIN SELECT @strUNCFileName = ISNULL(MAX(UNC.[UNC]) + SUBSTRING(@strUNCFileName, 3, LEN(@strUNCFileName) - 2), @strUNCFileName) FROM [dbo].[UNCAlias] UNC WHERE SUBSTRING(@strUNCFileName, 1, 1) = UNC.[Drive] SET @strUNCFileName = LEFT(@strUNCFileName, 2) + REPLACE(RIGHT(@strUNCFileName, LEN(@strUNCFileName) - 2), '\\', '\') END RETURN @strUNCFileName END GO IF EXISTS (SELECT * FROM SYS.[objects] SO WHERE SO.[name] = 'KEYHM_FN_MatterClosable' AND SO.[type] = 'TF') BEGIN DROP FUNCTION [dbo].[KEYHM_FN_MatterClosable] END GO /******************************************************************************************************* * Get the parameters to establish whether a matter can be closed at this point. * * Please note that Bal, Rec, Diary and Undertakings should prevent a matter from closing, while * * Time and Charge should lead to a warning and the user can decide to close the matter anyway. * * * * Stored Procedure Name : [dbo].[KEYHM_FN_MatterClosable] * * Copied from : [dbo].[ky_NETFNMatterClosable] * * * * Modification History : * * 2019-04-24 Vinodhan K Created * *******************************************************************************************************/ GO IF [dbo].[ISSAM4]() = 1 BEGIN EXEC (' CREATE FUNCTION [dbo].[KEYHM_FN_MatterClosable] (@MATTER VARCHAR(20)) RETURNS @Closables TABLE ([AlreadyClosed] int, [HasOutstandingBal] int, [HasOutstandingTimeBal] int, [HasOutstandingChargeBal] int, [HasOutstandingRec] int, [HasOutstandingDiary] int, [HasOutstandingUndertakings] int) AS BEGIN DECLARE @AlreadyClosed INT DECLARE @HasOutstandingRec INT DECLARE @HasOutstandingBal INT DECLARE @HasOutstandingTimeBal INT DECLARE @HasOutstandingChargeBal INT DECLARE @HasOutstandingDiary INT DECLARE @HasOutstandingUndertakings INT DECLARE @Year INT DECLARE @IsSAM4 bit SET @IsSAM4 = 1 -- Please see also: ky_NETCaseSummaryPageLoad. If you change any of these calculations, -- ensure the ones in there are changed as well. -- ky_NETTLFetchTimeEntry. If you change any of these calculations, -- ensure the ones in there are changed as well. DECLARE @TimeBal INT DECLARE @ChargeBal DECIMAL(19, 2) DECLARE @TotalCharge Decimal(19, 2) DECLARE @TotalTime INT DECLARE @TimeEntryTotalCharge DECIMAL(19, 2) DECLARE @TimeEntryTotalTime INT SELECT @TimeEntryTotalCharge = ISNULL(SUM(ISNULL(TIE.[Charge], 0)), 0), @TimeEntryTotalTime = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0), @TotalCharge = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '''') = ''N'' THEN 0 ELSE ISNULL(TIE.[Charge], 0) END), 0), @ChargeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '''') = ''N'' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[InvoiceNo], 0) <> 0 THEN 0 WHEN @IsSAM4 = 1 THEN ISNULL(TIE.[Charge], 0) ELSE ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0) END), 0), @TimeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '''') = ''N'' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[InvoiceNo], 0) <> 0 THEN 0 WHEN @IsSAM4 = 0 THEN CASE WHEN TIE.[Charge] = 0 THEN 0 ELSE CONVERT(INT, FLOOR(CONVERT(DECIMAL(18, 2), TIE.[TIME]) * ( (TIE.[Charge] - TIE.[BilledAmount]) / TIE.[Charge]))) END ELSE ISNULL(TIE.[Time], 0) END), 0), @TotalTime = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '''') = ''N'' THEN 0 ELSE ISNULL(TIE.[Time], 0) END), 0) FROM [dbo].[TimeEntry] TIE WHERE TIE.[Matter] = @MATTER AND ( (TIE.[TimeOrCharge] = ''T'') OR (TIE.[TimeOrCharge] = ''C'')) --**Changed fetch condition JIRA 1081 - arun DECLARE @DebtBal DECIMAL(19, 2) DECLARE @OutlayBal DECIMAL(19, 2) DECLARE @DebtBalDate DATETIME DECLARE @OutlayBalDate DATETIME DECLARE @ClientCurrent DECIMAL(19, 2) DECLARE @ClientDeposit DECIMAL(19, 2) DECLARE @NCOMMAND NVARCHAR(MAX) -- To ensure SAM3 will retrieve these from [dbo].[matters] SET @DebtBal = 0 SET @OutlayBal = 0 SET @ClientCurrent = 0 SET @ClientDeposit = 0 SELECT @DebtBal = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[DebtorsValue], 0)), 0)), @DebtBalDate = MAX(CASE WHEN ISNULL(TRN.[DebtorsValue], 0) = 0 THEN NULL ELSE TRN.[TransDate] END), @OutlayBal = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[OutlayValue], 0)), 0)), @OutlayBalDate = MAX(CASE WHEN ISNULL(TRN.[OutlayValue], 0) = 0 THEN NULL ELSE TRN.[TransDate] END), @ClientCurrent = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[ClientCurrent], 0)), 0)), @ClientDeposit = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[ClientDeposit], 0)), 0)) FROM [dbo].[Transactions] TRN WHERE TRN.[MatterCode] = @MATTER AND TRN.[Posted] = ''Y'' AND TRN.[RecType] <> ''V'' AND TRN.[CorrectionInd] = ''L'' SELECT @AlreadyClosed = CASE WHEN MAT.[Closed] = ''Y'' THEN 1 ELSE 0 END, @HasOutstandingBal = CASE WHEN @DebtBal <> 0 THEN 1 WHEN ISNULL(MAT.[DebtBal], 0) <> 0 THEN 1 WHEN @OutlayBal <> 0 THEN 1 WHEN ISNULL(MAT.[OutlayBal], 0) <> 0 THEN 1 WHEN ISNULL(MAT.[ClientBal], 0) <> 0 --No need to check @ClientCurBal + @ClientDepBal THEN 1 WHEN @ClientCurrent <> 0 THEN 1 WHEN ISNULL(MAT.[ClientCurBal], 0) <> 0 THEN 1 WHEN @ClientDeposit <> 0 THEN 1 WHEN ISNULL(MAT.[ClientDepBal], 0) <> 0 THEN 1 ELSE 0 END, @HasOutstandingTimeBal = CASE WHEN @TimeBal <> 0 THEN 1 ELSE 0 END, @HasOutstandingChargeBal = CASE WHEN @ChargeBal <> 0 THEN 1 ELSE 0 END FROM [dbo].[matters] MAT WHERE MAT.[Code] = @MATTER SET @AlreadyClosed = ISNULL(@AlreadyClosed, 0) SET @HasOutstandingBal = ISNULL(@HasOutstandingBal, 0) SET @HasOutstandingTimeBal = ISNULL(@HasOutstandingTimeBal, 0) SET @HasOutstandingChargeBal = ISNULL(@HasOutstandingChargeBal, 0) SELECT @YEAR = ISNULL(CONVERT(INT, CTL.[NumValue]), DATEPART(YEAR, GetDate())) FROM [dbo].[CtrlNum] CTL WHERE CTL.[Code] = ''CurYear'' IF (@YEAR IS NULL) BEGIN SET @YEAR = DATEPART(YEAR, GetDate()) END SELECT @HasOutstandingRec = CASE COUNT(1) WHEN 0 THEN 0 ELSE 1 END FROM [dbo].[Transactions] TRN WHERE TRN.[MatterCode] = @MATTER AND TRN.[Posted] = ''Y'' AND TRN.[RecType] <> ''V'' AND ( TRN.[CorrectionInd] = ''L'' OR TRN.[CorrectionInd] = ''C'') AND TRN.[PostingYear] = @YEAR AND TRN.[Reconciliation] <= 0 SET @HasOutstandingRec = ISNULL(@HasOutstandingRec, 0) SELECT @HasOutstandingDiary = CASE WHEN COUNT(1) = 0 THEN 0 ELSE 1 END FROM [dbo].[diary] DIA WHERE DIA.[CASECODE] = @MATTER AND DIA.[STATUS] <> 1 SELECT @HasOutstandingUndertakings = CASE WHEN COUNT(1) = 0 THEN 0 ELSE 1 END FROM [dbo].[Undertakings] UND WHERE UND.[MATTER] = @MATTER AND UND.[DISCHARGEDATE] IS NULL INSERT INTO @Closables ([AlreadyClosed], [HasOutstandingBal], [HasOutstandingTimeBal], [HasOutstandingChargeBal], [HasOutstandingRec], [HasOutstandingDiary], [HasOutstandingUndertakings]) SELECT @AlreadyClosed AS [AlreadyClosed], @HasOutstandingBal AS [HasOutstandingBal], @HasOutstandingTimeBal AS [HasOutstandingTimeBal], @HasOutstandingChargeBal AS [HasOutstandingChargeBal], @HasOutstandingRec AS [HasOutstandingRec], @HasOutstandingDiary AS [HasOutstandingDiary], @HasOutstandingUndertakings AS [HasOutstandingUndertakings] RETURN END') END ELSE BEGIN EXEC (' CREATE FUNCTION [dbo].[KEYHM_FN_MatterClosable] (@MATTER VARCHAR(20)) RETURNS @Closables TABLE ([AlreadyClosed] int, [HasOutstandingBal] int, [HasOutstandingTimeBal] int, [HasOutstandingChargeBal] int, [HasOutstandingRec] int, [HasOutstandingDiary] int, [HasOutstandingUndertakings] int) AS /*********************************************************************************************** * * KEYHM_FN_MatterClosable get the parameters to establish whether a matter can be * closed at this point. Please note that Bal, Rec, Diary and * Undertakings should prevent a matter from closing, while * Time and Charge should lead to a warning and the user can * decide to close the matter anyway. * * Modifications: 2015-02-18 Pino Change calculations to accomodate SAM4, using * original calculations from ky_NETSPCaseSummaryPageLoad * Added warning that if any of these calculations are to be * changed here, then the corresponding calculations in other * procedure(s) must be changed accordingly. * 2015-03-04 Pino No functional change but added reference to * ky_NETTLFetchTimeEntry in comment below. * * 2015-10-29 Pino Carafa * Include calculation for @HasOutstandingRec * * ***********************************************************************************************/ BEGIN DECLARE @AlreadyClosed INT DECLARE @HasOutstandingRec INT DECLARE @HasOutstandingBal INT DECLARE @HasOutstandingTimeBal INT DECLARE @HasOutstandingChargeBal INT DECLARE @HasOutstandingDiary INT DECLARE @HasOutstandingUndertakings INT DECLARE @Year INT DECLARE @IsSAM4 bit SET @IsSAM4 = 0 -- Please see also: ky_NETCaseSummaryPageLoad. If you change any of these calculations, -- ensure the ones in there are changed as well. -- ky_NETTLFetchTimeEntry. If you change any of these calculations, -- ensure the ones in there are changed as well. DECLARE @TimeBal INT DECLARE @ChargeBal DECIMAL(19, 2) DECLARE @TotalCharge Decimal(19, 2) DECLARE @TotalTime INT DECLARE @TimeEntryTotalCharge DECIMAL(19, 2) DECLARE @TimeEntryTotalTime INT SELECT @TimeEntryTotalCharge = ISNULL(SUM(ISNULL(TIE.[Charge], 0)), 0), @TimeEntryTotalTime = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0), @TotalCharge = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '''') = ''N'' THEN 0 ELSE ISNULL(TIE.[Charge], 0) END), 0), @ChargeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '''') = ''N'' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[InvoiceNo], 0) <> 0 THEN 0 WHEN @IsSAM4 = 1 THEN ISNULL(TIE.[Charge], 0) ELSE ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0) END), 0), @TimeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '''') = ''N'' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[InvoiceNo], 0) <> 0 THEN 0 WHEN @IsSAM4 = 0 THEN CASE WHEN TIE.[Charge] = 0 THEN 0 ELSE CONVERT(INT, FLOOR(CONVERT(DECIMAL(18, 2), TIE.[TIME]) * ( (TIE.[Charge] - TIE.[BilledAmount]) / TIE.[Charge]))) END ELSE ISNULL(TIE.[Time], 0) END), 0), @TotalTime = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '''') = ''N'' THEN 0 ELSE ISNULL(TIE.[Time], 0) END), 0) FROM [dbo].[TimeEntry] TIE WHERE TIE.[Matter] = @MATTER AND ( (TIE.[TimeOrCharge] = ''T'') OR (TIE.[TimeOrCharge] = ''C'')) --**Changed fetch condition JIRA 1081 - arun DECLARE @DebtBal DECIMAL(19, 2) DECLARE @OutlayBal DECIMAL(19, 2) DECLARE @DebtBalDate DATETIME DECLARE @OutlayBalDate DATETIME DECLARE @ClientCurrent DECIMAL(19, 2) DECLARE @ClientDeposit DECIMAL(19, 2) DECLARE @NCOMMAND NVARCHAR(MAX) -- To ensure SAM3 will retrieve these from [dbo].[matters] SET @DebtBal = 0 SET @OutlayBal = 0 SET @ClientCurrent = 0 SET @ClientDeposit = 0 SELECT @AlreadyClosed = CASE WHEN MAT.[Closed] = ''Y'' THEN 1 ELSE 0 END, @HasOutstandingBal = CASE WHEN @DebtBal <> 0 THEN 1 WHEN ISNULL(MAT.[DebtBal], 0) <> 0 THEN 1 WHEN @OutlayBal <> 0 THEN 1 WHEN ISNULL(MAT.[OutlayBal], 0) <> 0 THEN 1 WHEN ISNULL(MAT.[ClientBal], 0) <> 0 --No need to check @ClientCurBal + @ClientDepBal THEN 1 WHEN @ClientCurrent <> 0 THEN 1 WHEN ISNULL(MAT.[ClientCurBal], 0) <> 0 THEN 1 WHEN @ClientDeposit <> 0 THEN 1 WHEN ISNULL(MAT.[ClientDepBal], 0) <> 0 THEN 1 ELSE 0 END, @HasOutstandingTimeBal = CASE WHEN @TimeBal <> 0 THEN 1 ELSE 0 END, @HasOutstandingChargeBal = CASE WHEN @ChargeBal <> 0 THEN 1 ELSE 0 END FROM [dbo].[matters] MAT WHERE MAT.[Code] = @MATTER SET @AlreadyClosed = ISNULL(@AlreadyClosed, 0) SET @HasOutstandingBal = ISNULL(@HasOutstandingBal, 0) SET @HasOutstandingTimeBal = ISNULL(@HasOutstandingTimeBal, 0) SET @HasOutstandingChargeBal = ISNULL(@HasOutstandingChargeBal, 0) SELECT @YEAR = ISNULL(CTL.[YEAR], DATEPART(YEAR, GetDate())) FROM [dbo].[Control] CTL IF (@YEAR IS NULL) BEGIN SET @YEAR = DATEPART(YEAR, GetDate()) END SELECT @HasOutstandingRec = CASE COUNT(1) WHEN 0 THEN 0 ELSE 1 END FROM [dbo].[MatterLedger] MAL INNER JOIN [dbo].[BatchH] BH INNER JOIN [dbo].[BankRecHistory] BHS ON BHS.[BANKAC] = BH.[CODE] ON BH.[BATCHNO] = MAL.[BATCHNO] AND BH.[RECNO] <= 0 AND BH.[TYPE] IN (''P'', ''R'', ''T'') WHERE MAL.[MATTER] = @MATTER AND MAL.[YEAR] = @YEAR AND MAL.[REF] <> ''EUROADJ'' SET @HasOutstandingRec = ISNULL(@HasOutstandingRec, 0) SELECT @HasOutstandingDiary = CASE WHEN COUNT(1) = 0 THEN 0 ELSE 1 END FROM [dbo].[diary] DIA WHERE DIA.[CASECODE] = @MATTER AND DIA.[STATUS] <> 1 SELECT @HasOutstandingUndertakings = CASE WHEN COUNT(1) = 0 THEN 0 ELSE 1 END FROM [dbo].[Undertakings] UND WHERE UND.[MATTER] = @MATTER AND UND.[DISCHARGEDATE] IS NULL INSERT INTO @Closables ([AlreadyClosed], [HasOutstandingBal], [HasOutstandingTimeBal], [HasOutstandingChargeBal], [HasOutstandingRec], [HasOutstandingDiary], [HasOutstandingUndertakings]) SELECT @AlreadyClosed AS [AlreadyClosed], @HasOutstandingBal AS [HasOutstandingBal], @HasOutstandingTimeBal AS [HasOutstandingTimeBal], @HasOutstandingChargeBal AS [HasOutstandingChargeBal], @HasOutstandingRec AS [HasOutstandingRec], @HasOutstandingDiary AS [HasOutstandingDiary], @HasOutstandingUndertakings AS [HasOutstandingUndertakings] RETURN END') END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_FN_MatterHeaderDetails' AND SO.[type] = 'TF') BEGIN DROP FUNCTION [dbo].[KEYHM_FN_MatterHeaderDetails] END GO CREATE FUNCTION [dbo].[KEYHM_FN_MatterHeaderDetails] (@matter VARCHAR(20)) RETURNS @MD TABLE ([CODE] VARCHAR(20), [ClientCode] VARCHAR(10), [MatterNo] VARCHAR(10), [YourRef] VARCHAR(100), [DESCRIPTION] VARCHAR(300), [FECode] VARCHAR(10), [FEName] VARCHAR(100), [Name] VARCHAR(256), [TelNo] VARCHAR(50), [Address] VARCHAR(2000), [Closed] CHAR(1), [TOOLTIP] VARCHAR(1000), [IsChildcare] CHAR(1), [User1] VARCHAR(100), [User2] VARCHAR(100), [User3] VARCHAR(100), [Partner] VARCHAR(10), [PartnerName] VARCHAR(100), [CompBillingMatter] VARCHAR(20), [MatterUniqueID] INT) AS /******************************************************************************************************* * Returns the details for the current matter, to be displayed in the * * Client/Case section of the software, ledgers, etc. * * * * Stored Procedure Name : [dbo].[KEYHM_FN_MatterHeaderDetails] * * Copied from : [dbo].[ky_NETTFMatterHeaderDetails] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN INSERT INTO @MD ([CODE], [ClientCode], [MatterNo], [YourRef], [DESCRIPTION], [FECode], [FEName], [Name], [TelNo], [Address], [Closed], [TOOLTIP], [IsChildcare], [User1], [User2], [User3], [Partner], [PartnerName], [CompBillingMatter], [MatterUniqueID]) SELECT RTRIM(ISNULL([MAT].[Code], '')) AS [Code], RTRIM(ISNULL([MAT].[ClientCode], '')) AS [ClientCode], RTRIM(ISNULL([MAT].[Matter], '')) AS [MatterNo], RTRIM(ISNULL([MAT].[YourRef], '')) AS [YourRef], RTRIM(ISNULL([MAT].[Description], '')) AS [Description], RTRIM(ISNULL([MAT].[FECode], '')) AS [FECode], RTRIM(ISNULL([HAN].[NAME], '')) AS [FEName], RTRIM(ISNULL([CT].[Name], '')) AS [Name], RTRIM(ISNULL([CT].[Tel], '')) AS [TelNo], RTRIM(ISNULL([CT].[Address], '')) AS [Address], CASE WHEN RTRIM(ISNULL(MAT.[Closed], 'N')) = 'Y' THEN 'Y' ELSE 'N' END AS [Closed], RTRIM(ISNULL([CL].[CLNAME], '')) + CHAR(13) + 'W:' + RTRIM(ISNULL([CL].[CLTEL], ' Nil ')) + CHAR(13) + 'M:' + RTRIM(ISNULL([CL].[CLMOBNO], ' Nil ')) AS [TOOLTIP], CASE WHEN [WKT].[CODE] IS NULL THEN 'N' WHEN [WKT].[ChildCare] IS NULL THEN 'N' WHEN [WKT].[ChildCare] = 'Y' THEN 'Y' ELSE 'N' END AS [IsChildcare], ISNULL([MAT].[User1], '') AS [User1], ISNULL([MAT].[User2], '') AS [User2], ISNULL([MAT].[User3], '') AS [User3], ISNULL([MAT].[Partner], '') AS [Partner], ISNULL([PRT].[NAME], '') AS [PartnerName], RTRIM(ISNULL([MAT].[CompBillingMatter], '')) AS [CompBillingMatter], [MAT].[UniqueID] AS [MatterUniqueID] FROM [dbo].[matters] [MAT] LEFT OUTER JOIN [dbo].[Contacts] [CT] INNER JOIN [dbo].[CLIENT] [CL] ON [CL].[CLCODE] =[CT].[Code] ON [CT].[Code] = [MAT].[ClientCode] LEFT OUTER JOIN [dbo].[Handlers] [HAN] ON [HAN].[CODE] = [MAT].[FECode] LEFT OUTER JOIN [dbo].[WorkTypes] [WKT] ON [WKT].[CODE] = MAT.[WType] LEFT OUTER JOIN [dbo].[Handlers] AS [PRT] ON [PRT].[CODE] = [MAT].[Partner] WHERE [MAT].[Code] = @matter RETURN END GO IF EXISTS (SELECT * FROM SYS.[objects] SO WHERE SO.[name] = 'KEYHM_FN_RemoveSpuriousWhitespace' AND SO.[type] = 'FN') BEGIN DROP FUNCTION [dbo].[KEYHM_FN_RemoveSpuriousWhitespace] END GO CREATE FUNCTION [dbo].[KEYHM_FN_RemoveSpuriousWhitespace] (@original VARCHAR(MAX), @maxlen INT) RETURNS VARCHAR(5000) AS /******************************************************************************************************* * Removes newlines, line feeds, non-breaking spaces and multiple spaces from the input * * string in order to produce an output format suitable for display in list. * * * * Stored Procedure Name : [dbo].[KEYHM_FN_RemoveSpuriousWhitespace] * * Copied from : [dbo].[ky_RemoveSpuriousWhitespace2] * * * * Modification History : * * 2019-05-31 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @len int SET @original = ISNULL(@original, '') IF LEN(@original) > (2 * @maxlen) BEGIN SET @original = SUBSTRING(@original, 1, (2 * @maxlen)) END SET @original = REPLACE(@original, char(10), ' ') SET @original = REPLACE(@original, char(13), ' ') SET @original = REPLACE(@original, char(160), ' ') SET @original = RTRIM(@original) SET @len = 0 WHILE (@len <> LEN(@original)) BEGIN SET @len = LEN(@original) SET @original = REPLACE(@original, ' ', ' ') END RETURN SUBSTRING(@original, 1, @maxlen) END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_FN_SplitString' AND SO.[type] = 'TF') BEGIN DROP FUNCTION [dbo].[KEYHM_FN_SplitString] END GO CREATE FUNCTION KEYHM_FN_SplitString ( @Input NVARCHAR(MAX), @Character CHAR(1) ) RETURNS @Output TABLE ( Item NVARCHAR(1000) ) AS /******************************************************************************************************* * Splits a string on the character specifed (like ','). * * * * Stored Procedure Name : [dbo].[KEYHM_FN_SplitString] * * Copied from : [dbo].[ky_NETFNSplitString] * * * * Modification History : * * 2019-04-13 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @StartIndex INT, @EndIndex INT SET @StartIndex = 1 IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character BEGIN SET @Input = @Input + @Character END WHILE CHARINDEX(@Character, @Input) > 0 BEGIN SET @EndIndex = CHARINDEX(@Character, @Input) INSERT INTO @Output(Item) SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1) SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input)) END RETURN END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_FN_UserCanPostTime' AND SO.[type] = 'FN') BEGIN DROP FUNCTION [dbo].[KEYHM_FN_UserCanPostTime] END GO CREATE FUNCTION [dbo].[KEYHM_FN_UserCanPostTime] (@MATTER VARCHAR(20), @HANDLER VARCHAR(20), @RECORDID INT) RETURNS INT AS /******************************************************************************************************* * This function will check if a * * given user can post time a given matter. * * * * Return Bit Mask: * * 0 - User can post * * 1 - Matter doesn't exist * * 2 - Matter is closed * * 4 - Matter charge list enabled but user not present * * 8 - Client charge list enabled but user not present * * 16 - Task not specified * * 32 - Client is not approved for anti-money laundering (KEYD-4890) * * * * Flag Bit Mask: * * 1 - Matter charge out rate list is enabled * * 2 - Client charge out rate list is enabled * * 4 - User is in Matter charge out rate list * * 8 - User is in Client charge out rate list * * * * Stored Procedure Name : [dbo].[KEYHM_FN_UserCanPostTime] * * Copied from : [dbo].[ky_NETFNUserCanPostTime] * * * * Modification History: * * 2019-04-24 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @RETURN INT -- BitWise value where bits are mapped to errors DECLARE @FLAG INT -- BitWise value for charge out rates DECLARE @CHECK BIT -- Checks if a setting is enabled or not DECLARE @CHARGEGROUP VARCHAR(10) -- Charge group of @HANDLER SET @RETURN = 0 SET @FLAG = 0 SET @MATTER = ISNULL(@MATTER, '') SET @HANDLER = ISNULL(@HANDLER, '') SELECT @CHARGEGROUP = ISNULL(HAN.[ChargeGroup], '') FROM [dbo].[Handlers] AS HAN WHERE HAN.[CODE] = @HANDLER IF @MATTER <> '~' BEGIN -- Check if the matter code contains a '/' -- If it doesn't then it's probably because the matter is blank SET @MATTER = ISNULL(NULLIF(@MATTER, ''), '/') IF NOT EXISTS(SELECT * FROM [dbo].[matters] WHERE [Code] = @MATTER) SET @RETURN = @RETURN | 1 -- Matter doesn't exist IF EXISTS(SELECT * FROM [dbo].[matters] WHERE [Code] = @MATTER AND [Closed] = 'Y') SET @RETURN = @RETURN | 2 -- Matter is closed SET @CHECK = ISNULL((SELECT CONVERT(BIT, ISNULL([KeyValue], 'False')) FROM [dbo].[Settings] WHERE [KeyName] = 'ChargeOutRateCheck'), 0) IF @CHECK = 1 BEGIN /* Below is where the charge out rate indicators are handled. There's a hierarchy for how a user's rate is calculated and that same hierarchy will be applied here. The handler may be in a charge group and this is treated the same as a handler code. No No Matter rate active? +-----> Client rate active? +-----> User can't post + + | | | Yes | Yes | | v No v No Is handler in list? +--+ Is handler in list? +--+ + | + | | | | | | Yes | | Yes | | | | | v | v | User can post | User can post | | | v v User can't post User can't post */ SELECT @FLAG = @FLAG | CASE WHEN ISNULL(MAT.[ChargeOutRateInd], 'N') = 'Y' THEN 1 ELSE 0 END FROM [dbo].[matters] AS MAT WHERE MAT.[Code] = @MATTER SELECT @FLAG = @FLAG | CASE WHEN ISNULL(CNT.[ChargeOutRateInd], 'N') = 'Y' THEN 2 ELSE 0 END FROM [dbo].[Contacts] AS CNT WHERE CNT.[Code] = SUBSTRING(@MATTER, 1, CHARINDEX('/', @MATTER) - 1) IF EXISTS (SELECT * FROM [dbo].[MatterChargeOutRates] AS MCR WHERE MCR.[MatterCode] = @MATTER AND (MCR.[FeCode] = @HANDLER OR MCR.[FeCode] = @CHARGEGROUP)) BEGIN SET @FLAG = @FLAG | 4 END IF EXISTS (SELECT * FROM [dbo].[ClientChargeOutRates] AS CCR WHERE CCR.[ClientCode] = SUBSTRING(@MATTER, 1, CHARINDEX('/', @MATTER) - 1) AND (CCR.[FeCode] = @HANDLER OR CCR.[FeCode] = @CHARGEGROUP)) BEGIN SET @FLAG = @FLAG | 8 END -- If matter list is enabled and user is not in the list IF @FLAG & 1 > 0 AND @FLAG & 4 = 0 SET @RETURN = @RETURN | 4 -- If client list is enabled, matter list is disabled and user is not in the list IF @FLAG & 2 > 0 AND @FLAG & 8 = 0 AND @FLAG & 1 = 0 SET @RETURN = @RETURN | 8 END END IF @RECORDID IS NOT NULL BEGIN IF (SELECT TOP 1 CASE WHEN TDB.[Matter] = '~' THEN ISNULL(TDB.[NCCCode], '') ELSE ISNULL(TDB.[Task], '') END FROM [dbo].[TimeDayBook] AS TDB WHERE TDB.[RecordID] = @RECORDID) = '' SET @RETURN = @RETURN | 16 END -- Check if AML is required and if the contact is approved IF RTRIM(ISNULL(@MATTER, '')) NOT IN ('', '~', '/') BEGIN IF ISNULL((SELECT TOP 1 [KeyValue] FROM [dbo].[Settings] WHERE [KeyName] = 'AMLRequiredForTime'), '') = '1' AND ISNULL((SELECT TOP 1 CONVERT(VARCHAR(10), ISNULL(CNT.[Approved], 0)) FROM [dbo].[Contacts] AS CNT INNER JOIN [dbo].[matters] AS MAT ON CNT.[Code] = MAT.[ClientCode] WHERE MAT.[Code] = @MATTER AND ISNULL(CNT.[Approved], 0) = 1), '') <> '1' BEGIN SELECT @RETURN = @RETURN | 32 END END RETURN @RETURN END GO IF OBJECT_ID(N'KEYHM_GetActionIdByUploadActionId')IS NOT NULL DROP PROCEDURE KEYHM_GetActionIdByUploadActionId GO CREATE PROCEDURE [dbo].[KEYHM_GetActionIdByUploadActionId] ( @UploadActionId VARCHAR(36), @Result INT OUTPUT ) AS /******************************************************************************************************* * This procedure used to get the Action Id by Upload Action Id. * * * * Stored Procedure Name : [KEYHM_GetActionIdByUploadActionId] * * * * Modification History : * * 2023-05-10 Vignesh M Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON SELECT @Result = [ACTIONID] FROM [dbo].[Diary] WHERE [UploadActionId] = @UploadActionId SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetAdestRate' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetAdestRate] END GO CREATE PROCEDURE [dbo].[KEYHM_GetAdestRate] (@MatterCode VARCHAR(20), @ChargeCode VARCHAR(3)) AS /******************************************************************************************************* * This procedure is used to get default value from charging matrix for SAM4 * * * * Stored Procedure Name : [dbo].[KEYHM_GetAdestRate] * * Copied from : [dbo].[ky_NETGetAdestRate] * * * * Modification History : * * 2019-05-23 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @ChargeArrangement VARCHAR(3) DECLARE @MatDebt DECIMAL(18, 2) DECLARE @MatRate DECIMAL(13, 2) SELECT @ChargeArrangement = RTRIM(ISNULL([MAT].[ChargeArrangement], ISNULL([CNT].[ChargeArrangement], ''))), @MatDebt = ISNULL([MAT].[OriginalDebt], 0) + ISNULL([MAT].[DebtInterest], 0) - ISNULL([MAT].[DebtCollected], 0) FROM [dbo].[matters] [MAT] LEFT OUTER JOIN [dbo].[Contacts] [CNT] ON [CNT].[Code] = [MAT].[ClientCode] WHERE [MAT].[Code] = @MatterCode SELECT @MatRate = CASE WHEN [CMX].[BAND1LIMIT] >= @MatDebt THEN [CMX].[BAND1RATE] WHEN [CMX].[BAND2LIMIT] >= @MatDebt THEN [CMX].[BAND2RATE] WHEN [CMX].[BAND3LIMIT] >= @MatDebt THEN [CMX].[BAND3RATE] WHEN [CMX].[BAND4LIMIT] >= @MatDebt THEN [CMX].[BAND4RATE] WHEN [CMX].[BAND5LIMIT] >= @MatDebt THEN [CMX].[BAND5RATE] WHEN [CMX].[BAND6LIMIT] >= @MatDebt THEN [CMX].[BAND6RATE] WHEN [CMX].[BAND7LIMIT] >= @MatDebt THEN [CMX].[BAND7RATE] ELSE [CMX].[BAND8RATE] END FROM [dbo].[ChargingMatrix] [CMX] WHERE [CMX].[ARRANGEMENTCODE] = @ChargeArrangement AND [CMX].[CHARGECODE] = @ChargeCode SELECT ISNULL(@MatRate, CONVERT(DECIMAL(13, 2), 0)) AS Rate END GO IF OBJECT_ID(N'KEYHM_GetAllMobileSettings',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_GetAllMobileSettings] GO CREATE PROCEDURE [dbo].[KEYHM_GetAllMobileSettings] ( @keyname VARCHAR(500) ) AS /******************************************************************************************************* * This sp is used to store the scancapture setting * * * * Stored Procedure Name : [dbo].[KEYHM_GetAllMobileSettings] * * * * Modification History: * * 2023-05-02 Vignesh M Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON; DECLARE @QRY VARCHAR(1000) SET @keyname = '''' + REPLACE(@keyname,',',''',''') + '''' SET @QRY = ' SELECT [SET].[KeyName], [SET].[KeyValue] FROM [dbo].[Settings] [SET] WHERE [SET].[KeyName] IN (' + @keyname + ')' EXEC(@QRY) SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetAzureDATInfo' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetAzureDATInfo] END GO Create Procedure [dbo].[KEYHM_GetAzureDATInfo] (@TrackReference INT, @Version INT) AS /************************************************************************************************************* * * * [dbo].[KEYHM_GetAzureDATInfo] * * * * Gets the information Azure needs to retrieve a Diary Attachment * * * * Compatibility information - PLEASE update older versions if necessary to ensure the compatible software * * remains fully functional * * ***************************************************************************************************** * * * * * * * Supersedes: - * * * * First compatible version: 5.6.4.1 * * * * Last compatible software version: - * * * * Superseded by: - * * * * * * * ***************************************************************************************************** * * * * Modification History * * 2018-11-12 Pino Carafa Created * * 2019-11-19 Pino Carafa Add Link to DiaryAttachmentOriginalMatterLinks * * 2020-02-06 Pino Carafa Filepath loses colon for file paths that are really local, and that don't * * have a drive letter covered by [dbo].[UNCAlias] * * 2020-05-26 Pino Carafa Add Matter Code and Client Code * * 2020-06-08 Arun Vasu Copied from Ky_NETSPGetAzureDATInfo * * 2024-08-26 Aakif Modified MatterUniqueId alias name to match DTO * *************************************************************************************************************/ BEGIN DECLARE @FilePath VARCHAR(500) DECLARE @Document VARCHAR(100) DECLARE @DotPos INT DECLARE @SlashPos INT DECLARE @FileExtension VARCHAR(10) DECLARE @MatterUniqueID INT DECLARE @IsCurrent BIT DECLARE @Type VARCHAR(10) DECLARE @MatterCode VARCHAR(20) DECLARE @ClientCode VARCHAR(10) SELECT @TrackReference = [DAT].[TrackReference], @Document = RTRIM(ISNULL([DAT].[DOCUMENT], '')), @FilePath = REVERSE(RTRIM(ISNULL([DAV].[Filepath], ISNULL([DAT].[FILEPATH], '')))), @MatterUniqueID = ISNULL([DAOML].[OriginalUniqueID], [MAT].[uniqueid]), @Version = CASE WHEN [DAV].[Version] IS NULL THEN [CV].[CurrentVersion] ELSE [DAV].[Version] END, @IsCurrent = CASE WHEN [DAV].[Version] IS NULL THEN 1 ELSE 0 END, @Type = [DAT].[TYPE], @MatterCode = RTRIM(ISNULL([MAT].[Code], '')), @ClientCode = RTRIM(ISNULL([MAT].[ClientCode], '')) FROM [dbo].[DiaryAttachments] [DAT] LEFT OUTER JOIN [dbo].[DiaryAttachmentOriginalMatterLinks] [DAOML] ON [DAOML].[TrackReference] = [DAT].[TrackReference] INNER JOIN [dbo].[diary] [DIA] INNER JOIN [dbo].[matters] [MAT] ON [MAT].[Code] = [DIA].[CASECODE] ON [DIA].[ACTIONID] = [DAT].[DiaryID] LEFT OUTER JOIN [dbo].[DiaryAttachmentVersioning] [DAV] ON [DAV].[TrackReference] = [DAT].[TrackReference] AND [DAV].[Version] = @Version CROSS APPLY (SELECT ISNULL(MAX([DAV2].[Version]), 0) + 1 AS [CurrentVersion] FROM [dbo].[DiaryAttachmentVersioning] [DAV2] WHERE [DAV2].[TrackReference] = [DAT].[TrackReference]) [CV] WHERE [DAT].[TrackReference] = @TrackReference SET @DotPos = CHARINDEX('.', @FilePath) SET @SlashPos = CHARINDEX('\', @FilePath) IF @DotPos < 1 BEGIN SET @FileExtension = '' END ELSE IF @DotPos < @SlashPos BEGIN SET @FileExtension = REVERSE(SUBSTRING(@FilePath, 1, @DotPos)) END ELSE BEGIN SET @FileExtension = '' END IF @Document = '' BEGIN IF @SlashPos > 0 BEGIN SET @Document = REVERSE(SUBSTRING(@FilePath, 1, @SlashPos - 1)) SET @Document = SUBSTRING(@Document, 1, LEN(@Document) - LEN(@FileExtension)) IF @Document LIKE '%_' + CONVERT(VARCHAR(10), @TrackReference) BEGIN SET @Document = SUBSTRING(@Document, 1, LEN(@Document) - LEN('_' + CONVERT(VARCHAR(10), @TrackReference))) END END ELSE BEGIN SET @Document = 'File' END END SET @FilePath = REVERSE(@FilePath) IF LEN(@FilePath) > 1 BEGIN IF SUBSTRING(@FilePath, 2, 1) = ':' BEGIN IF (SELECT [UNC].[UNC] FROM [dbo].[UNCAlias] [UNC] WHERE [UNC].[Drive] = SUBSTRING(@FilePath, 1, 1)) IS NOT NULL BEGIN SELECT @FilePath = ISNULL((SELECT [UNC].[UNC] FROM [dbo].[UNCAlias] [UNC] WHERE [UNC].[Drive] = SUBSTRING(@FilePath, 1, 1)), SUBSTRING(@FilePath, 1, 1)) + SUBSTRING(@FilePath, 3, LEN(@FilePath) - 2) END END END SELECT @TrackReference AS [TrackReference], @Document AS [Document], @FileExtension AS [FileExtension], @MatterUniqueID AS [MatterUniqueId], @FilePath AS [FilePath], @Version AS [RetrievedVersion], @IsCurrent AS [IsCurrent], @Type AS [Type], @MatterCode AS [MatterCode], @ClientCode AS [ClientCode] END GO IF OBJECT_ID(N'KEYHM_GetCaseAssociateContacts', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_GetCaseAssociateContacts] END GO CREATE PROCEDURE [dbo].[KEYHM_GetCaseAssociateContacts] ( @NameCode VARCHAR(20) ) AS /******************************************************************************************************* * This sp is used to Fetch Data for Case Associate Contacts WebApi * * * * Stored Procedure Name : [dbo].[KEYHM_GetCaseAssociateContacts] * * Copied from : [dbo].[ky_NETFetchCaseAssociateEditLoadData] * * * * Modification History: * * 2019-04-23 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @AssCont VARCHAR(100) SET NOCOUNT ON SELECT RTRIM(ISNULL(CAC.[NAMECODE], '')) AS [NameCode], RTRIM(ISNULL(CAST(CAC.[KEYID] AS VARCHAR(20)), '')) AS [KeyId], RTRIM(ISNULL(CAC.[NAME], '')) AS [Name], RTRIM(ISNULL(CAC.[SALUTATION], '')) AS [Salutation], RTRIM(ISNULL(CAC.[JOBTITLE], '')) AS [JobTitle], RTRIM(ISNULL(CAC.[ADDRESS], '')) AS [Address], RTRIM(ISNULL(CAC.[PHONE], '')) AS [Phone], RTRIM(ISNULL(CAC.[FAX], '')) AS [Fax], RTRIM(ISNULL(CAC.[MOBILE], '')) AS [Mobile], RTRIM(ISNULL(CAC.[EMAIL], '')) AS [Email], RTRIM(ISNULL(CAC.[RELATIONSHIP], '')) AS [Relationship], RTRIM(ISNULL(CAC.[NOTES], '')) AS [Notes] FROM [dbo].[CaseAssociatesContacts] CAC WHERE CAC.[NAMECODE] = @NameCode SET NOCOUNT OFF END GO IF OBJECT_ID(N'KEYHM_GetCaseAssociates', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_GetCaseAssociates] END GO CREATE PROCEDURE [dbo].[KEYHM_GetCaseAssociates] ( @CaseCode VARCHAR(20), @Retired VARCHAR(1) = 'N', @EmailSearch NVARCHAR(500) = NULL ) AS /******************************************************************************************************* * This procedure is used to return Case Associate from WebApi * * * * Stored Procedure Name : [dbo].[KEYHM_GetCaseAssociates] * * Copied from : [dbo].[ky_NETCaseAssociateLoadMainGrid] * * * * Modification History: * * 2019-04-23 Vinodhan K Created * * 2019-07-12 Ramesh K Modified to implement the email search for OWA * *******************************************************************************************************/ BEGIN SET NOCOUNT ON SET @EmailSearch = LTRIM(RTRIM(@EmailSearch)); IF @EmailSearch = '' BEGIN SET @EmailSearch = NULL; END SELECT CCN.[CASECODE] AS [CaseCode], RTRIM(CCN.[CONTYPE]) AS [ConType], CCN.[CONNUM] AS [ConNum], CCN.[NAMECODE] AS [CaseContactsNameCode], CCN.[SOLCODE] AS [CaseContactsSolCode], CCN.[SOLREF] AS [CaseContactsSolRef], CCN.[INSCODE] AS [CaseContactsInsCode], CCN.[ASSIGNEDCONTACT] AS [AssignedContact], CCN.[CONNUM] AS [CaseContactsSeq], CASE WHEN (RTRIM(ISNULL(CCN.[ForCopy],'0')) = '1' OR RTRIM(ISNULL(CCN.[ForCopy],'0')) = 'Y' ) THEN 'True' ELSE 'False' END AS [CaseContactsForCopy], ISNULL(CCN.[IsAssociateOtherSide],'False') AS [CaseContactsIsAssociateOtherSide], ISNULL(CCN.Retired,'N') AS [CaseContactsRetired], CAC.[NAMECODE] AS [CaseAssociatesContactsNameCode], CAC.[KEYID] AS [CaseAssociatesContactsKeyId], CAC.[NAME] AS [CaseAssociatesContactsName], CAC.[PHONE] AS [CaseAssociatesContactsPhone], CAC.[EMAIL] AS [CaseAssociatesContactsEmail1], CAC.[NAME] AS [AssignedContactName], CAC.[PHONE] AS [AssignedContactPhone], AST.[CODE] AS [AssociateTypeCode], AST.[DESCRIPTION] AS [AssociateTypeDescription], CAN.[CODE] AS [CaseAssociateCode], CAN.[TYPE] AS [CaseAssociateType], CAN.[NAME] AS [CaseAssociateName], CAN.[COMPANY] AS [CaseAssociateCompany], CAN.[ADDRESS] AS [CaseAssociateAddress], CAN.[PHONENO] AS [CaseAssociatePhoneNo], CAN.[MOBILENO] AS [CaseAssociateMonileNo], CAN.[EMAIL] AS [CaseAssociateEmail], CAN.[SEARCH] AS [CaseAssociateSearch], CAN.[CONTACTNO] AS [CaseAssociateContactNo], CAN.[SALUTATION], CASE WHEN RTRIM(ISNULL(CAN.[COMPANY],'')) <> '' THEN RTRIM(CAN.[Name]) + ' ('+ RTRIM(CAN.[COMPANY]) +')' ELSE RTRIM(CAN.[Name]) END AS [CaseAssociateNameNCompany] FROM [dbo].[CaseContacts] CCN LEFT OUTER JOIN [dbo].[CaseAssociatesContacts] CAC ON CAC.[KEYID] = CCN.[ASSIGNEDCONTACT] LEFT OUTER JOIN [dbo].[AssociateTypes] AST ON AST.[CODE] = CCN.[CONTYPE] LEFT OUTER JOIN [dbo].[CaseAssociatesNames] CAN ON CAN.[CODE] = CCN.[NAMECODE] WHERE UPPER(CCN.[CASECODE]) = UPPER(@CaseCode) AND LEN(ISNULL(CCN.[NAMECODE],'')) >0 AND CCN.[NAMECODE] <> 'N/A' AND LEN(ISNULL(CAN.[NAME],''))>0 AND CAN.[NAME] <> 'N/A' AND (@RETIRED = 'Y' OR ISNULL(CCN.Retired, 'N') <> 'Y') AND ( @EmailSearch IS NULL OR CAN.[EMAIL] LIKE '%' + @EmailSearch + '%' ) ORDER BY CCN.[CASECODE], CCN.[CONTYPE], CCN.[CONNUM] SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetCaseFolders' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetCaseFolders] END GO CREATE PROCEDURE [dbo].[KEYHM_GetCaseFolders] (@matter VARCHAR(20), @documentnamingmethod VARCHAR(1)) AS BEGIN /******************************************************************************************************* * Returns the default location for any documents stored against a case/matter * * * * Stored Procedure Name : [dbo].[KEYHM_GetCaseFolders] * * Copied from : [dbo].[ky_NETGetCaseFolders] * * * * Modification History : * * 2019-04-11 Vinodhan K Created * *******************************************************************************************************/ DECLARE @continue INT DECLARE @strDefaultFolder VARCHAR(255) DECLARE @error VARCHAR(1000) DECLARE @strFileName VARCHAR(255) DECLARE @strClientCode VARCHAR(20) DECLARE @strMatterNumber VARCHAR(20) DECLARE @storagemethod VARCHAR(1) DECLARE @docFolder VARCHAR(255) SET @continue = 0 SELECT @storagemethod = SCF.[StorageMethod] FROM [dbo].[SystemConfig] SCF SET @storagemethod = ISNULL(@storagemethod, 'C') SELECT @strClientCode = MAT.[ClientCode], @strMatterNumber = MAT.[Matter] FROM [dbo].[matters] MAT WHERE MAT.[Code] = @matter IF (@continue = 0) BEGIN BEGIN TRY SELECT @strDefaultFolder = (SELECT RTRIM(ISNULL(SC.[SCWPFOLDER], '')) FROM [dbo].[SystemConfig] SC) SET @strDefaultFolder = ISNULL(@strDefaultFolder, '') IF (@strDefaultFolder = '') BEGIN SET @continue = 4 SET @error = 'SCWPFOLDER not SET in System Config' END END TRY BEGIN CATCH SET @continue = 5 SET @error = 'Error retrieving SCWPFOLDER: ' + Error_Message() END CATCH END IF (@continue = 0) BEGIN BEGIN TRY SELECT @strFileName = RTRIM(ISNULL(CLT.[DCOUMENTFOLDER], '')) FROM [dbo].[client] CLT WHERE CLT.[CLCODE] = @strClientCode SET @strFileName = RTRIM(ISNULL(@strFileName, '')) IF (@strFileName = '') BEGIN SET @strFileName = @strDefaultFolder + '\' + @strClientCode UPDATE CLT SET CLT.[DCOUMENTFOLDER] = @strFileName FROM [dbo].[client] CLT WHERE CLT.[CLCODE] = @strClientCode END END TRY BEGIN CATCH SET @continue = 1 SET @error = 'Failed to establish Client Document Folder' END CATCH END IF (@storagemethod = 'D') BEGIN SET @docFolder = @strDefaultFolder + '\' + SUBSTRING(CONVERT(VARCHAR(5), 10000 + YEAR(GETDATE())), 2, 4) + SUBSTRING(CONVERT(VARCHAR(3), 100 + MONTH(GETDATE())), 2, 4) END IF (@storagemethod = 'C') BEGIN SET @docFolder = @strFileName + '\' + @strMatterNumber END SET @docFolder = ISNULL(@docFolder, '') SELECT RSL.[Continue], RSL.[Error], @strDefaultFolder AS [SCWPFolder], CASE WHEN UNCS.[Drive] IS NULL THEN @strDefaultFolder ELSE UNCS.[UNC] + SUBSTRING(@strDefaultFolder, 3, LEN(@strDefaultFolder) - 2) END AS [UNCSCWPFolder], RSL.[ClientFolder], CASE WHEN UNC.[Drive] IS NULL THEN RSL.[ClientFolder] ELSE UNC.[UNC] + SUBSTRING(RSL.[ClientFolder], 3, LEN(RSL.[ClientFolder]) - 2) END AS [UNCClientFolder], @docFolder As [DocumentFolder], CASE WHEN UNCD.[Drive] IS NULL THEN @docFolder ELSE UNCD.[UNC] + SUBSTRING(@docFolder, 3, LEN(@docFolder) - 2) END AS [UNCDocumentFolder], @storagemethod AS [StorageMethod], @documentnamingmethod AS [DocumentNamingMethod] FROM (SELECT @continue AS [Continue], RTRIM(ISNULL(@strFileName, '')) AS [ClientFolder], RTRIM(ISNULL(@error, '')) AS [Error]) RSL LEFT OUTER JOIN [dbo].[UNCAlias] UNC ON UNC.[Drive] = CASE WHEN SUBSTRING(RSL.[ClientFolder], 2, 1) = ':' THEN LEFT(RSL.[ClientFolder], 1) ELSE '' END LEFT OUTER JOIN [dbo].[UNCAlias] UNCS ON UNCS.[Drive] = CASE WHEN SUBSTRING(@strDefaultFolder, 2, 1) = ':' THEN LEFT(@strDefaultFolder, 1) ELSE '' END LEFT OUTER JOIN [dbo].[UNCAlias] UNCD ON UNCD.[Drive] = CASE WHEN SUBSTRING(@docFolder, 2, 1) = ':' THEN LEFT(@docFolder, 1) ELSE '' END END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetCaseWorkType' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetCaseWorkType] END GO CREATE PROCEDURE [dbo].[KEYHM_GetCaseWorkType] (@MatterCode VARCHAR(20)) AS /******************************************************************************************************* * Gets the Work Type to default to in the Case Diary for this matter * * - will get CSWKTCODE if this refers to an existing Work Type * * - if that fails it will get the GEN code if it exists and it isn't retired * * - finally, as a last resort, if both the above fail it will get the first available non-retired one * * * * Stored Procedure Name : [dbo].[KEYHM_GetCaseWorkType] * * Copied from : [dbo].[ky_NETSPGetCaseWorkType] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @WKCODE VARCHAR(4) DECLARE @WKDESC CHAR (40) DECLARE @Retired CHAR(1) SELECT @WKCODE = RTRIM(ISNULL([TMP].[WKCODE], '')), @WKDESC = RTRIM(ISNULL([TMP].[WKDESC], '')), @Retired = CASE WHEN ISNULL([TMP].[Retired], 'N') = 'Y' THEN 'Y' ELSE 'N' END FROM [dbo].[CaseMaster] [CSM] INNER JOIN [dbo].[Templates] [TMP] ON [TMP].[WKCODE] = [CSM].[CSWKTCODE] WHERE [CSM].[CSCODE] = @MatterCode IF NOT @WKCODE IS NULL BEGIN SELECT @WKCODE AS [CsWktCode], @WKDESC AS [CsWktDesc], @Retired AS [Retired] RETURN END SELECT @WKCODE = RTRIM(ISNULL([TMP].[WKCODE], '')), @WKDESC = RTRIM(ISNULL([TMP].[WKDESC], '')), @Retired = CASE WHEN ISNULL([TMP].[Retired], 'N') = 'Y' THEN 'Y' ELSE 'N' END FROM [dbo].[Templates] [TMP] WHERE [TMP].[WKCODE] = 'GEN' AND ISNULL([TMP].[Retired], 'N') <> 'Y' IF NOT @WKCODE IS NULL BEGIN SELECT @WKCODE AS [CsWktCode], @WKDESC AS [CsWktDesc], @Retired AS [Retired] RETURN END SELECT TOP 1 @WKCODE = RTRIM(ISNULL([TMP].[WKCODE], '')), @WKDESC = RTRIM(ISNULL([TMP].[WKDESC], '')), @Retired = CASE WHEN ISNULL([TMP].[Retired], 'N') = 'Y' THEN 'Y' ELSE 'N' END FROM [dbo].[Templates] [TMP] WHERE [TMP].[WKCODE] = 'GEN' AND ISNULL([TMP].[Retired], 'N') <> 'Y' ORDER BY [TMP].[WKCODE] IF NOT @WKCODE IS NULL BEGIN SELECT @WKCODE AS [CsWktCode], @WKDESC AS [CsWktDesc], @Retired AS [Retired] RETURN END SELECT CONVERT(VARCHAR(4), '') AS [CsWktCode], CONVERT(CHAR(40), '') AS [CsWktDesc], CONVERT(CHAR(1), 'Y') AS [Retired] END GO IF OBJECT_ID(N'KEYHM_GETChargeRate',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_GETChargeRate] GO CREATE PROCEDURE [dbo].[KEYHM_GETChargeRate] (@HandlerCode VARCHAR(10), @Matter VARCHAR(20), @TaskCode VARCHAR(6) = '') AS /******************************************************************************************************* * Get rate for posting time based on Handler, Matter and Task Code. * * * * Stored Procedure Name : [dbo].[KEYHM_GETChargeRate] * * Copied from : NA * * * * Modification History: * * 2019-04-23 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @TimeorCharge VARCHAR(1) SET @TimeorCharge = ( SELECT TOP 1 TimeOrCharge FROM TimeDayBook WHERE Matter = @Matter or FeeEarn = @HandlerCode ORDER BY 1 DESC ) SELECT CASE WHEN ISNULL(MAT.[ChargeOutRateInd], 'N') = 'Y' THEN CASE WHEN MHCG.[Rate] IS NULL THEN ISNULL(MCR.[Rate], 0) WHEN MHCG.[Rate] IS NOT NULL AND MCR.[Rate] IS NOT NULL THEN ISNULL(MCR.[Rate], 0) ELSE MHCG.[Rate] END WHEN ISNULL(CON.[ChargeOutRateInd], 'N') = 'Y' THEN CASE WHEN CHCG.[Rate] IS NULL THEN ISNULL(CCR.[Rate], 0) WHEN CHCG.[Rate] IS NOT NULL AND CCR.[Rate] IS NOT NULL THEN ISNULL(CCR.[Rate], 0) ELSE CHCG.[Rate] END ELSE ISNULL(FEP.[ChargeFct], 1.00) * (CASE WHEN FER.[RATE] = 0 THEN ISNULL(H.[RATE], 0) ELSE FER.[RATE] END) END AS [Rate], ISNULL(@TimeorCharge,'T') AS [TimeorCharge] FROM [dbo].[Matters] MAT INNER JOIN [dbo].[Contacts] CON ON CON.[Code] = MAT.[ClientCode] OUTER APPLY (SELECT MCOR.[Rate] FROM [dbo].[Handlers] HS INNER JOIN [dbo].[HandlerChargeGroups] HCG ON HS.[ChargeGroup] = HCG.[Code] INNER JOIN [dbo].[MatterChargeOutRates] MCOR ON MCOR.[FeCode] = HCG.[Code] AND MCOR.[MatterCode] = @Matter WHERE HS.[CODE] = @HandlerCode) MHCG OUTER APPLY (SELECT MCOR.[Rate] FROM [dbo].[Handlers] HS INNER JOIN [dbo].[HandlerChargeGroups] HCG ON HS.[ChargeGroup] = HCG.[Code] INNER JOIN [dbo].[ClientChargeOutRates] MCOR ON MCOR.[FeCode] = HCG.[Code] AND MCOR.[ClientCode] = MAT.[ClientCode] WHERE HS.[CODE] = @HandlerCode) CHCG OUTER APPLY (SELECT MCOR.[Rate] FROM [dbo].[MatterChargeOutRates] MCOR WHERE MCOR.[FeCode] = @HandlerCode AND MCOR.[MatterCode] = @Matter) MCR OUTER APPLY (SELECT CCOR.[Rate] FROM [dbo].[ClientChargeOutRates] CCOR WHERE CCOR.[FeCode] = @HandlerCode AND CCOR.[ClientCode] = MAT.[CLIENTCODE]) CCR CROSS APPLY (SELECT CASE ISNULL(MAT.[ChargeLevel], 3) WHEN 1 THEN ISNULL(HDL.[RATE1], 0) WHEN 2 THEN ISNULL(HDL.[RATE2], 0) WHEN 3 THEN ISNULL(HDL.[RATE3], 0) WHEN 4 THEN ISNULL(HDL.[RATE4], 0) WHEN 5 THEN ISNULL(HDL.[RATE5], 0) ELSE ISNULL(HDL.[RATE], 0) END AS [RATE] FROM [dbo].[Handlers] HDL WHERE HDL.[CODE] = @HandlerCode) FER OUTER APPLY (SELECT CASE ISNULL(TAC.[ChargeLevel], 'C') WHEN 'A' THEN 0.33 WHEN 'B' THEN 0.67 WHEN 'C' THEN 1.00 WHEN 'D' THEN 1.33 WHEN 'E' THEN 1.67 ELSE 1.00 END AS [ChargeFct] FROM [dbo].[TasksCodes] TAC WHERE TAC.[CODE] = @TaskCode) FEP LEFT OUTER JOIN [dbo].[Handlers] H ON H.[CODE] = @HandlerCode WHERE MAT.[Code] = @Matter END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetDocumentsIM' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetDocumentsIM] END GO CREATE PROCEDURE [dbo].[KEYHM_GetDocumentsIM] (@matter VARCHAR(20), @ActionID INT, @DocFolderID INT, @IMDocs VARCHAR(MAX), @PageNo INT = NULL, @PageSize INT = NULL, @SearchText VARCHAR(4000) = '', @FileType VARCHAR(4000) = '', @SortColumn VARCHAR(50) = '', @SortDirection VARCHAR(10) = '', @LoggedInHandler VARCHAR(10) = NULL, @ColumnNames VARCHAR(50) = '', @FilterValues VARCHAR(4000) = '' ) AS /************************************************************************************************************************ * * * [dbo].[KEYHM_GetDocumentsIM] * * * * Get list of Documents for the Document Manager * * * * Compatibility information - PLEASE update older versions if necessary to ensure the compatible software * * remains fully functional * * ***************************************************************************************************** * * * * * * * Supersedes: - * * * * Original: [ky_NETSPGetDocumentsIM] * * * * First compatible version: 5.7.2.1 * * * * Last compatible software version: - * * * * Superseded by: - * * * * * * * ***************************************************************************************************** * * * * Modification History * * 2019-04-23 Vinodhan K Created * * 2019-05-24 Pino Carafa Performance improvements * * 2019-05-24 Vinodhan Search field have changed as document instead of filepath * * 2019-05-24 Arun Performance improvements, * * 2019-09-09 Vinodhan K Search now can be done on Document class description field * * 2019-09-18 Vinodhan K Total no. of records now will be displayed based on searched text (KEYSAAS - 1035) * * 2020-02-13 Prabhu.V Modified the SP to Implement filter works with dynamic values * * 2020-04-23 Prabhu.V Performance Improved * * 2020-04-29 Prabhu.V Fixed FileType Filter Not working after Improved the SP * * 2020-05-04 Arun V Document classes datatype size incresed. KEYHM-582 * * 2020-05-04 Prabhu V Document total reocrd issue fixed * * 2020-12-04 Kowshik.R Mobile documents page special character search and.docx file type issue is fixed * * 2021-02-26 Kowshik.R Mobile documents issue is fixed * * 2021-08-05 Arun Vasu Last Access date is added in document date column, if last access date is null then * * it will return the document date * * 2021-08-09 Arun Vasu Added LastAccessedDate new column in output * * * ************************************************************************************************************************/ BEGIN DECLARE @res TABLE ([id] INT identity(1, 1), [ActionId] INT, [TrackReference] INT, [IMDocID] VARCHAR(500), [IMClass] VARCHAR(20), [DocClass] VARCHAR(10), [Document] VARCHAR(2000), [DiaryDate] DATETIME, [DocumentDate] DATETIME, [TYPE] VARCHAR(20), [Attachments] CHAR(1), [EMAIL] VARCHAR(1), [EMAILFROM] VARCHAR(200), [EMAILSENT] DATETIME, [EMAILTO] VARCHAR(1000), [CurrentVersion] INT, [IsInDocFolder] BIT, [IsShared] BIT, [DocumentClassDescription] VARCHAR(40), [UniqueId] INT, [FilePath] VARCHAR(500), [Subject] VARCHAR(2000), [ShortText] VARCHAR(120), [NAME] VARCHAR(500), [ProcessType] VARCHAR(50), [ACTIONTYPE] VARCHAR(50), [ActionTypeDescription] VARCHAR(500), [DOCUMENTSOURCE] VARCHAR(500), [TotalRecord] INT, [LastAccessedDate] DATETIME ) DECLARE @TOTALRECORDS INT =0; DECLARE @classes TABLE ([KeyhouseClass] INT, [IMClass] INT, [ClassCode] VARCHAR(20), [ClassDescription] VARCHAR(100)) DECLARE @IMDocTable TABLE ([IMDocID] VARCHAR(500) PRIMARY KEY, [Description] VARCHAR(2000), [IMClass] VARCHAR(20), [IMType] VARCHAR(20), [EmailFrom] VARCHAR(200), [EmailTo] VARCHAR(1000), [EmailSent] DATETIME, [DocumentDate] DATETIME) DECLARE @IMDocExpanded TABLE ([id] INT IDENTITY(1, 1) PRIMARY KEY, [ActionID] INT, [TrackReference] INT, [IMDocID] VARCHAR(500), [IMClass] VARCHAR(20), [DocClass] VARCHAR(10), [Document] VARCHAR(2000), [DiaryDate] DATETIME, [DocumentDate] DATETIME, [EmailSent] DATETIME, [TYPE] VARCHAR(20), [Attachments] CHAR(1), [EMAIL] CHAR(1), [EmailFrom] VARCHAR(200), [EmailTo] VARCHAR(1000), [CurrentVersion] INT) DECLARE @FileTypeList TABLE ([FileType] VARCHAR(20) PRIMARY KEY) INSERT INTO @FileTypeList SELECT RTRIM(LTRIM([Item])) FROM KEYHM_FN_SplitString(@FileType, ',') DECLARE @idoc INT /* DECLARE @StartRow INT = NULL; DECLARE @EndRow INT = NULL; IF(((ISNULL(@PageNo, 0)) != 0 AND (ISNULL(@PageSize, 0)) != 0) AND (@PageNo > -1)) BEGIN SET @PageNo = ISNULL(@PageNo, 0) - 1; -- 0 BASED INDEX SET @StartRow = ((@PageNo) * @PageSize) + 1; SET @EndRow = (@StartRow + @PageSize) - 1; END */ IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'RowNumber' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END DECLARE @uniqueid AS INT=0; SELECT @uniqueid = [uniqueid] FROM dbo.[matters] WHERE [Code] = @matter DECLARE @CustomFilter TABLE ([DOCCLASS] VARCHAR(2000), [TYPE] VARCHAR(2000)) DECLARE @DOCCLASSFilterCount INT = 0; DECLARE @TypeFilterCount INT = 0; IF @ColumnNames <> '' BEGIN -- Dynamic Filter By Custome Filter Settings Start SELECT columnName,rownumber INTO #columntbl FROM (SELECT LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)'))) AS columnName, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) as rownumber FROM ( SELECT CAST('' + REPLACE(@ColumnNames,',','') + '' AS XML) AS x )t CROSS APPLY x.nodes('/XMLRoot/RowData')m(n)) ColumnTbl -- count(*) over(), SELECT FilterValue,rownumber INTO #FILTERVALUETBL FROM (SELECT LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)'))) AS FilterValue, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) as rownumber FROM ( SELECT CAST('' + REPLACE(@FilterValues,'|','') + '' AS XML) AS x )t CROSS APPLY x.nodes('/XMLRoot/RowData')m(n)) FILTERVALUETBL DECLARE @count int DECLARE @lptcnt int=1 DECLARE @ColumnName varchar(50) DECLARE @FilterValue varchar(2000) SELECT @count = count(1) FROM #columntbl; WHILE @lptcnt <= @count BEGIN SET @FilterValue ='' SELECT @ColumnName = columnName FROM #columntbl WHERE rownumber = @lptcnt SELECT @FilterValue = FilterValue FROM #FILTERVALUETBL WHERE rownumber = @lptcnt IF(@ColumnName = 'DOCCLASS') insert into @CustomFilter (DOCCLASS,TYPE) values (@FilterValue,null) ELSE insert into @CustomFilter (DOCCLASS,TYPE) values (null,@FilterValue) SET @lptcnt = @lptcnt + 1; END SET @DOCCLASSFilterCount = (SELECT COUNT(1) FROM @CustomFilter WHERE DOCCLASS IS NOT NULL AND DOCCLASS <>'') SET @TypeFilterCount = (SELECT COUNT(1) FROM @CustomFilter WHERE TYPE IS NOT NULL AND TYPE <>'') END IF (ISNULL(@DocFolderID, 0) = 0) AND (ISNULL(@ActionID, 0) = 0) BEGIN SET @IMDocs = ISNULL(@IMDocs, '' + CHAR(13) + CHAR(10) + '') IF (ISNULL(PATINDEX('%' + CHAR(13) + CHAR(10) + @IMDocs END BEGIN TRY EXEC sp_xml_preparedocument @idoc OUTPUT, @IMDocs END TRY BEGIN CATCH EXEC sp_xml_preparedocument @idoc OUTPUT, '' END CATCH INSERT INTO @IMDocTable ([IMDocID], [Description], [IMClass], [IMType], [EmailFrom], [EmailTo], [EmailSent], [DocumentDate]) SELECT [DAL].[IMDocID], [DAL].[Description], [DAL].[IMClass], [DAL].[IMType], [DAL].[EmailFrom], [DAL].[EmailTo], [DAL].[EmailSent], [DAL].[DocumentDate] FROM OPENXML(@idoc, 'IMDocs/Doc', 2) WITH([IMDocID] VARCHAR(500) '@DocId', [Description] VARCHAR(2000) '@Description', [IMClass] VARCHAR(20) '@ClassId', [IMType] VARCHAR(20) '@TypeId', [EmailFrom] VARCHAR(200) '@EmailFrom', [EmailTo] VARCHAR(1000) '@EmailTo', [EmailSent] DATETIME '@EmailSent', [DocumentDate] DATETIME '@DocumentDate') [DAL] EXEC sp_xml_removedocument @idoc INSERT INTO @res ([ActionId], [TrackReference], [IMDocID], [IMClass], [DocClass], [Document], [DiaryDate], [DocumentDate], [EmailSent], [TYPE], [Attachments], [EMAIL], [EmailFrom], [EmailTo], [CurrentVersion], [IsInDocFolder], [IsShared]) SELECT convert(INT, NULL) AS [ActionID], convert(INT, NULL) AS [TrackReference], [DAL].[IMDocID] AS [IMDocID], [DAL].[IMClass] AS [IMClass], convert(VARCHAR(10), NULL) AS [DocClass], [DAL].[Description] AS [Document], convert(DATETIME, ISNULL([DAL].[DocumentDate], [DAL].[EmailSent])) AS [DiaryDate], convert(DATETIME, ISNULL([DAL].[DocumentDate], [DAL].[EmailSent])) AS [DocumentDate], convert(DATETIME, [DAL].[EmailSent]) AS [EMAILSENT], CASE convert(VARCHAR(20), [DAL].[IMTYPE]) WHEN 'WORD' THEN 'DOC' WHEN 'WORDX' THEN 'DOC' WHEN 'WPF' THEN 'DOC' WHEN 'ANSI' THEN 'DOC' WHEN 'ACROBAT' THEN 'PDF' WHEN 'EXCEL' THEN 'XLS' WHEN 'EXCELX' THEN 'XLS' WHEN 'MIME' THEN CASE WHEN [DAL].[IMClass] = 'E-Mail' THEN 'MSG' ELSE 'MIME' END ELSE [DAL].[IMTYPE] END AS [TYPE], CONVERT(CHAR(1), 'N') AS [Attachments], CONVERT(CHAR(1), CASE WHEN ISNULL([DAL].[IMClass], '') = 'E-Mail' THEN 'Y' ELSE 'N' END) As [EMAIL], CASE WHEN ISNULL([DAL].[IMClass], '') = 'E-Mail' THEN [DAL].[EMAILFROM] ELSE CONVERT(VARCHAR(200), NULL) END AS [EmailFrom], CASE WHEN ISNULL([DAL].[IMClass], '') = 'E-Mail' THEN [DAL].[EMAILTO] ELSE CONVERT(VARCHAR(1000), NULL) END AS [EmailTo], CONVERT(INT, 1) AS [CurrentVersion], 0 AS [IsInDocFolder], 0 AS [IsShared] FROM @IMDocTable [DAL] LEFT OUTER JOIN [dbo].[DAIMXref] [DX] ON [DX].[IMDocID] = [DAL].[IMDocID] WHERE [DX].[TrackReference] IS NULL AND ( @SearchText = '' OR ([DAL].[Description] LIKE '%' + @SearchText + '%') OR (CONVERT(DATETIME, ISNULL([DAL].[DocumentDate], [DAL].[EmailSent])) LIKE '%' + @SearchText + '%') ) AND ( ISNULL(@FileType, '') = '' OR (CASE CONVERT(VARCHAR(20),[DAL].[IMTYPE]) WHEN 'WORD' THEN 'DOC' WHEN 'WORDX' THEN 'DOC' WHEN 'WPF' THEN 'DOC' WHEN 'ANSI' THEN 'DOC' WHEN 'ACROBAT' THEN 'PDF' WHEN 'EXCEL' THEN 'XLS' WHEN 'EXCELX' THEN 'XLS' WHEN 'MIME' THEN CASE WHEN [DAL].[IMClass] = 'E-Mail' THEN 'MSG' ELSE 'MIME' END ELSE [DAL].[IMTYPE] END IN (select FileType from @FileTypeList )) ) SELECT @TOTALRECORDS = Count(1) FROM dbo.[diary] [DIA] INNER JOIN dbo.[DiaryAttachments] [DA] ON [DA].[DiaryID] = [DIA].[ACTIONID] AND [DA].[CASECODE] = [DIA].[CASECODE] WHERE [DIA].[CaseCode] = @matter AND ( CASE WHEN @SearchText = '' THEN 1 WHEN ([DA].FILEPATH LIKE '%' + @SearchText + '%') OR ([DA].[DATEENTERED] LIKE '%' + @SearchText + '%') OR ([DA].[TYPE] LIKE '%' + @SearchText + '%') OR ([DA].[DocClass] LIKE '%' + @SearchText + '%') THEN 1 ELSE 0 END = 1 ) AND ( ISNULL(@FileType, '') = '' OR ([DA].[TYPE] IN (select FileType from @FileTypeList )) ) SELECT @TOTALRECORDS = Count(1)+ @TOTALRECORDS FROM @res SELECT [DIA].[CASECODE],[DIA].[ACTIONID],[DIA].[DATE],[DIA].[TxmDate], [DIA].[EMAIL],[DIA].[ATTACHMENTS],[DIA].[EMAILADDRESS],[DIA].[ADDRESSTO],[DIA].[SUBJECT],[DIA].[DisplayText], [DIA].[PROCESSTYPE],[DIA].[ACTIONTYPE], [DA].[DIARYID],[DA].[TrackReference],[DA].[DocClass],[DA].[DATEENTERED],[DAS].[TYPE], [DA].[FILEPATH],[DA].[NAME],[DA].[SOURCE], convert(VARCHAR(500), ISNULL([DX].[IMDocID], '')) AS [IMDocID], convert(VARCHAR(20), ISNULL([DL].[IMClass], '')) AS [IMClass], RTRIM(convert(VARCHAR(2000), ISNULL([DL].[Description], ISNULL([DA].[Document], '')))) AS [Document], CASE WHEN [DIA].[ACTIONTYPE] = 'A' THEN 'Action' WHEN [DIA].[ACTIONTYPE] = 'N' THEN 'Note' WHEN [DIA].[ACTIONTYPE] = 'P' THEN 'Appointment' WHEN [DIA].[ACTIONTYPE] = 'R' THEN 'Reminder' WHEN [DIA].[ACTIONTYPE] = 'E' THEN 'Email' WHEN [DIA].[ACTIONTYPE] = 'T' THEN 'Phone Message' WHEN [DIA].[ACTIONTYPE] = 'D' THEN 'Dictation' WHEN [DIA].[ACTIONTYPE] = 'U' THEN 'Undertaking' WHEN [DIA].[ACTIONTYPE] = 'S' THEN 'Statute Date' WHEN [DIA].[ACTIONTYPE] = 'C' THEN 'Critical Date' WHEN [DIA].[ACTIONTYPE] = 'O' THEN 'Court Date' WHEN [DIA].[ACTIONTYPE] = 'M' THEN 'Scanned Post/Mail' WHEN RTRIM(ISNULL([DIA].[ACTIONTYPE], '')) = '' THEN CASE WHEN convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END) = 'Y' THEN 'Email' WHEN convert(VARCHAR(500), ISNULL([DX].[IMDocID], '')) <> '' THEN 'IManage document' ELSE 'Unknown' END ELSE 'Action Type: ' + [DIA].[ACTIONTYPE] END AS [ActionTypeDescription], CASE WHEN convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) <> '' THEN RTRIM(ISNULL(DCL.[CLASSDESCRIPTION], '')) ELSE CASE WHEN [DCL].[ClassCode] = 'ATTNOTES' THEN 'Attendance Notes' WHEN [DCL].[ClassCode] = 'BILL' THEN 'Bill' WHEN [DCL].[ClassCode] = 'FAX' THEN 'Fax' WHEN [DCL].[ClassCode] = 'LEGAL' THEN 'Legal' WHEN [DCL].[ClassCode] = 'SCAN' THEN 'Scan' WHEN [DCL].[ClassCode] = 'COMPARE' THEN 'Compare Document' WHEN [DCL].[ClassCode] = 'DISCUSSION' THEN 'Discussion' WHEN [DCL].[ClassCode] = 'DOC' THEN 'Document' WHEN [DCL].[ClassCode] = 'E-MAIL' THEN 'E-Mail' WHEN [DCL].[ClassCode] = 'EVENT' THEN 'Event' WHEN [DCL].[ClassCode] = 'LETTER' THEN 'Letter' WHEN [DCL].[ClassCode] = 'MEMO' THEN 'Memo' WHEN [DCL].[ClassCode] = 'PAGE_ICON' THEN 'Page Icon' WHEN [DCL].[ClassCode] = 'TASK' THEN 'Task' WHEN [DCL].[ClassCode] = 'TEXT' THEN 'Text File' WHEN [DCL].[ClassCode] = 'WEBDOC' THEN 'InfoLink Web Page' ELSE ISNULL([DCL].[CLASSCODE], '') END END AS [DocumentClassDescription] --,Count(1) Over() as TotalRowsCount INTO #DiaryTables FROM dbo.[diary] [DIA] INNER JOIN dbo.[DiaryAttachments] [DA] ON [DA].[DiaryID] = [DIA].[ACTIONID] and [DIA].CASECODE = [DA].CASECODE INNER JOIN dbo.[DiaryAttachmentSelector] [DAS] ON [DAS].[TrackReference] = [DA].[TrackReference] and [DAS].CASECODE = [DA].CASECODE and [DAS].[TrackReference]=[DA].[TrackReference] LEFT OUTER JOIN [dbo].[DAIMXRef] [DX] LEFT OUTER JOIN @IMDocTable [DL] ON [DL].[IMDocID] = [DX].[IMDocID] ON [DX].[TrackReference] = [DA].[TrackReference] LEFT OUTER JOIN [dbo].[DocumentClasses] DCL ON convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) <> '' AND DCL.[CLASSCODE] = CASE WHEN convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) = '' THEN convert(VARCHAR(20), ISNULL([DL].[IMClass], '')) ELSE convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) END WHERE [DIA].[CaseCode] = @matter AND ( CASE WHEN @SearchText = '' THEN 1 WHEN ([DA].FILEPATH LIKE '%' + @SearchText + '%') OR ([DA].[DATEENTERED] LIKE '%' + @SearchText + '%') OR ([DA].[TYPE] LIKE '%' + @SearchText + '%') OR ([DA].[DocClass] LIKE '%' + @SearchText + '%') OR ([DA].[DOCUMENT] LIKE '%' + @SearchText + '%') THEN 1 ELSE 0 END = 1 ) AND ( ISNULL(@FileType, '') = '' OR ([DA].[TYPE] IN (select FileType from @FileTypeList )) ) ORDER BY CASE WHEN @SortDirection = 'ASC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'Type' THEN convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DA].[TYPE], '')))) END END, CASE WHEN @SortDirection = 'DESC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'Type' THEN convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DA].[TYPE], '')))) END END DESC, CASE WHEN @SortDirection = 'ASC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'Document' THEN RTRIM(convert(VARCHAR(2000), ISNULL([DL].[Description], ISNULL([DA].[Document], '')))) END END, CASE WHEN @SortDirection = 'DESC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'Document' THEN RTRIM(convert(VARCHAR(2000), ISNULL([DL].[Description], ISNULL([DA].[Document], '')))) END END DESC, CASE WHEN @SortDirection = 'ASC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'DocumentClassDescription' THEN CASE WHEN convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) <> '' THEN RTRIM(ISNULL(DCL.[CLASSDESCRIPTION], '')) ELSE CASE WHEN [DCL].[ClassCode] = 'ATTNOTES' THEN 'Attendance Notes' WHEN [DCL].[ClassCode] = 'BILL' THEN 'Bill' WHEN [DCL].[ClassCode] = 'FAX' THEN 'Fax' WHEN [DCL].[ClassCode] = 'LEGAL' THEN 'Legal' WHEN [DCL].[ClassCode] = 'SCAN' THEN 'Scan' WHEN [DCL].[ClassCode] = 'COMPARE' THEN 'Compare Document' WHEN [DCL].[ClassCode] = 'DISCUSSION' THEN 'Discussion' WHEN [DCL].[ClassCode] = 'DOC' THEN 'Document' WHEN [DCL].[ClassCode] = 'E-MAIL' THEN 'E-Mail' WHEN [DCL].[ClassCode] = 'EVENT' THEN 'Event' WHEN [DCL].[ClassCode] = 'LETTER' THEN 'Letter' WHEN [DCL].[ClassCode] = 'MEMO' THEN 'Memo' WHEN [DCL].[ClassCode] = 'PAGE_ICON' THEN 'Page Icon' WHEN [DCL].[ClassCode] = 'TASK' THEN 'Task' WHEN [DCL].[ClassCode] = 'TEXT' THEN 'Text File' WHEN [DCL].[ClassCode] = 'WEBDOC' THEN 'InfoLink Web Page' ELSE ISNULL([DCL].[CLASSCODE], '') END END END END, CASE WHEN @SortDirection = 'DESC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'DocumentClassDescription' THEN CASE WHEN convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) <> '' THEN RTRIM(ISNULL(DCL.[CLASSDESCRIPTION], '')) ELSE CASE WHEN [DCL].[ClassCode] = 'ATTNOTES' THEN 'Attendance Notes' WHEN [DCL].[ClassCode] = 'BILL' THEN 'Bill' WHEN [DCL].[ClassCode] = 'FAX' THEN 'Fax' WHEN [DCL].[ClassCode] = 'LEGAL' THEN 'Legal' WHEN [DCL].[ClassCode] = 'SCAN' THEN 'Scan' WHEN [DCL].[ClassCode] = 'COMPARE' THEN 'Compare Document' WHEN [DCL].[ClassCode] = 'DISCUSSION' THEN 'Discussion' WHEN [DCL].[ClassCode] = 'DOC' THEN 'Document' WHEN [DCL].[ClassCode] = 'E-MAIL' THEN 'E-Mail' WHEN [DCL].[ClassCode] = 'EVENT' THEN 'Event' WHEN [DCL].[ClassCode] = 'LETTER' THEN 'Letter' WHEN [DCL].[ClassCode] = 'MEMO' THEN 'Memo' WHEN [DCL].[ClassCode] = 'PAGE_ICON' THEN 'Page Icon' WHEN [DCL].[ClassCode] = 'TASK' THEN 'Task' WHEN [DCL].[ClassCode] = 'TEXT' THEN 'Text File' WHEN [DCL].[ClassCode] = 'WEBDOC' THEN 'InfoLink Web Page' ELSE ISNULL([DCL].[CLASSCODE], '') END END END END DESC, CASE WHEN @SortDirection = 'ASC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'DocumentDate' THEN convert(DATETIME, [DA].[DATEENTERED]) END END, CASE WHEN @SortDirection = 'DESC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'DocumentDate' THEN convert(DATETIME, [DA].[DATEENTERED]) END END DESC, [DA].[TrackReference] DESC OFFSET @PageSize * (@PageNo - 1) ROWS FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE); --SELECT * from #DiaryTables INSERT INTO @res ([ActionId], [TrackReference], [IMDocID], [IMClass], [DocClass], [Document], [DiaryDate], [DocumentDate], [EmailSent], [TYPE], [Attachments], [EMAIL], [EmailFrom], [EmailTo], [CurrentVersion], [IsInDocFolder], [IsShared], [DocumentClassDescription], [UniqueId], [FilePath], [Subject], [ShortText], [NAME], [ProcessType], [ACTIONTYPE], [ActionTypeDescription], [DOCUMENTSOURCE], [LastAccessedDate] ) SELECT convert(INT, [DIA].[DIARYID]) AS [ActionID], convert(INT, [DIA].[TrackReference]) AS [TrackReference], [DIA].[IMDocID], [DIA].[IMClass], convert(VARCHAR(10), ISNULL([DIA].[DocClass], '')) AS [DocClass], [DIA].[Document], convert(DATETIME, [DIA].[DATE]) As [DiaryDate], convert(DATETIME, [DIA].[DATEENTERED]) AS [DocumentDate], convert(DATETIME, ISNULL([DIA].[TxmDate], [DIA].[Date])) As [EMAILSENT], convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DIA].[TYPE], '')))) AS [TYPE], -- CASE WHEN [DIA].[ATTACHMENTS] = 'Y' THEN 'Y' ELSE 'N' END AS [Attachments], (CASE WHEN ISNULL( convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END), '') = 'Y' AND convert(INT, [DIA].[TrackReference]) = [OMS].[TrackReference] THEN (CASE WHEN [DIA].[ATTACHMENTS] = 'Y' THEN 'Y' ELSE 'N' END ) WHEN ISNULL(convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DIA].[TYPE], '')))), '') = 'MSG' AND convert(INT, [DIA].[TrackReference]) = [OMS].[TrackReference] THEN (CASE WHEN [DIA].[ATTACHMENTS] = 'Y' THEN 'Y' ELSE 'N' END) ELSE 'N' END) AS [Attachments], -- convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END) AS [EMAIL], (CASE WHEN convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END) = 'Y' AND convert(INT, [DIA].[TrackReference]) = [OMS].[TrackReference] THEN 'Y' WHEN ISNULL(convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DIA].[TYPE], '')))), '') = 'MSG' AND convert(INT, [DIA].[TrackReference]) = [OMS].[TrackReference] THEN 'Y' ELSE 'N' END) AS [EMAIL], -- convert(VARCHAR(200), RTRIM(ISNULL([DIA].[EMAILADDRESS], ''))) AS [EMAILFROM], RTRIM(ISNULL(CONVERT(VARCHAR(200), SUBSTRING(convert(VARCHAR(200), RTRIM(ISNULL([DIA].[EMAILADDRESS], ''))), 1, 200)), '')) AS [EMAILFROM], --RTRIM(ISNULL(CONVERT(VARCHAR(1000), [DIA].[ADDRESSTO]), '')) AS [EMAILTO], RTRIM(ISNULL(CONVERT(VARCHAR(1000), SUBSTRING(RTRIM(ISNULL(CONVERT(VARCHAR(1000), [DIA].[ADDRESSTO]), '')), 1, 1000)), '')) AS [EMAILTO], [DV].[CurrentVersion], [IND].[InDocFolder], [SHD].[IsShared], [DIA].[DocumentClassDescription], @uniqueid AS uniqueid, CASE WHEN [UNC].[UNC] IS NULL THEN RTRIM(ISNULL([DIA].[FILEPATH], '')) ELSE [UNC].[UNC] + SUBSTRING(RTRIM(ISNULL([DIA].[FILEPATH], '')), 3, LEN(RTRIM(ISNULL([DIA].[FILEPATH], ''))) - 2) END AS [FILEPATH], -- [RES].[EMAILSENT], RTRIM(ISNULL(CONVERT(VARCHAR(1000), SUBSTRING(RTRIM(ISNULL(CONVERT(VARCHAR(2000), [DIA].[SUBJECT]),'')), 1, 1000)), '')) AS [SUBJECT], RTRIM(ISNULL(CONVERT(VARCHAR(120), SUBSTRING(RTRIM(ISNULL(CONVERT(VARCHAR(120), [DIA].[DisplayText]),'')), 1, 120)), '')) AS [ShortText], RTRIM(ISNULL([DIA].[NAME], '')) AS [NAME], RTRIM(ISNULL([DIA].[PROCESSTYPE], '')) AS [PROCESSTYPE], RTRIM(ISNULL([DIA].[ACTIONTYPE], '')) AS [ACTIONTYPE], [DIA].[ActionTypeDescription], RTRIM(ISNULL([DIA].[SOURCE], CASE WHEN [DIA].[ACTIONID] IS NULL THEN 'IManage' ELSE '' END)) AS [DOCUMENTSOURCE] --,TotalRowsCount ,isnull([DLA].AccessDate, [DIA].DATEENTERED) as LastAccessedDate FROM #DiaryTables [DIA] -- INNER JOIN dbo.[matters] [MAT] ON [MAT].[CODE] = [DIA].[CASECODE] CROSS APPLY (SELECT CASE WHEN COUNT(1) = 0 THEN CONVERT(BIT, 0) ELSE CONVERT(BIT, 1) END AS [InDocFolder] FROM [dbo].[DocFolderDocuments] [DFD] WHERE [DFD].[TrackReference] = [DIA].[TrackReference]) [IND] CROSS APPLY (SELECT CASE WHEN COUNT(1) = 0 THEN CONVERT(BIT, 0) ELSE CONVERT(BIT, 1) END AS [IsShared] FROM [dbo].[FileSharingDocuments] [FSD] INNER JOIN [dbo].[FileSharingMapping] [FSM] INNER JOIN [dbo].[FileSharingDocFolders] [FSDF] ON [FSDF].[DocFolderID] = [FSM].[FileSharingDocFoldersID] AND [FSDF].[Shared] = 1 ON [FSM].[id] = [FSD].[FileSharingMappingID] WHERE [FSD].[TrackReference] = [DIA].[TrackReference]) [SHD] CROSS APPLY (SELECT ISNULL(MAX([DAV].[Version]), 0) + 1 AS [CurrentVersion] FROM [dbo].[DiaryAttachmentVersioning] [DAV] WHERE TRACKREFERENCE = [DIA].[TRACKREFERENCE]) [DV] LEFT OUTER JOIN [dbo].[UNCAlias] [UNC] ON SUBSTRING([DIA].[FilePath], 2, 1) = ':' AND [UNC].[Drive] = SUBSTRING([DIA].[FilePath], 1, 1) OUTER APPLY ( SELECT TOP 1 [MST].[TrackReference] AS [TrackReference], [MST].[Type] AS [Type] FROM #DiaryTables [MST] WHERE [MST].[diaryid] = [DIA].[ActionID] ORDER BY CASE WHEN [MST].Type = 'MSG' THEN 0 ELSE 1 END, [MST].[TrackReference]) [OMS] CROSS APPLY (SELECT ISNULL(MAX([DAA].[AccessDate]), [DIA].[DATEENTERED]) AS [AccessDate] FROM [dbo].[DiaryAttachmentAccess] [DAA] WHERE [DAA].[TrackReference] = [DIA].[TRACKREFERENCE] AND [DAA].[Comment] = 'Updated') DLA -- OFFSET @PageSize * (@PageNo - 1) ROWS -- FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE); END ELSE IF ISNULL(@DocFolderID, 0) <> 0 BEGIN SELECT @TOTALRECORDS = Count(1) FROM [dbo].[DocFolderDocuments] [DDC] INNER JOIN dbo.[diary] [DIA] INNER JOIN dbo.[DiaryAttachments] [DA] ON [DA].[DiaryID] = [DIA].[ACTIONID] AND [DA].[CASECODE] = [DIA].[CASECODE] ON [DA].[TrackReference] = [DDC].[TrackReference] WHERE [DDC].[DocFolderID] = @DocFolderID AND ( CASE WHEN @SearchText = '' THEN 1 WHEN ([DA].FILEPATH LIKE '%' + @SearchText + '%') OR ([DA].[DATEENTERED] LIKE '%' + @SearchText + '%') OR ([DA].[TYPE] LIKE '%' + @SearchText + '%') OR ([DA].[DocClass] LIKE '%' + @SearchText + '%') THEN 1 ELSE 0 END =1 ) AND ( ISNULL(@FileType, '') = '' OR ([DA].[TYPE] IN (select FileType from @FileTypeList )) ) SELECT [DIA].[CASECODE],[DIA].[ACTIONID],[DIA].[DATE],[DIA].[TxmDate], [DIA].[EMAIL],[DIA].[ATTACHMENTS],[DIA].[EMAILADDRESS],[DIA].[ADDRESSTO],[DIA].[SUBJECT],[DIA].[DisplayText], [DIA].[PROCESSTYPE],[DIA].[ACTIONTYPE], [DA].[DIARYID],[DA].[TrackReference],[DA].[DocClass],[DA].[DATEENTERED],[DAS].[TYPE], [DA].[FILEPATH],[DA].[NAME],[DA].[SOURCE], convert(VARCHAR(500), ISNULL([DX].[IMDocID], '')) AS [IMDocID], convert(VARCHAR(20), ISNULL([DL].[IMClass], '')) AS [IMClass], RTRIM(convert(VARCHAR(2000), ISNULL([DL].[Description], ISNULL([DA].[Document], '')))) AS [Document], CASE WHEN [DIA].[ACTIONTYPE] = 'A' THEN 'Action' WHEN [DIA].[ACTIONTYPE] = 'N' THEN 'Note' WHEN [DIA].[ACTIONTYPE] = 'P' THEN 'Appointment' WHEN [DIA].[ACTIONTYPE] = 'R' THEN 'Reminder' WHEN [DIA].[ACTIONTYPE] = 'E' THEN 'Email' WHEN [DIA].[ACTIONTYPE] = 'T' THEN 'Phone Message' WHEN [DIA].[ACTIONTYPE] = 'D' THEN 'Dictation' WHEN [DIA].[ACTIONTYPE] = 'U' THEN 'Undertaking' WHEN [DIA].[ACTIONTYPE] = 'S' THEN 'Statute Date' WHEN [DIA].[ACTIONTYPE] = 'C' THEN 'Critical Date' WHEN [DIA].[ACTIONTYPE] = 'O' THEN 'Court Date' WHEN [DIA].[ACTIONTYPE] = 'M' THEN 'Scanned Post/Mail' WHEN RTRIM(ISNULL([DIA].[ACTIONTYPE], '')) = '' THEN CASE WHEN convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END) = 'Y' THEN 'Email' WHEN convert(VARCHAR(500), ISNULL([DX].[IMDocID], '')) <> '' THEN 'IManage document' ELSE 'Unknown' END ELSE 'Action Type: ' + [DIA].[ACTIONTYPE] END AS [ActionTypeDescription], CASE WHEN convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) <> '' THEN RTRIM(ISNULL(DCL.[CLASSDESCRIPTION], '')) ELSE CASE WHEN [DCL].[ClassCode] = 'ATTNOTES' THEN 'Attendance Notes' WHEN [DCL].[ClassCode] = 'BILL' THEN 'Bill' WHEN [DCL].[ClassCode] = 'FAX' THEN 'Fax' WHEN [DCL].[ClassCode] = 'LEGAL' THEN 'Legal' WHEN [DCL].[ClassCode] = 'SCAN' THEN 'Scan' WHEN [DCL].[ClassCode] = 'COMPARE' THEN 'Compare Document' WHEN [DCL].[ClassCode] = 'DISCUSSION' THEN 'Discussion' WHEN [DCL].[ClassCode] = 'DOC' THEN 'Document' WHEN [DCL].[ClassCode] = 'E-MAIL' THEN 'E-Mail' WHEN [DCL].[ClassCode] = 'EVENT' THEN 'Event' WHEN [DCL].[ClassCode] = 'LETTER' THEN 'Letter' WHEN [DCL].[ClassCode] = 'MEMO' THEN 'Memo' WHEN [DCL].[ClassCode] = 'PAGE_ICON' THEN 'Page Icon' WHEN [DCL].[ClassCode] = 'TASK' THEN 'Task' WHEN [DCL].[ClassCode] = 'TEXT' THEN 'Text File' WHEN [DCL].[ClassCode] = 'WEBDOC' THEN 'InfoLink Web Page' ELSE ISNULL([DCL].[CLASSCODE], '') END END AS [DocumentClassDescription] -- , Count(1) Over() as TotalRowsCount INTO #DiaryTableList FROM [dbo].[DocFolderDocuments] [DDC] INNER JOIN dbo.[diary] [DIA] INNER JOIN dbo.[DiaryAttachments] [DA] ON [DA].[DiaryID] = [DIA].[ACTIONID] INNER JOIN dbo.DiaryAttachmentSelector [DAS] on [DA].[TrackReference]=[DAS].[TrackReference] AND [DIA].CASECODE = [DA].CASECODE ON [DA].[TrackReference] = [DDC].[TrackReference] LEFT OUTER JOIN [dbo].[DAIMXRef] [DX] LEFT OUTER JOIN @IMDocTable [DL] ON [DL].[IMDocID] = [DX].[IMDocID] ON [DX].[TrackReference] = [DA].[TrackReference] LEFT OUTER JOIN [dbo].[DocumentClasses] DCL ON convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) <> '' AND DCL.[CLASSCODE] = CASE WHEN convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) = '' THEN convert(VARCHAR(20), ISNULL([DL].[IMClass], '')) ELSE convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) END WHERE [DDC].[DocFolderID] = @DocFolderID AND ( CASE WHEN @SearchText = '' THEN 1 WHEN ([DA].FILEPATH LIKE '%' + @SearchText + '%') OR ([DA].[DATEENTERED] LIKE '%' + @SearchText + '%') OR ([DA].[TYPE] LIKE '%' + @SearchText + '%') OR ([DA].[DocClass] LIKE '%' + @SearchText + '%') THEN 1 ELSE 0 END =1 ) AND ( ISNULL(@FileType, '') = '' OR ([DA].[TYPE] IN (select FileType from @FileTypeList )) ) ORDER BY CASE WHEN @SortDirection = 'ASC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'Type' THEN convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DA].[TYPE], '')))) END END, CASE WHEN @SortDirection = 'DESC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'Type' THEN convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DA].[TYPE], '')))) END END DESC, CASE WHEN @SortDirection = 'ASC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'Document' THEN RTRIM(convert(VARCHAR(2000), ISNULL([DL].[Description], ISNULL([DA].[Document], '')))) END END, CASE WHEN @SortDirection = 'DESC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'Document' THEN RTRIM(convert(VARCHAR(2000), ISNULL([DL].[Description], ISNULL([DA].[Document], '')))) END END DESC, CASE WHEN @SortDirection = 'ASC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'DocumentClassDescription' THEN CASE WHEN convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) <> '' THEN RTRIM(ISNULL(DCL.[CLASSDESCRIPTION], '')) ELSE CASE WHEN [DCL].[ClassCode] = 'ATTNOTES' THEN 'Attendance Notes' WHEN [DCL].[ClassCode] = 'BILL' THEN 'Bill' WHEN [DCL].[ClassCode] = 'FAX' THEN 'Fax' WHEN [DCL].[ClassCode] = 'LEGAL' THEN 'Legal' WHEN [DCL].[ClassCode] = 'SCAN' THEN 'Scan' WHEN [DCL].[ClassCode] = 'COMPARE' THEN 'Compare Document' WHEN [DCL].[ClassCode] = 'DISCUSSION' THEN 'Discussion' WHEN [DCL].[ClassCode] = 'DOC' THEN 'Document' WHEN [DCL].[ClassCode] = 'E-MAIL' THEN 'E-Mail' WHEN [DCL].[ClassCode] = 'EVENT' THEN 'Event' WHEN [DCL].[ClassCode] = 'LETTER' THEN 'Letter' WHEN [DCL].[ClassCode] = 'MEMO' THEN 'Memo' WHEN [DCL].[ClassCode] = 'PAGE_ICON' THEN 'Page Icon' WHEN [DCL].[ClassCode] = 'TASK' THEN 'Task' WHEN [DCL].[ClassCode] = 'TEXT' THEN 'Text File' WHEN [DCL].[ClassCode] = 'WEBDOC' THEN 'InfoLink Web Page' ELSE ISNULL([DCL].[CLASSCODE], '') END END END END, CASE WHEN @SortDirection = 'DESC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'DocumentClassDescription' THEN CASE WHEN convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) <> '' THEN RTRIM(ISNULL(DCL.[CLASSDESCRIPTION], '')) ELSE CASE WHEN [DCL].[ClassCode] = 'ATTNOTES' THEN 'Attendance Notes' WHEN [DCL].[ClassCode] = 'BILL' THEN 'Bill' WHEN [DCL].[ClassCode] = 'FAX' THEN 'Fax' WHEN [DCL].[ClassCode] = 'LEGAL' THEN 'Legal' WHEN [DCL].[ClassCode] = 'SCAN' THEN 'Scan' WHEN [DCL].[ClassCode] = 'COMPARE' THEN 'Compare Document' WHEN [DCL].[ClassCode] = 'DISCUSSION' THEN 'Discussion' WHEN [DCL].[ClassCode] = 'DOC' THEN 'Document' WHEN [DCL].[ClassCode] = 'E-MAIL' THEN 'E-Mail' WHEN [DCL].[ClassCode] = 'EVENT' THEN 'Event' WHEN [DCL].[ClassCode] = 'LETTER' THEN 'Letter' WHEN [DCL].[ClassCode] = 'MEMO' THEN 'Memo' WHEN [DCL].[ClassCode] = 'PAGE_ICON' THEN 'Page Icon' WHEN [DCL].[ClassCode] = 'TASK' THEN 'Task' WHEN [DCL].[ClassCode] = 'TEXT' THEN 'Text File' WHEN [DCL].[ClassCode] = 'WEBDOC' THEN 'InfoLink Web Page' ELSE ISNULL([DCL].[CLASSCODE], '') END END END END DESC, CASE WHEN @SortDirection = 'ASC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'DocumentDate' THEN convert(DATETIME, [DA].[DATEENTERED]) END END, CASE WHEN @SortDirection = 'DESC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'DocumentDate' THEN convert(DATETIME, [DA].[DATEENTERED]) END END DESC, [DA].[TrackReference] DESC OFFSET @PageSize * (@PageNo - 1) ROWS FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE); --SELECT * from #DiaryTableList INSERT INTO @res ([ActionId], [TrackReference], [IMDocID], [IMClass], [DocClass], [Document], [DiaryDate], [DocumentDate], [EmailSent], [TYPE], [Attachments], [EMAIL], [EmailFrom], [EmailTo], [CurrentVersion], [IsInDocfolder], [IsShared], [DocumentClassDescription], [UniqueId], [FilePath], [Subject], [ShortText], [NAME], [ProcessType], [ACTIONTYPE], [ActionTypeDescription], [DOCUMENTSOURCE], [TotalRecord], [LastAccessedDate] ) SELECT convert(INT, [DIA].[DIARYID]) AS [ActionID], convert(INT, [DIA].[TrackReference]) AS [TrackReference], convert(VARCHAR(500), ISNULL([DX].[IMDocID], '')) AS [IMDocID], convert(VARCHAR(20), ISNULL([DIA].[IMClass], '')) AS [IMClass], convert(VARCHAR(10), ISNULL([DIA].[DocClass], '')) AS [DocClass], RTRIM(convert(VARCHAR(2000), ISNULL([DL].[Description], ISNULL([DIA].[Document], '')))) AS [Document], convert(DATETIME, [DIA].[DATE]) As [DiaryDate], convert(DATETIME, [DIA].[DATEENTERED]) AS [DocumentDate], convert(DATETIME, ISNULL([DIA].[TxmDate], [DIA].[Date])) As [EMAILSENT], convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DIA].[TYPE], '')))) AS [TYPE], --CASE WHEN [DIA].[ATTACHMENTS] = 'Y' THEN 'Y' ELSE 'N' END AS [Attachments], (CASE WHEN ISNULL( convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END), '') = 'Y' AND convert(INT, [DIA].[TrackReference]) = [OMS].[TrackReference] THEN (CASE WHEN [DIA].[ATTACHMENTS] = 'Y' THEN 'Y' ELSE 'N' END ) WHEN ISNULL(convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DIA].[TYPE], '')))), '') = 'MSG' AND convert(INT, [DIA].[TrackReference]) = [OMS].[TrackReference] THEN (CASE WHEN [DIA].[ATTACHMENTS] = 'Y' THEN 'Y' ELSE 'N' END) ELSE 'N' END) AS [Attachments], -- convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END) AS [EMAIL], (CASE WHEN convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END) = 'Y' AND convert(INT, [DIA].[TrackReference]) = [OMS].[TrackReference] THEN 'Y' WHEN ISNULL(convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DIA].[TYPE], '')))), '') = 'MSG' AND convert(INT, [DIA].[TrackReference]) = [OMS].[TrackReference] THEN 'Y' ELSE 'N' END) AS [EMAIL], --convert(VARCHAR(200), RTRIM(ISNULL([DIA].[EMAILADDRESS], ''))) AS [EMAILFROM], RTRIM(ISNULL(CONVERT(VARCHAR(200), SUBSTRING(convert(VARCHAR(200), RTRIM(ISNULL([DIA].[EMAILADDRESS], ''))), 1, 200)), '')) AS [EMAILFROM], -- RTRIM(ISNULL(CONVERT(VARCHAR(1000), [DIA].[ADDRESSTO]), '')) AS [EMAILTO], RTRIM(ISNULL(CONVERT(VARCHAR(1000), SUBSTRING(RTRIM(ISNULL(CONVERT(VARCHAR(1000), [DIA].[ADDRESSTO]), '')), 1, 1000)), '')) AS [EMAILTO], [DV].[CurrentVersion], CONVERT(BIT, 1), [SHD].[IsShared], CASE WHEN convert(VARCHAR(10), ISNULL([DIA].[DocClass], '')) <> '' THEN RTRIM(ISNULL(DCL.[CLASSDESCRIPTION], '')) ELSE CASE WHEN [DCL].[ClassCode] = 'ATTNOTES' THEN 'Attendance Notes' WHEN [DCL].[ClassCode] = 'BILL' THEN 'Bill' WHEN [DCL].[ClassCode] = 'FAX' THEN 'Fax' WHEN [DCL].[ClassCode] = 'LEGAL' THEN 'Legal' WHEN [DCL].[ClassCode] = 'SCAN' THEN 'Scan' WHEN [DCL].[ClassCode] = 'COMPARE' THEN 'Compare Document' WHEN [DCL].[ClassCode] = 'DISCUSSION' THEN 'Discussion' WHEN [DCL].[ClassCode] = 'DOC' THEN 'Document' WHEN [DCL].[ClassCode] = 'E-MAIL' THEN 'E-Mail' WHEN [DCL].[ClassCode] = 'EVENT' THEN 'Event' WHEN [DCL].[ClassCode] = 'LETTER' THEN 'Letter' WHEN [DCL].[ClassCode] = 'MEMO' THEN 'Memo' WHEN [DCL].[ClassCode] = 'PAGE_ICON' THEN 'Page Icon' WHEN [DCL].[ClassCode] = 'TASK' THEN 'Task' WHEN [DCL].[ClassCode] = 'TEXT' THEN 'Text File' WHEN [DCL].[ClassCode] = 'WEBDOC' THEN 'InfoLink Web Page' ELSE ISNULL([DCL].[CLASSCODE], '') END END AS [DocumentClassDescription], @uniqueid AS uniqueid, CASE WHEN [UNC].[UNC] IS NULL THEN RTRIM(ISNULL([DIA].[FILEPATH], '')) ELSE [UNC].[UNC] + SUBSTRING(RTRIM(ISNULL([DIA].[FILEPATH], '')), 3, LEN(RTRIM(ISNULL([DIA].[FILEPATH], ''))) - 2) END AS [FILEPATH], -- [RES].[EMAILSENT], RTRIM(ISNULL(CONVERT(VARCHAR(1000), SUBSTRING(RTRIM(ISNULL(CONVERT(VARCHAR(2000), [DIA].[SUBJECT]),'')), 1, 1000)), '')) AS [SUBJECT], RTRIM(ISNULL(CONVERT(VARCHAR(120), SUBSTRING(RTRIM(ISNULL(CONVERT(VARCHAR(120), [DIA].[DisplayText]),'')), 1, 120)), '')) AS [ShortText], RTRIM(ISNULL([DIA].[NAME], '')) AS [NAME], RTRIM(ISNULL([DIA].[PROCESSTYPE], '')) AS [PROCESSTYPE], RTRIM(ISNULL([DIA].[ACTIONTYPE], '')) AS [ACTIONTYPE], CASE WHEN [DIA].[ACTIONTYPE] = 'A' THEN 'Action' WHEN [DIA].[ACTIONTYPE] = 'N' THEN 'Note' WHEN [DIA].[ACTIONTYPE] = 'P' THEN 'Appointment' WHEN [DIA].[ACTIONTYPE] = 'R' THEN 'Reminder' WHEN [DIA].[ACTIONTYPE] = 'E' THEN 'Email' WHEN [DIA].[ACTIONTYPE] = 'T' THEN 'Phone Message' WHEN [DIA].[ACTIONTYPE] = 'D' THEN 'Dictation' WHEN [DIA].[ACTIONTYPE] = 'U' THEN 'Undertaking' WHEN [DIA].[ACTIONTYPE] = 'S' THEN 'Statute Date' WHEN [DIA].[ACTIONTYPE] = 'C' THEN 'Critical Date' WHEN [DIA].[ACTIONTYPE] = 'O' THEN 'Court Date' WHEN [DIA].[ACTIONTYPE] = 'M' THEN 'Scanned Post/Mail' WHEN RTRIM(ISNULL([DIA].[ACTIONTYPE], '')) = '' THEN CASE WHEN convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END) = 'Y' THEN 'Email' WHEN convert(VARCHAR(500), ISNULL([DX].[IMDocID], '')) <> '' THEN 'IManage document' ELSE 'Unknown' END ELSE 'Action Type: ' + [DIA].[ACTIONTYPE] END AS [ActionTypeDescription], RTRIM(ISNULL([DIA].[SOURCE], CASE WHEN [DIA].[ACTIONID] IS NULL THEN 'IManage' ELSE '' END)) AS [DOCUMENTSOURCE] ,Count(1) over() [TotalRecord] , isnull([DLA].AccessDate, [DIA].DATEENTERED) as LastAccessedDate FROM #DiaryTableList [DIA] --ON [DIA].[TrackReference] = [DDC].[TrackReference] CROSS APPLY (SELECT ISNULL(MAX([DAV].[Version]), 0) + 1 AS [CurrentVersion] FROM [dbo].[DiaryAttachmentVersioning] [DAV] WHERE TRACKREFERENCE = [DIA].[TRACKREFERENCE]) [DV] CROSS APPLY (SELECT CASE WHEN COUNT(1) = 0 THEN CONVERT(BIT, 0) ELSE CONVERT(BIT, 1) END AS [IsShared] FROM [dbo].[FileSharingDocuments] [FSD] INNER JOIN [dbo].[FileSharingMapping] [FSM] INNER JOIN [dbo].[FileSharingDocFolders] [FSDF] ON [FSDF].[DocFolderID] = [FSM].[FileSharingDocFoldersID] AND [FSDF].[Shared] = 1 ON [FSM].[id] = [FSD].[FileSharingMappingID] AND [FSM].[FileSharingDocFoldersID] = @DocFolderID WHERE [FSD].[TrackReference] = [DIA].[TrackReference]) [SHD] LEFT OUTER JOIN [dbo].[DAIMXRef] [DX] LEFT OUTER JOIN @IMDocTable [DL] ON [DL].[IMDocID] = [DX].[IMDocID] ON [DX].[TrackReference] = [DIA].[TrackReference] LEFT OUTER JOIN [dbo].[DocumentClasses] DCL ON convert(VARCHAR(10), ISNULL([DIA].[DocClass], '')) <> '' AND DCL.[CLASSCODE] = CASE WHEN convert(VARCHAR(10), ISNULL([DIA].[DocClass], '')) = '' THEN convert(VARCHAR(20), ISNULL([DL].[IMClass], '')) ELSE convert(VARCHAR(10), ISNULL([DIA].[DocClass], '')) END LEFT OUTER JOIN [dbo].[UNCAlias] [UNC] ON SUBSTRING([DIA].[FilePath], 2, 1) = ':' AND [UNC].[Drive] = SUBSTRING([DIA].[FilePath], 1, 1) OUTER APPLY ( SELECT TOP 1 [MST].[TrackReference] AS [TrackReference], [MST].[Type] AS [Type] FROM #DiaryTableList [MST] WHERE [MST].[diaryid] = [DIA].[ActionID] --AND [MST].[TrackReference] = [DA].[TrackReference] ORDER BY CASE WHEN [MST].Type = 'MSG' THEN 0 ELSE 1 END, [MST].[TrackReference]) [OMS] CROSS APPLY (SELECT ISNULL(MAX([DAA].[AccessDate]), [DIA].[DATEENTERED]) AS [AccessDate] FROM [dbo].[DiaryAttachmentAccess] [DAA] WHERE [DAA].[TrackReference] = [DIA].[TRACKREFERENCE] AND [DAA].[Comment] = 'Updated') DLA END ELSE BEGIN SELECT @TOTALRECORDS = COUNT(1) FROM dbo.[diary] [DIA] INNER JOIN dbo.[DiaryAttachments] [DA] ON [DA].[DiaryID] = [DIA].[ACTIONID] AND [DA].[CASECODE] = [DIA].[CASECODE] WHERE [DIA].[ACTIONID] = @ActionID AND ( CASE WHEN @SearchText = '' THEN 1 WHEN ([DA].FILEPATH LIKE '%' + @SearchText + '%') OR ([DA].[DATEENTERED] LIKE '%' + @SearchText + '%') OR ([DA].[TYPE] LIKE '%' + @SearchText + '%') OR ([DA].[DocClass] LIKE '%' + @SearchText + '%') THEN 1 ELSE 0 END = 1 ) AND ( ISNULL(@FileType, '') = '' OR ([DA].[TYPE] IN (select FileType from @FileTypeList )) ) SELECT [DIA].[CASECODE],[DIA].[ACTIONID],[DIA].[DATE],[DIA].[TxmDate], [DIA].[EMAIL],[DIA].[ATTACHMENTS],[DIA].[EMAILADDRESS],[DIA].[ADDRESSTO],[DIA].[SUBJECT],[DIA].[DisplayText], [DIA].[PROCESSTYPE],[DIA].[ACTIONTYPE], [DA].[DIARYID],[DA].[TrackReference],[DA].[DocClass],[DA].[DATEENTERED],[DA].[TYPE], [DA].[FILEPATH],[DA].[NAME],[DA].[SOURCE], convert(VARCHAR(500), ISNULL([DX].[IMDocID], '')) AS [IMDocID], convert(VARCHAR(20), ISNULL([DL].[IMClass], '')) AS [IMClass], RTRIM(convert(VARCHAR(2000), ISNULL([DL].[Description], ISNULL([DA].[Document], '')))) AS [Document], CASE WHEN [DIA].[ACTIONTYPE] = 'A' THEN 'Action' WHEN [DIA].[ACTIONTYPE] = 'N' THEN 'Note' WHEN [DIA].[ACTIONTYPE] = 'P' THEN 'Appointment' WHEN [DIA].[ACTIONTYPE] = 'R' THEN 'Reminder' WHEN [DIA].[ACTIONTYPE] = 'E' THEN 'Email' WHEN [DIA].[ACTIONTYPE] = 'T' THEN 'Phone Message' WHEN [DIA].[ACTIONTYPE] = 'D' THEN 'Dictation' WHEN [DIA].[ACTIONTYPE] = 'U' THEN 'Undertaking' WHEN [DIA].[ACTIONTYPE] = 'S' THEN 'Statute Date' WHEN [DIA].[ACTIONTYPE] = 'C' THEN 'Critical Date' WHEN [DIA].[ACTIONTYPE] = 'O' THEN 'Court Date' WHEN [DIA].[ACTIONTYPE] = 'M' THEN 'Scanned Post/Mail' WHEN RTRIM(ISNULL([DIA].[ACTIONTYPE], '')) = '' THEN CASE WHEN convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END) = 'Y' THEN 'Email' WHEN convert(VARCHAR(500), ISNULL([DX].[IMDocID], '')) <> '' THEN 'IManage document' ELSE 'Unknown' END ELSE 'Action Type: ' + [DIA].[ACTIONTYPE] END AS [ActionTypeDescription], CASE WHEN convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) <> '' THEN RTRIM(ISNULL(DCL.[CLASSDESCRIPTION], '')) ELSE CASE WHEN [DCL].[ClassCode] = 'ATTNOTES' THEN 'Attendance Notes' WHEN [DCL].[ClassCode] = 'BILL' THEN 'Bill' WHEN [DCL].[ClassCode] = 'FAX' THEN 'Fax' WHEN [DCL].[ClassCode] = 'LEGAL' THEN 'Legal' WHEN [DCL].[ClassCode] = 'SCAN' THEN 'Scan' WHEN [DCL].[ClassCode] = 'COMPARE' THEN 'Compare Document' WHEN [DCL].[ClassCode] = 'DISCUSSION' THEN 'Discussion' WHEN [DCL].[ClassCode] = 'DOC' THEN 'Document' WHEN [DCL].[ClassCode] = 'E-MAIL' THEN 'E-Mail' WHEN [DCL].[ClassCode] = 'EVENT' THEN 'Event' WHEN [DCL].[ClassCode] = 'LETTER' THEN 'Letter' WHEN [DCL].[ClassCode] = 'MEMO' THEN 'Memo' WHEN [DCL].[ClassCode] = 'PAGE_ICON' THEN 'Page Icon' WHEN [DCL].[ClassCode] = 'TASK' THEN 'Task' WHEN [DCL].[ClassCode] = 'TEXT' THEN 'Text File' WHEN [DCL].[ClassCode] = 'WEBDOC' THEN 'InfoLink Web Page' ELSE ISNULL([DCL].[CLASSCODE], '') END END AS [DocumentClassDescription] --,Count(1) Over() as TotalRowsCount INTO #DiaryTable FROM dbo.[diary] [DIA] INNER JOIN dbo.[DiaryAttachments] [DA] ON [DA].[DiaryID] = [DIA].[ACTIONID] AND [DIA].CASECODE = [DA].CASECODE LEFT OUTER JOIN [dbo].[DAIMXRef] [DX] ON [DX].[TrackReference] = [DA].[TrackReference] LEFT OUTER JOIN @IMDocTable [DL] ON [DL].[IMDocID] = [DX].[IMDocID] LEFT OUTER JOIN [dbo].[DocumentClasses] DCL ON convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) <> '' AND DCL.[CLASSCODE] = CASE WHEN convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) = '' THEN convert(VARCHAR(20), ISNULL([DL].[IMClass], '')) ELSE convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) END WHERE [DIA].[ACTIONID] = @ActionID AND ( CASE WHEN @SearchText = '' THEN 1 WHEN ([DA].FILEPATH LIKE '%' + @SearchText + '%') OR ([DA].[DATEENTERED] LIKE '%' + @SearchText + '%') OR ([DA].[TYPE] LIKE '%' + @SearchText + '%') OR ([DA].[DocClass] LIKE '%' + @SearchText + '%') THEN 1 ELSE 0 END = 1 ) AND ( ISNULL(@FileType, '') = '' OR ([DA].[TYPE] IN (select FileType from @FileTypeList )) ) ORDER BY CASE WHEN @SortDirection = 'ASC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'Type' THEN convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DA].[TYPE], '')))) END END, CASE WHEN @SortDirection = 'DESC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'Type' THEN convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DA].[TYPE], '')))) END END DESC, CASE WHEN @SortDirection = 'ASC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'Document' THEN RTRIM(convert(VARCHAR(2000), ISNULL([DL].[Description], ISNULL([DA].[Document], '')))) END END, CASE WHEN @SortDirection = 'DESC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'Document' THEN RTRIM(convert(VARCHAR(2000), ISNULL([DL].[Description], ISNULL([DA].[Document], '')))) END END DESC, CASE WHEN @SortDirection = 'ASC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'DocumentClassDescription' THEN CASE WHEN convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) <> '' THEN RTRIM(ISNULL(DCL.[CLASSDESCRIPTION], '')) ELSE CASE WHEN [DCL].[ClassCode] = 'ATTNOTES' THEN 'Attendance Notes' WHEN [DCL].[ClassCode] = 'BILL' THEN 'Bill' WHEN [DCL].[ClassCode] = 'FAX' THEN 'Fax' WHEN [DCL].[ClassCode] = 'LEGAL' THEN 'Legal' WHEN [DCL].[ClassCode] = 'SCAN' THEN 'Scan' WHEN [DCL].[ClassCode] = 'COMPARE' THEN 'Compare Document' WHEN [DCL].[ClassCode] = 'DISCUSSION' THEN 'Discussion' WHEN [DCL].[ClassCode] = 'DOC' THEN 'Document' WHEN [DCL].[ClassCode] = 'E-MAIL' THEN 'E-Mail' WHEN [DCL].[ClassCode] = 'EVENT' THEN 'Event' WHEN [DCL].[ClassCode] = 'LETTER' THEN 'Letter' WHEN [DCL].[ClassCode] = 'MEMO' THEN 'Memo' WHEN [DCL].[ClassCode] = 'PAGE_ICON' THEN 'Page Icon' WHEN [DCL].[ClassCode] = 'TASK' THEN 'Task' WHEN [DCL].[ClassCode] = 'TEXT' THEN 'Text File' WHEN [DCL].[ClassCode] = 'WEBDOC' THEN 'InfoLink Web Page' ELSE ISNULL([DCL].[CLASSCODE], '') END END END END, CASE WHEN @SortDirection = 'DESC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'DocumentClassDescription' THEN CASE WHEN convert(VARCHAR(10), ISNULL([DA].[DocClass], '')) <> '' THEN RTRIM(ISNULL(DCL.[CLASSDESCRIPTION], '')) ELSE CASE WHEN [DCL].[ClassCode] = 'ATTNOTES' THEN 'Attendance Notes' WHEN [DCL].[ClassCode] = 'BILL' THEN 'Bill' WHEN [DCL].[ClassCode] = 'FAX' THEN 'Fax' WHEN [DCL].[ClassCode] = 'LEGAL' THEN 'Legal' WHEN [DCL].[ClassCode] = 'SCAN' THEN 'Scan' WHEN [DCL].[ClassCode] = 'COMPARE' THEN 'Compare Document' WHEN [DCL].[ClassCode] = 'DISCUSSION' THEN 'Discussion' WHEN [DCL].[ClassCode] = 'DOC' THEN 'Document' WHEN [DCL].[ClassCode] = 'E-MAIL' THEN 'E-Mail' WHEN [DCL].[ClassCode] = 'EVENT' THEN 'Event' WHEN [DCL].[ClassCode] = 'LETTER' THEN 'Letter' WHEN [DCL].[ClassCode] = 'MEMO' THEN 'Memo' WHEN [DCL].[ClassCode] = 'PAGE_ICON' THEN 'Page Icon' WHEN [DCL].[ClassCode] = 'TASK' THEN 'Task' WHEN [DCL].[ClassCode] = 'TEXT' THEN 'Text File' WHEN [DCL].[ClassCode] = 'WEBDOC' THEN 'InfoLink Web Page' ELSE ISNULL([DCL].[CLASSCODE], '') END END END END DESC, CASE WHEN @SortDirection = 'ASC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'DocumentDate' THEN convert(DATETIME, [DA].[DATEENTERED]) END END, CASE WHEN @SortDirection = 'DESC' AND @SortColumn!='RowNumber' THEN CASE @SortColumn WHEN 'DocumentDate' THEN convert(DATETIME, [DA].[DATEENTERED]) END END DESC, [DA].[TrackReference] DESC OFFSET @PageSize * (@PageNo - 1) ROWS FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE); --SELECT * from #DiaryTable --select * from @IMDocTable INSERT INTO @res ([ActionId], [TrackReference], [IMDocID], [IMClass], [DocClass], [Document], [DiaryDate], [DocumentDate], [EmailSent], [TYPE], [Attachments], [EMAIL], [EmailFrom], [EmailTo], [CurrentVersion], [IsInDocFolder], [IsShared], [DocumentClassDescription], [UniqueId], [FilePath], [Subject], [ShortText], [NAME], [ProcessType], [ACTIONTYPE], [ActionTypeDescription], [DOCUMENTSOURCE] ,[TotalRecord] ,[LastAccessedDate] ) SELECT convert(INT, [DIA].[DIARYID]) AS [ActionID], convert(INT, [DIA].[TrackReference]) AS [TrackReference], convert(VARCHAR(500), ISNULL([DX].[IMDocID], '')) AS [IMDocID], convert(VARCHAR(20), ISNULL([DL].[IMClass], '')) AS [IMClass], convert(VARCHAR(10), ISNULL([DIA].[DocClass], '')) AS [DocClass], RTRIM(convert(VARCHAR(2000), ISNULL([DL].[Description], ISNULL([DIA].[Document], '')))) AS [Document], convert(DATETIME, [DIA].[DATE]) As [DiaryDate], convert(DATETIME, ISNULL([DLA].AccessDate, [DIA].[DATEENTERED])) AS [DocumentDate], convert(DATETIME, ISNULL([DIA].[TxmDate], [DIA].[Date])) As [EMAILSENT], convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DIA].[TYPE], '')))) AS [TYPE], -- CASE WHEN [DIA].[ATTACHMENTS] = 'Y' THEN 'Y' ELSE 'N' END AS [Attachments], (CASE WHEN ISNULL( convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END), '') = 'Y' AND convert(INT, [DIA].[TrackReference]) = [OMS].[TrackReference] THEN (CASE WHEN [DIA].[ATTACHMENTS] = 'Y' THEN 'Y' ELSE 'N' END ) WHEN ISNULL(convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DIA].[TYPE], '')))), '') = 'MSG' AND convert(INT, [DIA].[TrackReference]) = [OMS].[TrackReference] THEN (CASE WHEN [DIA].[ATTACHMENTS] = 'Y' THEN 'Y' ELSE 'N' END) ELSE 'N' END) AS [Attachments], --convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END) AS [EMAIL], (CASE WHEN convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END) = 'Y' AND convert(INT, [DIA].[TrackReference]) = [OMS].[TrackReference] THEN 'Y' WHEN ISNULL(convert(VARCHAR(20), UPPER(RTRIM(ISNULL([DIA].[TYPE], '')))), '') = 'MSG' AND convert(INT, [DIA].[TrackReference]) = [OMS].[TrackReference] THEN 'Y' ELSE 'N' END) AS [EMAIL], -- convert(VARCHAR(200), RTRIM(ISNULL([DIA].[EMAILADDRESS], ''))) AS [EMAILFROM], RTRIM(ISNULL(CONVERT(VARCHAR(200), SUBSTRING(convert(VARCHAR(200), RTRIM(ISNULL([DIA].[EMAILADDRESS], ''))), 1, 200)), '')) AS [EMAILFROM], --RTRIM(ISNULL(CONVERT(VARCHAR(1000), [DIA].[ADDRESSTO]), '')) AS [EMAILTO], RTRIM(ISNULL(CONVERT(VARCHAR(1000), SUBSTRING(RTRIM(ISNULL(CONVERT(VARCHAR(1000), [DIA].[ADDRESSTO]), '')), 1, 1000)), '')) AS [EMAILTO], [DV].[CurrentVersion], [IND].[InDocFolder], [SHD].[IsShared], CASE WHEN convert(VARCHAR(10), ISNULL([DIA].[DocClass], '')) <> '' THEN RTRIM(ISNULL(DCL.[CLASSDESCRIPTION], '')) ELSE CASE WHEN [DCL].[ClassCode] = 'ATTNOTES' THEN 'Attendance Notes' WHEN [DCL].[ClassCode] = 'BILL' THEN 'Bill' WHEN [DCL].[ClassCode] = 'FAX' THEN 'Fax' WHEN [DCL].[ClassCode] = 'LEGAL' THEN 'Legal' WHEN [DCL].[ClassCode] = 'SCAN' THEN 'Scan' WHEN [DCL].[ClassCode] = 'COMPARE' THEN 'Compare Document' WHEN [DCL].[ClassCode] = 'DISCUSSION' THEN 'Discussion' WHEN [DCL].[ClassCode] = 'DOC' THEN 'Document' WHEN [DCL].[ClassCode] = 'E-MAIL' THEN 'E-Mail' WHEN [DCL].[ClassCode] = 'EVENT' THEN 'Event' WHEN [DCL].[ClassCode] = 'LETTER' THEN 'Letter' WHEN [DCL].[ClassCode] = 'MEMO' THEN 'Memo' WHEN [DCL].[ClassCode] = 'PAGE_ICON' THEN 'Page Icon' WHEN [DCL].[ClassCode] = 'TASK' THEN 'Task' WHEN [DCL].[ClassCode] = 'TEXT' THEN 'Text File' WHEN [DCL].[ClassCode] = 'WEBDOC' THEN 'InfoLink Web Page' ELSE ISNULL([DCL].[CLASSCODE], '') END END AS [DocumentClassDescription], @uniqueid As uniqueid, CASE WHEN [UNC].[UNC] IS NULL THEN RTRIM(ISNULL([DIA].[FILEPATH], '')) ELSE [UNC].[UNC] + SUBSTRING(RTRIM(ISNULL([DIA].[FILEPATH], '')), 3, LEN(RTRIM(ISNULL([DIA].[FILEPATH], ''))) - 2) END AS [FILEPATH], -- [RES].[EMAILSENT], RTRIM(ISNULL(CONVERT(VARCHAR(1000), SUBSTRING(RTRIM(ISNULL(CONVERT(VARCHAR(2000), [DIA].[SUBJECT]),'')), 1, 1000)), '')) AS [SUBJECT], RTRIM(ISNULL(CONVERT(VARCHAR(120), SUBSTRING(RTRIM(ISNULL(CONVERT(VARCHAR(120), [DIA].[DisplayText]),'')), 1, 120)), '')) AS [ShortText], RTRIM(ISNULL([DIA].[NAME], '')) AS [NAME], RTRIM(ISNULL([DIA].[PROCESSTYPE], '')) AS [PROCESSTYPE], RTRIM(ISNULL([DIA].[ACTIONTYPE], '')) AS [ACTIONTYPE], CASE WHEN [DIA].[ACTIONTYPE] = 'A' THEN 'Action' WHEN [DIA].[ACTIONTYPE] = 'N' THEN 'Note' WHEN [DIA].[ACTIONTYPE] = 'P' THEN 'Appointment' WHEN [DIA].[ACTIONTYPE] = 'R' THEN 'Reminder' WHEN [DIA].[ACTIONTYPE] = 'E' THEN 'Email' WHEN [DIA].[ACTIONTYPE] = 'T' THEN 'Phone Message' WHEN [DIA].[ACTIONTYPE] = 'D' THEN 'Dictation' WHEN [DIA].[ACTIONTYPE] = 'U' THEN 'Undertaking' WHEN [DIA].[ACTIONTYPE] = 'S' THEN 'Statute Date' WHEN [DIA].[ACTIONTYPE] = 'C' THEN 'Critical Date' WHEN [DIA].[ACTIONTYPE] = 'O' THEN 'Court Date' WHEN [DIA].[ACTIONTYPE] = 'M' THEN 'Scanned Post/Mail' WHEN RTRIM(ISNULL([DIA].[ACTIONTYPE], '')) = '' THEN CASE WHEN convert(VARCHAR(1), CASE WHEN RTRIM(ISNULL([DIA].[EMAIL], 'N')) = 'Y' THEN 'Y' ELSE 'N' END) = 'Y' THEN 'Email' WHEN convert(VARCHAR(500), ISNULL([DX].[IMDocID], '')) <> '' THEN 'IManage document' ELSE 'Unknown' END ELSE 'Action Type: ' + [DIA].[ACTIONTYPE] END AS [ActionTypeDescription], RTRIM(ISNULL([DIA].[SOURCE], CASE WHEN [DIA].[ACTIONID] IS NULL THEN 'IManage' ELSE '' END)) AS [DOCUMENTSOURCE] ,Count(1) over() [TotalRecord], isnull([DLA].AccessDate, [DIA].DATEENTERED) as LastAccessedDate FROM #DiaryTable [DIA] CROSS APPLY (SELECT CASE WHEN COUNT(1) = 0 THEN CONVERT(BIT, 0) ELSE CONVERT(BIT, 1) END AS [InDocFolder] FROM [dbo].[DocFolderDocuments] [DFD] WHERE [DFD].[TrackReference] = [DIA].[TrackReference]) [IND] CROSS APPLY (SELECT CASE WHEN COUNT(1) = 0 THEN CONVERT(BIT, 0) ELSE CONVERT(BIT, 1) END AS [IsShared] FROM [dbo].[FileSharingDocuments] [FSD] INNER JOIN [dbo].[FileSharingMapping] [FSM] INNER JOIN [dbo].[FileSharingDocFolders] [FSDF] ON [FSDF].[DocFolderID] = [FSM].[FileSharingDocFoldersID] AND [FSDF].[Shared] = 1 ON [FSM].[id] = [FSD].[FileSharingMappingID] WHERE [FSD].[TrackReference] = [DIA].[TrackReference]) [SHD] CROSS APPLY (SELECT ISNULL(MAX([DAV].[Version]), 0) + 1 AS [CurrentVersion] FROM [dbo].[DiaryAttachmentVersioning] [DAV] WHERE TRACKREFERENCE = [DIA].[TRACKREFERENCE]) [DV] LEFT OUTER JOIN [dbo].[DAIMXRef] [DX] LEFT OUTER JOIN @IMDocTable [DL] ON [DL].[IMDocID] = [DX].[IMDocID] ON [DX].[TrackReference] = [DIA].[TrackReference] LEFT OUTER JOIN [dbo].[DocumentClasses] DCL ON convert(VARCHAR(10), ISNULL([DIA].[DocClass], '')) <> '' AND DCL.[CLASSCODE] = CASE WHEN convert(VARCHAR(10), ISNULL([DIA].[DocClass], '')) = '' THEN convert(VARCHAR(20), ISNULL([DL].[IMClass], '')) ELSE convert(VARCHAR(10), ISNULL([DIA].[DocClass], '')) END LEFT OUTER JOIN [dbo].[UNCAlias] [UNC] ON SUBSTRING([DIA].[FilePath], 2, 1) = ':' AND [UNC].[Drive] = SUBSTRING([DIA].[FilePath], 1, 1) CROSS APPLY (SELECT ISNULL(MAX([DAA].[AccessDate]), [DIA].[DATEENTERED]) AS [AccessDate] FROM [dbo].[DiaryAttachmentAccess] [DAA] WHERE [DAA].[TrackReference] = [DIA].[TRACKREFERENCE] AND [DAA].[Comment] = 'Updated') DLA OUTER APPLY ( SELECT TOP 1 [MST].[TrackReference] AS [TrackReference], [MST].[Type] AS [Type] FROM #DiaryTable [MST] WHERE [MST].[diaryid] = [DIA].[ActionID] --AND [MST].[TrackReference] = [DA].[TrackReference] ORDER BY CASE WHEN [MST].Type = 'MSG' THEN 0 ELSE 1 END, [MST].[TrackReference]) [OMS] END SELECT [id], CONVERT(VARCHAR(15),dbo.KEYHM_FNConvertUTCDateToTargetTimeZone([DiaryDate], @LoggedInHandler), 23) AS [DATE], [ACTIONID], CONVERT(VARCHAR(15), dbo.KEYHM_FNConvertUTCDateToTargetTimeZone([DocumentDate], @LoggedInHandler), 23) AS [DocumentDate], [IMDocID], [IMClass], [DocumentClassDescription], [DocClass], [Document], [TRACKREFERENCE], [TYPE], [Attachments], [EMAIL], [EMAILFROM] AS [EMAILADDRESS], [EMAILTO] AS [ADDRESSTO], [EMAILSENT], [SUBJECT], [ShortText], [NAME], [FILEPATH], [PROCESSTYPE], [ACTIONTYPE], [ActionTypeDescription], [DOCUMENTSOURCE], [CurrentVersion], [IsInDocFolder], [IsShared], [UniqueId], [LastAccessedDate] from @res ORDER BY TrackReference DESC SELECT @TOTALRECORDS AS TotalRecord IF ISNULL(@DocFolderID, 0) <> 0 BEGIN SELECT * FROM [dbo].[KEYHM_FN_GetDocFolders](@matter, @DocFolderID, 1, 1) WHERE parent <> -1 END ELSE BEGIN SELECT TOP 0 CONVERT(INT, 0) AS [seq], CONVERT(INT, 0) AS [id], CONVERT(INT, 0) AS [parent], CONVERT(VARCHAR(500), '') AS [foldername], CONVERT(INT, 0) AS [foldericon], CONVERT(VARBINARY(MAX), NULL) AS [folderimage], CONVERT(BIT, 0) AS [foldershared], CONVERT(BIT, 0) AS [folderisours], CONVERT(INT, 0) AS [documentcount] END END GO IF OBJECT_ID(N'KEYHM_GetDocumentVersion',N'P')IS NOT NULL DROP PROCEDURE KEYHM_GetDocumentVersion GO CREATE PROCEDURE [dbo].[KEYHM_GetDocumentVersion] (@TrackReference INT, @IMDocID VARCHAR(500)) AS /*********************************************************************************************** * * * Gets the list of previous versions of a particular document and a comment to indicate * * why the next version of that document was created. * * * * While it is easiest to create the records that way - A document with only ONE version * * will only contain a record in DiaryAttachments and nothing in the DiaryAttachmentVersions * * table - the end user would expect to see the reason for the creation of Version 2 displayed * * next to Version 2, not Version 1, so in this SP all comments are shifted by one * * version number. * * * * Modification History: * * 2022-06-02 Vignesh M Created * ***********************************************************************************************/ BEGIN DECLARE @CurVer INT DECLARE @DAV TABLE ([id] int identity(1, 1), [DAVID] int, [TrackReference] int, [IMDocID] VARCHAR(500), [Version] int, [FilePath] VARCHAR(255), [ShortComments] VARCHAR(200), [Comments] VARCHAR(MAX), [Timestamp] datetime, [Handler] VARCHAR(10), [HandlerName] VARCHAR(100), [UniqueId] INT) SET @IMDocID = ISNULL(@IMDocID, '') SET @TrackReference = ISNULL(@Trackreference, 0) IF (@IMDocID <> '') BEGIN SELECT @CurVer = ISNULL(MAX(DAV.[Version]), 0) FROM [dbo].[DiaryAttachmentVersioning] DAV WHERE DAV.[TrackReference] = 0 AND DAV.[IMDocID] = @IMDocID END ELSE BEGIN SELECT @CurVer = ISNULL(MAX(DAV.[Version]), 0) FROM [dbo].[DiaryAttachmentVersioning] DAV WHERE DAV.[TrackReference] = @TrackReference AND DAV.[TrackReference] <> 0 END INSERT INTO @DAV ([DAVID], [TrackReference], [IMDocID], [Version], [FilePath], [ShortComments], [Comments], [Timestamp], [Handler], [HandlerName], [UniqueId]) SELECT 0 AS [DAVID], DAT.[TRACKREFERENCE], '' AS [IMDocID], @CurVer + 1 AS [Version], CASE WHEN UNC.[UNC] IS NULL THEN RTRIM(ISNULL(DAT.[FILEPATH], '')) ELSE UNC.[UNC] + SUBSTRING(RTRIM(ISNULL(DAT.[FILEPATH], '')), 3, LEN(RTRIM(ISNULL(DAT.[FILEPATH], ''))) - 2) END AS [FILEPATH], [dbo].[KEYHM_FN_RemoveSpuriousWhitespace](DAV.[Comments], 200) AS [ShortComments], DAV.[Comments] AS [Comments], DAT.[DATEENTERED] AS [Timestamp], RTRIM(ISNULL(HAN.[CODE], RTRIM(ISNULL(HAN2.[CODE], RTRIM(ISNULL(HAN3.[CODE], '')))))) AS [Handler], RTRIM(ISNULL(HAN.[NAME], RTRIM(ISNULL(HAN2.[NAME], RTRIM(ISNULL(HAN3.[NAME], CASE WHEN RTRIM(ISNULL(DAT.[ENTEREDBY], '')) = '' THEN '' ELSE UPPER(SUBSTRING(RTRIM(ISNULL(DAT.[ENTEREDBY], '')), 1, 1)) END + CASE WHEN LEN(RTRIM(ISNULL(DAT.[ENTEREDBY], ''))) < 2 THEN '' ELSE LOWER(SUBSTRING(RTRIM(ISNULL(DAT.[ENTEREDBY], '')), 2, LEN(RTRIM(ISNULL(DAT.[ENTEREDBY], ''))) - 1)) END )))))) AS [HandlerName], [MAT].[uniqueid] AS [UniqueId] FROM [dbo].[DiaryAttachments] DAT INNER JOIN [dbo].[diary] DIA ON DIA.[ActionID] = DAT.[DiaryID] LEFT OUTER JOIN [matters] [MAT] ON [MAT].[Code] = [DIA].[CASECODE] LEFT OUTER JOIN [dbo].[UNCAlias] UNC ON SUBSTRING(DAT.[FilePath], 2, 1) = ':' AND UNC.[Drive] = SUBSTRING(DAT.[FilePath], 1, 1) LEFT OUTER JOIN [dbo].[Handlers] HAN ON HAN.[CODE] = DAT.[ENTEREDBY] LEFT OUTER JOIN [dbo].[Handlers] HAN2 ON HAN2.[LOGON] = DAT.[ENTEREDBY] LEFT OUTER JOIN [dbo].[Handlers] HAN3 ON HAN3.[CODE] = DIA.[FNCODE] LEFT OUTER JOIN [dbo].[DiaryAttachmentVersioning] DAV ON DAV.[TrackReference] = @TrackReference AND DAV.[IMDocID] = @IMDocID AND DAV.[Version] = @CurVer WHERE DAT.[TRACKREFERENCE] = @TrackReference AND DAT.[TRACKREFERENCE] <> 0 IF (@IMDocID <> '') BEGIN INSERT INTO @DAV ([DAVID], [TrackReference], [IMDocID], [Version], [FilePath], [ShortComments], [Comments], [Timestamp], [Handler], [HandlerName], [UniqueId]) SELECT DAV.[id], DAV.[TrackReference], DAV.[IMDOCID], DAV.[Version], DAV.[FilePath], [dbo].[KEYHM_FN_RemoveSpuriousWhitespace](RTRIM(ISNULL(DAV2.[Comments], '')), 200) AS [ShortComments], RTRIM(ISNULL(DAV2.[Comments], '')), DAV.[Timestamp], DAV.[Handler], RTRIM(ISNULL(HAN.[NAME], '')) AS [HandlerName], [MAT].[uniqueid] AS [UniqueId] FROM [dbo].[DiaryAttachmentVersioning] DAV LEFT OUTER JOIN [dbo].[DiaryAttachments] [DIAATTC] ON [DAV].[TrackReference] = [DIAATTC].[TrackReference] LEFT OUTER JOIN [Matters] [MAT] ON [MAT].[Code] = [DIAATTC].[CASECODE] LEFT OUTER JOIN [dbo].[Handlers] HAN ON HAN.[CODE] = DAV.[Handler] LEFT OUTER JOIN [dbo].[DiaryAttachmentVersioning] DAV2 ON DAV2.[TrackReference] = DAV.[TrackReference] AND DAV2.[IMDocID] = DAV.[IMDocID] AND DAV2.[Version] = DAV.[Version] - 1 WHERE DAV.[TrackReference] = 0 AND DAV.[IMDocID] = @IMDocID ORDER BY DAV.[Version] DESC END ELSE BEGIN INSERT INTO @DAV ([DAVID], [TrackReference], [IMDocID], [Version], [FilePath], [ShortComments], [Comments], [Timestamp], [Handler], [HandlerName], [UniqueId]) SELECT DAV.[id], DAV.[TrackReference], DAV.[IMDOCID], DAV.[Version], DAV.[FilePath], [dbo].[KEYHM_FN_RemoveSpuriousWhitespace](RTRIM(ISNULL(DAV2.[Comments], '')), 200) AS [ShortComments], RTRIM(ISNULL(DAV2.[Comments], '')), DAV.[Timestamp], DAV.[Handler], RTRIM(ISNULL(HAN.[NAME], '')) AS [HandlerName], [MAT].[uniqueid] AS [UniqueId] FROM [dbo].[DiaryAttachmentVersioning] DAV LEFT OUTER JOIN [dbo].[Handlers] HAN ON HAN.[CODE] = DAV.[Handler] LEFT OUTER JOIN [dbo].[DiaryAttachments] [DIAATTC] ON [DAV].[TrackReference] = [DIAATTC].[TrackReference] LEFT OUTER JOIN [Matters] [MAT] ON [MAT].[Code] = [DIAATTC].[CASECODE] LEFT OUTER JOIN [dbo].[DiaryAttachmentVersioning] DAV2 ON DAV2.[TrackReference] = DAV.[TrackReference] AND DAV2.[IMDocID] = DAV.[IMDocID] AND DAV2.[Version] = DAV.[Version] - 1 WHERE DAV.[TrackReference] = @TrackReference AND DAV.[TrackReference] <> 0 ORDER BY DAV.[Version] DESC END SELECT [DAVID] AS [DocVersionId], [TrackReference], [IMDocID], [Version], [FilePath], [ShortComments], [Comments], [TimeStamp], [Handler], [HandlerName], [UniqueId] FROM @DAV END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetDormantMatters' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetDormantMatters] END GO CREATE PROCEDURE [dbo].[KEYHM_GetDormantMatters] ( @FECODE VARCHAR(20)) AS /******************************************************************************************************* * Gets a list of dormant matters. Return value is set to the number of matters. * * * * Stored Procedure Name : [dbo].[KEYHM_GetDormantMatters] * * Copied from : [dbo].[ky_NETGetDormantMatters] * * * * Modification History : * * 2019-04-16 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON DECLARE @SQL NVARCHAR(MAX) SET @SQL = N' DECLARE @LastActionMonth INT DECLARE @GETDATE DATETIME SELECT @LastActionMonth = [KeyValue] FROM [dbo].[Settings] WHERE [KeyName] = ''LastActionMonth'' SET @LastActionMonth = ISNULL(@LastActionMonth, 6) SET @GETDATE = GETDATE() SELECT MAT.[Code], MAX(ISNULL(LST.[Date], MAT.[Started])) AS [LastActivity] FROM [dbo].[matters] AS MAT LEFT OUTER JOIN (SELECT TIE.[Matter], MAX(TIE.[DATE]) AS [Date] FROM [dbo].[TimeEntry] AS TIE GROUP BY TIE.[Matter] UNION SELECT DIA.[CASECODE], MAX(DIA.[DATE]) FROM [dbo].[diary] AS DIA GROUP BY DIA.[CASECODE] UNION SELECT UND.[MATTER], MAX(CASE WHEN UND.[DISCHARGEDATE] > UND.[UNDDATE] AND UND.[DISCHARGEDATE] > UND.[DATE] THEN UND.[DISCHARGEDATE] WHEN UND.[UNDDATE] > UND.[DISCHARGEDATE] AND UND.[UNDDATE] > UND.[DATE] THEN UND.[UNDDATE] ELSE UND.[DATE] END) FROM [dbo].Undertakings AS UND GROUP BY UND.[MATTER]' IF [dbo].[ISSAM4]() = 0 BEGIN SET @SQL = @SQL + N' UNION SELECT MTL.[MATTER], MAX(MTL.[DATE]) FROM [dbo].[MatterLedger] AS MTL GROUP BY MTL.[MATTER]' END ELSE BEGIN SET @SQL = @SQL + N' UNION SELECT TRN.[MatterCode], MAX(TRN.[TransDate]) FROM [dbo].[Transactions] AS TRN GROUP BY TRN.[MatterCode]' END SET @SQL = @SQL + N') AS LST ON LST.[Matter] = MAT.[Code] WHERE MAT.[Closed] <> ''Y'' AND (@FECODE IS NULL OR MAT.[FECode] = @FECODE) GROUP BY MAT.[Code], MAT.[Started] HAVING DATEDIFF(MONTH, MAX(ISNULL(LST.[Date], MAT.[Started])), @GETDATE) > @LastActionMonth' EXEC sp_executesql @SQL, N'@FECODE VARCHAR(20)', @FECODE = @FECODE RETURN @@ROWCOUNT SET NOCOUNT OFF END GO IF OBJECT_ID(N'KEYHM_GetFileData', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_GetFileData] END GO CREATE PROCEDURE [dbo].[KEYHM_GetFileData] (@FilePath NVARCHAR(MAX)) AS /******************************************************************************************************* * * * * * Stored Procedure Name : [dbo].[KEYHM_GetFileData] * * Copied from : NA * * * * Modification History: * * 2019-04-23 Vinodhan K Created * * 2019-12-26 Arun V Have included KAAS_GetUNCPathFromFile function to convert file path * * into UNC * *******************************************************************************************************/ BEGIN DECLARE @NCOMMAND NVARCHAR(MAX) DECLARE @result INT DECLARE @UNCFilePath NVARCHAR(256) SET @FilePath = REPLACE(@FilePath, '''', ''''''); SET @UNCFilePath = (select dbo.KEYHM_FN_GetUNCPathFromFile(@FilePath)) SET @NCOMMAND = 'EXEC Master.dbo.xp_fileexist ''' + @UNCFilePath + ''', @result OUTPUT PRINT @result' EXECUTE sp_executesql @NCOMMAND, N'@result INT OUTPUT', @result = @result OUTPUT IF (@result = 1) BEGIN SET @NCOMMAND = 'DECLARE @file AS VARBINARY(MAX); SELECT @file = CAST(bulkcolumn AS VARBINARY(MAX)) FROM OPENROWSET (BULK ''' + @UNCFilePath + ''', SINGLE_BLOB) AS x; SELECT @file AS FileData' EXECUTE sp_executesql @NCOMMAND END END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetFileName' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetFileName] END GO CREATE PROCEDURE [dbo].[KEYHM_GetFileName] (@TrackReference INT) AS /******************************************************************************************************* * Fetches the file path using Track Reference No. * * * * Stored Procedure Name : [dbo].[KEYHM_GetFileName] * * * * Modification History : * * 2020-06-19 Arun V Created * ********************************************************************************************************/ BEGIN SELECT [Document] FROM [DiaryAttachments] WHERE [TrackReference] = @TrackReference END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetFilePath' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetFilePath] END GO CREATE PROCEDURE [dbo].[KEYHM_GetFilePath] (@TrackReference INT) AS /******************************************************************************************************* * Fetches the file path using Track Reference No. * * * * Stored Procedure Name : [dbo].[KEYHM_GetFilePath] * * * * Modification History : * * 2019-09-26 Vinodhan K Created * ********************************************************************************************************/ BEGIN SELECT [FilePath] FROM [DiaryAttachments] WHERE [TrackReference] = @TrackReference END GO IF OBJECT_ID(N'KEYHM_GetHandlerDefaultTask', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_GetHandlerDefaultTask] END GO CREATE PROCEDURE [dbo].[KEYHM_GetHandlerDefaultTask] (@Code VARCHAR(15)) AS /******************************************************************************************************* * * * * * Stored Procedure Name : [dbo].[KEYHM_GetHandlerDefaultTask] * * Copied from : NA * * * * Modification History: * * 2019-04-23 Vinodhan K Created * *******************************************************************************************************/ BEGIN SELECT RTRIM(DEFAULTTASK) AS [DefaultTask] FROM Handlers WHERE RETIRED <> 'Y' AND CODE = @Code END GO IF OBJECT_ID(N'KEYHM_GetHandlerLogon', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_GetHandlerLogon] END GO CREATE PROCEDURE [dbo].[KEYHM_GetHandlerLogon] (@HandlerCode VARCHAR(10)) AS /******************************************************************************************************* * * * Stored Procedure Name : [dbo].[KEYHM_GetHandlerLogon] * * Copied from : [dbo].[ky_NETGetHandlerLogon] * * * * Modification History: * * 2019-04-23 Vinodhan K Created * * 2019-09-04 Arun V Have included UserDefaultpageSize setting * * 2019-09-05 Arun V Have included UserFavourites setting * * 2019-09-12 Vinodhan K ISNULL checked for @UserFavourites * * 2019-09-18 Vinodhan K Department of the user added * * 2019-12-12 Prabhu V DefaultVAT Code added * * 2020-02-17 Ganapathy T Day Book progress value added * * 2020-03-09 Rajesh kaas_side_panel_state value added * *******************************************************************************************************/ BEGIN DECLARE @PasswordExpiryDate INT SET @PasswordExpiryDate = ( SELECT ISNULL(KeyValue,60) FROM Settings WHERE [KeyName] = 'PasswordExpiryDays') DECLARE @UserDefaultPageSize INT SET @UserDefaultPageSize = ( SELECT [Value] FROM UserSettings WHERE [Key] = 'UserDefaultPageSize' and Handler = @HandlerCode) DECLARE @UserFavourites VARCHAR(300) SET @UserFavourites = ( SELECT [Value] FROM UserSettings WHERE [Key] = 'UserFavourites' and Handler = @HandlerCode) DECLARE @TimerSettings VARCHAR(300) SET @TimerSettings = ( SELECT [Value] FROM UserSettings WHERE [Key] = 'TimerSettings' and Handler = @HandlerCode) DECLARE @DefaultVATCode VARCHAR(2) SET @DefaultVATCode = (SELECT TOP 1 DEFAULTVAT FROM CONTROL) DECLARE @COMMAND VARCHAR(MAX) SET @COMMAND = 'SELECT HLO.[HANDLER] AS [Handler], RTRIM(ISNULL(HAN.[NAME], '''')) AS [Name], RTRIM(ISNULL(HAN.[Email], '''')) AS [Email], REPLACE(ISNULL(RETIRED,''N''),'' '',''N'') AS [Retired], CASE WHEN RTRIM(ISNULL(HAN.[TYPE], '''')) = ''P'' THEN CONVERT(BIT, 1) WHEN RTRIM(ISNULL(HAN.[CODE], '''')) = ''ADM'' THEN CONVERT(BIT, 1) ELSE CONVERT(BIT, 0) END AS [IsPartner], ISNULL(GM.[BitWiseID], [dbo].[KEYHM_FN_GetOldPermissions](RTRIM(ISNULL(HAN.[CODE], '''')))) AS [BitWiseId], UPPER(ISNULL(HAN.AutoLaunchTimer, ''N'')) AS [AutoLaunchTimer], ISNULL([HAN].[TEAM], '''') AS [Team], ISNULL([HAN].[Dept], '''') AS [Department]' SET @COMMAND = @COMMAND + ', HLO.[Date] + '+ CONVERT(VARCHAR(5),ISNULL(@PasswordExpiryDate,'60')) +' AS [Date], ISNULL(HAN.[TYPE], '''') AS [Type], ' + CONVERT(VARCHAR(5),ISNULL(@UserDefaultPageSize,10)) + ' as UserDefaultPageSize , ''' + CONVERT(VARCHAR(300), ISNULL(@UserFavourites, '')) + ''' as UserFavourites , ''' + CONVERT(VARCHAR(500), ISNULL(@TimerSettings, '')) + ''' as TimerSettings , ''' + CONVERT(VARCHAR(2), ISNULL(@DefaultVATCode, '')) + ''' as DefaultVAT FROM [dbo].[Handlers] HAN LEFT OUTER JOIN [dbo].[HandlerNETLogons] HLO ON HLO.[HANDLER] = HAN.[CODE] LEFT OUTER JOIN [dbo].[HandlerNETGroupMembership] GM ON GM.[HANDLER] = HAN.[CODE] WHERE HAN.[CODE] = ''' + Replace(@HandlerCode, '''', '''''') + '''' EXEC (@COMMAND) DECLARE @DayBookValue INT SELECT @DayBookValue = ISNULL(SUM([TDB].[Time]), 0) FROM [dbo].[Timedaybook] [TDB] WITH (NOLOCK) WHERE [TDB].[FeeEarn] = @HandlerCode SELECT @DayBookValue AS [DayBookValue] DECLARE @MaxDayBookValue DECIMAL(10,2) = 7.5 IF EXISTS(SELECT TOP 1 1 FROM [dbo].[UserSettings] WHERE [Handler] = @HandlerCode AND [Key] = 'TimeDayBookLimit') BEGIN SELECT @MaxDayBookValue = Value FROM [dbo].[UserSettings] WHERE [Handler] = @HandlerCode AND [Key] = 'TimeDayBookLimit' END SELECT CASE WHEN (ISNULL(@MaxDayBookValue,0) = 0) THEN 7.5 * 60 ELSE @MaxDayBookValue * 60 END AS [MaxDayBookValue] SELECT Value AS SidePanelState FROM [dbo].[UserSettings] WHERE [Handler] = @HandlerCode AND [Key] = 'kaas_side_panel_state'; END GO IF OBJECT_ID(N'[KEYHM_GETHandlerRate]',N'P')IS NOT NULL DROP PROCEDURE [KEYHM_GETHandlerRate] GO CREATE PROC [KEYHM_GETHandlerRate] (@HandlerCode VARCHAR(10) ) AS /******************************************************************************************************* * Used to Get new Handler Rate. * * * * Stored Procedure Name : [dbo].[KEYHM_GETHandlerRate] * * Copied from : [dbo].[ky_NETGETHandlerRate] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN SELECT ISNULL(RATE,0) AS Rate FROM Handlers WHERE CODE=@HandlerCode END GO IF OBJECT_ID(N'KEYHM_GetHandlersResource', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_GetHandlersResource] END GO CREATE PROCEDURE [dbo].[KEYHM_GetHandlersResource] ( @CODE VARCHAR(15), @SearchText VARCHAR(4000) = '', @PageNumber INT = NULL, @PageSize INt = NULL) AS /************************************************************************************************************************* * To fetch the handler resource list available from the database excluding the currently logged in user * * * * Stored Procedure Name : [dbo].[KEYHM_GetHandlersResource] * * Copied from : [dbo].[ky_NETGetHandlersResource] * * * * Modification History: * * 2019-04-23 Vinodhan K Created * * 2019-08-05 Vinodhan K Modifed to list the handler list by recently selected handlers by the logged in user * * 2024-08-29 Aakif Modified alias name to match DTO Model * *************************************************************************************************************************/ BEGIN DECLARE @StartRow INT; DECLARE @EndRow INT; SET @PageNumber = ISNULL(@PageNumber, 0) - 1; IF(@PageNumber > -1) BEGIN SET @StartRow = ((@PageNumber) * @PageSize) + 1; SET @EndRow = (@StartRow + @PageSize) - 1; END SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #FoundTable FROM (SELECT RTRIM(A.CODE) AS [Code], RTRIM(A.TEAM) AS [Team], RTRIM(A.TEAMCODE) AS [TeamCode], RTRIM(A.[NAME]) AS [Name], RTRIM(A.LOGON) AS [LogOn], RTRIM(A.EXCHANGEALIAS) AS [ExchangeAlias], RTRIM(A.RETIRED) AS [Retired], RTRIM(B.HANDLER) AS [Handler], RTRIM(B.NOOUTSTANDACTIONS) AS [NoOutstandActions], RTRIM(A.DEFAULTTASK) AS [DefaultTask], C.AccessedTime AS [AccessedTime] FROM Handlers A LEFT JOIN NoOverDueTasks B ON A.CODE = B.HANDLER LEFT JOIN RecentHandlerList C ON C.Code = A.CODE AND C.AccessedBy = @CODE WHERE ( A.CODE LIKE '%' + @SearchText + '%' OR A.[NAME] LIKE '%' + @SearchText + '%' ) AND A.RETIRED <> 'Y' AND A.CODE <> @CODE) AS FoundTable ORDER BY FoundTable.AccessedTime DESC, CODE ASC SELECT * FROM #FoundTable A WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS [TotalRecords] FROM #FoundTable END GO IF OBJECT_ID(N'KEYHM_GetLastUpdatedDateForFile',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_GetLastUpdatedDateForFile] GO CREATE PROCEDURE [dbo].[KEYHM_GetLastUpdatedDateForFile] ( @TrackReference INT ) AS /******************************************************************************************************* * Fetch Attachment list by diary number * * * * Stored Procedure Name : [dbo].[KEYHM_GetLastUpdatedDateForFile] * * * * * Modification History : * * 2021-07-30 Arun V Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON SELECT TOP 1 [AccessDate] FROM [dbo].[DiaryAttachmentAccess] WHERE [TrackReference] = @TrackReference AND [Comment] = 'Updated' ORDER BY [Id] DESC SET NOCOUNT OFF END GO IF OBJECT_ID(N'KEYHM_GetMatterDocFolderTree', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_GetMatterDocFolderTree] END GO CREATE PROCEDURE [dbo].[KEYHM_GetMatterDocFolderTree] ( @matter VARCHAR(20) ) AS /******************************************************************************************************** * Gets the folder structure for a Matter. Creates it if it doesn't exist, use the CasePlan folder * * structure as a template. Create it too, if it doesn't exist. * * * * Stored Procedure Name : [dbo].[KEYHM_GetMatterDocFolderTree] * * Copied from : [dbo].[ky_NETSPGetMatterDocFolderTree] * * * * Modification History: * * 2019-04-23 Vinodhan K Created * * 2019-06-19 Vinodhan K Removed the condition to check whether UseDocFolders is set as True * * or False. For now it wil return the data even when it is set as False * *******************************************************************************************************/ BEGIN DECLARE @WKCODE CHAR(4) DECLARE @MatterCode VARCHAR(20) DECLARE @folderid INT SELECT TOP 1 @MatterCode = [SM].[CODE], @WKCODE = [TMP].[WKCODE] FROM [dbo].[SearchMatters] SM INNER JOIN [dbo].[CaseMaster] CSM ON [CSM].[CSCODE] = SM.[Code] LEFT OUTER JOIN [dbo].[Templates] [TMP] ON [TMP].[WKCODE] = [CSM].[CSWKTCODE] WHERE [CSM].[CSCODE] = @matter IF @MatterCode IS NULL BEGIN -- Dummy statement SELECT TOP 0 CONVERT(INT, 0) AS [id], CONVERT(INT, 0) AS [parent], CONVERT(VARCHAR(500), '') AS [foldername], CONVERT(INT, 0) AS [foldericon] RETURN END SELECT TOP 1 @folderid = MDF.[DocFolderID] FROM [dbo].[MatterDocFolders] MDF WHERE [MDF].[MatterCode] = @MatterCode IF @folderid IS NULL BEGIN DECLARE @DefaultRootFolderName VARCHAR(500) SELECT @DefaultRootFolderName = CONVERT(VARCHAR(500), [SET].[KeyValue]) FROM [dbo].[Settings] [SET] WHERE [SET].[KeyName] = 'DocFolderDefaultRootName' SET @DefaultRootFolderName = RTRIM(ISNULL(@DefaultRootFolderName, 'Documents')) IF @WKCODE IS NULL BEGIN EXEC @folderid = [dbo].[KEYHM_SaveDocFolderTree] '' UPDATE [DF] SET [DF].[foldername] = @DefaultRootFolderName FROM [dbo].[DocFolders] [DF] WHERE [DF].[id] = @folderid END ELSE BEGIN SELECT TOP 1 @folderid = CDF.[DocFolderID] FROM [dbo].[CasePlanDocFolders] CDF WHERE [CDF].[WKCode] = @WKCODE IF @folderid IS NULL BEGIN EXEC @folderid = [dbo].[KEYHM_SaveDocFolderTree] '' UPDATE [DF] SET [DF].[foldername] = @DefaultRootFolderName FROM [dbo].[DocFolders] [DF] WHERE [DF].[id] = @folderid INSERT INTO [dbo].[CasePlanDocFolders] ([WKCode], [DocFolderID]) SELECT @WKCODE, @folderid END DECLARE @DUP TABLE ([id] INT) INSERT INTO @DUP EXEC @folderid = [dbo].[KEYHM_DuplicateDocFolderTree] @folderid END INSERT INTO [dbo].[MatterDocFolders] ([MatterCode], [DocFolderID]) SELECT @MatterCode, @folderid END SELECT * FROM [dbo].[KEYHM_FN_GetDocFolders](@matter, @folderid, 1, 1) END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetMatterLedger' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetMatterLedger] END GO CREATE PROCEDURE [dbo].[KEYHM_GetMatterLedger] ( @MatterCode VARCHAR(20), @PageNumber INT = NULL, @PageSize INT = NULL, @SearchText VARCHAR(400) = NULL, @SortColumn VARCHAR(50) = NULL, @SortDirection VARCHAR(10) = NULL ) AS /******************************************************************************************************* * * *Used to list the matter ledger * * * * Stored Procedure Name: [dbo].[KAAS_WebApi_DeleteOtherContacts] * * Copied From: [dbo].[ky_NETGetMatterLedger] * * * * Modification History: * * 2019-04-26 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @SQL NVARCHAR(MAX) DECLARE @ISSAM4 BIT SELECT @ISSAM4 = [dbo].[ISSAM4]() DECLARE @StartRow INT; DECLARE @EndRow INT; SET @PageNumber = ISNULL(@PageNumber, 0) - 1; -- 0 BASED INDEX IF(@PageNumber > -1) BEGIN SET @StartRow = ((@PageNumber) * @PageSize) + 1; SET @EndRow = (@StartRow + @PageSize) - 1; END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END IF(RTRIM(ISNULL(@SearchText, '')) = '' OR RTRIM(@SearchText) = '') BEGIN SET @SearchText = '' END IF @ISSAM4 = 0 BEGIN SET @SQL = N' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #MatterLedgerTable FROM (SELECT [MTL].[MATTER] AS [Matter], ISNULL([MTL].[BATCHNO], 0) AS [BATCHNO], ISNULL([MTL].[PREF], 0) AS [Pref], CONVERT(NVARCHAR(30),[MTL].[DATE],23) AS [Date], ISNULL([MTL].[REF], '''') AS [Reference], ISNULL([MTL].[NARR], '''') AS [Narrative], ISNULL([MTL].[VALUED], 0) AS [Billing], ISNULL([MTL].[VALUEO], 0) AS [OutLay], ISNULL([MTL].[VALUECC], 0) AS [ClientCurrent], ISNULL([MTL].[VALUECD], 0) AS [Deposit], ISNULL([MTL].[FEE], '''') AS [Fee], [MTL].[EntryDate] AS [EntryDate], ISNULL([MTL].[CLIENT], '''') AS [Client], ISNULL([MTL].[LREF], 0) AS [LRef], ISNULL([MTL].[BILLED], 0) AS [Billed], CASE WHEN CHARINDEX(''undertaking'', ISNULL([MTL].[NARR], '''')) > 0 THEN 1 WHEN ISNULL([MTL].[PREF], 0) = 0 THEN 0 ELSE 2 END AS [RowHighlight], ISNULL([BAH].[TYPE], '''') AS [Type], ISNULL([BAD].[OUTLAYCODE],'''') AS [OutlayCode], RTRIM(ISNULL([BAD].[OUTLAYDESC], '''')) AS [OutlayDesc], 0 AS [Unbilled] /* Not used in SAM3 */ FROM [dbo].[MatterLedger] AS [MTL] LEFT OUTER JOIN [dbo].[BatchH] AS [BAH] ON [BAH].[BATCHNO] = [MTL].[BATCHNO] AND [BAH].[BATCHNO] <> 0 OUTER APPLY (SELECT TOP 1 [BDL].[OUTLAYCODE], [OLC].[DESCRIPTION] AS [OUTLAYDESC] FROM [dbo].[BatchDetails] [BDL] LEFT OUTER JOIN [dbo].[OutlayCode] [OLC] ON [OLC].[CODE] = [BDL].[OUTLAYCODE] WHERE [BDL].[BATCHNO] = [MTL].[BATCHNO] AND [BDL].[PREF] = [MTL].[PREF] AND [BDL].[BATCHNO] <> 0) [BAD] WHERE ( @SearchText = '''' OR ( [MTL].[MATTER] LIKE ''%' + @SearchText + '%'' OR [MTL].[BATCHNO] LIKE ''%' + @SearchText + '%'' OR [MTL].[PREF] LIKE ''%' + @SearchText + '%'' OR [MTL].[DATE] LIKE ''%' + @SearchText + '%'' OR [MTL].[REF] LIKE ''%' + @SearchText + '%'' OR [MTL].[NARR] LIKE ''%' + @SearchText + '%'' OR [MTL].[VALUED] LIKE ''%' + @SearchText + '%'' OR [MTL].[VALUEO] LIKE ''%' + @SearchText + '%'' OR [MTL].[VALUECC] LIKE ''%' + @SearchText + '%'' OR [MTL].[VALUECD] LIKE ''%' + @SearchText + '%'' OR [MTL].[FEE] LIKE ''%' + @SearchText + '%'' OR [MTL].[EntryDate] LIKE ''%' + @SearchText + '%'' OR [MTL].[CLIENT] LIKE ''%' + @SearchText + '%'' OR [MTL].[LREF] LIKE ''%' + @SearchText + '%'' OR [MTL].[BILLED] LIKE ''%' + @SearchText + '%'' OR [BAH].[TYPE] LIKE ''%' + @SearchText + '%'' OR [BAD].[OUTLAYCODE] LIKE ''%' + @SearchText + '%'' OR [BAD].[OUTLAYDESC] LIKE ''%' + @SearchText + '%'' ) ) AND [MTL].[MATTER] = @MatterCode) AS FoundTable' IF((@SortColumn IS NULL) AND (RTRIM(@SortColumn) = '')) BEGIN SET @SQL = @SQL + ' ORDER BY [Matter] ASC, [Date] ASC, [LRef] ASC' END IF((@SortColumn IS NOT NULL) AND (RTRIM(@SortColumn) != '')) BEGIN SET @SQL = @SQL + ' ORDER BY ' + @SortColumn + ' ' + @SortDirection END SET @SQL = @SQL +' SELECT * FROM #MatterLedgerTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS [TotalRecords] FROM #MatterLedgerTable' SET @SQL = @SQL +' SELECT TOP 1 ISNULL([MAT].[ClientMin], 0) AS [ClientMin], ISNULL([MTL].[BillingSum], 0) AS [BillingSum], ISNULL([MTL].[OutlaySum], 0) AS [OutlaySum], ISNULL([MTL].[CurrentSum], 0) AS [CurrentSum], ISNULL([MTL].[DepositSum], 0) AS [DepositSum], ISNULL([UND].[Undertakings], 0) AS [Undertakings], 0 AS [WIP] FROM [dbo].[matters] AS [MAT] OUTER APPLY (SELECT SUM(ISNULL(MTL.[VALUED], 0)) AS [BillingSum], SUM(ISNULL(MTL.[VALUEO], 0)) AS [OutlaySum], SUM(ISNULL(MTL.[VALUECC], 0)) AS [CurrentSum], SUM(ISNULL(MTL.[VALUECD], 0)) AS [DepositSum] FROM [dbo].[MatterLedger] AS MTL WHERE MTL.[MATTER] = @MatterCode) AS MTL OUTER APPLY (SELECT COUNT(1) AS [Undertakings] FROM [dbo].[Undertakings] AS UND WHERE UND.[MATTER] = @MatterCode AND UND.[DISCHARGEDATE] IS NULL) AS UND WHERE MAT.[Code] = @MatterCode' END ELSE BEGIN SET @SQL = N' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #MatterLedgerTable FROM (SELECT TRN.[MatterCode] AS [Matter], ISNULL(TRN.[BatchNo], 0) AS [BATCHNO], ISNULL(TRN.[PostRef], 0) AS [Pref], TRN.[TransDate] AS [Date], ISNULL(TRN.[TransRef], '''') AS [Reference], ISNULL(TRN.[Narrative], '''') AS [Narrative], ISNULL(TRN.[DebtorsValue], 0) AS [Billing], ISNULL(TRN.[OutlayValue], 0) AS [OutLay], ISNULL(TRN.[ClientCurrent], 0) AS [ClientCurrent], ISNULL(TRN.[ClientDeposit], 0) AS [Deposit], ISNULL(TRN.[FeeEarner], '''') AS [Fee], TRN.[EntryDate] AS [EntryDate], ISNULL(MAT.[ClientCode], '''') AS [Client], ISNULL(TRN.[XnID], 0) AS [LRef], '''' AS [Billed], /* Not used in SAM4 */ CASE WHEN CHARINDEX(''undertaking'', ISNULL(TRN.[Narrative], '''')) > 0 THEN 1 WHEN ISNULL(TRN.[PostRef], 0) = 0 THEN 0 ELSE 2 END AS [RowHighlight], ISNULL(TRN.[XnType], '''') AS [Type], ISNULL(TRN.[OutlayCode], '''') AS [OutlayCode], [TRN].[Seq] AS [Seq], RTRIM(ISNULL([OLC].[DESCRIPTION], '''')) AS [OutlayDesc], CASE WHEN TRN.[XnType] IN (''P'', ''B'', ''J'') AND ISNULL(TRN.[OutlayValue], 0) <> 0 AND ISNULL(TRN.[BilledOutlay], 0) = 0 THEN 1 WHEN TRN.[XnType] IN (''P'', ''B'', ''J'') AND ISNULL(TRN.[OutlayValue], 0) <> 0 AND ISNULL(TRN.[BilledOutlay], 0) <> ISNULL(TRN.[OutlayValue], 0) THEN 2 ELSE 0 END AS [Unbilled] FROM [dbo].[matters] AS MAT INNER JOIN [dbo].[Transactions] AS TRN LEFT OUTER JOIN [dbo].[OutlayCode] [OLC] ON [OLC].[OutlayCode] = [TRN].[OutlayCode] ON MAT.[Code] = TRN.[MatterCode] WHERE ( @SearchText = '''' OR ( [TRN].[MatterCode] LIKE ''%' + @SearchText + '%'' OR [TRN].[BatchNo] LIKE ''%' + @SearchText + '%'' OR [TRN].[PostRef] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransDate] LIKE ''%' + @SearchText + '%'' OR [TRN].[TransRef] LIKE ''%' + @SearchText + '%'' OR [TRN].[Narrative] LIKE ''%' + @SearchText + '%'' OR [TRN].[DebtorsValue] LIKE ''%' + @SearchText + '%'' OR [TRN].[OutlayValue] LIKE ''%' + @SearchText + '%'' OR [TRN].[ClientCurrent] LIKE ''%' + @SearchText + '%'' OR [TRN].[ClientDeposit] LIKE ''%' + @SearchText + '%'' OR [TRN].[FeeEarner] LIKE ''%' + @SearchText + '%'' OR [TRN].[EntryDate] LIKE ''%' + @SearchText + '%'' OR [MAT].[ClientCode] LIKE ''%' + @SearchText + '%'' OR [TRN].[XnID] LIKE ''%' + @SearchText + '%'' OR [TRN].[XnType] LIKE ''%' + @SearchText + '%'' OR [TRN].[OutlayCode] LIKE ''%' + @SearchText + '%'' OR [TRN].[BilledOutlay] LIKE ''%' + @SearchText + '%'' OR [OLC].[DESCRIPTION] LIKE ''%' + @SearchText + '%'' ) ) AND MAT.[Code] = @MatterCode AND TRN.[Posted] = ''Y'' AND TRN.[RecType] <> ''V'' AND TRN.[CorrectionInd] IN (''L'', ''C'')) AS FoundTable' IF((@SortColumn IS NULL) AND (RTRIM(@SortColumn) = '')) BEGIN SET @SQL = @SQL + ' ORDER BY [Matter] ASC, [Date] ASC, [Seq] ASC, [LRef] ASC' END IF((@SortColumn IS NOT NULL) AND (RTRIM(@SortColumn) != '')) BEGIN SET @SQL = @SQL + ' ORDER BY ' + @SortColumn + ' ' + @SortDirection END SET @SQL = @SQL + ' SELECT * FROM #MatterLedgerTable WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS [TotalRecords] FROM #MatterLedgerTable' SET @SQL = @SQL + ' SELECT ISNULL(MAT.[ClientMin], 0) AS [ClientMin], 0.00 AS [BillingSum], /* These balances aren''t used in SAM4. They are calculated on the client machine */ 0.00 AS [OutlaySum], 0.00 AS [CurrentSum], 0.00 AS [DepositSum], ISNULL(UND.[Count], 0) AS [Undertakings], ISNULL(TIE.[WIP], 0) AS [WIP] FROM [dbo].[matters] AS MAT OUTER APPLY (SELECT COUNT(1) AS [Count] FROM [dbo].[Undertakings] AS UND WHERE UND.[MATTER] = @MatterCode AND UND.[DISCHARGEDATE] IS NULL) AS UND OUTER APPLY (SELECT SUM(ISNULL(TIE.[Charge], 0)) AS [WIP] FROM [dbo].[TimeEntry] AS TIE WHERE TIE.[Matter] = @MatterCode AND TIE.[InvoiceNo] = 0 AND TIE.[Rec_Irr] = ''C'' AND TIE.[IncludeInBill] <> 2 AND TIE.[TimeOrCharge] IN (''T'', ''C'')) AS TIE WHERE MAT.[Code] = @MatterCode' END IF ISNULL(@SQL, '') <> '' BEGIN EXEC sp_executesql @SQL, N'@MatterCode VARCHAR(20), @SearchText VARCHAR(400), @SortColumn VARCHAR(50), @SortDirection VARCHAR(10), @StartRow INT, @EndRow INT', @MatterCode = @matterCode, @SearchText = @searchText, @SortColumn = @sortColumn, @SortDirection = @sortDirection, @StartRow = @startRow, @EndRow = @endRow END END GO IF OBJECT_ID(N'KEYHM_GetMatterLedgerDetail', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_GetMatterLedgerDetail] END GO CREATE PROCEDURE [dbo].[KEYHM_GetMatterLedgerDetail] (@MatterCode VARCHAR(20)) AS /****************************************************************************************************************** * * * Used to fetch matter ledger and account summary details * * * * Stored Procedure Name: [dbo].[KEYHM_GetMatterLedgerDetail] * * Copied from : [dbo].[ky_NETGetMatterLedger] * * [dbo].[ky_NETGetMatterLedgerSAM4] * * * * Modification History: * * 2019-04-26 Vinodhan K Created * ******************************************************************************************************************/ BEGIN DECLARE @IsSAM4 bit DECLARE @Query NVARCHAR(200) SET @IsSAM4 = [dbo].[ISSAM4]() EXECUTE KEYHM_GetMatterLedger @MatterCode /*Account Summary*/ DECLARE @NCOMMAND nvarchar(MAX) DECLARE @DraftBillValue DECIMAL(18, 2) IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = N' SELECT @DraftBillValue = ISNULL(SUM(ISNULL(BD.[NET], 0)), 0) + ISNULL(SUM(ISNULL(BD.[VATVALUE], 0)), 0) FROM [dbo].[BillHeader] HED INNER JOIN [dbo].[BillDetails] BD ON BD.[DRAFTNO] = HED.[DRAFTNO] WHERE HED.[MATTER] = @MatterCode AND HED.[BILLNO] = 0' END ELSE BEGIN SET @NCOMMAND = N' SELECT @DraftBillValue = ISNULL(SUM(ISNULL(BD.[NetValue], 0)), 0) + ISNULL(SUM(ISNULL(BD.[VatValue], 0)), 0) FROM [dbo].[BillHead] HED INNER JOIN [dbo].[BillDetail] BD ON BD.[BillID] = HED.[BillingID] WHERE HED.[MatterCode] = @MatterCode AND HED.[BillStatus] <> ''Approved'' AND ISNULL(HED.[ProForma], '''') = ''Y''' END EXECUTE sp_executesql @NCOMMAND, N'@MatterCode VARCHAR(20),@DraftBillValue DECIMAL(18, 2) OUTPUT', @MatterCode = @MatterCode, @DraftBillValue=@DraftBillValue OUTPUT DECLARE @Section68 VARCHAR(10) DECLARE @IsApproved VARCHAR(10) DECLARE @TimeBal INT DECLARE @ChargeBal DECIMAL(19, 2) DECLARE @TotalCharge Decimal(19, 2) DECLARE @TotalTime INT --Matter values that are re-used elsewhere in this procedure. SELECT @Section68 = ISNULL(MAT.[Section68],''), @IsApproved = ISNULL(CON.[Approved],'') FROM [dbo].[matters] MAT LEFT OUTER JOIN [dbo].[Contacts] CON ON CON.[Code] = MAT.[ClientCode] WHERE MAT.[Code] = @MatterCode DECLARE @LDIADATE DATETIME DECLARE @LDIAACTIONTYPE VARCHAR(1) DECLARE @LDIATEXT1 VARCHAR(MAX) DECLARE @LDIAFNCODE VARCHAR(10) SELECT TOP 1 @LDIADATE = LDIA.[DATE], @LDIAACTIONTYPE = LDIA.[ACTIONTYPE], @LDIATEXT1 = LDIA.[TEXT1], @LDIAFNCODE = LDIA.[FNCODE] FROM [dbo].[diary] LDIA WHERE LDIA.[CASECODE] = @MatterCode ORDER BY LDIA.[DATE] DESC DECLARE @MDIADATE DATETIME DECLARE @MDIAACTIONTYPE VARCHAR(1) DECLARE @MDIATEXT1 VARCHAR(MAX) DECLARE @MDIAFNCODE VARCHAR(10) SELECT TOP 1 @MDIADATE= MDIA.[DATE], @MDIAACTIONTYPE = MDIA.[ACTIONTYPE], @MDIATEXT1 = MDIA.[TEXT1], @MDIAFNCODE = MDIA.[FNCODE] FROM [dbo].[diary] MDIA WHERE MDIA.[CASECODE] = @MatterCode AND MDIA.[HIGHLIGHTED] = 'Y' ORDER BY MDIA.[DATE] DESC DECLARE @NDIADATE DATETIME DECLARE @NDIAACTIONTYPE VARCHAR(1) DECLARE @NDIATEXT1 VARCHAR(MAX) DECLARE @NDIAFNCODE VARCHAR(10) SELECT TOP 1 @NDIADATE = NDIA.[DATE], @NDIAACTIONTYPE = NDIA.[ACTIONTYPE], @NDIATEXT1 = NDIA.[TEXT1], @NDIAFNCODE = NDIA.[FNCODE] FROM dbo.[diary] NDIA WHERE NDIA.[CASECODE] = @MatterCode AND NDIA.[STATUS] = 0 ORDER BY NDIA.[DATE] ASC DECLARE @TIEDATE DATETIME --Pino 2015-05-27 Start --SELECT @TIEDATE = (MAX(TIE.[DATE])) -- FROM [dbo].[TimeEntry] TIE -- WHERE TIE.[Matter] = @MatterCode IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = N' SELECT @TIEDATE = MAX(CASE WHEN DLG.[DATE] IS NULL THEN CONVERT(DATETIME, NULL) WHEN DLG.[DATE] > GETDATE() THEN CONVERT(DATETIME, NULL) ELSE DLG.[DATE] END) FROM [dbo].[DebtorsLedger] DLG WHERE DLG.[MATTER] = @MatterCode' END ELSE BEGIN SET @NCOMMAND = N' SELECT @TIEDATE = MAX(CASE WHEN TRN.[TransDate] IS NULL THEN CONVERT(DATETIME, NULL) WHEN TRN.[TransDate] > GETDATE() THEN CONVERT(DATETIME, NULL) ELSE TRN.[TransDate] END) FROM [dbo].[Transactions] TRN WHERE TRN.[Posted] = ''Y'' AND TRN.[MatterCode] = @MatterCode AND TRN.[DebtorsValue] <> 0 AND TRN.[CorrectionInd] = ''L'' AND ( ( TRN.[XnType] = ''I'' AND TRN.[RecType] = ''H'') OR ( TRN.[XnType] = ''J'' AND TRN.[RecType] = ''D''))' END EXECUTE sp_executesql @NCOMMAND, N'@MatterCode VARCHAR(20), @TIEDATE DATETIME OUTPUT', @MatterCode = @MatterCode, @TIEDATE = @TIEDATE OUTPUT --Pino 2015-05-27 End DECLARE @LastTimeEntryDate DATETIME DECLARE @LastTimeEntryTime INT DECLARE @LastTimeEntryRate DECIMAL(10, 2) DECLARE @LastTimeEntryCharge DECIMAL(10, 2) DECLARE @LastTimeEntryTask VARCHAR(6) DECLARE @LastTimeEntryComment VARCHAR(1000) DECLARE @LastTimeEntryFE VARCHAR(10) DECLARE @TimeEntryTotalCharge DECIMAL(19, 2) DECLARE @TimeEntryTotalTime INT SELECT TOP (1) @LastTimeEntryDate = TIE.[DATE], @LastTimeEntryTime = TIE.[Time], @LastTimeEntryRate = TIE.[Rate], @LastTimeEntryCharge = TIE.[Charge], @LastTimeEntryTask = TIE.[Task], @LastTimeEntryComment = TIE.[Comment], @LastTimeEntryFE = TIE.[FeeEarn] FROM [dbo].[TimeEntry] TIE WHERE TIE.[Matter] = @MatterCode AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun ORDER BY TIE.[Date] DESC, TIE.[Time] DESC SET @LastTimeEntryRate = ISNULL(@LastTimeEntryRate, 0) SET @LastTimeEntryCharge = ISNULL(@LastTimeEntryCharge, 0) -- Please see also: ky_NETFNMatterClosable. If you change any of these calculations, -- ensure the ones in there are changed as well. -- ky_NETPMatterClosable. If you change any of these calculations, -- ensure the ones in there are changed as well. -- ky_NETTLFetchTimeEntry. If you change any of these calculations, -- ensure the ones in there are changed as well. SELECT @TimeEntryTotalCharge = ISNULL(SUM(ISNULL(TIE.[Charge], 0)), 0), @TimeEntryTotalTime = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0), @TotalCharge = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 ELSE ISNULL(TIE.[Charge], 0) END), 0), @ChargeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[InvoiceNo], 0) <> 0 THEN 0 WHEN @IsSAM4 = 1 THEN ISNULL(TIE.[Charge], 0) ELSE ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0) END), 0), @TimeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 WHEN @IsSAM4 = 1 AND ISNULL(TIE.[InvoiceNo], 0) <> 0 THEN 0 WHEN @IsSAM4 = 0 THEN CASE WHEN TIE.[Charge] = 0 THEN 0 ELSE CONVERT(INT, FLOOR(CONVERT(DECIMAL(18, 2), TIE.[TIME]) * ( (TIE.[Charge] - TIE.[BilledAmount]) / TIE.[Charge]))) END ELSE ISNULL(TIE.[Time], 0) END), 0), @TotalTime = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N' THEN 0 ELSE ISNULL(TIE.[Time], 0) END), 0) FROM [dbo].[TimeEntry] TIE WHERE TIE.[Matter] = @MatterCode AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun DECLARE @DebtBal DECIMAL(19, 2) DECLARE @OutlayBal DECIMAL(19, 2) DECLARE @DebtBalDate DATETIME DECLARE @OutlayBalDate DATETIME DECLARE @ClientCurrent DECIMAL(19, 2) DECLARE @ClientDeposit DECIMAL(19, 2) -- Please see also: ky_NETFNMatterClosable. If you change any of these calculations, -- ensure the ones in there are changed as well. -- ky_NETTLFetchTimeEntry. If you change any of these calculations, -- ensure the ones in there are changed as well. -- To ensure SAM3 will retrieve these from [dbo].[matters] SET @DebtBal = 0 SET @OutlayBal = 0 SET @ClientCurrent = 0 SET @ClientDeposit = 0 IF @IsSAM4 = 1 BEGIN SET @NCOMMAND = N' SELECT @DebtBal = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[DebtorsValue], 0)), 0)), @DebtBalDate = MAX(CASE WHEN ISNULL(TRN.[DebtorsValue], 0) = 0 THEN NULL ELSE TRN.[TransDate] END), @OutlayBal = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[OutlayValue], 0)), 0)), @OutlayBalDate = MAX(CASE WHEN ISNULL(TRN.[OutlayValue], 0) = 0 THEN NULL ELSE TRN.[TransDate] END), @ClientCurrent = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[ClientCurrent], 0)), 0)), @ClientDeposit = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[ClientDeposit], 0)), 0)) FROM [dbo].[Transactions] TRN WHERE TRN.[MatterCode] = @MatterCode AND TRN.[Posted] = ''Y'' AND TRN.[RecType] <> ''V'' AND TRN.[CorrectionInd] = ''L''' EXECUTE sp_executesql @NCOMMAND, N'@MatterCode VARCHAR(20), @DebtBal DECIMAL(19, 2) OUTPUT, @DebtBalDate DATETIME OUTPUT, @OutlayBal DECIMAL(19, 2) OUTPUT, @OutlayBalDate DATETIME OUTPUT, @ClientCurrent DECIMAL(19, 2) OUTPUT, @ClientDeposit DECIMAL(19, 2) OUTPUT', @MatterCode = @MatterCode, @DebtBal = @DebtBal OUTPUT, @DebtBalDate = @DebtBalDate OUTPUT, @OutlayBal = @OutlayBal OUTPUT, @OutlayBalDate = @OutlayBalDate OUTPUT, @ClientCurrent = @ClientCurrent OUTPUT, @ClientDeposit = @ClientDeposit OUTPUT END --Result Set 0 --Matter Data SELECT RTRIM(ISNULL(MAT.[Code], '')) AS [Code], RTRIM(ISNULL(MAT.[Description], '')) AS [Description], RTRIM(ISNULL(MAT.[ClientCode], '')) AS [ClientCode], RTRIM(ISNULL(CLT.[CLNAME], '')) AS [CLName], RTRIM(ISNULL(CLT.[CLADDR], '')) AS [CLAddr], RTRIM(ISNULL(MAT.[FECode], '')) AS [FECode], RTRIM(ISNULL(HAN.[NAME], '')) AS [HandlerName], RTRIM(ISNULL(MAT.[Dept], '')) AS [Dept], RTRIM(ISNULL(DPT.[DESC], '')) AS [Desc], RTRIM(MAT.WType) AS [WType], RTRIM(ISNULL(WKT.[DESC], '')) AS [WorkType], MAT.[Started] AS [Started], MAT.[EstFee] AS [EstFee], MAT.[ExpBillD] AS [ExpBillD], CONVERT(DECIMAL(19, 2), CASE WHEN @DebtBal <> 0 THEN @DebtBal ELSE ISNULL(MAT.[DebtBal], 0) END) AS [DebtBal], CONVERT(DECIMAL(19, 2), CASE WHEN @OutlayBal <> 0 THEN @OutlayBal ELSE ISNULL(MAT.[OutlayBal], 0) END) AS [OutlayBal], MAT.[OutlayBud] AS [OutlayBud], CONVERT(DECIMAL(19, 2), CASE WHEN @ClientCurrent <> 0 THEN @ClientCurrent + @ClientDeposit WHEN @ClientDeposit <> 0 THEN @ClientCurrent + @ClientDeposit ELSE ISNULL(MAT.[ClientBal], 0) END) AS [ClientBal], CONVERT(DECIMAL(19, 2), CASE WHEN @ClientCurrent <> 0 THEN @ClientCurrent ELSE ISNULL(MAT.[ClientCurBal], 0) END) AS [ClientCurBal], CONVERT(DECIMAL(19, 2), CASE WHEN @ClientDeposit <> 0 THEN @ClientDeposit ELSE ISNULL(MAT.[ClientDepBal], 0) END) AS [ClientDepBal], MAT.[StatuteLimits] AS [StatuteLimits], RTRIM(ISNULL(MAT.[User1], '')) AS [User1], RTRIM(ISNULL(MAT.[User2], '')) AS [User2], RTRIM(ISNULL(MAT.[User3], '')) AS [User3], MAT.[Value] AS [Value], @TimeBal AS [TimeBal], CASE WHEN LEN(@TimeBal / 60) < 2 THEN '0' + CAST(@TimeBal / 60 AS VARCHAR) ELSE CAST(@TimeBal / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + CONVERT(INT, @TimeBal) % 60), 2, 2) AS [TimeBalHours], @ChargeBal AS [ChargeBal], CASE WHEN LEN(@TotalTime / 60) < 2 THEN '0' + CAST(@TotalTime / 60 AS VARCHAR) ELSE CAST(@TotalTime / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + CONVERT(INT, @TotalTime) % 60), 2, 2) AS [TotalHours], @TotalCharge AS [TotalCharge], MAT.[FileColour] AS [FileColour], RTRIM(ISNULL(MAT.[OldRef], '')) AS [OldRef], RTRIM(ISNULL(MAT.[Status], '')) AS [Status], MAT.[StatuteLimits] AS [StatuteLims], RTRIM(ISNULL(MAT.[Comment], '')) AS [Comment], @DraftBillValue AS [DraftBillTotal], @TIEDATE AS [LastBillDate], @LDIADATE AS [LastActionDate], RTRIM(ISNULL(@LDIAActionType, '')) AS [LastActionType], RTRIM(ISNULL(@LDIATEXT1, '')) AS [LastActionText], RTRIM(ISNULL(@LDIAFNCODE, '')) AS [LastActionFE], @MDIADATE AS [LastMilestoneDate], RTRIM(ISNULL(@MDIAActionType, '')) AS [LastMilestoneType], RTRIM(ISNULL(@MDIATEXT1, '')) AS [LastMilestoneText], RTRIM(ISNULL(@MDIAFNCODE, '')) AS [LastMilestoneFE], @NDIADATE AS [NextActionDate], RTRIM(ISNULL(@NDIAActionType, '')) AS [NextActionType], RTRIM(ISNULL(@NDIATEXT1, '')) AS [NextActionText], RTRIM(ISNULL(@NDIAFNCODE, '')) AS [NextActionFE], @LastTimeEntryDate AS [LastTimeEntryDate], @LastTimeEntryTime AS [LastTimeEntryTime], @LastTimeEntryRate AS [LastTimeEntryRate], @LastTimeEntryCharge AS [LastTimeEntryCharge], @LastTimeEntryTask AS [LastTimeEntrytask], @LastTimeEntryComment AS [LastTimeEntryComment], @LastTimeEntryFE AS [LastTimeEntryFE], @TimeEntryTotalCharge AS [TimeEntryTotalCharge], @TimeEntryTotalTime AS [TotalTime], STC.[DESCRIPTION] AS [StatusCodeDescription], CSM.[CSWKTCODE] AS [CSWKTCode], TMP.[WKDESC] AS [WKDesc], CASE WHEN MAT.[ShowCommentInAlarm] = 'Y' THEN 'True' ELSE 'False' END AS [ShowCommentInAlarm], RTRIM(ISNULL(FCL.[COLOURDESC], '')) AS [FileColourDescription], ISNULL(FCL.[RGBColour], -1) AS [FileColourRGB], @Section68 AS [Section68], @IsApproved AS [IsApproved] FROM dbo.[matters] MAT LEFT JOIN dbo.[WorkTypes] WKT ON WKT.[CODE] = MAT.[WType] LEFT OUTER JOIN dbo.[Departments] DPT ON DPT.[CODE] = MAT.[Dept] LEFT OUTER JOIN dbo.[Handlers] HAN ON HAN.[CODE] = MAT.[FECode] LEFT OUTER JOIN dbo.[client] CLT ON CLT.[CLCODE] = MAT.[ClientCode] LEFT OUTER JOIN dbo.[StatusCodes] STC ON STC.[CODE] = MAT.[Status] LEFT OUTER JOIN dbo.[CaseMaster] CSM LEFT OUTER JOIN dbo.[Templates] TMP ON TMP.[WKCODE] = CSM.[CSWKTCODE] ON CSM.[CSCODE] = MAT.[Code] LEFT OUTER JOIN [dbo].[FileColours] FCL ON FCL.[COLOURCODE] = MAT.[FileColour] WHERE MAT.[Code] = @MatterCode --Result Set 6 --Total Time [Activity] SELECT CASE WHEN LEN(TIES.[TOTALTIME] / 60) < 2 THEN '0' + CAST(TIES.[TOTALTIME] / 60 AS VARCHAR) ELSE CAST(TIES.[TOTALTIME] / 60 AS VARCHAR) END + ':' + SUBSTRING(CONVERT(VARCHAR(3), 100 + (TIES.[TOTALTIME] % 60)), 2, 2) AS [ActivityTotalTime], TIES.[Value] AS [ActivityTotalValue] FROM ( SELECT ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0) AS [TOTALTIME], SUM(CONVERT(DECIMAL(18, 2), ISNULL(TIE.[Charge], 0))) AS [Value] FROM [dbo].[matters] MAT INNER JOIN [dbo].[TimeEntry] TIE ON TIE.[MATTER] = MAT.[Code] WHERE TIE.[MATTER] = @MatterCode AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) AND TIE.[TASK] <> 'WRI') TIES --Result Set 7 --Write off time SELECT TIES.[WriteOffValue] As [WriteOffValue] FROM ( SELECT SUM(CONVERT(DECIMAL(18, 2), ISNULL(TIE.[Charge], 0))) AS [WriteOffValue] FROM [dbo].[matters] MAT INNER JOIN [dbo].[TimeEntry] TIE ON TIE.[MATTER] = MAT.[Code] WHERE TIE.[MATTER] = @MatterCode AND ( (TIE.[TimeOrCharge] = 'T') OR (TIE.[TimeOrCharge] = 'C')) AND TIE.[Task] = 'WRI') TIES -- PLEASE NOTE THAT THE CALCULATION BELOW IS ALSO USED IN ky_NETTLFetchTimeEntry, so -- please modify both procedures if this needs to be changed. -- Result Set 10 -- The fees issued to date IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = N' SELECT ISNULL(SUM((CASE WHEN HED.[INVCR] = ''I'' THEN TRN.[VALUE] ELSE TRN.[VALUE] * - 1 END)), 0) AS [FeesIssued] FROM [dbo].[BatchH] HED INNER JOIN [dbo].[BatchDetails] TRN ON TRN.[BATCHNO] = HED.[BATCHNO] WHERE HED.[MATTER] = @MatterCode AND HED.[POSTED] = ''Y'' AND TRN.[TYPE] = ''I'' AND TRN.[OUTLAY] = ''F''' END ELSE BEGIN SET @NCOMMAND = N' DECLARE @TotalFeesBilled DECIMAL(22, 2) SELECT @TotalFeesBilled = ISNULL(SUM(ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * (-1)), 0) FROM [dbo].[TransactionsHeaders] HED INNER JOIN [dbo].[Transactions] TRN ON TRN.[BatchNo] = HED.[BatchNo] AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND ( TRN.[CorrectionInd] = ''L'' OR TRN.[CorrectionInd] = ''X'') WHERE HED.[MatterCode] = @MatterCode --values imported from Axxia SELECT @TotalFeesBilled = @TotalFeesBilled + ISNULL(SUM(ISNULL(TRN.[FeesBilled], 0) * ISNULL(TRN.[DrCr], 1) * (-1)), 0) FROM [dbo].[Transactions] TRN LEFT OUTER JOIN [dbo].[TransactionsHeaders] HED ON HED.[BatchNo] = TRN.[BatchNo] WHERE TRN.[MatterCode] = @MatterCode AND TRN.[RecType] = ''D'' AND TRN.[LineType] = ''F'' AND TRN.[XnType] = ''I'' AND TRN.[Posted] = ''Y'' AND ( TRN.[CorrectionInd] = ''L'' OR TRN.[CorrectionInd] = ''X'') AND HED.[BatchNo] IS NULL SELECT @TotalFeesBilled AS [FeesIssued]' END EXECUTE sp_executesql @NCOMMAND, N'@MatterCode VARCHAR(20)', @MatterCode = @MatterCode -- Result Set 11 -- Current outstanding fees IF @IsSAM4 = 0 BEGIN SET @NCOMMAND = N' SELECT CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(DTL.[OSFees], 0)), 0)) AS [OSFees] FROM [dbo].[DebtorsLedger] DTL WHERE DTL.[matter] = @MatterCode' END ELSE BEGIN SET @NCOMMAND = N' SELECT CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[FeesOS], 0)), 0)) AS [OSFees] FROM [dbo].[Transactions] TRN WHERE TRN.[MatterCode] = @MatterCode AND TRN.[Posted] = ''Y'' AND TRN.[RecType] <> ''V'' AND TRN.[CorrectionInd] = ''L''' END EXECUTE sp_executesql @NCOMMAND, N'@MatterCode VARCHAR(20)', @MatterCode = @MatterCode SELECT @IsSAM4 AS [IsSAM4] END GO IF OBJECT_ID(N'KEYHM_GetMobileSettings',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_GetMobileSettings] GO CREATE PROCEDURE [dbo].[KEYHM_GetMobileSettings] ( @keyname VARCHAR(50) ) AS /******************************************************************************************************* * This sp is used to store the scancapture setting * * * * Stored Procedure Name : [dbo].[KEYHM_GetMobileSettings] * * Copied from : [dbo].[ky_NETGetSettings] * * * * Modification History: * * 2022-06-03 Vignesh M Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON; DECLARE @value VARCHAR(100) SELECT @value = [SET].[KeyValue] FROM [dbo].[Settings] [SET] WHERE [SET].[KeyName] = @keyname SET @value = ISNULL(@value, '') SELECT @value AS [KeyValue] SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetMostRecentMatterHeader' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetMostRecentMatterHeader] END GO CREATE PROCEDURE [KEYHM_GetMostRecentMatterHeader] (@handler VARCHAR(10)) AS /******************************************************************************************************* * Get the Header details for the Most Recent Matter for a handler * * * * Stored Procedure Name : [dbo].[KEYHM_GetMostRecentMatterHeader] * * Copied from : [dbo].[ky_NETPGetMostRecentMatterHeader] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN SELECT TOP 1 [KHD].[CODE], [KHD].[ClientCode], [KHD].[MatterNo], [KHD].[YourRef], [KHD].[DESCRIPTION], [KHD].[FECode], [KHD].[FEName], [KHD].[Name], [KHD].[TelNo], [KHD].[Address], [KHD].[Closed], [KHD].[TOOLTIP], [KHD].[IsChildcare], [KHD].[User1], [KHD].[User2], [KHD].[User3], [KHD].[Partner], [KHD].[PartnerName], [KHD].[CompBillingMatter], [KHD].[MatterUniqueID] FROM [dbo].[RecentMatterList] [RML] CROSS APPLY [dbo].[KEYHM_FN_MatterHeaderDetails]([RML].[MATTER]) [KHD] WHERE [RML].[FEE] = @handler ORDER BY [RML].[DateField] DESC END GO IF OBJECT_ID(N'KEYHM_GetMyDayBook', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_GetMyDayBook] END GO CREATE PROCEDURE [dbo].[KEYHM_GetMyDayBook] (@FECode VARCHAR(10), @Post CHAR(1) = 'N', @Handler NVARCHAR(10), @Key NVARCHAR(100), @SearchText VARCHAR(4000) = '', @PageNumber INT = NULL, @PageSize INT = NULL, @SortColumn VARCHAR(50) = NULL, @SortDirection VARCHAR(10) = NULL) AS /******************************************************************************************************* * Gets the Day Book * * * * Stored Procedure Name : [dbo].[KEYHM_GetMyDayBook] * * Copied from : [dbo].[ky_NETGetMyDayBook] * * * * Modification History: * * 2019-04-23 Vinodhan K Created * * 2019-07-02 Vinodhan K Case Time format has been modifed to "00:00" * *******************************************************************************************************/ BEGIN DECLARE @StartRow INT; DECLARE @EndRow INT; SET @PageNumber = ISNULL(@PageNumber, 0) - 1; -- 0 BASED INDEX IF(@PageNumber > -1) BEGIN SET @StartRow = ((@PageNumber) * @PageSize) + 1; SET @EndRow = (@StartRow + @PageSize) - 1; END IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END DECLARE @DayBookValue INT SELECT @DayBookValue = ISNULL(SUM([TDB].[Time]), 0) FROM [dbo].[Timedaybook] [TDB] WITH (NOLOCK) WHERE [TDB].[FeeEarn] = @FECode IF(@DayBookValue = 0) BEGIN SET @DayBookValue=1 END DECLARE @DAYBOOK TABLE ([Row_Number] INT IDENTITY(1, 1) NOT NULL, [Time] INT NOT NULL, [CaseTime] VARCHAR(60) NOT NULL, [MatterDetails] VARCHAR(500) NOT NULL, [Progress] INT NOT NULL, [StopwatchStatus] INT NOT NULL, [RecordID] INT NOT NULL PRIMARY KEY, [DATE] DATETIME NOT NULL, [MATTER] VARCHAR(20) NOT NULL, [DisplayMatter] VARCHAR(20) NOT NULL, [Name] VARCHAR(256) NOT NULL, [COMMENT] VARCHAR(1000) NOT NULL, [CHARGE] DECIMAL(10, 2) NOT NULL, [TimeOrCharge] VARCHAR(1) NOT NULL, [Post] VARCHAR(1) NOT NULL) DECLARE @DAYBOOKSUM TABLE ([id] INT IDENTITY(1, 1) NOT NULL PRIMARY KEY, [RecordID] INT NOT NULL, [Time] INT NOT NULL, [OriginalTime] INT NOT NULL, [TotalTimeMinusOne] INT NOT NULL) INSERT INTO @DAYBOOK ([Time], [CaseTime], [MatterDetails], [Progress], [StopwatchStatus], [RecordID], [DATE], [MATTER], [DisplayMatter], [Name], [COMMENT], [CHARGE], [TimeOrCharge], [Post]) SELECT [TDB].[Time], CASE WHEN [TDB].[Time] < 0 THEN '-' ELSE '' END + --RIGHT('00' + CAST(FLOOR(ABS([TDB].[Time]) / 60) AS VARCHAR), 3) --SUBSTRING(CONVERT(VARCHAR, FLOOR(ABS([TDB].[Time]) / 60)), LEN(CONVERT(VARCHAR, FLOOR(ABS([TDB].[Time]) / 60))) - 1, 2) CASE WHEN LEN(FLOOR(ABS([TDB].[Time]) / 60)) < 2 THEN '0' + CAST(FLOOR(ABS([TDB].[Time])) / 60 AS VARCHAR) ELSE CAST(FLOOR(ABS([TDB].[Time])) / 60 AS VARCHAR) END + ':' + SUBSTRING ( CONVERT(VARCHAR, 100 + ABS([TDB].[Time]) % 60), LEN(CONVERT(VARCHAR, 100 + ABS([TDB].[Time]) % 60)) - 1, 2 ) AS [CaseTime], [dbo].[KEYHM_FN_RemoveSpuriousWhitespace] --2018-03-12 ( RTRIM(ISNULL([CON].[Name], '')) + ' ' + RTRIM(ISNULL([MAT].[Description], '')), 500 ) AS [MatterDetails], 0 AS [Progress], ISNULL([TDB].[StopwatchStatus], 0) AS [StopwatchStatus], [TDB].[RecordID] AS [RecordID], [TDB].[Date] AS [DATE], [TDB].[Matter] AS [Matter], CASE WHEN [TDB].[Matter] = '~' THEN 'Admin Time' ELSE [TDB].[Matter] END AS [DisplayMatter], RTRIM(ISNULL([CON].[Name],'')) AS [Name], RTRIM(ISNULL([TDB].[Comment], '')) AS [COMMENT], [TDB].[Charge] AS [CHARGE], UPPER([TDB].[TimeOrCharge]) AS [TimeorCharge], CASE WHEN RTRIM(UPPER(ISNULL([TDB].[Post], ''))) = 'N' THEN 'N' ELSE 'Y' END AS [Post] FROM [dbo].[TimeDayBook] [TDB] WITH (NOLOCK) LEFT OUTER JOIN [dbo].[matters] [MAT] WITH (NOLOCK) ON [MAT].[Code] = [TDB].[Matter] LEFT OUTER JOIN [dbo].[Contacts] [CON] WITH (NOLOCK) ON [CON].[Code] = [MAT].[ClientCode] WHERE ( RTRIM(ISNULL([CON].[Name],'')) LIKE '%' + @SearchText + '%' OR RTRIM(ISNULL([MAT].[Description],'')) LIKE '%' + @SearchText + '%' OR RTRIM(ISNULL([TDB].[Matter],'')) LIKE '%' + @SearchText + '%' OR RTRIM(ISNULL([TDB].[Comment],'')) LIKE '%' + @SearchText + '%' ) AND [TDB].[FeeEarn] = @FECode AND ISNULL([TDB].[Post], 'Y') IN ('Y', @Post) ORDER BY [TDB].[RecordID] INSERT INTO @DAYBOOKSUM ([RecordID], [Time], [OriginalTime], [TotalTimeMinusOne]) SELECT [TDB].[RecordID], 0, ISNULL([TDB].[Time], 0), 0 FROM @DAYBOOK [TDB] ORDER BY [TDB].[RecordID] DECLARE @TOTALTIME INT SET @TOTALTIME = 0 UPDATE [DBS] SET @TOTALTIME = @TOTALTIME + ISNULL([DBSPREV].[OriginalTime], 0), [DBS].[TotalTimeMinusOne] = @TOTALTIME FROM @DAYBOOKSUM [DBS] LEFT OUTER JOIN @DAYBOOKSUM [DBSPREV] ON [DBSPREV].[id] = [DBS].[id] - 1 UPDATE [DBS] SET [DBS].[Time] = [DBS].[OriginalTime] + [DBS].[TotalTimeMinusOne] FROM @DAYBOOKSUM [DBS] -- This will guarantee that the percentages in [Progress] will always add up to exactly 100 UPDATE [TDB] SET [TDB].[Progress] = CONVERT(INT, ROUND((CONVERT(FLOAT, [TDBS].[Time]) / CONVERT(FLOAT, @DayBookValue)) * CONVERT(FLOAT, 100), 0)) --The current cumulative percentage - CONVERT(INT, ROUND((CONVERT(FLOAT, [TDBS].[Time] - [TDB].[Time]) / CONVERT(FLOAT, @DayBookValue)) * CONVERT(FLOAT, 100), 0)) -- minus the last cumulative percentage FROM @DAYBOOKSUM [TDBS] INNER JOIN @DAYBOOK [TDB] ON [TDB].[RecordID] = [TDBS].[RecordID] --CROSS APPLY (SELECT ISNULL(SUM([TDBP].[Time]), 0) AS [Time] -- FROM @DAYBOOK [TDBP] -- WHERE [TDBP].[RecordID] <= [TDB].[RecordID]) [TDBS] SELECT [TDB].[Row_Number], [TDB].[Time], [TDB].[CaseTime], [TDB].[MatterDetails], [TDB].[Progress], [TDB].[StopwatchStatus], [TDB].[RecordID], CONVERT(NVARCHAR(30),[TDB].[DATE],23) AS [DATE], [TDB].[MATTER], [TDB].[DisplayMatter], [TDB].[Name], [TDB].[COMMENT], [TDB].[CHARGE], [TDB].[TimeOrCharge], [TDB].[Post] FROM @DAYBOOK [TDB] WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) ORDER BY CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Row_Number' THEN [Row_Number] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Row_Number' THEN [Row_Number] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Date' THEN [DATE] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Date' THEN [DATE] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'DisplayMatter' THEN [DisplayMatter] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'DisplayMatter' THEN [DisplayMatter] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Name' THEN [Name] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'MatterDetails' THEN [MatterDetails] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'MatterDetails' THEN [MatterDetails] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Comment' THEN [Comment] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Charge' THEN [Charge] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'CaseTime' THEN [CaseTime] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'CaseTime' THEN [CaseTime] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Progress' THEN [Progress] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Progress' THEN [Progress] END END DESC SELECT [TDB].[Rec_Irr] AS [ChargeType], CASE WHEN SUM([TDB].[Time]) < 0 THEN '-' ELSE '' END + CASE WHEN ABS(FLOOR(SUM([TDB].[Time]) / 60.0)) < 10 THEN '0' ELSE '' END + CONVERT(VARCHAR, ABS(FLOOR(SUM([TDB].[Time]) / 60))) + ':' + RIGHT('00' + CONVERT(VARCHAR, ABS(FLOOR(SUM([TDB].[Time]))) % 60), 2) AS [CaseTime] FROM [dbo].[TimeDayBook] [TDB] WITH (NOLOCK) WHERE [TDB].[FeeEarn] = @FECode AND ISNULL([TDB].[Post], 'Y') IN ('Y', @Post) GROUP BY [TDB].[Rec_Irr] ORDER BY [TDB].[Rec_Irr] SELECT @DayBookValue AS DayBookValue EXECUTE [dbo].[KEYHM_GetUserSettings] @Handler, @Key SELECT COUNT([Row_Number]) FROM @DAYBOOK END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = 'KEYHM_GetNextActionID' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetNextActionID] END GO CREATE PROCEDURE [dbo].[KEYHM_GetNextActionID] AS /******************************************************************************************************* * Dummy Procedure in preparation for the use of the DiarySeed table * * * * Stored Procedure Name : [dbo].[KEYHM_GetNextActionID] * * Copied from : [dbo].[ky_NETGetNextActionID] * * * * Modification History : * * 2019-04-11 Vinodhan K Created * *******************************************************************************************************/ BEGIN --Old code START --DECLARE @nextVAL INT --DECLARE @delVAL INT --SELECT @nextVAL = ISNULL(MAX(DIA.[ActionID]), 0) + 1 -- FROM [dbo].[diary] DIA --SELECT @delVAL = ISNULL(MAX(DIA.[ActionID]), 0) + 1 -- FROM [dbo].[DiaryDeletionLog] DIA --IF (@delVAL > @nextVAL) -- BEGIN -- SET @nextVAL = @delVAL -- END --RETURN @nextVAL --Old code END DECLARE @MaxActionID INT DECLARE @bsuccess BIT SET @bsuccess = 0 WHILE (@bsuccess = 0) BEGIN BEGIN TRY INSERT INTO [dbo].[diaryids] DEFAULT VALUES SET @MaxActionID = SCOPE_IDENTITY() SET @bsuccess = 1 END TRY BEGIN CATCH SET @bsuccess = 0 END CATCH END -- This while loop handles the possibility that a piece of legacy code uses the OLD mechanism WHILE EXISTS (SELECT TOP 1 1 FROM [dbo].[diary] [DIA] WHERE [DIA].[ACTIONID] = @MaxActionID) BEGIN SET @bsuccess = 0 WHILE (@bsuccess = 0) BEGIN BEGIN TRY INSERT INTO [dbo].[diaryids] DEFAULT VALUES SET @MaxActionID = SCOPE_IDENTITY() SET @bsuccess = 1 END TRY BEGIN CATCH SET @bsuccess = 0 END CATCH END END DELETE [dbo].[diaryids] RETURN @MaxActionID END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetNextDocumentVersion' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetNextDocumentVersion] END GO CREATE PROCEDURE [dbo].[KEYHM_GetNextDocumentVersion] (@TrackReference INT, @Comment VARCHAR(MAX)) AS /************************************************************************************************************* * * * [dbo].[KEYHM_GetNextDocumentVersion] * * * * Inserts a row for the next version of a document and return the new row including the id. After calling * * this procedure the calling software will copy files to their new locations, and if that fails it will * * delete the newly created line as a "rollback" using ky_NETSPDeleteDocumentVersion * * * * Compatibility information - PLEASE update older versions if necessary to ensure the compatible software * * remains fully functional * * ***************************************************************************************************** * * * * * * * Supersedes: - * * * * First compatible version: 5.5.1.2 * * * * Last compatible software version: - * * * * Superseded by: - * * * * * * * ***************************************************************************************************** * * * * Modification History * * 2017-06-30 Pino Carafa Created * * 2017-10-02 Pino Carafa Access Logging * * 2019-03-20 Pino Carafa Azure compatibility * * 2019-10-09 John Ginnane KEYD-6197 - Replaced sysprocesses code with function * * 2020-10-19 Pino Carafa Make sure it doesn't try to write a null timestamp * * 2021-01-22 Kowshik.R Stored Procedure taken from ky_NETSPGetNextDocumentVersion * *************************************************************************************************************/ BEGIN SET NOCOUNT ON DECLARE @MaxVersion INT DECLARE @FilePath VARCHAR(255) SELECT @MaxVersion = ISNULL(MAX([DATV].[Version]), 0) FROM [dbo].[DiaryAttachments] [DAT] LEFT OUTER JOIN [dbo].[DiaryAttachmentVersioning] [DATV] ON [DATV].[TrackReference] = [DAT].[TrackReference] WHERE [DAT].[TrackReference] = @TrackReference SELECT @FilePath = CASE WHEN UNC.[UNC] IS NULL THEN RTRIM(ISNULL(ISNULL([DXR].[FilePath], [DAT].[FilePath]), '')) ELSE UNC.[UNC] + SUBSTRING(RTRIM(ISNULL(ISNULL([DXR].[FilePath], [DAT].[FilePath]), '')), 3, LEN(RTRIM(ISNULL(ISNULL([DXR].[FilePath], [DAT].[FilePath]), ''))) - 2) END FROM [dbo].[DiaryAttachments] [DAT] LEFT OUTER JOIN [dbo].[DAIMXRef] [DXR] ON [DXR].[TrackReference] = [DAT].[TrackReference] LEFT OUTER JOIN [dbo].[UNCAlias] UNC ON SUBSTRING(ISNULL([DXR].[FilePath], [DAT].[FilePath]), 2, 1) = ':' AND UNC.[Drive] = SUBSTRING(ISNULL([DXR].[FilePath], [DAT].[FilePath]), 1, 1) WHERE [DAT].[TrackReference] = @TrackReference SELECT @FilePath = REVERSE(@FilePath) DECLARE @DOTPOS INT SET @DOTPOS = CHARINDEX('.', @FilePath) IF @DOTPOS = 0 BEGIN SET @FilePath = REVERSE(@FilePath) + '_V' + CONVERT(VARCHAR, @MaxVersion) END ELSe BEGIN SET @FilePath = REVERSE(SUBSTRING(@FilePath, @DOTPOS + 1, LEN(@FilePath) - @DotPos)) + '_V' + CONVERT(VARCHAR, @MaxVersion + 1) + REVERSE(SUBSTRING(@FilePath, 1, @DOTPOS)) END DECLARE @Handler VARCHAR(10) SET @Handler = [dbo].[ky_NETFNGetLoggedOnHandler]() INSERT INTO [dbo].[DiaryAttachmentAccess] ([TrackReference], [Handler], [Comment]) SELECT @TrackReference, @Handler, 'Inserted New Version ' + Convert(VARCHAR(10), @MaxVersion + 1) FROM [dbo].[DiaryAttachments] [DAT] WHERE [DAT].[TrackReference] = @TrackReference INSERT INTO [dbo].[DiaryAttachmentVersioning] ([TrackReference], [IMDocID], [Version], [FilePath], [Comments], [TimeStamp], [Handler]) SELECT [DAT].[TrackReference] AS [TrackReference], ISNULL([DXR].[IMDocID], '') AS [IMDocID], @MaxVersion + 1 AS [Version], @FilePath AS [FILEPATH], @Comment AS [Comments], ISNULL(ISNULL([DAT].[LASTACCESSDATE], [DAT].[DATEENTERED]), GETDATE()) AS [TimeStamp], [DAT].[ENTEREDBY] AS [Handler] FROM [dbo].[DiaryAttachments] [DAT] LEFT OUTER JOIN [dbo].[DAIMXRef] [DXR] ON [DXR].[TrackReference] = [DAT].[TrackReference] WHERE [DAT].[TrackReference] = @TrackReference SELECT TOP 1 [DATV].[id], [DATV].[TrackReference], [DATV].[IMDocID], [DATV].[Version], [DATV].[Comments], [DATV].[FilePath], [DATV].[TimeStamp], [DATV].[Handler] FROM [dbo].[DiaryAttachmentVersioning] [DATV] WHERE [DATV].[TrackReference] = @TrackReference ORDER BY [DATV].[Version] DESC SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetNextTrackReferenceInDiaryAttachments' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetNextTrackReferenceInDiaryAttachments] END GO CREATE PROCEDURE [dbo].[KEYHM_GetNextTrackReferenceInDiaryAttachments] AS /******************************************************************************************************* * Gets next available track referene number * * * * Stored Procedure Name : [dbo].[KEYHM_GetNextTrackReferenceInDiaryAttachments] * * Copied from : [dbo].[spGetNextTrackReferenceInDiaryAttachments] * * * * Modification History : * * 2019-04-10 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @TrackReference INT EXEC @TrackReference = [dbo].[ky_NETGetNextTrackReference] SELECT @TrackReference AS [TRACKREFERENCE] --SELECT -- ISNULL(MAX(TRACKREFERENCE), 0)+1 AS TRACKREFERENCE --FROM -- dbo.DiaryAttachments --ORDER BY TRACKREFERENCE DESC END GO IF OBJECT_ID(N'KEYHM_GetTaskList',N'P')IS NOT NULL DROP PROCEDURE KEYHM_GetTaskList GO CREATE PROCEDURE [dbo].[KEYHM_GetTaskList] (@HandlerID VARCHAR(10) = NULL, @FromDate DATETIME = NULL, @ToDate DATETIME = NULL, @TaskListMode BIT, @TeamID VARCHAR(10) = NULL, @IsOutstandingOnly BIT = 1, @BitWiseID BIGINT, @From INT = 0, @To INT = 5000, @TaskType VARCHAR(20) = '', @PageNumber INT = NULL, @PageSize INT = NULL, @SearchText VARCHAR(4000) = NULL, @ActionType VARCHAR(4000) = NULL, @Priority VARCHAR(4000) = NULL, @Flag VARCHAR(4000) = NULL, @SortColumn VARCHAR(50) = NULL, @SortDirection VARCHAR(10) = NULL, @TotalRecords INT = 1 OUT, @userprompt1 VARCHAR(MAX) = 'USERPROMPT1' OUT, @userprompt2 VARCHAR(MAX) = 'USERPROMPT2' OUT, @userprompt3 VARCHAR(MAX) = 'USERPROMPT3' OUT) AS /***************************************************************************************************************** * * * Get the task list for the framework's main Task screen * * * * Stored Procedure Name : [dbo].[KEYHM_GetTaskList] * * Copied from : [dbo].[ky_NETGetTaskList] * * * * Modification History: * * 2018-12-03 Vinodhan K Created * * 2019-01-29 Vinodhan K Paging added * * 2019-04-09 Vinodhan K Sorting of few columns have been implemeneted * * 2019-04-30 Arun V KEYHM-402 Issue corrected. If SortColumn and SortDirection not * specified then make these column as empty string, so sorting will not * perform. default sorting condition will apply. * ORDER BY DEL.[HANDLER] DESC, * DEL.[DATE] DESC, * DEL.[TIME] DESC, * DEL.[AssignNo] DESC * * 2019-11-18 Vinodhan K FNName will be fecthed from [Handlers] table instead of [FeeEarnerCodes] * * 2020-03-19 Prabhu V SP Optimized * * 2020-03-28 Prabhu V Optimized SP not working properly for Outstanding and Over due tasks * Issue Fixed * * 2020-03-30 Ganapathy T Like Search functionality implemented * * 2020-04-08 Prabhu V SP Optimized to Load Data with in a second * * 2020-05-04 Arun randomly record got changed issue fixed.KEYHM-588 * * * ******************************************************************************************************************/ BEGIN --Insert into LogTable(LogInfo, Module) values --( --'@HandlerID '+isnull(convert(nvarchar(500), @HandlerID ),'')+ --'@FromDate '+isnull(convert(nvarchar(500), @FromDate ),'')+ --'@ToDate '+isnull(convert(nvarchar(500), @ToDate ),'')+ --'@TaskListMode '+isnull(convert(nvarchar(500), @TaskListMode ),'')+ --'@TeamID '+isnull(convert(nvarchar(500), @TeamID ),'')+ --'@IsOutstandingOnly '+isnull(convert(nvarchar(500), @IsOutstandingOnly ),'')+ --'@BitWiseID '+isnull(convert(nvarchar(500), @BitWiseID ),'')+ --'@From '+isnull(convert(nvarchar(500), @From ),'')+ --'@To '+isnull(convert(nvarchar(500), @To ),'')+ --'@TaskType '+isnull(convert(nvarchar(500), @TaskType ),'')+ --'@PageNumber '+isnull(convert(nvarchar(500), @PageNumber ),'')+ --'@PageSize '+isnull(convert(nvarchar(500), @PageSize ),'')+ --'@SearchText '+isnull(convert(nvarchar(500), @SearchText ),'')+ --'@ActionType '+isnull(convert(nvarchar(500), @ActionType ),'')+ --'@Priority '+isnull(convert(nvarchar(500), @Priority ),'')+ --'@Flag '+isnull(convert(nvarchar(500), @Flag ),'')+ --'@SortColumn '+isnull(convert(nvarchar(500), @SortColumn ),'')+ --'@SortDirection '+isnull(convert(nvarchar(500), @SortDirection ),'')+ --'@TotalRecords '+isnull(convert(nvarchar(500), @TotalRecords ),'')+ --'@userprompt1 '+isnull(convert(nvarchar(500), @userprompt1 ),'')+ --'@userprompt2 '+isnull(convert(nvarchar(500), @userprompt2 ),'')+ --'@userprompt3 '+isnull(convert(nvarchar(500), @userprompt3 ),'') --,'My Task') DECLARE @StartRow INT; DECLARE @EndRow INT; IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = '' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = '' END IF REPLACE(RTRIM(ISNULL(@SearchText, '')), '%', '') = '' BEGIN SET @SearchText = NULL END IF @SearchText IS NOT NULL AND CHARINDEX('%', @SearchText) = 0 BEGIN SET @SearchText = '%' + @SearchText + '%'; END SET NOCOUNT ON DECLARE @ShowFromToSynopsis BIT SET @ShowFromToSynopsis = CASE WHEN ISNULL((SELECT TOP 1 [SET].[KeyValue] FROM [dbo].[Settings] [SET] WHERE [SET].[KeyName] = 'ShowFromToSynopsis'), 'True') = 'False' THEN 0 ELSE 1 END SET @BitWiseID = ISNULL(@BitWiseID, CONVERT(BIGINT, 0)) DECLARE @DELS TABLE( [ID] INT NOT NULL IDENTITY(1,1), [DATE] DATETIME, [TIME] VARCHAR(10) , [AssignNo] INT , [ACTIONID] INT , [STATUS] SMALLINT, [HANDLER] VARCHAR(10) , [TEAM] VARCHAR(10) , [FromHandler] VARCHAR(10) , [DelType] VARCHAR(15) , [OWNER] CHAR(1) , [DELEGATESTATUS] SMALLINT , [PRIORITY] VARCHAR(1), [diaryDATE] DATETIME, [CASECODE] VARCHAR(20), [DisplayText] VARCHAR(200), [diarySTATUS] SMALLINT, [HIGHLIGHTED] VARCHAR(1), [diaryACTIONID] INT, [PROCESSSTATUS] SMALLINT, [DELEGATIONSTATUS] INT , [WORKPROCESS] SMALLINT, [IMAGENO] INT, [Flag] TINYINT, [ACTIONTYPE] VARCHAR(1) , [PROCESSTYPE] VARCHAR(1), [EMAILADDRESS] VARCHAR(150), [Subject] VARCHAR(500), [AddressTo] VARCHAR(2000), [TEXT1] VARCHAR(max), [DUEDATE] DATETIME, [ACTIONCODE] VARCHAR(15), [DRAFTBILLNO] INT, [DYStartTime] VARCHAR(10), [DYENDTIME] VARCHAR(10), [CreationDate] DATETIME, [Delegatedfnr] VARCHAR(10), [ACTIONSTATUS] VARCHAR(3) , [FNCODE] VARCHAR(10), [User1] VARCHAR(100), [User2] VARCHAR(100), [User3] VARCHAR(100), [YourRef] VARCHAR(100), [OldRef] VARCHAR(12), [Description] VARCHAR(200), [ChargeArrangement] CHAR(3), [ClientCode] VARCHAR(8), [FileColour] CHAR(3), [FECode] VARCHAR(10), [Secretary] VARCHAR(10), [Partner] VARCHAR(10), [Synopsis] VARCHAR(max), [TotalRowsCount] Int) INSERT into @DELS SELECT ISNULL([DEL].[DATE], '18000101') DATE, ISNULL([DEL].[TIME], '') TIME, [DEL].[AssignNo], [DEL].[ACTIONID], ISNULL([DEL].[STATUS], 0) STATUS, [DEL].[HANDLER], [DEL].[TEAM], [DEL].[FromHandler], [DEL].[DelType], [DEL].[OWNER], [DEL].[DELEGATESTATUS], [DIA].[PRIORITY], [DIA].[DATE] AS diaryDATE, [DIA].[CASECODE], [DIA].[DisplayText], [DIA].[STATUS] AS diarySTATUS, [DIA].[HIGHLIGHTED], [DIA].[ACTIONID] AS diaryACTIONID, [DIA].[PROCESSSTATUS], [DIA].[DELEGATIONSTATUS], [DIA].[WORKPROCESS], [DIA].[IMAGENO], [DIA].[Flag], [DIA].[ACTIONTYPE], [DIA].[PROCESSTYPE], [DIA].[EMAILADDRESS], [DIA].[Subject], [DIA].[AddressTo], [DIA].[TEXT1], [DIA].[DUEDATE], [DIA].[ACTIONCODE], [DIA].[DRAFTBILLNO], [DIA].[DYStartTime], [DIA].[DYENDTIME], [DIA].[CreationDate], [DIA].[Delegatedfnr], [DIA].[ACTIONSTATUS], [DIA].[FNCODE], [MAT].[User1], [MAT].[User2], [MAT].[User3], [MAT].[YourRef], [MAT].[OldRef], [MAT].[Description], [MAT].[ChargeArrangement], [MAT].[ClientCode], [MAT].[FileColour], [MAT].[FECode], [MAT].[Secretary], [MAT].[Partner], CASE WHEN RTRIM(ISNULL([DIA].[ACTIONTYPE], '')) = 'E' AND @ShowFromToSynopsis = 1 THEN CASE WHEN ISNULL([DIA].[PROCESSTYPE], 'O') = 'I' THEN 'Email From:' + (RTRIM(ISNULL(CAST([DIA].[EMAILADDRESS] AS VARCHAR(50)),''))) + ' - ' + ISNULL(CAST ([DIA].[Subject] AS VARCHAR(MAX)),'') ELSE 'Email To:' + RTRIM(CAST(ISNULL([DIA].[AddressTo],'') AS VARCHAR(50))) + ' - ' + ISNULL(CAST ([DIA].[Subject] AS VARCHAR(MAX)),'') END ELSE CASE WHEN [DIA].[SUBJECT] IS NULL OR RTRIM(CAST([DIA].[SUBJECT] AS VARCHAR(max))) = '' OR DATALENGTH([DIA].[SUBJECT]) = 0 THEN CASE WHEN SUBSTRING([DIA].[DisplayText],0,CHARINDEX (CHAR(13),[DIA].[DisplayText])) = '' THEN ISNULL([DIA].[TEXT1],'') ELSE SUBSTRING([DIA].[DisplayText],0,CHARINDEX (CHAR(13),[DIA].[DisplayText])) END ELSE [DIA].[SUBJECT] END END AS [Synopsis], Count(1) Over() as TotalRowsCount FROM [dbo].[DiaryDelegations] DEL WITH(NOLOCK) INNER JOIN [dbo].[diary] DIA WITH(NOLOCK) ON [DIA].[ACTIONID] = [DEL].[ACTIONID] INNER JOIN [dbo].[matters] MAT WITH(NOLOCK) ON [MAT].[Code] = DIA.[CASECODE] AND [MAT].[Closed] = 'N' LEFT OUTER JOIN [dbo].[MatterNETPrivileges] MNP WITH(NOLOCK) ON [MNP].[MATTER] = [MAT].[Code] LEFT OUTER JOIN [dbo].[Handlers] [HAN] WITH(NOLOCK) ON [HAN].[CODE] = [DIA].[FNCODE] INNER JOIN [dbo].[Contacts] CON WITH(NOLOCK) ON [CON].[Code] = [MAT].ClientCode WHERE ( (ISNULL(@TaskListMode, 0) = 1 AND [DEL].[HANDLER] = @HandlerID) OR (ISNULL(@TaskListMode, 0) = 0 AND [DEL].[TEAM] = @TeamID)) AND [DEL].[DelType] NOT IN ('Completed', 'Processed', 'Returned') AND [DEL].[DATE] >= CONVERT(DATETIME, @FromDate) AND (CASE WHEN @TaskType = 'OUTSTANDING' THEN 1 WHEN (CASE WHEN @TaskType = 'OVERDUE' THEN DATEADD(DAY, 1, CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 112))) WHEN @TaskType != 'OUTSTANDING' THEN DATEADD(DAY, 1, CONVERT(DATETIME, @ToDate)) END) > DEL.[DATE] THEN 1 ELSE 0 END) = 1 AND ( ((ISNULL(@IsOutstandingOnly, 1) <> 0 AND [DEL].[STATUS] = 0) ) OR ISNULL(@IsOutstandingOnly, 1) = 0) AND (ISNULL([MNP].[Privileges], CONVERT(BIGINT, -1)) & CONVERT(BIGINT, @BitWiseID)<> 0 OR ISNULL([MNP].[Privileges], CONVERT(BIGINT, 0)) = 0) AND ( RTRIM(LTRIM(ISNULL(@SearchText, ''))) = '' OR ( (CASE WHEN RTRIM(ISNULL([DIA].[ACTIONTYPE], '')) = 'E' AND @ShowFromToSynopsis = 1 THEN CASE WHEN ISNULL([DIA].[PROCESSTYPE], 'O') = 'I' THEN 'Email From:' + (RTRIM(ISNULL(CAST([DIA].[EMAILADDRESS] AS VARCHAR(50)),''))) + ' - ' + ISNULL(CAST ([DIA].[Subject] AS VARCHAR(MAX)),'') ELSE 'Email To:' + RTRIM(CAST(ISNULL([DIA].[AddressTo],'') AS VARCHAR(50))) + ' - ' + ISNULL(CAST ([DIA].[Subject] AS VARCHAR(MAX)),'') END ELSE CASE WHEN [DIA].[SUBJECT] IS NULL OR RTRIM(CAST([DIA].[SUBJECT] AS VARCHAR(max))) = '' OR DATALENGTH([DIA].[SUBJECT]) = 0 THEN CASE WHEN SUBSTRING([DIA].[DisplayText],0,CHARINDEX (CHAR(13),[DIA].[DisplayText])) = '' THEN ISNULL([DIA].[TEXT1],'') ELSE SUBSTRING([DIA].[DisplayText],0,CHARINDEX (CHAR(13),[DIA].[DisplayText])) END ELSE [DIA].[SUBJECT] END END) LIKE @SearchText OR RTRIM(ISNULL([DIA].[DisplayText], '')) LIKE @SearchText OR CONVERT(DATETIME, CONVERT(VARCHAR, ISNULL([DEL].[DATE], '18000101'), 112) + ' ' + CONVERT(VARCHAR, ISNULL([DEL].[DATE], '18000101'), 108)) LIKE @SearchText OR RTRIM(ISNULL([HAN].[Name], '')) LIKE @SearchText OR RTRIM(ISNULL([DIA].[CASECODE],'')) LIKE @SearchText OR RTRIM(ISNULL([DEL].[HANDLER],'')) LIKE @SearchText OR RTRIM(ISNULL([DEL].[TEAM],'')) LIKE @SearchText OR RTRIM(ISNULL([CON].[Name],'')) + CHAR(13) + RTRIM(ISNULL([MAT].[Description],'')) LIKE @SearchText ) ) AND ( ISNULL(@ActionType, '') = '' OR ( ( CASE WHEN ISNULL(LTRIM(RTRIM([DIA].[ACTIONTYPE])), '') = '' THEN 'A' ELSE [DIA].[ACTIONTYPE] END ) IN (SELECT RTRIM(LTRIM([Item])) FROM KEYHM_FN_SplitString(@ActionType, ',')) ) ) AND ( ISNULL(@Priority, '') = '' OR ( [DIA].[PRIORITY] IN (SELECT RTRIM(LTRIM([Item])) FROM KEYHM_FN_SplitString(@Priority, ',')) ) ) AND ( ISNULL(@Flag, '') = '' OR ( ISNULL([DIA].[Flag],0) IN (SELECT RTRIM(LTRIM([Item])) FROM KEYHM_FN_SplitString(@Flag, ',')) ) ) ORDER BY [DEL].[HANDLER] DESC, [DEL].[DATE] DESC, [DEL].[TIME] DESC, [DEL].[AssignNo] DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'CompleteOrGeneratedD' THEN (CASE WHEN ISNULL([DIA].[WORKPROCESS],0) = 1 AND ISNULL([DIA].[STATUS], 0) <> 1 THEN 'G' WHEN ISNULL([DEL].[STATUS], 0) = 1 THEN 'C' ELSE '' END) END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'CompleteOrGeneratedD' THEN (CASE WHEN ISNULL([DIA].[WORKPROCESS],0) = 1 AND ISNULL([DIA].[STATUS], 0) <> 1 THEN 'G' WHEN ISNULL([DEL].[STATUS], 0) = 1 THEN 'C' ELSE '' END) END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'ActionType' THEN [DIA].[ACTIONTYPE] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'ActionType' THEN [DIA].[ACTIONTYPE] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'DelegationStatus' THEN [DIA].[DelegationStatus] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'DelegationStatus' THEN [DIA].[DelegationStatus] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Priority' THEN [DIA].[Priority] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Priority' THEN [DIA].[Priority] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Date1' THEN (CASE WHEN ISNULL(DEL.[DATE], '18000101') != NULL OR ISNULL(DEL.[DATE], '18000101') != '' THEN CONVERT(VARCHAR, ISNULL(DEL.[DATE], '18000101'), 20) ELSE '1900-01-01' END) END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Date1' THEN (CASE WHEN ISNULL(DEL.[DATE], '18000101') != NULL OR ISNULL(DEL.[DATE], '18000101') != '' THEN CONVERT(VARCHAR, ISNULL(DEL.[DATE], '18000101'), 20) ELSE '1900-01-01' END) END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Time' THEN [DEL].[Time] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Time' THEN [DEL].[Time] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'CaseCode' THEN [DIA].[CaseCode] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'CaseCode' THEN [DIA].[CaseCode] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Handler' THEN [DEL].[Handler] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Handler' THEN [DEL].[Handler] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Team' THEN RTRIM(ISNULL([DEL].[TEAM],'')) END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Team' THEN RTRIM(ISNULL([DEL].[TEAM],'')) END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'ClientCase' THEN RTRIM(ISNULL([CON].[Name],'')) + CHAR(13) + RTRIM(ISNULL([MAT].[Description],'')) END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'ClientCase' THEN RTRIM(ISNULL([CON].[Name],'')) + CHAR(13) + RTRIM(ISNULL([MAT].[Description],'')) END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'Synopsis' THEN (CASE WHEN RTRIM(ISNULL([DIA].[ACTIONTYPE], '')) = 'E' AND @ShowFromToSynopsis = 1 THEN CASE WHEN ISNULL([DIA].[PROCESSTYPE], 'O') = 'I' THEN 'Email From:' + (RTRIM(ISNULL(CAST([DIA].[EMAILADDRESS] AS VARCHAR(50)),''))) + ' - ' + ISNULL(CAST ([DIA].[Subject] AS VARCHAR(MAX)),'') ELSE 'Email To:' + RTRIM(CAST(ISNULL([DIA].[AddressTo],'') AS VARCHAR(50))) + ' - ' + ISNULL(CAST ([DIA].[Subject] AS VARCHAR(MAX)),'') END ELSE CASE WHEN [DIA].[SUBJECT] IS NULL OR RTRIM(CAST([DIA].[SUBJECT] AS VARCHAR(max))) = '' OR DATALENGTH([DIA].[SUBJECT]) = 0 THEN CASE WHEN SUBSTRING([DIA].[DisplayText],0,CHARINDEX (CHAR(13),[DIA].[DisplayText])) = '' THEN ISNULL([DIA].[TEXT1],'') ELSE SUBSTRING([DIA].[DisplayText],0,CHARINDEX (CHAR(13),[DIA].[DisplayText])) END ELSE [DIA].[SUBJECT] END END) END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'Synopsis' THEN (CASE WHEN RTRIM(ISNULL(DIA.[ACTIONTYPE], '')) = 'E' AND @ShowFromToSynopsis = 1 THEN CASE WHEN ISNULL(DIA.[PROCESSTYPE], 'O') = 'I' THEN 'Email From:' + (RTRIM(ISNULL(CAST(DIA.[EMAILADDRESS] AS VARCHAR(50)),''))) + ' - ' + ISNULL(CAST (DIA.[Subject] AS VARCHAR(MAX)),'') ELSE 'Email To:' + RTRIM(CAST(ISNULL(DIA.[AddressTo],'') AS VARCHAR(50))) + ' - ' + ISNULL(CAST (DIA.[Subject] AS VARCHAR(MAX)),'') END ELSE CASE WHEN DIA.[SUBJECT] IS NULL OR RTRIM(CAST(DIA.[SUBJECT] AS VARCHAR(max))) = '' OR DATALENGTH(DIA.[SUBJECT]) = 0 THEN CASE WHEN SUBSTRING(DIA.[DisplayText],0,CHARINDEX (CHAR(13),DIA.[DisplayText])) = '' THEN ISNULL(DIA.[TEXT1],'') ELSE SUBSTRING(DIA.[DisplayText],0,CHARINDEX (CHAR(13),DIA.[DisplayText])) END ELSE DIA.[SUBJECT] END END) END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'FileColour' THEN [MAT].[FileColour] END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'FileColour' THEN [MAT].[FileColour] END END DESC, CASE WHEN @SortDirection = 'ASC' THEN CASE @SortColumn WHEN 'DelDate' THEN CONVERT(DATETIME, CONVERT(VARCHAR, ISNULL([DEL].[DATE], '18000101'), 112) + ' ' + CONVERT(VARCHAR, ISNULL([DEL].[DATE], '18000101'), 108)) END END, CASE WHEN @SortDirection = 'DESC' THEN CASE @SortColumn WHEN 'DelDate' THEN CONVERT(DATETIME, CONVERT(VARCHAR, ISNULL([DEL].[DATE], '18000101'), 112) + ' ' + CONVERT(VARCHAR, ISNULL([DEL].[DATE], '18000101'), 108)) END END DESC OFFSET @PageSize * (@PageNumber - 1) ROWS FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE); SELECT [DEL].ID AS [Row_Number], [DEL].[STATUS] AS [DDStatus], CASE WHEN RTRIM(ISNULL([DEL].[PRIORITY], '')) IN ('H', 'L', 'N') THEN UPPER(RTRIM(ISNULL([DEL].[PRIORITY], ''))) ELSE 'N' END AS [Priority], CONVERT(DATETIME,dbo.KEYHM_FNConvertUTCDateToTargetTimeZone([DEL].[DATE], @HandlerID)) AS [DelDate], CONVERT(VARCHAR(5),dbo.KEYHM_FNConvertUTCDateToTargetTimeZone([DEL].[DATE], @HandlerID), 108) AS [Time], RTRIM(ISNULL(DEL.[CASECODE],'')) AS [CaseCode], RTRIM(ISNULL(DEL.[HANDLER],'')) AS [Handler], RTRIM(ISNULL(DEL.[TEAM],'')) AS [Team], RTRIM(ISNULL(DEL.[FromHandler],'')) AS [From], RTRIM(ISNULL(CON.[Name],'')) + CHAR(13) + RTRIM(ISNULL(DEL.[Description],'')) AS [ClientCase], RTRIM(ISNULL(CON.[Name],'')) AS [ClientName], RTRIM(ISNULL(DEL.[DisplayText], '')) as [Action], CASE WHEN DEL.[diaryDATE] != NULL OR DEL.[diaryDATE] != '' THEN CONVERT(VARCHAR, DEL.[diaryDATE], 20) ELSE '1900-01-01' END AS Date1, ISNULL(DEL.[STATUS], 0) as DStatus, RTRIM(ISNULL(DEL.[DelType], '')) AS [DelType], RTRIM(ISNULL(DEL.[ACTIONTYPE],'')) as [ActionType], RTRIM(ISNULL(DEL.[HIGHLIGHTED], '')) as [Highlighted], ISNULL(DEL.diaryACTIONID,0) AS [ActionId], RTRIM(ISNULL(DEL.[FNCODE],'')) AS [FNCode], RTRIM(ISNULL([HAN].[Name], '')) AS [FNName], RTRIM(ISNULL(DEL.[FECode],'')) AS [CaseFe], RTRIM(ISNULL(DEL.[PROCESSTYPE],'')) as [ProcessType], CASE WHEN RTRIM(ISNULL(DEL.[OWNER], 'N')) = 'Y' THEN 'Y' ELSE 'N' END AS [Owner], ISNULL(DEL.[DELEGATESTATUS],0) as [DelegateStatus], ISNULL(DEL.[PROCESSSTATUS],0) as [ProcessStatus], ISNULL(DEL.[WORKPROCESS],0) as [WorkProcess], ISNULL(DEL.[DELEGATIONSTATUS],0) as [DelegationStatus], ISNULL(DEL.[ASSIGNNO], 0) AS [AssignNo], CASE WHEN ISNULL(DEL.[WORKPROCESS],0) = 1 AND ISNULL(DEL.diarySTATUS, 0) <> 1 THEN 'G' WHEN ISNULL(DEL.diarySTATUS, 0) = 1 THEN 'C' ELSE '' END AS [CompleteOrGenerate], CASE WHEN ISNULL(DEL.[WORKPROCESS],0) = 1 AND ISNULL(DEL.diarySTATUS, 0) <> 1 THEN 'G' WHEN ISNULL(DEL.diarySTATUS, 0) = 1 THEN 'C' ELSE '' END AS [CompleteOrGeneratedD], CONVERT(VARCHAR, [dbo].[ky_ConvertDateAndClarionTimeToDateTime](CONVERT(DATETIME, '19000101'), DEL.[IMAGENO]), 108) AS [Duration], ISNULL(DEL.[Flag],0) AS [Flag], CASE WHEN RTRIM(ISNULL(DEL.[ACTIONTYPE], '')) = 'E' AND @ShowFromToSynopsis = 1 THEN CASE WHEN ISNULL(DEL.[PROCESSTYPE], 'O') = 'I' THEN 'Email From:' + (RTRIM(ISNULL(CAST(DEL.[EMAILADDRESS] AS VARCHAR(50)),''))) + ' - ' + ISNULL(CAST (DEL.[Subject] AS VARCHAR(MAX)),'') ELSE 'Email To:' + RTRIM(CAST(ISNULL(DEL.[AddressTo],'') AS VARCHAR(50))) + ' - ' + ISNULL(CAST (DEL.[Subject] AS VARCHAR(MAX)),'') END ELSE CASE WHEN DEL.[SUBJECT] IS NULL OR RTRIM(CAST(DEL.[SUBJECT] AS VARCHAR(max))) = '' OR DATALENGTH(DEL.[SUBJECT]) = 0 THEN CASE WHEN SUBSTRING(DEL.[DisplayText],0,CHARINDEX (CHAR(13),DEL.[DisplayText])) = '' THEN ISNULL(DEL.[TEXT1],'') ELSE SUBSTRING(DEL.[DisplayText],0,CHARINDEX (CHAR(13),DEL.[DisplayText])) END ELSE DEL.[SUBJECT] END END AS [Synopsis], ISNULL(RTRIM(DEL.[User1]),'') AS [User1], ISNULL(RTRIM(DEL.[User2]),'') AS [User2], ISNULL(RTRIM(DEL.[User3]),'') AS [User3], ISNULL(RTRIM(DEL.[YourRef]),'') AS [YourRef], CASE WHEN DEL.[DUEDATE] != NULL OR DEL.[DUEDATE] != '' THEN CONVERT(VARCHAR, DEL.[DUEDATE], 20) ELSE '1900-01-01' END AS [DueDate], CONVERT(VARCHAR(5), DEL.[DUEDATE], 108) AS [DueTime], ISNULL(RTRIM(DEL.[OldRef]),'') AS [OldRef], ISNULL(RTRIM(DEL.[ACTIONCODE]),'') AS [ActionCode], CASE WHEN SSC.[CODE] IS NULL THEN '' ELSE RTRIM(SSC.[CODE]) + ' - ' + RTRIM(ISNULL(SSC.[DESCRIPTION], '')) END AS [ActionStatus], RTRIM(ISNULL(FC.[COLOURDESC], '')) AS [FileColour], CASE WHEN FC.[RGBColour] = -1 THEN 'Transparent' ELSE RTRIM(ISNULL(FC.[ForegroundColour], 'Transparent')) END AS [BackgroundColour], ISNULL(DEL.[DRAFTBILLNO],0) AS [DraftBillNo], ISNULL(TA.[DESC],'') AS [ActionTitle], ISNULL(T.[WKDESC],'') AS [WorkFlow], CASE WHEN ISNUMERIC(DEL.[DYStartTime]) = 0 THEN 0 ELSE ISNULL(CONVERT(INT, CONVERT(DECIMAL, DEL.[DYSTARTTIME])), 0) END AS [DYStartTime], CASE WHEN ISNUMERIC(DEL.[DYEndTime]) = 0 THEN 0 ELSE ISNULL(CONVERT(INT, CONVERT(DECIMAL, DEL.[DYENDTIME])), 0) END AS [DYEndTime], RTRIM(ISNULL(FEE.[NAME], '')) AS [FeeEarner], RTRIM(ISNULL(SEC.[NAME], '')) AS [Secretary], RTRIM(ISNULL(PAR.[NAME], '')) AS [Partner], RTRIM(ISNULL(DEL.[Description], '')) AS [MatterDescription], ISNULL(DEL.[CreationDate],CONVERT(DATETIME, DEL.diaryDATE)) AS [CreationDate], ISNULL(DEL.[Delegatedfnr],'') as DelegatedFE, RTRIM(ISNULL(TA.[Arrangement],'')) AS [Arrangement], RTRIM(ISNULL(DEL.[ChargeArrangement],'')) AS [ChargeArrangement] FROM @DELS DEL INNER JOIN [dbo].[Contacts] CON WITH(NOLOCK) ON CON.[Code] = DEL.[ClientCode] LEFT OUTER JOIN [dbo].[FileColours] FC WITH(NOLOCK) ON FC.[COLOURCODE] = DEL.[FileColour] LEFT OUTER JOIN [dbo].[MatterNETPrivileges] MNP WITH(NOLOCK) ON MNP.[MATTER] = DEL.[CASECODE] LEFT OUTER JOIN [dbo].[Handlers] FEE WITH(NOLOCK) ON FEE.[CODE] = DEL.[FECode] LEFT OUTER JOIN [dbo].[Handlers] SEC WITH(NOLOCK) ON SEC.[CODE] = DEL.[Secretary] LEFT OUTER JOIN [dbo].[Handlers] PAR WITH(NOLOCK) ON PAR.[CODE] = DEL.[Partner] LEFT OUTER JOIN [dbo].[StatusCodes] SSC WITH(NOLOCK) ON SSC.[CODE] = DEL.[ACTIONSTATUS] LEFT OUTER JOIN [TemplateActions] TA WITH(NOLOCK) ON TA.[ACTIONCODE] =DEL.[ACTIONCODE] LEFT OUTER JOIN [Templates] T WITH(NOLOCK) ON T.[WKCODE] = TA.[WKTCODE] LEFT OUTER JOIN [dbo].[Handlers] [HAN] WITH(NOLOCK) ON [HAN].[CODE] =DEL.[FNCODE] ORDER BY [Row_Number] IF EXISTS(SELECT Top 1 TotalRowsCount FROM @DELS) BEGIN SELECT Top 1 @TotalRecords = TotalRowsCount FROM @DELS; END ELSE BEGIN SET @TotalRecords = 0; END SELECT @userprompt1 = ISNULL(RTRIM([USERPROMPT1]),'USERPROMPT1'), @userprompt2 = ISNULL(RTRIM([USERPROMPT2]),'USERPROMPT2'), @userprompt3 = ISNULL(RTRIM([USERPROMPT3]),'USERPROMPT3') FROM [dbo].[CONTROL] CTL SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetTaskRate' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetTaskRate] END GO CREATE PROCEDURE [dbo].[KEYHM_GetTaskRate] (@TaskCode VARCHAR(6)) AS /******************************************************************************************************* * This procedure is used to get default value from TaskCodes * * * * Stored Procedure Name : [dbo].[KEYHM_GetTaskRate] * * Copied from : [dbo].[ky_NETGetTaskRate] * * * * Modification History : * * 2019-05-23 Vinodhan K Created * *******************************************************************************************************/ BEGIN SELECT [TCD].[Default] FROM [TasksCodes] [TCD] WHERE [TCD].[CODE] = @TaskCode END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetTasksCodes' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetTasksCodes] END GO CREATE PROCEDURE [dbo].[KEYHM_GetTasksCodes] (@PostDay BIT, @Code VARCHAR(20), @HandlerCode VARCHAR(10)) AS /******************************************************************************************************* * Used to list the Tasks Codes. * * * * Stored Procedure Name : [dbo].[KEYHM_GetTasksCodes] * * Copied from : [dbo].[ky_NETGetTasksCodes2] in ky_NETGetTasksCodes * * * * Modification History: * * 2019-04-26 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET @PostDay = ISNULL(@PostDay, 1) SET @Code = ISNULL(@Code, '') SET @HandlerCode = ISNULL(@HandlerCode, '') IF(@PostDay = 1) BEGIN IF @HandlerCode = '' BEGIN SELECT RTRIM(ISNULL([TAC].[CODE], '')) AS [TaskType], RTRIM(ISNULL([TAC].[DESC], '')) AS [Description] FROM [dbo].[TasksCodes] [TAC] WHERE ISNULL([TAC].[Retired], 0) <> 1 END ELSE BEGIN SELECT RTRIM(ISNULL([TAC].[CODE], '')) AS [TaskType], RTRIM(ISNULL([TAC].[DESC], '')) AS [Description] FROM [dbo].[TasksCodes] [TAC] WHERE ISNULL([TAC].[Retired], 0) <> 1 OR [TAC].[CODE] = @HandlerCode END END ELSE BEGIN IF(@Code = '') BEGIN IF @HandlerCode = '' BEGIN SELECT RTRIM(ISNULL([TAC].[CODE], '')) AS [TaskType], RTRIM(ISNULL([TAC].[DESC], '')) AS [Description] FROM [dbo].[TasksCodes] [TAC] WHERE RTRIM(ISNULL([TAC].[Department], '')) = '' AND ISNULL([TAC].[Retired], 0) <> 1 END ELSE BEGIN SELECT RTRIM(ISNULL([TAC].[CODE], '')) AS [TaskType], RTRIM(ISNULL([TAC].[DESC], '')) AS [Description] FROM [dbo].[TasksCodes] [TAC] WHERE RTRIM(ISNULL([TAC].[Department], '')) = '' AND ( ISNULL([TAC].[Retired], 0) <> 1 OR [TAC].[CODE] = @HandlerCode) END END ELSE BEGIN SELECT RTRIM(ISNULL([TAC].[CODE], '')) AS [TaskType], RTRIM(ISNULL([TAC].[DESC], '')) AS [Description] FROM [dbo].[matters] [MAT] LEFT OUTER JOIN [dbo].[WorkTypes] [WKT] ON [WKT].[CODE] = [MAT].[WType] INNER JOIN [dbo].[TasksCodes] [TAC] ON ( [TAC].[Department] = [MAT].[Dept] OR RTRIM(ISNULL([TAC].[Department], '')) = '') AND ( ( ISNULL([WKT].[ChildCare], 'N') <> 'Y' AND ISNULL([TAC].[AxleTask], 'N') <> 'Y' AND ( ISNULL([TAC].Retired, 0) <> 1 OR [TAC].[CODE] = @HandlerCode)) OR ( ISNULL([WKT].[ChildCare], 'N') = 'Y' AND ISNULL([TAC].[AxleTask], 'N') = 'Y')) WHERE [MAT].[Code] = @Code END END END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_GetTeamLookupList' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_GetTeamLookupList] END GO CREATE PROCEDURE [dbo].[KEYHM_GetTeamLookupList] AS /******************************************************************************************************* * * * Stored Procedure Name : [dbo].[KEYHM_GetTeamLookupList] * * Copied from : [dbo].[ky_NETGetTeamLookupList] * * * * Modification History: * * 2019-04-26 Vinodhan K Created * *******************************************************************************************************/ BEGIN SELECT RTRIM(ISNULL(HAN.[CODE], '')) AS [CODE], RTRIM(ISNULL(HAN.[NAME], '')) AS [NAME], RTRIM(ISNULL(HAN.[DEPT], '')) AS [DEPT], CASE WHEN RTRIM(ISNULL(HAN.[TEAMCODE], 'N')) = 'Y' THEN 'Y' ELSE 'N' END AS [TEAMCODE] FROM [Handlers] HAN WHERE RTRIM(ISNULL(HAN.[TEAMCODE], 'N')) = 'Y' ORDER BY RTRIM(ISNULL(HAN.[NAME], '')) END GO IF OBJECT_ID(N'KEYHM_GetTimeAdminCodes',N'P')IS NOT NULL DROP PROCEDURE [KEYHM_GetTimeAdminCodes] GO CREATE PROCEDURE [KEYHM_GetTimeAdminCodes] (@Code VARCHAR(10)) AS /******************************************************************************************************* * This stored procedure is used to FETCH the Time Admin codes for post day book. * * * * Stored Procedure Name : [dbo].[KEYHM_GetTimeAdminCodes] * * Copied from : [dbo].[Ky_NETGetTimeAdminCodes] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON SELECT RTRIM(NCCODE) AS [NCCODE], RTRIM(ISNULL([DESCRIPTION],'')) AS [DESCRIPTION] FROM [TimeAdminCodes] WHERE ISNULL([Retired],'N') = 'N' OR NCCODE = @Code SET NOCOUNT OFF END GO IF OBJECT_ID(N'[KEYHM_GetTimeDayBookDetails]',N'P')IS NOT NULL DROP PROCEDURE [KEYHM_GetTimeDayBookDetails] GO /******************************************************************************************************* * Used to list the Tasks Codes * * * * Stored Procedure Name : [dbo].[KEYHM_GetTimeDayBookDetails] * * Copied from : [dbo].[ky_NETGetTimeDayBookDetails] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ CREATE PROC [KEYHM_GetTimeDayBookDetails] @RecordID DECIMAL(17,0) AS BEGIN SELECT TDB.MATTER ,RTRIM(ISNULL(M.[Description],'')) AS [Description] ,FEEEARN ,[DATE] ,[TIME] ,CASE WHEN [TIME]>59 THEN CAST(FLOOR(([TIME] / 60)) AS VARCHAR(8)) + ':' + RIGHT('0' + CAST(([TIME] % 60) AS VARCHAR(2)), 2) ELSE '00:' + CAST([TIME] AS VARCHAR(30)) END AS CaseTime ,ISNULL(RATE,0) RATE ,ISNULL(CHARGE,0) AS Charge ,ISNULL(Task,'') AS Task ,TimeOrCharge ,RTRIM(ISNULL(TDB.Comment,'')) AS Comment ,RTRIM(Name) AS Name ,RTRIM(ISNULL(M.[Description],'')) AS MatterDecription ,ISNULL(REC_IRR,'C') AS IsChargeable ,ISNULL(NCCCODE,'') AS AdminCode ,ISNULL(TAC.Retired,'N') AS Retired FROM [dbo].TimeDayBook TDB LEFT OUTER JOIN Matters M ON TDB.MATTER=M.Code LEFT OUTER JOIN Contacts C ON SUBSTRING(TDB.MATTER,0,CHARINDEX('/',TDB.MATTER)) =C.Code LEFT OUTER JOIN TimeAdminCodes TAC on TAC.NCCODE = TDB.NCCCode WHERE RECORDID = @RecordID END GO IF OBJECT_ID(N'KEYHM_GetTrackReferenceByUploadId')IS NOT NULL DROP PROCEDURE KEYHM_GetTrackReferenceByUploadId GO CREATE PROCEDURE [dbo].[KEYHM_GetTrackReferenceByUploadId] ( @UploadId VARCHAR(36), @Result INT OUTPUT ) AS /******************************************************************************************************* * This procedure used to get the track ref by upload Id. * * * * Stored Procedure Name : [KEYHM_GetTrackReferenceByUploadId] * * * * Modification History : * * 2021-07-28 Arun V Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON SELECT @Result = [TrackReference] FROM [dbo].[DiaryAttachments] WHERE [UploadId] = @UploadId SET NOCOUNT OFF END GO IF OBJECT_ID(N'KEYHM_GetUserSettings',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_GetUserSettings] GO CREATE PROCEDURE [dbo].[KEYHM_GetUserSettings] (@Handler NVARCHAR(10), --DO NOT CHANGE, table contains NVARCHAR columns @Key NVARCHAR(100)) --DO NOT CHANGE, table contains NVARCHAR columns As /******************************************************************************************************* * This Procedure is used to Get User Settings value * * * * Stored Procedure Name : [dbo].[KEYHM_GetUserSettings] * * Copied from : [dbo].[Ky_NETGetUserSettings] * * * * Modification History : * * 2019-04-24 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON SELECT USS.[Value] FROM [dbo].[UserSettings] USS WHERE USS.[Handler] = @Handler AND USS.[Key] = @Key SET NOCOUNT OFF END GO IF OBJECT_ID(N'KEYHM_GetUTEDayBook', N'P') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[KEYHM_GetUTEDayBook] END GO CREATE PROCEDURE [dbo].[KEYHM_GetUTEDayBook] (@FECode VARCHAR(10), @Post CHAR(1) = 'N', @Handler NVARCHAR(10), @RecordId INT) AS /******************************************************************************************************* * Gets the Day Book for a Record Id * * * * Stored Procedure Name : [dbo].[KEYHM_GetUTEDayBook] * * Copied from : [dbo].[ky_NETGetMyDayBook] * * * * Modification History: * * 2019-05-24 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @DayBookValue INT SELECT @DayBookValue = ISNULL(SUM([TDB].[Time]), 0) FROM [dbo].[Timedaybook] [TDB] WITH (NOLOCK) WHERE [TDB].[FeeEarn] = @FECode IF(@DayBookValue = 0) BEGIN SET @DayBookValue=1 END DECLARE @DAYBOOK TABLE ([Time] INT NOT NULL, [CaseTime] VARCHAR(60) NOT NULL, [MatterDetails] VARCHAR(500) NOT NULL, [Progress] INT NOT NULL, [StopwatchStatus] INT NOT NULL, [RecordID] INT NOT NULL PRIMARY KEY, [DATE] DATETIME NOT NULL, [MATTER] VARCHAR(20) NOT NULL, [DisplayMatter] VARCHAR(20) NOT NULL, [Name] VARCHAR(256) NOT NULL, [COMMENT] VARCHAR(1000) NOT NULL, [CHARGE] DECIMAL(10, 2) NOT NULL, [TimeOrCharge] VARCHAR(1) NOT NULL, [Post] VARCHAR(1) NOT NULL) DECLARE @DAYBOOKSUM TABLE ([id] INT IDENTITY(1, 1) NOT NULL PRIMARY KEY, [RecordID] INT NOT NULL, [Time] INT NOT NULL, [OriginalTime] INT NOT NULL, [TotalTimeMinusOne] INT NOT NULL) INSERT INTO @DAYBOOK ([Time], [CaseTime], [MatterDetails], [Progress], [StopwatchStatus], [RecordID], [DATE], [MATTER], [DisplayMatter], [Name], [COMMENT], [CHARGE], [TimeOrCharge], [Post]) SELECT [TDB].[Time], CASE WHEN [TDB].[Time] < 0 THEN '-' ELSE '' END + SUBSTRING(CONVERT(VARCHAR, FLOOR(ABS([TDB].[Time]) / 60)), LEN(CONVERT(VARCHAR, FLOOR(ABS([TDB].[Time]) / 60))) - 2, 3) + ':' + SUBSTRING(CONVERT(VARCHAR, 100 + ABS([TDB].[Time]) % 60), LEN(CONVERT(VARCHAR, 100 + ABS([TDB].[Time]) % 60)) - 1, 2) AS [CaseTime], [dbo].[KEYHM_FN_RemoveSpuriousWhitespace] --2018-03-12 ( RTRIM(ISNULL([CON].[Name], '')) + ' ' + RTRIM(ISNULL([MAT].[Description], '')), 500) AS [MatterDetails], 0 AS [Progress], ISNULL([TDB].[StopwatchStatus], 0) AS [StopwatchStatus], [TDB].[RecordID] AS [RecordID], [TDB].[Date] AS [DATE], [TDB].[Matter] AS [Matter], CASE WHEN [TDB].[Matter] = '~' THEN 'Admin Time' ELSE [TDB].[Matter] END AS [DisplayMatter], RTRIM(ISNULL([CON].[Name],'')) AS [Name], RTRIM(ISNULL([TDB].[Comment], '')) AS [COMMENT], [TDB].[Charge] AS [CHARGE], UPPER([TDB].[TimeOrCharge]) AS [TimeorCharge], CASE WHEN RTRIM(UPPER(ISNULL([TDB].[Post], ''))) = 'N' THEN 'N' ELSE 'Y' END AS [Post] FROM [dbo].[TimeDayBook] [TDB] WITH (NOLOCK) LEFT OUTER JOIN [dbo].[matters] [MAT] WITH (NOLOCK) ON [MAT].[Code] = [TDB].[Matter] LEFT OUTER JOIN [dbo].[Contacts] [CON] WITH (NOLOCK) ON [CON].[Code] = [MAT].[ClientCode] WHERE [TDB].[RecordID] = @RecordId AND [TDB].[FeeEarn] = @FECode AND ISNULL([TDB].[Post], 'Y') IN ('Y', @Post) INSERT INTO @DAYBOOKSUM ([RecordID], [Time], [OriginalTime], [TotalTimeMinusOne]) SELECT [TDB].[RecordID], 0, ISNULL([TDB].[Time], 0), 0 FROM @DAYBOOK [TDB] ORDER BY [TDB].[RecordID] DECLARE @TOTALTIME INT SET @TOTALTIME = 0 UPDATE [DBS] SET @TOTALTIME = @TOTALTIME + ISNULL([DBSPREV].[OriginalTime], 0), [DBS].[TotalTimeMinusOne] = @TOTALTIME FROM @DAYBOOKSUM [DBS] LEFT OUTER JOIN @DAYBOOKSUM [DBSPREV] ON [DBSPREV].[id] = [DBS].[id] - 1 UPDATE [DBS] SET [DBS].[Time] = [DBS].[OriginalTime] + [DBS].[TotalTimeMinusOne] FROM @DAYBOOKSUM [DBS] -- This will guarantee that the percentages in [Progress] will always add up to exactly 100 UPDATE [TDB] SET [TDB].[Progress] = CONVERT(INT, ROUND((CONVERT(FLOAT, [TDBS].[Time]) / CONVERT(FLOAT, @DayBookValue)) * CONVERT(FLOAT, 100), 0)) --The current cumulative percentage - CONVERT(INT, ROUND((CONVERT(FLOAT, [TDBS].[Time] - [TDB].[Time]) / CONVERT(FLOAT, @DayBookValue)) * CONVERT(FLOAT, 100), 0)) -- minus the last cumulative percentage FROM @DAYBOOKSUM [TDBS] INNER JOIN @DAYBOOK [TDB] ON [TDB].[RecordID] = [TDBS].[RecordID] --CROSS APPLY (SELECT ISNULL(SUM([TDBP].[Time]), 0) AS [Time] -- FROM @DAYBOOK [TDBP] -- WHERE [TDBP].[RecordID] <= [TDB].[RecordID]) [TDBS] SELECT [TDB].[Time], [TDB].[CaseTime], [TDB].[MatterDetails], [TDB].[Progress], [TDB].[StopwatchStatus], [TDB].[RecordID], [TDB].[DATE], [TDB].[MATTER], [TDB].[DisplayMatter], [TDB].[Name], [TDB].[COMMENT], [TDB].[CHARGE], [TDB].[TimeOrCharge], [TDB].[Post] FROM @DAYBOOK [TDB] END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_HandlerIsAuthorisedToControlGroup' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_HandlerIsAuthorisedToControlGroup] END GO CREATE PROCEDURE [dbo].[KEYHM_HandlerIsAuthorisedToControlGroup] (@Handler VARCHAR(10), @GroupName VARCHAR(100)) AS /******************************************************************************************************* * Procedure checks whether a particular handler is authorised to use a piece of Framework * * functionality. This can be useful in external components from which the same functionality * * needs to be restricted. * * * * Stored Procedure Name : [dbo].[KEYHM_HandlerIsAuthorisedToControlGroup] * * Copied from : [dbo].[ky_NETSPHandlerIsAuthorisedToControlGroup] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @IsAuthorised INT SELECT @IsAuthorised = CASE WHEN COUNT(1) = 0 THEN 1 ELSE 0 END FROM [dbo].[KHCtlGroups] [KCG] LEFT OUTER JOIN [dbo].[KHCtlHandlers] [ALL] ON [ALL].[Handler] = '' AND [ALL].[groupid] = [KCG].[id] LEFT OUTER JOIN [dbo].[KHCtlHandlers] [KHH] ON [KHH].[Handler] = @Handler AND [KHH].[groupid] = [KCG].[id] WHERE [KCG].[GroupName] = @GroupName AND ( [ALL].[id] IS NOT NULL OR [KHH].[id] IS NOT NULL) SELECT CONVERT(BIT, @IsAuthorised) AS [IsAuthorised] RETURN @IsAuthorised END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = 'KEYHM_InsertDiaryAttachment' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_InsertDiaryAttachment] END GO CREATE PROCEDURE [dbo].[KEYHM_InsertDiaryAttachment] (@DIARYID INT, @TRACKREFERENCE INT, @CASECODE VARCHAR(20), @NAME VARCHAR(10), @DOCUMENT VARCHAR(100), @FILEPATH VARCHAR(255), @TYPE VARCHAR(5), @DOCCLASS VARCHAR(3), @DATEENTERED DATETIME, @ENTEREDBY VARCHAR(8), @LASTACCESSDATE DATETIME, @LASTACCESSBY VARCHAR(8), @SYSTEM VARCHAR(1), @DICTATIONFILE VARCHAR(255), @Source VARCHAR(20), @Fees INT, @Outlay INT, @UploadId VARCHAR(36) = NULL, @Result VARCHAR(255) OUTPUT) AS /******************************************************************************************************* * This stored procedure is used to insert or update the Client Case Action * * Attachment information.IF ID is already exist then it will update that record. otherwise * * new record will insert. * * * * Stored Procedure Name : [dbo].[KEYHM_InsertDiaryAttachment] * * Copied from : [dbo].[ky_NETAAInsertDiaryAttchement] * * * * Modification History : * * 2019-04-10 Vinodhan K Created * * 2020-05-26 Arun V Modified the type extension size from 3 to 5 * * 2021-07-26 Arun V Have added new field to validate upload * * 2021-09-23 Arun V Just added an conditon upload id will not generate if already exist * * 2021-10-06 Arun V Set Context info * 2024-11-14 Aakif #19116 - While inserting in DiaryAttachments should be 'Captured' for * * 'Capture' and 'Case' if none is provided * *******************************************************************************************************/ BEGIN SET NOCOUNT OFF IF NOT EXISTS (SELECT 1 FROM [dbo].[DiaryAttachments] DAT WHERE DAT.[TRACKREFERENCE] = @TRACKREFERENCE) BEGIN SET @FILEPATH = dbo.KEYHM_FN_GETFILEPATH (SUBSTRING(@FILEPATH,LEN(@FILEPATH)-CHARINDEX ('\',REVERSE(@FILEPATH))+2,LEN(@FILEPATH)) ,@FILEPATH ) IF NOT(@FILEPATH = 'NOCHANGE') BEGIN IF EXISTS(SELECT TOP 1 1 FROM [dbo].[DiaryAttachments] WHERE UploadId = @UploadId) BEGIN RETURN END -- #19116 - Source should be Captured Or Case IF(ISNULL(@Source, '') = '') BEGIN SET @Source = 'Case' END ELSE IF(@Source = 'Capture') BEGIN SET @Source = 'Captured' END INSERT INTO [dbo].[DiaryAttachments] ([DIARYID], [TRACKREFERENCE], [CASECODE], [NAME], [DOCUMENT], [FILEPATH], [TYPE], [DOCCLASS], [DATEENTERED], [ENTEREDBY], [LASTACCESSDATE], [LASTACCESSBY], [SYSTEM], [DICTATIONFILE], [Source], [Fees], [Outlay], [UploadId]) VALUES(@DIARYID, @TRACKREFERENCE, @CASECODE, @NAME, @DOCUMENT, @FILEPATH, @TYPE, @DOCCLASS, @DATEENTERED, @ENTEREDBY, @LASTACCESSDATE, @LASTACCESSBY, @SYSTEM, @DICTATIONFILE, @Source, @Fees, @Outlay, @UploadId) IF EXISTS(SELECT TOP 1 1 FROM diary WHERE ACTIONID = @DIARYID AND ACTIONTYPE = 'U') BEGIN DECLARE @UserName VARCHAR(20) DECLARE @Description VARCHAR(500) SET @UserName = (SELECT NAME FROM Handlers WHERE Code = @ENTEREDBY) SET @Description = 'Attachment Added: ' + CHAR(13) + CHAR(10) + 'Date: ' + CONVERT(VARCHAR(11),CONVERT(DATETIME,@DATEENTERED),106) + CHAR(13) + CHAR(10) + 'Document Name: ' + @DOCUMENT +CHAR(13) + CHAR(10) + 'Document Class: ' + @DOCCLASS + CHAR(13) + CHAR(10) INSERT INTO [dbo].[UndertakingLog] ([UndertakingID], [FieldChanges], [FromValue], [ToValue], [ByWho], [ModifiedDate]) VALUES(@DIARYID, 'New Documents Added', @Description, ' - NIL - ', @UserName, CONVERT(DATETIME,GETDATE(),112)) END SET @Result = @FILEPATH END ELSE BEGIN SET @Result = 'NOCHANGE' END END --ELSE -- BEGIN -- UPDATE DAT -- SET DAT.[TRACKREFERENCE] = @TRACKREFERENCE, -- DAT.[CASECODE] = @CASECODE, -- DAT.[NAME] = @NAME, -- DAT.[DOCUMENT] = @DOCUMENT, -- DAT.[FILEPATH] = @FILEPATH, -- DAT.[TYPE] = @TYPE, -- DAT.[DOCCLASS] = @DOCCLASS, -- DAT.[DATEENTERED] = @DATEENTERED, -- DAT.[ENTEREDBY] = @ENTEREDBY, -- DAT.[LASTACCESSDATE] = @LASTACCESSDATE, -- DAT.[LASTACCESSBY] = @LASTACCESSBY, -- DAT.[SYSTEM] = @SYSTEM, -- DAT.[DICTATIONFILE] = @DICTATIONFILE, -- DAT.[Source] = @Source, -- DAT.[Fees] = @Fees, -- DAT.[Outlay] = @Outlay -- FROM [dbo].[DiaryAttachments] DAT -- WHERE DAT.[TRACKREFERENCE] = @TRACKREFERENCE -- END DECLARE @HandlerBin VARBINARY(128) SET @HandlerBin = CONVERT(VARBINARY(128), @LASTACCESSBY) set CONTEXT_INFO @HandlerBin END GO IF OBJECT_ID(N'[KEYHM_InsertIntellisense]',N'P')IS NOT NULL DROP PROCEDURE [KEYHM_InsertIntellisense] GO CREATE PROCEDURE [KEYHM_InsertIntellisense] ( @Handler VARCHAR(6), @Narrative VARCHAR(100) ) AS /******************************************************************************************************* * This procedure is used To insert & update the Intellisense. * * * * Stored Procedure Name : [dbo].[KEYHM_InsertIntellisense] * * Copied from : [dbo].[ky_NETInsertIntellisense] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON IF NOT EXISTS(SELECT TOP 1 * FROM Intellisense WHERE Handler = @Handler AND Narrative = @Narrative ) BEGIN INSERT INTO Intellisense ([Handler] ,[Narrative]) VALUES (@Handler, @Narrative ) SELECT RTRIM(Id) AS Id, RTRIM(Handler) AS Handler, RTRIM(Narrative) AS Narrative FROM Intellisense WHERE Handler = @Handler ORDER by Narrative END ELSE BEGIN SELECT RTRIM(Id) AS Id, RTRIM(Handler) AS Handler, RTRIM(Narrative) AS Narrative FROM Intellisense WHERE Handler = @Handler ORDER by Narrative END SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_InsertTasksAction' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_InsertTasksAction] END GO CREATE PROCEDURE [KEYHM_InsertTasksAction] ( @CASECODE VARCHAR(20), @FNCODE VARCHAR(10), @TEAMCODE VARCHAR(10), @Result INT OUTPUT ) /******************************************************************************************************* * This sp used to insert blank action. * * * * Stored Procedure Name : [dbo].[KEYHM_InsertTasksAction] * * Copied from : [dbo].[ky_NETInsertTasksAction] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ AS BEGIN SET NOCOUNT ON --Diary DECLARE @TIMECONVERT INT SET @TIMECONVERT = dbo.ky_ConvertTimeToClarion(GETDATE()) DECLARE @ACTIONID INT --Pino 2015-09-30 Start EXEC @ACTIONID = [dbo].[KEYHM_GetNextActionID] --SET @ACTIONID = (SELECT ISNULL(MAX(ACTIONID + 1), 1) FROM [dbo].[diary]) --Pino 2015-09-30 End INSERT INTO [dbo].[diary] ([CASECODE], [DATE], [STATUS], [ACTIONCODE], [ACTIONSTATUS], [ACTIONTYPE], [PROCESSTYPE], [FNCODE], [TEAMCODE], [TEXT1], [TEXT2], [DELEGATEDFNR], [DELEGATEDDATE], [DELEGATEDBACKDATE], [DEFERRED], [DUEDATE], [PUBLISH], [DYSTARTTIME], [DYENDTIME], [DURATION], [ACTIONID], [ORGINALACTIONID], [PRIORITY], [HIGHLIGHTED], [MILESTEONETYPE], [ATTACHMENTS], [PROCESSSTATUS], [WORKPROCESS], [BILLABLE], [BILLDESCRIPTION], [EMAILADDRESS], [ADDRESSTO], [CCTo], [BCCTo], [EMAIL], [SUBJECT], [DELEGATIONSTATUS], [DRAFTBILLNO], [CHEQUEREQNO], [TxmSent], [Location], [HearingType], [ForCopy], [TxmDate], [TxmSeqNo], [DisplayText], [Flag]) VALUES(@CASECODE, GETDATE(), 0, null, null, null, null, @FNCODE, @TEAMCODE, null, null, null, null, null, null, null, null, @TIMECONVERT, @TIMECONVERT, 0, @ACTIONID, 0, null, null, null, null, 0, 0, 0, null, null, null, null, null, null, null, 0, 0, 0, 0, null, 'Not Applicable', null, null, 0, null, 0) INSERT INTO [dbo].[DiaryDelegations] ([ACTIONID], [HANDLER], [TEAM], [DATE], [TIME], [DATER], [TIMER], [DUEDATE], [DUETIME], [REVIEW], [STATUS], [OWNER], [DELEGATE], [DELEGATESTATUS], [ActionType], [FromHandler], [ReturnedBy], [DelType]) VALUES(@ACTIONID, @FNCODE, @TEAMCODE, GETDATE(), @TIMECONVERT, null, @TIMECONVERT, GETDATE(), @TIMECONVERT, null, 0, 'Y', @FNCODE, 0, null, @FNCODE, null, 'Created') SET @Result = @ACTIONID SET NOCOUNT OFF END GO DECLARE @NCOMMAND NVARCHAR(MAX) IF NOT((SELECT SERVERPROPERTY('Edition') AS [Edition]) = 'SQL Azure') BEGIN IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_LogDocumentAccess' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_LogDocumentAccess] END SET @NCOMMAND = N' CREATE PROCEDURE [dbo].[KEYHM_LogDocumentAccess] (@TrackReference INT, @Handler VARCHAR(10), @Comment VARCHAR(2000)) AS /************************************************************************************************************* * * * [dbo].[KEYHM_LogDocumentAccess] * * * * Log Document Access * * * * Compatibility information - PLEASE update older versions if necessary to ensure the compatible software * * remains fully functional * * ***************************************************************************************************** * * * * * * * Supersedes: - * * * * First compatible version: 5.5.1.2 * * * * Last compatible software version: - * * * * Superseded by: - * * * * * * * ***************************************************************************************************** * * * * Modification History * * 2017-10-02 Pino Carafa Created * * 2018-08-09 Pino Carafa Performance Improvement * * 2019-03-20 Pino Carafa Azure Compatibility * * 2019-05-05 Arun V Copied from ky_NETSPDocumentAccess * * 2020-06-25 Rajesh P Changed the [sysprocess] access from [master].[dbo] * * 2021-07-29 Arun V Added in mobile appliction diary attachment delete functionality * *************************************************************************************************************/ BEGIN SET @TrackReference = ISNULL(@TrackReference, 0) IF @TrackReference = 0 BEGIN RETURN END IF (SELECT TOP 1 1 FROM [dbo].[DiaryAttachments] [DAT] WITH (NOLOCK) WHERE [DAT].[TrackReference] = @TrackReference) IS NULL BEGIN RETURN END IF EXISTS (SELECT TOP 1 1 FROM [dbo].[Handlers] [HAN] WITH (NOLOCK) WHERE [HAN].[CODE] = RTRIM(ISNULL(@Handler, ''''))) BEGIN SELECT @Handler = RTRIM(ISNULL([HAN].[Code], '''')) FROM [dbo].[Handlers] [HAN] WITH (NOLOCK) WHERE [HAN].[CODE] = RTRIM(ISNULL(@Handler, '''')) END ELSE BEGIN SET @Handler = '''' END IF RTRIM(ISNULL(@Handler, '''')) = '''' BEGIN SELECT @Handler = CONVERT(VARCHAR(10), CASE WHEN CHARINDEX(CHAR(0), CONVERT(VARCHAR(MAX), [P].[context_info])) > 0 THEN SUBSTRING(CONVERT(VARCHAR(MAX), [P].[context_info]), 1, CHARINDEX(CHAR(0), CONVERT(VARCHAR(MAX), [P].[context_info])) - 1) ELSE CONVERT(VARCHAR(MAX), [P].[context_info]) END) FROM [master].[dbo].[sysprocesses] P WHERE P.[spid] = @@SPID END SET @Handler = RTRIM(ISNULL(@Handler, ''ADM'')) SET @Comment = CASE WHEN RTRIM(ISNULL(@Comment, '''')) = '''' THEN ''No reason given'' ELSE RTRIM(ISNULL(@Comment, '''')) END INSERT INTO [dbo].[DiaryAttachmentAccess] ([TrackReference], [Handler], [Comment]) VALUES(@TrackReference, @Handler, @Comment) END ' EXECUTE SP_EXECUTESQL @NCOMMAND END ELSE BEGIN IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_LogDocumentAccess' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_LogDocumentAccess] END SET @NCOMMAND = N' CREATE PROCEDURE [dbo].[KEYHM_LogDocumentAccess] (@TrackReference INT, @Handler VARCHAR(10), @Comment VARCHAR(2000)) AS /************************************************************************************************************* * * * [dbo].[KEYHM_LogDocumentAccess] * * * * Log Document Access * * * * Compatibility information - PLEASE update older versions if necessary to ensure the compatible software * * remains fully functional * * ***************************************************************************************************** * * * * * * * Supersedes: - * * * * First compatible version: 5.5.1.2 * * * * Last compatible software version: - * * * * Superseded by: - * * * * * * * ***************************************************************************************************** * * * * Modification History * * 2017-10-02 Pino Carafa Created * * 2018-08-09 Pino Carafa Performance Improvement * * 2019-03-20 Pino Carafa Azure Compatibility * * 2019-05-05 Arun V Copied from ky_NETSPDocumentAccess * * 2020-06-25 Rajesh P Changed the [sysprocess] access from [master].[dbo] * * 2021-07-29 Arun V Added in mobile appliction diary attachment delete functionality * *************************************************************************************************************/ BEGIN SET @TrackReference = ISNULL(@TrackReference, 0) IF @TrackReference = 0 BEGIN RETURN END IF (SELECT TOP 1 1 FROM [dbo].[DiaryAttachments] [DAT] WITH (NOLOCK) WHERE [DAT].[TrackReference] = @TrackReference) IS NULL BEGIN RETURN END IF EXISTS (SELECT TOP 1 1 FROM [dbo].[Handlers] [HAN] WITH (NOLOCK) WHERE [HAN].[CODE] = RTRIM(ISNULL(@Handler, ''''))) BEGIN SELECT @Handler = RTRIM(ISNULL([HAN].[Code], '''')) FROM [dbo].[Handlers] [HAN] WITH (NOLOCK) WHERE [HAN].[CODE] = RTRIM(ISNULL(@Handler, '''')) END ELSE BEGIN SET @Handler = '''' END IF RTRIM(ISNULL(@Handler, '''')) = '''' BEGIN SELECT @Handler = CONVERT(VARCHAR(10), CASE WHEN CHARINDEX(CHAR(0), CONVERT(VARCHAR(MAX), [P].[context_info])) > 0 THEN SUBSTRING(CONVERT(VARCHAR(MAX), [P].[context_info]), 1, CHARINDEX(CHAR(0), CONVERT(VARCHAR(MAX), [P].[context_info])) - 1) ELSE CONVERT(VARCHAR(MAX), [P].[context_info]) END) FROM [dbo].[sysprocesses] P WHERE P.[spid] = @@SPID END SET @Handler = RTRIM(ISNULL(@Handler, ''ADM'')) SET @Comment = CASE WHEN RTRIM(ISNULL(@Comment, '''')) = '''' THEN ''No reason given'' ELSE RTRIM(ISNULL(@Comment, '''')) END INSERT INTO [dbo].[DiaryAttachmentAccess] ([TrackReference], [Handler], [Comment]) VALUES(@TrackReference, @Handler, @Comment) END ' EXECUTE SP_EXECUTESQL @NCOMMAND END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_ModifyDiaryDetails' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_ModifyDiaryDetails] END GO CREATE PROCEDURE [dbo].[KEYHM_ModifyDiaryDetails] (@CASECODE VARCHAR(20), @DATE DATETIME, @STATUS SMALLINT, @ACTIONCODE VARCHAR(15), @ACTIONSTATUS VARCHAR(3), @ACTIONTYPE VARCHAR(1), @PROCESSTYPE VARCHAR(1), @FNCODE VARCHAR(10), @TEAMCODE VARCHAR(10), @TEXT1 VARCHAR(MAX), @TEXT2 VARCHAR(MAX), @DELEGATEDFNR VARCHAR(10), @DELEGATEDDATE DATETIME, @DELEGATEDBACKDATE DATETIME, @DEFERRED VARCHAR(3), @DUEDATE DATETIME, @PUBLISH VARCHAR(1), @DYSTARTTIME DATETIME, @DYENDTIME DATETIME, @DURATION NVARCHAR(20), @ACTIONID BIGINT, @ORGINALACTIONID BIGINT, @PRIORITY VARCHAR(1), @HIGHLIGHTED VARCHAR(1), @MILESTEONETYPE VARCHAR(12), @ATTACHMENTS VARCHAR(1), @PROCESSSTATUS SMALLINT, @WORKPROCESS SMALLINT, @BILLABLE VARCHAR(1), @BILLDESCRIPTION VARCHAR(150), @EMAILADDRESS VARCHAR(150), @ADDRESSTO VARCHAR(150), @CCTo VARCHAR(150), @BCCTo VARCHAR(150), @EMAIL VARCHAR(1), @SUBJECT VARCHAR(150), @DELEGATIONSTATUS INT, @DRAFTBILLNO INT, @CHEQUEREQNO INT, @TxmSent BIT, @Location VARCHAR(50), @HearingType VARCHAR(50), @ForCopy VARCHAR(1), @TxmDate DATETIME, @TxmSeqNo INT, @Flag TINYINT, @KYC VARCHAR(1)='N', @Result INT = 0 OUTPUT ) AS /******************************************************************************************************* * This stored procedure is used to insert or update the Client Case Action information. If ID is * * already exist then it will update that record. otherwise new record will insert. * * * * Stored Procedure Name : [dbo].[KEYHM_ModifyDiaryDetails] * * Copied from : [dbo].[ky_NETCCModifyDiaryDetails] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * * 2019-11-28 Arun have fixed UTC conversion issue * *******************************************************************************************************/ BEGIN SET NOCOUNT ON DECLARE @TIMECONVERT INT SET @TIMECONVERT = dbo.ky_ConvertTimeToClarion(dbo.KEYHM_FNConvertDateToUTC(@DYSTARTTIME, @FNCODE)) --SET @TIMECONVERT = dbo.ky_ConvertTimeToClarion(@DYSTARTTIME AT TIME ZONE dbo.KEYHM_FNGetHandlerTimeZone(@FNCODE) AT TIME ZONE 'UTC') DECLARE @ENDTIME INT SET @ENDTIME = dbo.ky_ConvertTimeToClarion(dbo.KEYHM_FNConvertDateToUTC(@DYENDTIME, @FNCODE)) --SET @ENDTIME = dbo.ky_ConvertTimeToClarion(@DYENDTIME AT TIME ZONE dbo.KEYHM_FNGetHandlerTimeZone(@FNCODE) AT TIME ZONE 'UTC') DECLARE @DisplaytextValue VARCHAR(220) SET @DisplaytextValue = [dbo].[KEYHM_FN_RemoveSpuriousWhitespace](ISNULL(@TEXT1, ''), 200) --Creating temporary VARIABLE to get value based on actioncode DECLARE @ACTIONCATEGORY1 VARCHAR(1), @PUBLISHER1 VARCHAR(1) , @PROCEESSTYPE1 VARCHAR(1) , @HIGTLIGHTED1 VARCHAR(1) , @BILLABLE1 VARCHAR(1) , @KYC1 VARCHAR(1) SELECT @ACTIONCATEGORY1 = ACTIONCATEGORY , @PUBLISHER1 = PUBLISHER ,@PROCEESSTYPE1 = PROCESSTYPE , @HIGTLIGHTED1=HIGHLIGHTED,@BILLABLE1= BILLABLE ,@KYC1= KYC FROM [TEMPLATEACTIONS] where ACTIONCODE=@ACTIONCODE IF(@ACTIONTYPE ='' or @ACTIONTYPE is null) BEGIN SET @ACTIONTYPE=@ACTIONCATEGORY1 END IF(@PUBLISH ='' or @PUBLISH is null) BEGIN SET @PUBLISH=@PUBLISHER1 END IF(@PROCESSTYPE ='' or @PROCESSTYPE is null) BEGIN SET @PROCESSTYPE=@PROCEESSTYPE1 END IF(@HIGHLIGHTED ='' or @HIGHLIGHTED is null) BEGIN SET @HIGHLIGHTED=@HIGTLIGHTED1 END IF(@BILLABLE ='' or @BILLABLE is null) BEGIN SET @BILLABLE=(IIF(@BILLABLE1='Y',1,0)) END IF(@KYC ='' or @KYC is null) BEGIN SET @KYC=@KYC1 END UPDATE DIA SET [CASECODE] = @CASECODE, [DATE] = dbo.KEYHM_FNConvertDateToUTC(@DATE, @FNCODE), [STATUS] = @STATUS, [ACTIONCODE] = @ACTIONCODE, [ACTIONSTATUS] = @ACTIONSTATUS, [ACTIONTYPE] = @ACTIONTYPE, [FNCODE] = @FNCODE, [TEAMCODE] = @TEAMCODE, [TEXT1] = @TEXT1, [TEXT2] = @TEXT2, [DUEDATE] = dbo.KEYHM_FNConvertDateToUTC(@DUEDATE, @FNCODE), [PUBLISH] = @PUBLISH, [DYSTARTTIME] = @TIMECONVERT, [DYENDTIME] = @ENDTIME, [PRIORITY] = @PRIORITY, [HIGHLIGHTED] = @HIGHLIGHTED, [MILESTEONETYPE] = @MILESTEONETYPE, [WORKPROCESS] = @WORKPROCESS, [BILLABLE] = @BILLABLE, [SUBJECT] = @SUBJECT, [TxmSent] = @TxmSent, [Location] = @Location, [HearingType] = @HearingType, [DisplayText] = @DisplaytextValue, [Flag] = @Flag, [KYC] = @KYC, [IMAGENO] = dbo.ky_ConvertTimeToClarion(@DURATION) FROM [dbo].[diary] DIA WHERE DIA.[ACTIONID] = @ACTIONID UPDATE DEL SET DEL.[HANDLER] = @FNCODE, DEL.[DELEGATE] = @FNCODE, DEL.[TEAM] = @TEAMCODE FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ACTIONID AND DEL.[OWNER] = 'Y' UPDATE DEL SET DEL.[ActionType] = @ACTIONTYPE, DEL.[DATE] = dbo.KEYHM_FNConvertDateToUTC(@DATE, @FNCODE), DEL.[DUEDATE] = dbo.KEYHM_FNConvertDateToUTC(@DUEDATE, @FNCODE) FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ACTIONID AND DEL.[STATUS] = 0 IF (@STATUS = 0) BEGIN UPDATE DEL SET DEL.[STATUS] = 0 FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ACTIONID AND DEL.[OWNER] = 'Y' END ELSE BEGIN UPDATE DEL SET DEL.[STATUS] = 1 FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ACTIONID END SET @Result = @ACTIONID SET NOCOUNT OFF END GO IF OBJECT_ID('[dbo].[KEYHM_NetWorkingDays]') IS NOT NULL DROP FUNCTION [dbo].[KEYHM_NetWorkingDays] GO CREATE FUNCTION [dbo].[KEYHM_NetWorkingDays] ( @FROMDATE DATETIME, @TODATE DATETIME) RETURNS INT AS /******************************************************************************************************* * Returns number of total working days between two dates. * * * * Stored Procedure Name : [dbo].[KEYHM_NetWorkingDays] * * Copied from : [dbo].[ky_NETNetWorkingDays] * * * * Modification History : * * 2019-04-16 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @I INT DECLARE @COUNT INT DECLARE @DIFF INT SELECT @DIFF = DATEDIFF(D, @FROMDATE, @TODATE), @I = 0, @COUNT = 0 WHILE(@I < @DIFF) BEGIN SELECT @COUNT = @COUNT + 1 WHERE DATENAME(DW, DATEADD(D, @I, @FROMDATE)) NOT IN ('Saturday','Sunday') SET @I = @I + 1 END RETURN @COUNT END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_OutlayBalanceDrilldown' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_OutlayBalanceDrilldown] END GO CREATE PROCEDURE [dbo].[KEYHM_OutlayBalanceDrilldown] (@Handler VARCHAR(10), @PageNumber INT = NULL, @PageSize INT = NULL, @SearchText VARCHAR(100) = '', @SortColumn VARCHAR(20) = '', @SortDirection VARCHAR(10) = '') AS /************************************************************************************************** * * Details the values that make up the Outlay Balance in ky_NETDashboard * * Stored procedure name : KEYHM_OutlayBalanceDrilldown * Copied from : ky_NETOutlayBalanceDrilldown * * Modification History * 2015-06-24 Pino Carafa Created * 2015-11-25 John Ginnane Formatting balance so negative balances are wrapped in parenthese * 2016-01-11 John Ginnane Undone previous changes as VB .NET handles this * 2019-22-04 Vinodhan K Created KAAS_OutlayBalanceDrilldown * ***************************************************************************************************/ BEGIN DECLARE @NCOMMAND NVARCHAR(MAX) DECLARE @StartRow INT; DECLARE @EndRow INT; SET @PageNumber = ISNULL(@PageNumber, 0) - 1; -- 0 BASED INDEX IF(@PageNumber > -1) BEGIN SET @StartRow = ((@PageNumber) * @PageSize) + 1; SET @EndRow = (@StartRow + @PageSize) - 1; END IF(@SortColumn = '' OR @SortColumn = NULL) BEGIN SET @SortColumn = 'Row_Number' END IF(@SortDirection = '' OR @SortDirection = NULL) BEGIN SET @SortDirection = 'ASC' END IF [dbo].[ISSAM4]() = 0 BEGIN SET @NCOMMAND = N' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #OutlayBalanceSAM3Table FROM ( SELECT RTRIM(ISNULL(MAT.[CODE], '''')) AS [Code], RTRIM(ISNULL(CON.[NAME], '''')) AS [ClientName], RTRIM(ISNULL(MAT.[Description], '''')) AS [Description], ISNULL(MAT.[OutlayBal], 0) AS [OutlayBalance], ISNULL(MAT.[ClientBal], 0) AS [ClientACBalance] FROM [dbo].[matters] MAT INNER JOIN [dbo].[contacts] CON ON CON.[code] = MAT.[clientcode] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [MAT].[CODE] LIKE ''%' + @SearchText + '%'' OR [CON].[NAME] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [MAT].[OutlayBal] LIKE ''%' + @SearchText + '%'' OR [MAT].[ClientBal] LIKE ''%' + @SearchText + '%'' ) ) AND MAT.[FECode] = @Handler AND MAT.[Closed] <> ''Y'' AND MAT.[OutlayBal] <> 0) AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #OutlayBalanceSAM3Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #OutlayBalanceSAM3Table' END ELSE BEGIN SET @NCOMMAND = N' SELECT IDENTITY(INT, 1,1) AS [Row_Number], * INTO #OutlayBalanceSAM4Table FROM (SELECT RTRIM(ISNULL(OBL.[CODE], '''')) AS [Code], RTRIM(ISNULL(CON.[NAME], '''')) AS [ClientName], RTRIM(ISNULL(MAT.[Description], '''')) AS [MatterDescription], ISNULL(OBL.[OutlayBalance], 0) AS [OutlayBalance], ISNULL(OBL.[ClientACBalance], 0) AS [ClientACBalance] FROM ( SELECT MT1.[Code], ISNULL(SUM(ISNULL(TRN.[OutlayValue], 0)), 0) AS [OutlayBalance], ISNULL(SUM(ISNULL(TRN.[ClientCurrent], 0) + ISNULL(TRN.[ClientDeposit], 0)), 0) AS [ClientACBalance] FROM [dbo].[matters] MT1 INNER JOIN [dbo].[Transactions] TRN ON TRN.[MatterCode] = MT1.[Code] AND ( ( (TRN.[Posted] = ''Y'') AND (TRN.[RecType] <> ''V'') AND (TRN.[CorrectionInd] = ''L'')) OR ( (TRN.[Posted] IS NULL) AND (TRN.[RecType] IS NULL) AND (TRN.[CorrectionInd] IS NULL))) WHERE MT1.[FECode] = @Handler AND MT1.[Closed] <> ''Y'' GROUP BY MT1.[Code]) OBL INNER JOIN [dbo].[matters] MAT INNER JOIN [dbo].[contacts] CON ON CON.[code] = MAT.[clientcode] ON MAT.[code] = OBL.[code] WHERE ( RTRIM(LTRIM(@SearchText)) = '''' OR ( [OBL].[CODE] LIKE ''%' + @SearchText + '%'' OR [CON].[NAME] LIKE ''%' + @SearchText + '%'' OR [MAT].[Description] LIKE ''%' + @SearchText + '%'' OR [OBL].[OutlayBalance] LIKE ''%' + @SearchText + '%'' OR [OBL].[ClientACBalance] LIKE ''%' + @SearchText + '%'' ) ) AND ISNULL(OBL.[OutlayBalance], 0) <> 0) AS FoundTable ORDER BY ' + @SortColumn + ' ' + @SortDirection + ' SELECT * FROM #OutlayBalanceSAM4Table WHERE ( @StartRow IS NULL OR ( [Row_Number] BETWEEN @StartRow AND @EndRow ) ) SELECT (COUNT([Row_Number])) AS TotalRecords FROM #OutlayBalanceSAM4Table' END EXECUTE sp_executesql @NCOMMAND, N'@Handler VARCHAR(10), @SearchText VARCHAR(100), @StartRow INT, @EndRow INT', @Handler = @Handler, @SearchText = @SearchText, @StartRow = @StartRow, @EndRow = @EndRow END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = 'KEYHM_ReseedActionID' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_ReseedActionID] END GO CREATE PROCEDURE [dbo].[KEYHM_ReseedActionID] AS /******************************************************************************************************* * Dummy Procedure in preparation for the use of the DiarySeed table * * * * Stored Procedure Name : [dbo].[KEYHM_ReseedActionID] * * Copied from : [dbo].[ky_NETReseedActionID] * * * * Modification History : * * 2019-04-11 Vinodhan K Created * *******************************************************************************************************/ BEGIN RETURN END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_RestartDayBookEntry' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_RestartDayBookEntry] END GO CREATE PROCEDURE [dbo].[KEYHM_RestartDayBookEntry] (@RecordID INT) AS /******************************************************************************************************* * Resets a Day Book's Stopwatch status to 0 * * Note: In order for this to work, the Fee Earner must NOT have other Daybook Entries with status 0 * * * * Stored Procedure Name : [dbo].[KEYHM_RestartDayBookEntry] * * Copied from : [dbo].[ky_NETSPRestartDayBookEntry] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @FeeEarn VARCHAR(10) SELECT @FeeEarn = [TDB].[FeeEarn] FROM [dbo].[TimeDayBook] [TDB] WHERE [TDB].[RecordID] = @RecordID IF @FeeEarn IS NOT NULL IF NOT EXISTS (SELECT TOP 1 1 FROM [dbo].[TimeDayBook] [TDB] WHERE [TDB].[FeeEarn] = @FeeEarn AND [TDB].[RecordID] <> @RecordID AND [TDB].[StopwatchStatus] = 0) BEGIN UPDATE [TDB] SET [TDB].[StopwatchStatus] = 0 FROM [dbo].[TimeDayBook] [TDB] WHERE [TDB].[RecordID] = @RecordID SELECT CONVERT(INT, 0) AS [NewStopwatchStatus] RETURN END SELECT CONVERT(INT, 1) AS [NewStopwatchStatus] END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = 'KEYHM_SaveAndAssignAction' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_SaveAndAssignAction] END GO CREATE PROCEDURE [dbo].[KEYHM_SaveAndAssignAction] (@CASECODE VARCHAR(20), @DATE DATETIME, @STATUS SMALLINT, @ACTIONCODE VARCHAR(15), @ACTIONSTATUS VARCHAR(3), @ACTIONTYPE VARCHAR(1), @PROCESSTYPE VARCHAR(1), @FNCODE VARCHAR(10), @TEAMCODE VARCHAR(10), @TEXT1 VARCHAR(MAX), @TEXT2 VARCHAR(MAX), @DUEDATE DATETIME, @PUBLISH VARCHAR(1), @DYSTARTTIME DATETIME, @DYENDTIME DATETIME, @DURATION NVARCHAR(20), @ACTIONID INT, @PRIORITY VARCHAR(1), @HIGHLIGHTED VARCHAR(1), @MILESTEONETYPE VARCHAR(12), @WORKPROCESS SMALLINT, @BILLABLE VARCHAR(1), @SUBJECT VARCHAR(150), @TxmSent BIT, @Location VARCHAR(50), @HearingType VARCHAR(50), @Flag TINYINT, @KYC VARCHAR(1)='N', @UPLOADACTIONID VARCHAR(36) = NULL, @Result INT = 0 OUTPUT) AS /******************************************************************************************************* * This stored procedure is used to insert the Diary Details when file sharing. * * * * * * Modification History : * * 2023-04-11 Vignesh M Created * * 2023-04-25 Vignesh M Modified Upload Action Id Added * * 2023-05-05 Vignesh M Modified Verified if action is exists or not * * 2023-06-09 Vignesh M Modified Upload Action Id Datatype changed to Unique Identifier * *******************************************************************************************************/ BEGIN SET NOCOUNT ON DECLARE @UPDACTID UNIQUEIDENTIFIER SET @UPDACTID = CAST(@UPLOADACTIONID AS UNIQUEIDENTIFIER) --IF ISNULL(@UPDACTID,'') != '' IF @UPDACTID IS NOT NULL BEGIN SELECT @ACTIONID = [ACTIONID] FROM dbo.[diary] WHERE [UPLOADACTIONID] = @UPDACTID ORDER BY [ACTIONID] DESC IF ISNULL(@ACTIONID,'') != '' BEGIN SET @Result = @ACTIONID RETURN END END IF NOT EXISTS(SELECT TOP 1 1 FROM dbo.[diary] WHERE [UPLOADACTIONID] = @UPDACTID) BEGIN DECLARE @TIMECONVERT INT SET @TIMECONVERT = dbo.ky_ConvertTimeToClarion(dbo.KEYHM_FNConvertDateToUTC(@DYSTARTTIME, @FNCODE)) DECLARE @ENDTIME INT SET @ENDTIME = dbo.ky_ConvertTimeToClarion(dbo.KEYHM_FNConvertDateToUTC(@DYENDTIME, @FNCODE)) DECLARE @DisplaytextValue VARCHAR(220) SET @DisplaytextValue = [dbo].[KEYHM_FN_RemoveSpuriousWhitespace](ISNULL(@TEXT1, ''), 200) --Create Action Starts SET @TIMECONVERT = dbo.ky_ConvertTimeToClarion(GETDATE()) EXEC @ACTIONID = [dbo].[KEYHM_GetNextActionID] --Create Action Ends --Creating temporary VARIABLE to get value based on actioncode DECLARE @ACTIONCATEGORY1 VARCHAR(1), @PUBLISHER1 VARCHAR(1) , @PROCEESSTYPE1 VARCHAR(1) , @HIGTLIGHTED1 VARCHAR(1) , @BILLABLE1 VARCHAR(1) , @KYC1 VARCHAR(1) SELECT @ACTIONCATEGORY1 = ACTIONCATEGORY , @PUBLISHER1 = PUBLISHER ,@PROCEESSTYPE1 = PROCESSTYPE , @HIGTLIGHTED1=HIGHLIGHTED,@BILLABLE1= BILLABLE ,@KYC1= KYC FROM [TEMPLATEACTIONS] where ACTIONCODE=@ACTIONCODE IF(@ACTIONTYPE ='' or @ACTIONTYPE is null) BEGIN SET @ACTIONTYPE=@ACTIONCATEGORY1 END IF(@PUBLISH ='' or @PUBLISH is null) BEGIN SET @PUBLISH=@PUBLISHER1 END IF(@PROCESSTYPE ='' or @PROCESSTYPE is null) BEGIN SET @PROCESSTYPE=@PROCEESSTYPE1 END IF(@HIGHLIGHTED ='' or @HIGHLIGHTED is null) BEGIN SET @HIGHLIGHTED=@HIGTLIGHTED1 END IF(@BILLABLE ='' or @BILLABLE is null) BEGIN SET @BILLABLE=(IIF(@BILLABLE1='Y',1,0)) END IF(@KYC ='' or @KYC is null) BEGIN SET @KYC=@KYC1 END INSERT INTO [dbo].[diary] ([ACTIONID], [CASECODE], [DATE], [STATUS], [ACTIONCODE], [ACTIONSTATUS], [ACTIONTYPE], [FNCODE], [TEAMCODE], [TEXT1], [TEXT2], [DUEDATE], [PUBLISH], [DYSTARTTIME], [DYENDTIME], [PRIORITY], [HIGHLIGHTED], [MILESTEONETYPE], [WORKPROCESS], [BILLABLE], [SUBJECT], [TxmSent], [Location], [HearingType], [DisplayText], [Flag], [KYC], [IMAGENO], [UPLOADACTIONID]) SELECT @ACTIONID, @CASECODE, dbo.KEYHM_FNConvertDateToUTC(@DATE, @FNCODE), @STATUS, @ACTIONCODE, @ACTIONSTATUS, @ACTIONTYPE, @FNCODE, @TEAMCODE, @TEXT1, @TEXT2, dbo.KEYHM_FNConvertDateToUTC(@DUEDATE, @FNCODE), @PUBLISH, @TIMECONVERT, @ENDTIME, @PRIORITY, @HIGHLIGHTED, @MILESTEONETYPE, @WORKPROCESS, @BILLABLE, @SUBJECT, @TxmSent, @Location, @HearingType, @DisplaytextValue, @Flag, @KYC, dbo.ky_ConvertTimeToClarion(@DURATION), @UPDACTID INSERT INTO [dbo].[DiaryDelegations] ([ACTIONID], [HANDLER], [TEAM], [DATE], [TIME], [DATER], [TIMER], [DUEDATE], [DUETIME], [REVIEW], [STATUS], [OWNER], [DELEGATE], [DELEGATESTATUS], [ActionType], [FromHandler], [ReturnedBy], [DelType]) VALUES(@ACTIONID, @FNCODE, @TEAMCODE, GETDATE(), @TIMECONVERT, null, @TIMECONVERT, GETDATE(), @TIMECONVERT, null, 0, 'Y', @FNCODE, 0, null, @FNCODE, null, 'Created') UPDATE DEL SET DEL.[HANDLER] = @FNCODE, DEL.[DELEGATE] = @FNCODE, DEL.[TEAM] = @TEAMCODE FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ACTIONID AND DEL.[OWNER] = 'Y' UPDATE DEL SET DEL.[ActionType] = @ACTIONTYPE, DEL.[DATE] = dbo.KEYHM_FNConvertDateToUTC(@DATE, @FNCODE), DEL.[DUEDATE] = dbo.KEYHM_FNConvertDateToUTC(@DUEDATE, @FNCODE) FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ACTIONID AND DEL.[STATUS] = 0 IF (@STATUS = 0) BEGIN UPDATE DEL SET DEL.[STATUS] = 0 FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ACTIONID AND DEL.[OWNER] = 'Y' END ELSE BEGIN UPDATE DEL SET DEL.[STATUS] = 1 FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ACTIONID END DECLARE @TrackReference INT EXEC @TrackReference = [dbo].[ky_NETGetNextTrackReference] END SET @Result = @ACTIONID SET NOCOUNT OFF END GO IF NOT((SELECT SERVERPROPERTY('Edition') AS [Edition]) = 'SQL Azure') BEGIN IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_SaveDiaryAttachement' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_SaveDiaryAttachement] END DECLARE @NCOMMAND NVARCHAR(MAX) SET @NCOMMAND = N'CREATE PROCEDURE [dbo].[KEYHM_SaveDiaryAttachement] ( @FilePath VARCHAR(1000), @FileName VARCHAR(1000), @FileData VARBINARY(MAX), @Result INT OUTPUT ) AS /******************************************************************************************************* * To save the attachment to the physical path * * * * Stored Procedure Name : [dbo].[KEYHM_SaveDiaryAttachement] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @FullPath NVARCHAR (2000); SET @FullPath = @FilePath + @FileName; DECLARE @Obj INT; SET NOCOUNT ON BEGIN TRY DECLARE @IsFolderExist AS INT DECLARE @FileResult TABLE ( IsFileExist INT, IsFileDirectory INT, IsParentDirectoryExist INT ) INSERT INTO @FileResult ( IsFileExist, IsFileDirectory, IsParentDirectoryExist ) EXECUTE XP_FILEEXIST @FilePath SELECT @IsFolderExist = IsFileDirectory FROM @FileResult --Script to create directory IF(@IsFolderExist = 0) BEGIN EXECUTE XP_CREATE_SUBDIR @FilePath INSERT INTO @FileResult ( IsFileExist, IsFileDirectory, IsParentDirectoryExist ) EXECUTE XP_FILEEXIST @FilePath SELECT @IsFolderExist = IsFileDirectory FROM @FileResult END IF(@IsFolderExist = 1) BEGIN EXEC SP_OACREATE ''ADODB.Stream'' ,@Obj OUTPUT; EXEC SP_OASETPROPERTY @Obj ,''Type'',1; EXEC SP_OAMETHOD @Obj,''Open''; EXEC SP_OAMETHOD @Obj,''Write'', NULL, @FileData; EXEC SP_OAMETHOD @Obj,''SaveToFile'', NULL, @FullPath, 2; EXEC SP_OAMETHOD @Obj,''Close''; EXEC SP_OADESTROY @Obj; SELECT @Result = 1; RETURN; END ELSE BEGIN SELECT @Result = 0; RETURN; END END TRY BEGIN CATCH EXEC SP_OADESTROY @Obj; SELECT @Result = 1; RETURN; END CATCH SET NOCOUNT OFF END' EXECUTE SP_EXECUTESQL @NCOMMAND END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_SaveDocFolderTree' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_SaveDocFolderTree] END GO CREATE PROCEDURE [dbo].[KEYHM_SaveDocFolderTree] (@folderxml NVARCHAR(MAX)) AS /******************************************************************************************************* * Saves the changes to a folder tree * * * * Stored Procedure Name : [dbo].[KEYHM_SaveDocFolderTree] * * Copied from : [dbo].[ky_NETSPSaveDocFolderTree] * * * * Modification History: * * 2019-04-23 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @iSL INT DECLARE @MAX INT DECLARE @data TABLE ([seq] INT IDENTITY(1, 1) NOT NULL PRIMARY KEY, [id] INT NOT NULL, [parent] INT NOT NULL, [foldername] VARCHAR(500) NOT NULL, [foldericon] INT NOT NULL, [newfolder] BIT NOT NULL, [deletefolder] BIT NOT NULL) BEGIN TRY EXEC SP_XML_PREPAREDOCUMENT @iSL OUTPUT, @folderxml END TRY BEGIN CATCH EXEC SP_XML_PREPAREDOCUMENT @iSL OUTPUT, N'' END CATCH INSERT INTO @data ([id], [parent], [foldername], [foldericon], [newfolder], [deletefolder]) SELECT SRC.[id], SRC.[parent], SRC.[foldername], ISNULL(SRC.[foldericon], 1), SRC.[newfolder], SRC.[deletefolder] FROM OPENXML(@iSL, N'folders/folder') WITH ([id] INT '@id', [parent] INT '@parent', [foldername] VARCHAR(500) '@foldername', [foldericon] INT '@foldericon', [newfolder] BIT '@newfolder', [deletefolder] BIT '@deletefolder') SRC EXEC SP_XML_REMOVEDOCUMENT @iSL SELECT @MAX = ISNULL(MAX([DF].[id]), 0) FROM [dbo].[DocFolders] [DF] DECLARE @new TABLE ([seq] INT IDENTITY(1, 1) NOT NULL PRIMARY KEY, [oldid] INT NOT NULL UNIQUE NONCLUSTERED, [newid] INT NOT NULL) INSERT INTO @new ([oldid], [newid]) SELECT [DT].[id], 0 FROM @data [DT] WHERE [DT].[newfolder] = 1 UPDATE [nw] SET [nw].[newid] = @MAX + [nw].[seq] FROM @new [NW] SET IDENTITY_INSERT [dbo].[DocFolders] ON INSERT INTO [dbo].[DocFolders] ([id], [foldername], [parent], [foldericon]) SELECT [nw].[newid] AS [id], [dt].[foldername] AS [foldername], CASE ISNULL([pr].[newid], 0) WHEN 0 THEN CASE ISNULL([dt].[parent], 0) WHEN 0 THEN NULL ELSE [dt].[parent] END ELSE [pr].[newid] END AS [parent], [dt].[foldericon] FROM @data [dt] INNER JOIN @new [nw] ON [nw].[oldid] = [dt].[id] LEFT OUTER JOIN @new [pr] ON [pr].[oldid] = [dt].[parent] SET IDENTITY_INSERT [dbo].[DocFolders] OFF SELECT @MAX = ISNULL(MAX([DF].[id]), 0) + 1 FROM [dbo].[DocFolders] [DF] DBCC CHECKIDENT('DocFolders', RESEED, @MAX) DELETE [DF] FROM @data [dt] INNER JOIN [dbo].[DocFolders] [DF] ON [DF].[id] = [dt].[id] WHERE [dt].[deletefolder] = 1 UPDATE [DF] SET [DF].[foldername] = [dt].[foldername], [DF].[parent] = CASE ISNULL([dt].[parent], 0) WHEN 0 THEN NULL ELSE [dt].[parent] END, [DF].[foldericon] = [dt].[foldericon] FROM @data [dt] INNER JOIN [dbo].[DocFolders] [DF] ON [DF].[id] = [dt].[id] WHERE [dt].[deletefolder] = 0 AND [dt].[newfolder] = 0 DECLARE @newid INT SELECT TOP 1 @newid = ISNULL([nw].[newid], dt.[id]) FROM @data [dt] LEFT OUTER JOIN @new [nw] ON [nw].[oldid] = [dt].[id] SELECT @newid [id] RETURN @newid END GO IF OBJECT_ID(N'KEYHM_ScalarXMLDiaryDelegation',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_ScalarXMLDiaryDelegation] GO CREATE PROCEDURE [dbo].[KEYHM_ScalarXMLDiaryDelegation] (@DEL VARCHAR(MAX)) AS /******************************************************************************************************* * * * * * Stored Procedure Name : [dbo].[KEYHM_ScalarXMLDiaryDelegation] * * Copied from : [dbo].[ky_NETSPScalarXMLDiaryDelegation] * * * * Modification History: * * 2019-04-23 Vinodhan K Created * *******************************************************************************************************/ BEGIN /* example */ DECLARE @ACTIONID INT DECLARE @HANDLER VARCHAR(10) DECLARE @TEAM VARCHAR(10) DECLARE @DATE DATETIME DECLARE @TIME DATETIME DECLARE @DATER DATETIME DECLARE @TIMER DATETIME DECLARE @DUEDATE DATETIME DECLARE @DUETIME DATETIME DECLARE @REVIEW VARCHAR(1) DECLARE @STATUS SMALLINT DECLARE @OWNER VARCHAR(1) DECLARE @DELEGATE VARCHAR(10) DECLARE @DELEGATESTATUS SMALLINT DECLARE @ActionType VARCHAR(1) DECLARE @FromHandler VARCHAR(10) DECLARE @ReturnedBy VARCHAR(10) DECLARE @DelType VARCHAR(15) DECLARE @CRRUSER VARCHAR(10) DECLARE @CURRENTOWNER VARCHAR(10) DECLARE @DIARYSTATUS INT DECLARE @iSL INT BEGIN TRY EXEC sp_xml_preparedocument @iSL OUTPUT, @DEL END TRY BEGIN CATCH EXEC sp_xml_preparedocument @iSL OUTPUT, N'' END CATCH SELECT @ActionID = [DEL].[ACTIONID], @Handler = [DEL].[HANDLER], @Team = [DEL].[TEAM], @Date = [DEL].[DATE], @Time = [DEL].[TIME], @Dater = [DEL].[DATER], @Timer = [DEL].[TIMER], @DueDate = ISNULL([DEL].[DUEDATE], [DIA].[DUEDATE]), @DueTime = ISNULL([DEL].[DUETIME], [DIA].[DUEDATE]), @Review = CASE [DEL].[REVIEW] WHEN NULL THEN NULL WHEN 'N' THEN 'N' WHEN '' THEN '' WHEN ' ' THEN '' WHEN 'Y' THEN 'Y' ELSE NULL END, @Status = ISNULL([DEL].[STATUS], 0), @Owner = CASE WHEN ISNULL([DEL].[OWNER], 'N') = 'Y' THEN 'Y' ELSE 'N' END, @Delegate = [DEL].[DELEGATE], @DelegateStatus = CASE ISNULL([DEL].[DELEGATESTATUS], 0) WHEN 1 THEN 1 WHEN 2 THEN 2 ELSE 0 END, @ActionType = ISNULL([DEL].[ACTIONTYPE], [DIA].[ACTIONTYPE]), @FromHandler = ISNULL(ISNULL([DEL].[FROMHANDLER], CDL.[HANDLER]), [DIA].[FNCODE]), @ReturnedBy = [DEL].[RETURNEDBY], @DelType = CASE WHEN [DEL].[DELTYPE] IS NULL THEN NULL WHEN [DEL].[DELTYPE] = 'Completed' THEN 'Completed' WHEN [DEL].[DELTYPE] = 'Created' THEN 'Created' WHEN [DEL].[DELTYPE] = 'Delegated' THEN 'Delegated' WHEN [DEL].[DELTYPE] = 'Processed' THEN 'Processed' WHEN [DEL].[DELTYPE] = 'Released' THEN 'Released' WHEN [DEL].[DELTYPE] = 'Returned' THEN 'Returned' ELSE 'Delegated' END, @CRRUSER = [DEL].[CRRUSER], @CURRENTOWNER = ISNULL([CDL].[HANDLER], ''), @DIARYSTATUS = CASE WHEN ISNULL([DIA].[STATUS], 0) = 1 THEN 1 ELSE 0 END FROM OPENXML(@iSL, N'del') WITH ([ACTIONID] INT '@actionid', [HANDLER] VARCHAR(10) '@handler', [TEAM] VARCHAR(10) '@team', [DATE] DATETIME '@date', [TIME] DATETIME '@time', [DATER] DATETIME '@dater', [TIMER] DATETIME '@timer', [DUEDATE] DATETIME '@duedate', [DUETIME] DATETIME '@duetime', [REVIEW] VARCHAR(1) '@review', [STATUS] SMALLINT '@status', [OWNER] VARCHAR(1) '@owner', [DELEGATE] VARCHAR(10) '@delegate', [DELEGATESTATUS] SMALLINT '@delegatestatus', [ACTIONTYPE] VARCHAR(1) '@actiontype', [FROMHANDLER] VARCHAR(10) '@fromhandler', [RETURNEDBY] VARCHAR(10) '@returnedby', [DELTYPE] VARCHAR(15) '@deltype', [CRRUSER] VARCHAR(15) '@crruser') [DEL] INNER JOIN [dbo].[diary] [DIA] LEFT OUTER JOIN [dbo].[DiaryDelegations] [CDL] ON [CDL].[ACTIONID] = [DIA].[ACTIONID] AND [CDL].[OWNER] = 'Y' ON [DIA].[ACTIONID] = [DEL].[ACTIONID] EXEC sp_xml_removedocument @iSL DECLARE @AssignNo INT DECLARE @TIMECONVERSION VARCHAR(10) DECLARE @TIMERCONVERSION VARCHAR(10) DECLARE @DUETIMECONVERSION VARCHAR(10) IF @ACTIONID IS NULL BEGIN RETURN -1 -- requested action not found. END SET @DATE = ISNULL(@DATE, GetDate()) SET @TIME = ISNULL(@TIME, @DATE) SET @DUEDATE = ISNULL(@DUEDATE, GetDate()) SET @DUETIME = ISNULL(@DUETIME, @DUEDATE) SET @ActionType = ISNULL(@ActionType, 'A') SET @FromHandler = ISNULL(@FromHandler, 'ADM') IF @DelType = 'Returned' BEGIN SET @ReturnedBy = ISNULL(@ReturnedBy, @Handler) END SET @CRRUSER = ISNULL(@CRRUSER, @FromHandler) SET @status = CASE WHEN ISNULL(@status, 0) = 1 THEN 1 ELSE 0 END SET @DELEGATE = ISNULL(@DELEGATE, @HANDLER) SET @DELEGATESTATUS = ISNULL(@DELEGATESTATUS, 0) SELECT @Team = ISNULL(@Team, HAN.[TEAM]) FROM [dbo].[Handlers] HAN WHERE HAN.[CODE] = @Handler IF NOT @TIME IS NULL BEGIN SET @TIMECONVERSION = dbo.ky_ConvertTimeToClarion(@TIME) END IF NOT @TIMER IS NULL BEGIN SET @TIMERCONVERSION = dbo.ky_ConvertTimeToClarion(@TIMER) END IF NOT @DUETIME IS NULL BEGIN SET @DUETIMECONVERSION = dbo.ky_ConvertTimeToClarion(@DUETIME) END DECLARE @DATER1 DATETIME SET @DATER1 = GETDATE() DECLARE @TIMER1 VARCHAR(20) SET @TIMER1 = dbo.ky_ConvertTimeToClarion(GETDATE()) SELECT @AssignNo = ISNULL(MAX([DEL].[AssignNo] + 1),1) FROM [dbo].[DiaryDelegations] [DEL] -- Check whether authorised to Delegate or Release IF @DelType IN ('Delegated', 'Released') BEGIN IF ISNULL(@CRRUSER, '') <> @CURRENTOWNER BEGIN RETURN -2 --Not Authorised END END -- Things to do BEFORE inserting the delegation record IF ISNULL(@CRRUSER, '') = @CURRENTOWNER BEGIN IF @DIARYSTATUS = 0 BEGIN IF @DelType = 'Released' BEGIN UPDATE [DEL] SET [DEL].[DATER] = @DATER1, [DEL].[TIMER] = @TIMER1, [DEL].[STATUS] = 1, [DEL].[OWNER] = 'N', [DEL].[DELEGATESTATUS] = 1 FROM [dbo].[DiaryDelegations] [DEL] WHERE [DEL].[ACTIONID] = @ACTIONID AND [DEL].[OWNER] = 'Y' END END END --KEYD-3961 - In case a user creates an action and then delegates it twice to the same user, -- the following statement will stop it showing the same task twice as "outstanding" -- in that user's task list. Please note: it will NOT prevent the user seeing the -- same task twice if they choose to look at "completed" actions. UPDATE [DEL] SET [DEL].[STATUS] = 1 FROM [dbo].[DiaryDelegations] [DEL] WHERE [DEL].[ACTIONID] = @ACTIONID AND [DEL].[HANDLER] = @HANDLER AND ISNULL([DEL].[OWNER], 'N') <> 'Y' DECLARE @NEWDATE AS DATETIME SELECT @NEWDATE= [DATE] FROM Diary WHERE ACTIONID=@ACTIONID -- the actual insert itself INSERT INTO [dbo].[DiaryDelegations] ([ACTIONID], [HANDLER], [TEAM], [DATE], [TIME], [DATER], [TIMER], [DUEDATE], [DUETIME], [REVIEW], [STATUS], [OWNER], [DELEGATE], [DELEGATESTATUS], [ActionType], [FromHandler], [ReturnedBy], [DelType]) VALUES(@ACTIONID, @HANDLER, @TEAM, @NEWDATE, @TIMECONVERSION, @DATER, @TIMERCONVERSION, @DUEDATE, @DUETIMECONVERSION, @REVIEW, @STATUS, @OWNER, @DELEGATE, @DELEGATESTATUS, @ACTIONTYPE, @FROMHANDLER, @RETURNEDBY, @DELTYPE) -- Things to do AFTER inserting the delegation record IF @DelType = 'Created' BEGIN -- no other changes required. RETURN 0 END IF @DelType = 'Delegated' BEGIN UPDATE [DIA] SET [DIA].[DELEGATEDFNR] = @HANDLER, [DIA].[DELEGATEDDATE] = @DATER, [DIA].[DELEGATIONSTATUS] = 1 FROM [dbo].[diary] [DIA] WHERE [DIA].[ACTIONID] = @ACTIONID RETURN 0 END IF @DelType <> 'Released' BEGIN RETURN -3 --Unknown request END --Released a completed action IF @DIARYSTATUS = 1 BEGIN UPDATE [DEL] SET [DEL].[STATUS] = 1, [DEL].[DELEGATESTATUS] = 1 FROM [dbo].[DiaryDelegations] [DEL] WHERE [DEL].[ACTIONID] = @ACTIONID AND [DEL].[DelType] = 'Released' UPDATE [DEL] SET [DEL].[STATUS] = 0, [DEL].[DELEGATESTATUS] = 0 FROM [dbo].[DiaryDelegations] [DEL] WHERE [DEL].[ACTIONID] = @ACTIONID AND [DEL].[DelType] = 'Created' UPDATE [DIA] SET [DIA].[DATE] = @NEWDATE, [DIA].[FNCODE] = @HANDLER, [DIA].[DELEGATEDFNR] = @HANDLER, [DIA].[DELEGATEDDATE] = @DATER1 FROM [dbo].[diary] [DIA] WHERE [DIA].[ACTIONID] = @ACTIONID RETURN 0 END --Released an open action UPDATE [DIA] SET [DIA].[DATE] = @NEWDATE, [DIA].[FNCODE] = @HANDLER, [DIA].[DELEGATEDFNR] = @HANDLER, [DIA].[DELEGATIONSTATUS] = 0 FROM [dbo].[diary] [DIA] WHERE [DIA].[ACTIONID] = @ACTIONID UPDATE [DEL] SET [DEL].[DELEGATE] = @HANDLER FROM [dbo].[DiaryDelegations] [DEL] WHERE [DEL].[ACTIONID] = @ACTIONID AND [DEL].[OWNER] = 'Y' RETURN 0 END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_SetDocVersioningDate' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_SetDocVersioningDate] END GO CREATE PROCEDURE [dbo].[KEYHM_SetDocVersioningDate] (@TrackReference INT, @Handler VARCHAR(10), @DateTime VARCHAR(20)) AS /************************************************************************************************************* * * * [dbo].[KEYHM_SetDocVersioningDate] * * * * Sets DateTime information on diary attachments after versioning * * * * Compatibility information - PLEASE update older versions if necessary to ensure the compatible software * * remains fully functional * * ***************************************************************************************************** * * * * * * * Supersedes: - * * * * First compatible version: 5.5.1.2 * * * * Last compatible software version: - * * * * Superseded by: - * * * * * * * ***************************************************************************************************** * * * * Modification History * * 2017-07-04 Pino Carafa Created * * 2021-01-22 Kowshik.R Stored Procedure taken from ky_NETSPSetDocVersioningDate * * * *************************************************************************************************************/ BEGIN UPDATE [DAT] SET [DAT].[DATEENTERED] = @DateTime, [DAT].[ENTEREDBY] = @Handler, [DAT].[LASTACCESSDATE] = @DateTime, [DAT].[LASTACCESSBY] = @Handler FROM [dbo].[DiaryAttachments] [DAT] INNER JOIN [dbo].[Handlers] [HAN] ON [HAN].[CODE] = @Handler WHERE [DAT].[TrackReference] = @TrackReference END GO IF NOT EXISTS (SELECT TOP 1 1 FROM sys.objects [SO] WHERE [SO].[name] = 'RMLBackup' AND [SO].[type] = 'U') BEGIN SELECT * INTO [dbo].[RMLBackup] FROM [dbo].[RecentMatterList] END GO IF EXISTS (SELECT TOP 1 1 FROM sys.objects [SO] LEFT OUTER JOIN sys.[columns] [SC] ON [SC].object_id = [SO].object_id AND [SC].[name] = 'UniqueID' WHERE [SO].[name] = 'RecentMatterList' AND [SO].[type] = 'U' AND [SC].[column_id] IS NULL) BEGIN ALTER TABLE [dbo].[RecentMatterList] ADD [UniqueID] BIGINT IDENTITY(1, 1) NOT NULL END GO IF EXISTS (SELECT TOP 1 1 FROM sys.objects [SO] INNER JOIN sys.indexes [SI] INNER JOIN sys.index_columns [IC] INNER JOIN sys.columns [SC] ON [SC].object_id = [IC].object_id AND [SC].[column_id] = [IC].[column_id] ON [IC].object_id = [SI].object_id AND [IC].[index_id] = [SI].[index_id] ON [SI].object_id = [SO].object_id AND [SI].[is_primary_key] = 1 WHERE [SO].[name] = 'RecentMatterList' AND [SO].[type] = 'U' AND [SC].[name] <> 'UniqueID') BEGIN DECLARE @NAME NVARCHAR(128) SELECT @NAME = CONVERT(NVARCHAR(128), [SI].[name]) FROM sys.objects [SO] INNER JOIN sys.indexes [SI] ON [SI].object_id = [SO].object_id AND [SI].[is_primary_key] = 1 WHERE [SO].[name] = 'RecentMatterList' AND [SO].[type] = 'U' DECLARE @COMMAND NVARCHAR(MAX) SET @COMMAND = N'ALTER TABLE [dbo].[RecentMatterList] DROP CONSTRAINT [' + @NAME + N']' EXEC sp_executesql @COMMAND END GO IF EXISTS (SELECT TOP 1 1 FROM sys.objects [SO] LEFT OUTER JOIN sys.indexes [SI] ON [SI].object_id = [SO].object_id AND [SI].[is_primary_key] = 1 WHERE [SO].[name] = 'RecentMatterList' AND [SO].[type] = 'U' AND [SI].[index_id] IS NULL) BEGIN ALTER TABLE [dbo].[RecentMatterList] ADD CONSTRAINT [PK_RecentMatterList] PRIMARY KEY CLUSTERED ([UniqueID]) END GO IF EXISTS (SELECT TOP 1 1 FROM sys.objects [SO] LEFT OUTER JOIN sys.indexes [SI] ON [SI].object_id = [SO].object_id AND [SI].[name] = 'IDX_FeeMatter' WHERE [SO].[name] = 'RecentMatterList' AND [SO].[type] = 'U' AND [SI].[index_id] IS NULL) BEGIN CREATE UNIQUE NONCLUSTERED INDEX [IDX_FeeMatter] ON [dbo].[RecentMatterList] ([FEE], [MATTER]) INCLUDE ([Datefield], [UniqueID]) END GO IF EXISTS (SELECT TOP 1 1 FROM sys.objects [SO] LEFT OUTER JOIN sys.indexes [SI] ON [SI].object_id = [SO].object_id AND [SI].[name] = 'IDX_FeeDateDesc' WHERE [SO].[name] = 'RecentMatterList' AND [SO].[type] = 'U' AND [SI].[index_id] IS NULL) BEGIN CREATE NONCLUSTERED INDEX [IDX_FeeDateDesc] ON [dbo].[RecentMatterList] ([FEE], [DateField] DESC) INCLUDE ([MATTER], [UniqueID]) END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_SetMostRecentMatter' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_SetMostRecentMatter] END GO CREATE PROCEDURE [dbo].[KEYHM_SetMostRecentMatter] (@handler VARCHAR(10), @matter VARCHAR(20)) AS /************************************************************************************************************* * * * [dbo].[KEYHM_SetMostRecentMatter] * * * * Updates the Recent Matter List for a handler. The Handlers table stores the * * maximum number of Recent Matters to store for each handler. If not SET, the * * default value is 30. * * * * Compatibility information - PLEASE update older versions if necessary to ensure the compatible software * * remains fully functional * * ***************************************************************************************************** * * * * * * * Supersedes: - * * * * Original: - * * * * First compatible version: 5.7.2.1 * * * * Last compatible software version: - * * * * Superseded by: - * * * * * * * ***************************************************************************************************** * * * * Modification History * * ????-??-?? ??????????? Created * * 2014-10-23 Pino Carafa Remove transaction handling * * 2016-07-22 Pino Carafa Imported into Framework * * 2016-07-22 Pino Carafa Add Option (KEEPFIXED PLAN) to prevent unnecessary * * procedure recompiles * * 2018-02-15 Pino Carafa Modify procedure to prevent problems * * when the system date/time is changed * * 2019-08-29 Arun V Have included the distinct keyword while inserting * * the records into Recent matter. * * In case of any duplication, due to repeated call, * * this will remove the duplicate item from the list. * * 2019-08-29 Pino Carafa Use Group By and MAX instead of DISTINCT * * 2019-08-30 Pino Carafa Rewrite after change to PK and Indexes * * 2019-09-10 Pino Carafa Minor - not critical - addition of Return 1 to indicate success * * 2019-09-12 Pino Carafa Instead of updating an existing row I will delete and reinsert so that the * * most recent matter gets the latest UniqueID which makes sorting in procedures * * that rely on the Recent Matter List more reliable * * * *************************************************************************************************************/ BEGIN DECLARE @RMLMax INT SELECT @RMLMax = [HAN].[NORECENTMATTERS] FROM [dbo].[Handlers] [HAN] WHERE [HAN].[code] = @handler SET @RMLMax = CASE WHEN ISNULL(@RMLMax, 0) = 0 THEN 30 ELSE @RMLMax END DECLARE @NOW DATETIME DECLARE @MAXDATE DATETIME SET @NOW = GETDATE() DECLARE @UniqueID BIGINT SELECT @UniqueID = [RML].[UniqueID] FROM [dbo].[RecentMatterList] [RML] WHERE [RML].[FEE] = @handler AND [RML].[MATTER] = @matter IF @UniqueID IS NOT NULL BEGIN DELETE [RML] FROM [dbo].[RecentMatterList] [RML] WHERE [RML].[UniqueID] = @UniqueID END INSERT INTO [dbo].[RecentMatterList] ([FEE], [MATTER], [DateField]) VALUES(@handler, @matter, @NOW) DECLARE @total INT -- If @UniqueID is not null we deleted one row and inserted one row, so the total won't have changed. IF @UniqueID IS NULL BEGIN SELECT @total = COUNT(1) FROM [dbo].[RecentMatterList] [RML] WHERE [RML].[FEE] = @handler SET @total = ISNULL(@total, 0) - @RMLMax --the number of items we must delete -- In theory @total should always be <= 1, but just in case WHILE @total > 0 BEGIN SET @UniqueID = NULL -- Get the oldest item in the Recent Matter List for this FEE SELECT TOP 1 @UniqueID = [RML].[UniqueID] FROM [dbo].[RecentMatterList] [RML] WHERE [RML].[FEE] = @handler ORDER BY [RML].[UniqueID] ASC IF @UniqueID IS NULL BEGIN -- In theory this should never happen... but just in case SET @total = 0 END ELSE BEGIN -- and delete the oldest item in the Recent Matter List for this FEE DELETE [RML] FROM [dbo].[RecentMatterList] [RML] WHERE [RML].[UniqueID] = @UniqueID SET @total = @total - 1 END END END RETURN 1 END GO IF EXISTS (SELECT * FROM SYS.[objects] SO WHERE SO.[name] = 'KEYHM_SetTimeDayBookRateCharge' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_SetTimeDayBookRateCharge] END GO CREATE PROCEDURE [dbo].[KEYHM_SetTimeDayBookRateCharge] (@recordid int, @TUTNUMVALUE DECIMAL(17, 2)) AS /******************************************************************************************************* * Sets the Rate and Charge values according to the Charge Out Rates indicators and/or * * the Task Code used in the TimeDayBook. * * * * Stored Procedure Name : [dbo].[KEYHM_SetTimeDayBookRateCharge] * * Copied from : [dbo].[ky_NETSetTimeDayBookRateCharge] * * * * Modification History: * * 2019-04-24 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @ACTUALRATE DECIMAL(18, 2) DECLARE @OverriddenRate BIT SELECT @ACTUALRATE = CASE WHEN TDB.[Rate] = TDB.[FeeRate] OR TDB.[FeeRate] IS NULL THEN [dbo].[KEYHM_FN_GetDefaultRate](RTRIM(ISNULL(TDB.[Matter], '')), RTRIM(ISNULL(TDB.[FeeEarn], '')), RTRIM(ISNULL(TDB.[NCCCode], '')), RTRIM(ISNULL(TDB.[Task], ''))) ELSE TDB.[Rate] END, @OverriddenRate = CASE WHEN TDB.[Rate] = TDB.[FeeRate] OR TDB.[FeeRate] IS NULL THEN 0 ELSE 1 END FROM [dbo].[TimeDayBook] TDB WHERE TDB.[RecordID] = @recordid UPDATE TDB SET TDB.[Time] = CASE WHEN TDB.[Time] >= 0 THEN Ceiling(TDB.[Time] / @TUTNUMVALUE) * @TUTNUMVALUE ELSE -Ceiling(-TDB.[Time] / @TUTNUMVALUE) * @TUTNUMVALUE END, TDB.[RATE] = @ACTUALRATE, TDB.[FeeRate] = CASE WHEN @OverriddenRate = 1 THEN TDB.[FEERate] ELSE @ACTUALRATE END, TDB.[Charge] = Convert(decimal(10, 2), ( ( CASE WHEN TDB.[Time] >= 0 THEN Ceiling(TDB.[Time] / @TUTNUMVALUE) ELSE -Ceiling(-TDB.[Time] / @TUTNUMVALUE) END * @TUTNUMVALUE * @ACTUALRATE) / 60)), TDB.[Charged] = Convert(decimal(10, 2), ( ( CASE WHEN TDB.[Time] >= 0 THEN Ceiling(TDB.[Time] / @TUTNUMVALUE) ELSE -Ceiling(-TDB.[Time] / @TUTNUMVALUE) END * @TUTNUMVALUE * @ACTUALRATE) / 60)), TDB.[Units] = CASE WHEN TDB.[Time] >= 0 THEN Ceiling(TDB.[Time] / @TUTNUMVALUE) ELSE -Ceiling(-TDB.[Time] / @TUTNUMVALUE) END FROM [dbo].[TimeDayBook] TDB WHERE TDB.[RECORDID] = @RECORDID END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_StopAllTimers' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_StopAllTimers] END GO CREATE PROCEDURE [dbo].[KEYHM_StopAllTimers] (@FeeCode VARCHAR(10)) AS /******************************************************************************************************* * Sets all Stopwatch Status fields to 1 * * Please note:this should only be called after login, in order to reset the status of any Time Daybook * * entries that may have been left after an unexpected shutdown or crash * * * * Stored Procedure Name : [dbo].[KEYHM_StopAllTimers] * * Copied from : [dbo].[ky_NETSPStopAllTimers] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN UPDATE [TDB] SET [TDB].[StopwatchStatus] = 1 FROM [dbo].[TimeDayBook] [TDB] WHERE [TDB].[FeeEarn] = @FeeCode END GO IF OBJECT_ID(N'KEYHM_TakeAction',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_TakeAction] GO CREATE PROCEDURE [dbo].[KEYHM_TakeAction] ( @Handler VARCHAR(10), @ActionID INT ) AS /******************************************************************************************************* * Allows a handler to take ownership of an Action. This is equivalent to * * the original owner delegating and releasing the action to this handler. * * * * Stored Procedure Name : [dbo].[KEYHM_TakeAction] * * Copied from : [dbo].[ky_NETSPTakeAction] * * * * Modification History: * * 2019-04-23 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON DECLARE @Team VARCHAR(10) DECLARE @DelegatedToHandler INT DECLARE @OwnerHandler VARCHAR(10) DECLARE @DATE DATETIME SELECT @TEAM = [HAN].[TEAM] FROM [dbo].[Handlers] [HAN] WHERE [HAN].[CODE] = @Handler EXEC @DelegatedToHandler = [dbo].[KEYHM_TaskScalarDelegatedToHandler] @Handler, @Actionid SELECT @OwnerHandler = [DEL].[HANDLER] FROM [dbo].[DiaryDelegations] [DEL] WHERE DEL.[ACTIONID] = @ACTIONID AND DEL.[OWNER] = 'Y' AND DEL.[STATUS] = 0 SELECT @DATE = DIA.[DATE] FROM [dbo].[diary] [DIA] WHERE [DIA].[ACTIONID] = @ActionID IF @OwnerHandler = @Handler BEGIN RETURN END IF @DelegatedToHandler = 0 BEGIN DECLARE @DelegatedHandler AS VARCHAR(10) DECLARE @AssignNumber AS INT DECLARE @DelType AS VARCHAR(30) --Just getting handler and Assign number to check the handler is TEAM SELECT TOP 1 @DelegatedHandler = [DEL].[HANDLER], @AssignNumber = [DEL].[AssignNo] FROM [dbo].[DiaryDelegations] [DEL] WHERE ( [DEL].[DelType] = 'Delegated' OR [DEL].[DelType] = 'Released') AND [DEL].[ACTIONID] = @ActionID ORDER BY [DEL].[AssignNo] DESC IF EXISTS (SELECT TOP 1 1 FROM [dbo].[Handlers] [HAN] WHERE [HAN].[CODE] = @DelegatedHandler AND [HAN].[TEAMCODE] = 'Y') BEGIN UPDATE [DEL] SET [DEL].[HANDLER] = @Handler, @DelType = [DEL].[DelType] FROM [dbo].[DiaryDelegations] [DEL] WHERE (DelType='Delegated' or DelType='Released') AND ACTIONID=@ActionID AND AssignNo = @AssignNumber IF (@DelType = 'Released') --FeeCode will only changed when Delegate Type is Released BEGIN UPDATE [DIA] SET [DIA].[FNCODE] = @Handler, [DIA].[DELEGATEDFNR] = @Handler FROM [dbo].[diary] [DIA] WHERE [DIA].[ACTIONID] = @ActionID END END ELSE BEGIN DECLARE @DEL VARCHAR(MAX) SET @DEL = CONVERT(VARCHAR(MAX), (SELECT * FROM (SELECT CONVERT(VARCHAR(10), @ActionID) AS [actionid], @Handler AS [handler], @Team AS [team], @DATE AS [date], @DATE AS [time], 'Y' AS [owner], @OwnerHandler AS [delegate], @OwnerHandler AS [fromhandler], 'Released' AS [deltype]) [del] FOR XML AUTO)) DECLARE @DELSuccess INT EXEC @DELSuccess = [dbo].[KEYHM_ScalarXMLDiaryDelegation] @DEL IF @DELSuccess = 0 BEGIN SET @DelegatedToHandler = 1 END END END ELSE BEGIN UPDATE [DEL] SET [DEL].[STATUS] = 1, [DEL].[OWNER] = 'N', [DEL].[DelegateStatus] = 1 FROM [dbo].[DiaryDelegations] [DEL] WHERE [DEL].[ACTIONID] = @ACTIONID AND [DEL].[OWNER] = 'Y' AND [DEL].[STATUS] = 0 UPDATE [DEL] SET [DEL].[OWNER] = 'Y', [DEL].[DELEGATE] = @Handler, [DEL].[DelType] = 'Released' FROM [dbo].[DiaryDelegations] [DEL] WHERE [DEL].[ACTIONID] = @ACTIONID AND [DEL].[STATUS] = 0 AND [DEL].[OWNER] = 'N' AND [DEL].[HANDLER] = @Handler UPDATE [DIA] SET [DIA].[FNCODE] = @Handler, [DIA].[DELEGATEDFNR] = @Handler, [DIA].[DELEGATIONSTATUS] = 0 FROM [dbo].[diary] [DIA] WHERE [DIA].[ACTIONID] = @ActionID END SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_TaskCompleteAction2' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_TaskCompleteAction2] END GO CREATE PROCEDURE [dbo].[KEYHM_TaskCompleteAction2] (@ActionID INT, @CurFee VARCHAR(10), @CurTeam VARCHAR(10), @NextActionsXML VARCHAR(4000), @TakeOwnership INT, @HoldDate BIT=0, @Arrangement VARCHAR(5)) AS /******************************************************************************************************* * This stored procedure used to task complete action * * * * Stored Procedure Name : [dbo].[KEYHM_TaskCompleteAction2] * * Copied from : [dbo].[ky_NETTaskCompleteAction2] * * * * Modification History : * * 2019-04-11 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON DECLARE @Now DATETIME DECLARE @NowDateOnly DATETIME DECLARE @NowClarionTime CHAR(10) DECLARE @NowClarionEndTime CHAR(10) DECLARE @Continue INT DECLARE @Owner INT DECLARE @IsAuthorisedToComplete INT DECLARE @CountFailedDependentActions INT DECLARE @idoc INT DECLARE @VCActionID VARCHAR(50) DECLARE @MaxActionID INT DECLARE @LocDel VARCHAR(10) DECLARE @WorkProcess INT DECLARE @ErrorMsgTable Table ([ErrorMsg] VARCHAR(500)) DECLARE @NA TABLE ([ID] INT identity(1, 1), [ActionID] INT, [Code] VARCHAR(5), [Date] DATETIME) DECLARE @AlarmType INT DECLARE @DisabledAlarmStatusID INT DECLARE @ActionTypeID INT SET XACT_ABORT ON SELECT @AlarmType = ISNULL(ALT1.[TypeID], ALT2.[TypeID]) FROM [dbo].[AlarmTypes] ALT2 LEFT OUTER JOIN [dbo].[AlarmTypes] ALT1 ON ALT1.[Description] = 'Action' WHERE ALT2.[Description] = 'Generic Alarm' SELECT @DisabledAlarmStatusID = IsNull(ALS2.[StatusID], ALS1.[StatusID]) FROM [dbo].[AlarmStatus] ALS1 LEFT OUTER JOIN [dbo].[AlarmStatus] ALS2 ON ALS2.[Description] = convert(VARCHAR(500), 'Actioned') WHERE ALS1.[Description] = 'Disabled' SELECT @ActionTypeID = ALT1.[TypeID] FROM [dbo].[AlarmTypes] ALT1 WHERE ALT1.[Description] = 'Action' IF (RTRIM(ISNULL(@CurTeam,'')) = '') BEGIN SELECT @CurTeam = HAN.[TEAM] FROM [dbo].[Handlers] HAN WHERE HAN.[CODE] = @CurFee END /* If @Continue is SET to a value other than zero at any point during this process, stop processing further data, and make sure that the transaction at the END is rolled back */ SET @Continue = 0 /* Some processes are dependent on the current fee handler being the owner of the action that is to be completed, others require that the action is/isn't a phone call or e-mail */ SELECT @Owner = CASE DIA.[FNCODE] WHEN @CurFee THEN 1 ELSE 0 END, @WorkProcess = ISNULL(DIA.[WORKPROCESS], 0) FROM [dbo].[Diary] DIA WHERE DIA.[ACTIONID] = @ActionID IF (@TakeOwnership = 1) SET @Owner = 1 /* Check that this fee earner is authorised to complete this action. Note that this should also be checked by the client application, before calling this procedure, but we should still check it here in case this somehow gets invoked while bypassing the client checks. */ --SELECT @IsAuthorisedToComplete = [IsAuthorisedToComplete] -- FROM [dbo].[ky_WDActionAuthorisedToComplete](@ActionID, @CurFee) BEGIN INSERT INTO @ErrorMsgTable (ErrorMsg) SELECT CASE RTRIM(ISNULL(TAC.[AuthorisationRequired], 'L')) WHEN '' THEN 'Cont' WHEN 'L' THEN 'Cont' WHEN 'C' THEN CASE WHEN RTRIM(ISNULL(MAT.[FECode], '')) = @CurFee THEN 'Cont' ELSE 'You are not authorised to complete this action. The f/e for this case is required to complete this action.' END WHEN 'P' THEN CASE WHEN RTRIM(ISNULL(MAT.[Partner], '')) = @CurFee THEN 'Cont' ELSE 'You are not authorised to complete this action. The Partner for this case is required complete this ation.' END WHEN 'F' THEN CASE WHEN RTRIM(ISNULL(CNT.[FE], '')) = @CurFee THEN 'Cont' ELSE 'You are not authorised to complete this action. The Partner for this client is required to complete this action.' END WHEN 'A' THEN CASE WHEN RTRIM(ISNULL(CNT.[FE], '')) = @CurFee THEN 'Cont' ELSE 'You are not authorised to complete this action. A Partner of the firm is required to complete this action. Recommend you delegate this action to a partner.' END WHEN 'O' THEN CASE WHEN RTRIM(ISNULL(CNT.[FE], '')) = @CurFee THEN 'Cont' ELSE 'You are not authorised to complete this action.' END ELSE 'You are not authorised to complete this action.' END FROM [dbo].[Diary] DIA INNER JOIN [dbo].[matters] MAT INNER JOIN [dbo].[Contacts] CNT ON CNT.[Code] = MAT.[ClientCode] ON MAT.[Code] = DIA.[CASECODE] LEFT OUTER JOIN [dbo].[TemplateActions] TAC ON TAC.[ACTIONCODE] = dia.[ACTIONCODE] INNER JOIN [dbo].[Handlers] FHA ON FHA.[CODE] = @CurFee WHERE DIA.[ACTIONID] = @ActionID END /* IF not authorised, do not do anything ELSE */ IF ((SELECT Top 1 ErrorMsg FROM @ErrorMsgTable)<>'Cont') BEGIN SET @Continue = 1 END ELSE BEGIN DELETE FROM @ErrorMsgTable END IF (@Continue = 0) BEGIN /* this function returns error messages for each dependent action that has not been completed within the required timeframe. This should also be checked in the client application, and it should display the error messages returned by this function. Here it suffices to make sure there are 0 messages before we proceed. */ --SELECT @CountFailedDependentActions = COUNT(1) -- FROM [dbo].[ky_WDActionCheckDependentActions](@ActionID) /* If there are any messages, do not continue */ INSERT INTO @ErrorMsgTable ([ErrorMsg]) SELECT CONVERT(VARCHAR(1000), RTRIM(ISNULL(DPA.[DependentActionDescription], '') + ' must be complete') + CASE WHEN ISNULL(DPA.[TimeFrame], '') = 'Any Time' THEN '' WHEN ISNULL(DPA.[TimeFramAmount], 0) <= 0 THEN '' ELSE ' (within a timeframe of ' + CONVERT(VARCHAR(4), convert(INT, ISNULL(DPA.[TimeFramAmount], 0))) + ' ' + ISNULL(DPA.[TimeFrame], 0) + ')' END + ' before you can complete this action') AS [ErrorMessage] FROM [dbo].[Diary] DIA OUTER APPLY (SELECT TDA.[ActionCode], TDA.[DependentActionCode], TDA.[TimeFramAmount], TDA.[TimeFrame], TDA.[Status], RTRIM(ISNULL(TAD.[DESC], '')) AS [DependentActionDescription] FROM [dbo].[TemplateDependentActions] TDA INNER JOIN [dbo].[TemplateActions] TAD ON TAD.[ACTIONCODE] = TDA.[DependentActionCode] WHERE TDA.[ActionCode] = DIA.[ActionCode]) DPA OUTER APPLY (SELECT COUNT(1) AS TOTAL FROM [dbo].[diary] DEPA WHERE DEPA.[CASECODE] = DIA.[CASECODE] AND DEPA.[ACTIONCODE] = DPA.[DependentActionCode] AND DEPA.[STATUS] = 1 AND DEPA.[DATE] >= CASE WHEN DPA.[TimeFrame] = 'Any Time' THEN CONVERT(DATETIME, '18010101') WHEN DPA.[TimeFrame] = 'Day(s)' THEN DATEADD(DD, -DPA.[TimeFramAmount], DIA.[DATE]) WHEN DPA.[TimeFrame] = 'Week(s)' THEN DATEADD(WK, -DPA.[TimeFramAmount], DIA.[DATE]) WHEN DPA.[TimeFrame] = 'Month(s)' THEN DATEADD(MM, -DPA.[TimeFramAmount], DIA.[DATE]) WHEN DPA.[TimeFrame] = 'Year(s)' THEN DATEADD(YY, -DPA.[TimeFramAmount], DIA.[DATE]) ELSE CONVERT(DATETIME, '18010101') END) FON WHERE DIA.[ACTIONID] = @ActionID AND DPA.[ActionCode] IS NOT NULL AND FON.[TOTAL] = 0 IF (SELECT COUNT(*) FROM @ErrorMsgTable) <> 0 BEGIN SET @Continue =1 END END -- END IF (@Continue = 0) /* now all the checks are done, we are going to make actual database changes. All this should be atomic so we wrap the whole lot into a transaction */ BEGIN TRANSACTION BEGIN TRY BEGIN IF (@Continue = 0) BEGIN /* some date and time variables that may be used in several of the updates that follow */ -- full date/time IF @HoldDate=0 BEGIN SET @Now = GETDATE() -- date only, time SET to 00:00:00 SET @NowDateOnly = convert(DATETIME, convert(VARCHAR, @Now, 112)) -- Clarion compliant representation of the Time part of the date/time SET @NowClarionTime = convert(CHAR(10), [dbo].[ky_ConvertTimeToClarion](@Now)) SET @NowClarionEndTime = convert(CHAR(10), [dbo].[ky_ConvertTimeToClarion](dateadd(mi, 30, @Now))) END ELSE BEGIN SET @Now = (SELECT [DATE] FROM Diary WHERE ACTIONID =@ActionID ) -- date only, time SET to 00:00:00 SET @NowDateOnly = convert(DATETIME, convert(VARCHAR, @Now, 112)) -- Clarion compliant representation of the Time part of the date/time SET @NowClarionTime = convert(CHAR(10), [dbo].[ky_ConvertTimeToClarion](@Now)) SET @NowClarionEndTime = convert(CHAR(10), [dbo].[ky_ConvertTimeToClarion](dateadd(mi, 30, @Now))) END SELECT @LocDel = DEL.[DELEGATE] FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ActionID AND DEL.[HANDLER] = @CurFee AND ISNULL(DEL.[STATUS], 0) = 0 IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) /* update all Diary delegation records that were assigned to the current handler */ UPDATE DEL SET DEL.[DATER] = @NowDateOnly, DEL.[TIMER] = @NowClarionTime, DEL.[STATUS] = 1 FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ActionID AND DEL.[HANDLER] = @CurFee AND IsNull(DEL.[Status], 0) = 0 IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) IF (@Owner = 1) BEGIN IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) */ /* Phone and E-mail records */ UPDATE DIA SET DIA.[STATUS] = 1, DIA.[PROCESSSTATUS] = 0, DIA.[FNCODE] = CASE WHEN @TakeOwnership = 1 THEN @CurFee ELSE DIA.[FNCODE] END, DIA.[TEAMCODE] = CASE WHEN @TakeOwnership = 1 THEN @CurTeam ELSE DIA.[TEAMCODE] END FROM [dbo].[Diary] DIA WHERE DIA.[ACTIONID] = @ActionID --AND -- ISNULL(DIA.[ACTIONTYPE],'') NOT IN ('A','D','S') -- Pino 2015-10-12, add 'D' (Dictations) to exceptions IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) */ /* If it is a normal Action, update some date information, too */ UPDATE DIA SET DIA.[STATUS] = 1, DIA.[PROCESSSTATUS] = 0, DIA.[DATE] = @Now, DIA.[DYSTARTTIME] = @NowClarionTime, DIA.[DYENDTIME] = @NowClarionEndTime, DIA.[FNCODE] = CASE WHEN @TakeOwnership = 1 THEN @CurFee ELSE DIA.[FNCODE] END, DIA.[TEAMCODE] = CASE WHEN @TakeOwnership = 1 THEN @CurTeam ELSE DIA.[TEAMCODE] END FROM [dbo].[Diary] DIA WHERE DIA.[ACTIONID] = @ActionID -- AND IsNull(DIA.[ACTIONTYPE], '') IN ('A', 'D','S') -- Pino 2015-10-12, do this also for Dictations ('D') IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) */ SET @VCActionID = convert(VARCHAR(50), @ActionID) /* Better to keep these updates in-line since we're wrapping it all into a transaction; we don't want to introduce further complications with calls to external procedures that update the database at this point. Originally: EXEC [dbo].[ky_SetLinkedAlarms] 'Actioned', 'Action', @VCActionID */ UPDATE ALM SET ALM.[Status] = @DisabledAlarmStatusID FROM [dbo].[Alarms] ALM WHERE ALM.[Type] = @ActionTypeID AND ALM.[LinkID] = @VCActionID IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) */ /* When applicable, make sure that the Matter status reflects the status of this completed action */ --UPDATE MAT -- SET MAT.[Status] = TAC.[STATUS] -- FROM [dbo].[Diary] DIA -- INNER JOIN [dbo].[matters] MAT -- ON MAT.[Code] = DIA.[CASECODE] -- INNER JOIN [dbo].[TemplateActions] TAC -- ON TAC.[ACTIONCODE] = DIA.[ACTIONCODE] -- AND ISNULL(TAC.[STATUS], '') NOT IN ('NA', 'N/A', '') -- WHERE DIA.[ACTIONID] = @ActionID UPDATE MAT SET MAT.[Status] = DIA.[ACTIONSTATUS] FROM [dbo].[Diary] DIA INNER JOIN [dbo].[matters] MAT ON MAT.[Code] = DIA.[CASECODE] AND ISNULL(DIA.[ACTIONSTATUS], '') NOT IN ('NA', 'N/A', '') WHERE DIA.[ACTIONID] = @ActionID IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) */ /* Update Case Master */ UPDATE CSM SET CSM.[CSDATELASTACN_DATE] = @NowDateOnly FROM [dbo].[Diary] DIA INNER JOIN [dbo].[CaseMaster] CSM ON CSM.[CSCODE] = DIA.[CASECODE] WHERE DIA.[ACTIONID] = @ActionID IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) */ /* Example of @NextActionsXML: Y Do XXX XXX Y Do not YYY YYY N Do ZZZ ZZZ */ EXEC sp_xml_preparedocument @idoc OUTPUT, @NextActionsXML IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) IF (@Continue = 0) BEGIN SELECT @Continue = COUNT(1) FROM OPENXML(@idoc, 'NA/NextAction', 2) WITH([Process] VARCHAR(1) 'Process', [Decision] VARCHAR(10) 'Decision', [Code] VARCHAR(5) 'Code', [Date] DATETIME) NA INNER JOIN [dbo].[Diary] DIA ON DIA.[ACTIONID] = @ActionID INNER JOIN [dbo].[TemplateActions] TAC ON TAC.[ACTIONCODE] = NA.[Code] AND TAC.[AssignActionTo] = 'P' INNER JOIN [dbo].[Handlers] HAN ON HAN.[CODE] = @CurFee INNER JOIN [dbo].[matters] MAT INNER JOIN [dbo].[Contacts] CNT ON CNT.[Code] = MAT.[ClientCode] ON MAT.[Code] = DIA.[CASECODE] AND RTRIM(ISNULL(MAT.[Partner], '')) = '' WHERE NA.[Process] = 'Y' AND NA.[Decision] = 'Do' IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) / NextActions */ -- Delete next actions flagged AS "Do Not". First, Diary Delegations: DELETE DSL FROM OPENXML(@idoc, 'NA/NextAction', 2) WITH([Process] VARCHAR(1) 'Process', [Decision] VARCHAR(10) 'Decision', [Code] VARCHAR(5) 'Code', [Date] DATETIME) BLCH INNER JOIN [dbo].[Diary] DIA ON DIA.[ACTIONID] = @ActionID INNER JOIN [dbo].[Diary] DS INNER JOIN [dbo].[DiaryDelegations] DSL ON DSL.[ACTIONID] = DS.[ACTIONID] ON DS.[CASECODE] = DIA.[CASECODE] AND DS.[ACTIONCODE] = BLCH.[Code] AND DS.[STATUS] = 0 WHERE BLCH.[Process] = 'Y' AND BLCH.[Decision] = 'Do not' IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) / NextActions */ -- Delete next actions flagged AS "Do Not". Second, OlApptXRef: DELETE DOL FROM OPENXML(@idoc, 'NA/NextAction', 2) WITH([Process] VARCHAR(1) 'Process', [Decision] VARCHAR(10) 'Decision', [Code] VARCHAR(5) 'Code', [Date] DATETIME) BLCH INNER JOIN [dbo].[Diary] DIA ON DIA.[ACTIONID] = @ActionID INNER JOIN [dbo].[Diary] DS INNER JOIN [dbo].[OLApptXref] DOL ON DOL.[ACTIONID] = DS.[ACTIONID] ON DS.[CASECODE] = DIA.[CASECODE] AND DS.[ACTIONCODE] = BLCH.[Code] AND DS.[STATUS] = 0 WHERE BLCH.[Process] = 'Y' AND BLCH.[Decision] = 'Do not' IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) / NextActions */ -- Delete next actions flagged AS "Do Not". Third, DiaryAttachments: DELETE DAT FROM OPENXML(@idoc, 'NA/NextAction', 2) WITH([Process] VARCHAR(1) 'Process', [Decision] VARCHAR(10) 'Decision', [Code] VARCHAR(5) 'Code', [Date] DATETIME) BLCH INNER JOIN [dbo].[Diary] DIA ON DIA.[ACTIONID] = @ActionID INNER JOIN [dbo].[Diary] DS INNER JOIN [dbo].[DiaryAttachments] DAT ON DAT.[DiaryID] = DS.[ACTIONID] ON DS.[CASECODE] = DIA.[CASECODE] AND DS.[ACTIONCODE] = BLCH.[Code] AND DS.[STATUS] = 0 WHERE BLCH.[Process] = 'Y' AND BLCH.[Decision] = 'Do not' IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) / NextActions */ -- Delete next actions flagged AS "Do Not". Fourth, DiaryLinks: DELETE DLK FROM OPENXML(@idoc, 'NA/NextAction', 2) WITH([Process] VARCHAR(1) 'Process', [Decision] VARCHAR(10) 'Decision', [Code] VARCHAR(5) 'Code', [Date] DATETIME) BLCH INNER JOIN [dbo].[Diary] DIA ON DIA.[ACTIONID] = @ActionID INNER JOIN [dbo].[Diary] DS INNER JOIN [dbo].[DiaryLinks] DLK ON DLK.[ACTIONID] = DS.[ACTIONID] ON DS.[CASECODE] = DIA.[CASECODE] AND DS.[ACTIONCODE] = BLCH.[Code] AND DS.[STATUS] = 0 WHERE BLCH.[Process] = 'Y' AND BLCH.[Decision] = 'Do not' IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) / NextActions */ -- Delete next actions flagged AS "Do Not". Fifth, DiaryTemp: DELETE DTM FROM OPENXML(@idoc, 'NA/NextAction', 2) WITH([Process] VARCHAR(1) 'Process', [Decision] VARCHAR(10) 'Decision', [Code] VARCHAR(5) 'Code', [Date] DATETIME) BLCH INNER JOIN [dbo].[Diary] DIA ON DIA.[ACTIONID] = @ActionID INNER JOIN [dbo].[Diary] DS INNER JOIN [dbo].[DiaryTemp] DTM ON DTM.[ACTIONID] = DS.[ACTIONID] ON DS.[CASECODE] = DIA.[CASECODE] AND DS.[ACTIONCODE] = BLCH.[Code] AND DS.[STATUS] = 0 WHERE BLCH.[Process] = 'Y' AND BLCH.[Decision] = 'Do not' IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) / NextActions */ -- Delete next actions flagged AS "Do Not". Second, the actual Diary entries: DELETE DS FROM OPENXML(@idoc, 'NA/NextAction', 2) WITH([Process] VARCHAR(1) 'Process', [Decision] VARCHAR(10) 'Decision', [Code] VARCHAR(5) 'Code', [DATE] DATETIME) BLCH INNER JOIN [dbo].[Diary] DIA ON DIA.[ACTIONID] = @ActionID INNER JOIN [dbo].[Diary] DS ON DS.[CASECODE] = DIA.[CASECODE] AND DS.[ACTIONCODE] = BLCH.[Code] AND DS.[STATUS] = 0 WHERE BLCH.[Process] = 'Y' AND BLCH.[Decision] = 'Do not' IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) /* Create new Actions based on the TemplateNextAction entries that are flagged AS "Do"s. As this involves a number of steps, we'll use a temporary table @NA (nextactions) that will hold the newly created Action IDs. We can then use that AS a basis for all following INSERT and UPDATE statements ensuring that all Diary / DiaryDelegation (etc) entries are correctly linked within this transaction. */ IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) / NextActions */ --Pino 2015-09-30 Start EXEC @MaxActionID = [dbo].[KEYHM_GetNextActionID] SET @MaxActionID = @MaxActionID - 1 --SELECT @MaxActionID = IsNull(MAX(DIA.[ActionID]), 0) -- FROM [dbo].[Diary] DIA --Pino 2015-09-30 Start IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) IF (@Continue = 0) BEGIN INSERT INTO @NA ([ActionID], [Code], [Date]) SELECT @MaxActionID, BLCH.[Code], [Date] FROM OPENXML(@idoc, 'NA/NextAction', 2) WITH(Process VARCHAR(1) 'Process', Decision VARCHAR(10) 'Decision', Code VARCHAR(5) 'Code', [Date] DATETIME) BLCH WHERE BLCH.[Process] = 'Y' AND BLCH.[Decision] = 'Do' IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) END -- END IF (@Continue = 0) EXEC sp_xml_removedocument @idoc IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) / NextActions */ UPDATE @NA SET [ActionID] = [ActionID] + [ID] IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) / NextActions */ /* The following is based on the original Clarion AddDiaryStep procedure (in CaseFun) Based on the NextActions in the temporary @NA table this code will: - Create new Diary entries, - Add their DiaryDelegation records, - Set the Linked Alarm - Update CaseMaster with the last added Diary Work Type ADDDIARYSTEP - START */ INSERT INTO [dbo].[Diary] ([ActionID], [CASECODE], [DATE], [STATUS], [ACTIONSTATUS], [ACTIONCODE], [ACTIONTYPE], [FnCode], [TeamCode], [Text1], [Displaytext], [DYStartTime], [DYEndTime], [DueDate], [ImageNo], [Publish], [Priority], [Highlighted], [Billable], [ProcessStatus], [BillDescription], [MILESTEONETYPE], [ORGINALACTIONID], [DraftBillNo], [Subject]) SELECT NA.[ActionID], DIA.[CASECODE] AS [CASECODE], --[dbo].[ky_WDGetDate](@Now, -- TNA.[WHENTYPE], -- TNA.[WHEN]) AS [DATE], NA.[Date] AS [DATE], 0 AS [STATUS], TAC.[STATUS] AS [ACTIONSTATUS], NA.[Code] AS [ACTIONCODE], TAC.[ACTIONCATEGORY] AS [ACTIONTYPE], CASE TAC.[AssignActionTo] WHEN 'C' THEN MAT.[FECode] WHEN 'P' THEN MAT.[Partner] WHEN 'F' THEN CNT.[FE] WHEN 'O' THEN TAC.[ASSIGNHANDLER] ELSE @CurFee END AS [FnCode], CASE TAC.[AssignTeamActionTo] WHEN 'O' THEN TAC.[ASSIGNTEAM] ELSE HAN.[TEAM] END AS [TeamCode], TAC.[DESC] AS [Text1], [dbo].[KEYHM_FN_RemoveSpuriousWhitespace](ISNULL(CONVERT(VARCHAR(MAX), TAC.[DESC]), ''), 200) AS [Displaytext], @NowClarionTime AS [DYStartTime], @NowClarionEndTime AS [DYEndTime], --[dbo].[ky_WDGetDate](@NowDateOnly, -- TNA.[WHENTYPE], -- TNA.[WHEN]) AS [DueDate], NA.[Date] AS [DueDate], 0 As [ImageNo], TAC.[PUBLISHER] AS [Publish], IsNull(SUBSTRING(TAC.[PRIORITY], 1, 1), 'N') As [Priority], TAC.[HIGHLIGHTED] As [Highlighted], CASE TAC.[BILLABLE] WHEN 'Y' THEN 1 ELSE 0 END As [Billable], 0 As [ProcessStatus], TAC.[BILLDESCRIPTION] AS [BillDescription], CASE TAC.[AssignActionTo] WHEN 'C' THEN MAT.[FECode] WHEN 'P' THEN MAT.[Partner] WHEN 'F' THEN CNT.[FE] WHEN 'O' THEN TAC.[ASSIGNHANDLER] ELSE @CurFee END AS [MilestoneType], @ActionID As [OriginalActionID], 0 As [DraftBillNo], CASE WHEN SUBSTRING(TAC.[DESC],0,CHARINDEX (CHAR(13),TAC.[DESC]))= '' THEN TAC.[DESC] ELSE SUBSTRING(TAC.[DESC],0,CHARINDEX (CHAR(13),TAC.[DESC])) END FROM @NA NA INNER JOIN [dbo].[Diary] DIA ON DIA.[ACTIONID] = @ActionID INNER JOIN [dbo].[TemplateActions] TAC ON TAC.[ACTIONCODE] = NA.[Code] INNER JOIN [dbo].[TemplateNextActions] TNA ON TNA.[ACTION] = DIA.[ACTIONCODE] AND TNA.[NEXTACTION] = NA.[Code] INNER JOIN [dbo].[Handlers] HAN ON HAN.[CODE] = @CurFee INNER JOIN [dbo].[matters] MAT INNER JOIN [dbo].[Contacts] CNT ON CNT.[Code] = MAT.[ClientCode] ON MAT.[Code] = DIA.[CASECODE] IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) --Pino 2015-09-30 Start --reseed EXEC [dbo].[KEYHM_ReseedActionID] --EXEC @MaxActionID = [dbo].[KEYHM_GetNextActionID] --Pino 2015-09-30 Start IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) / NextActions / AddDiaryStep */ INSERT INTO [dbo].[DiaryDelegations] ([ACTIONID], [HANDLER], [TEAM], [DATE], [TIME], [DUEDATE], [DUETIME], [STATUS], [OWNER], [DELEGATE], [ACTIONTYPE], [DelType], [FromHandler]) SELECT DIA.[ACTIONID] AS [ACTIONID], CASE WHEN @TakeOwnership = 1 THEN @CurFee ELSE DIA.[FNCODE] END AS [HANDLER], CASE WHEN @TakeOwnership = 1 THEN @CurTeam ELSE DIA.[TEAMCODE] END AS [TEAM], DIA.[DUEDATE] AS [DATE], @NowClarionTime AS [TIME], DIA.[DUEDATE] AS [DUEDATE], @NowClarionTime AS [DUETIME], DIA.[STATUS] AS [STATUS], 'Y' AS [OWNER], DIA.[FNCODE] AS [DELEGATE], DIA.[ACTIONTYPE] AS [ACTIONTYPE], 'Created' AS [DelType], DIA.[FNCODE] AS [FromHandler] FROM @NA NA INNER JOIN [dbo].[Diary] DIA ON DIA.[ACTIONID] = NA.[ActionID] IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) / NextActions / AddDiaryStep */ INSERT INTO [dbo].[Alarms] ([ID], [HandlerCode], [MatterRef], [LinkID], [OriginalDate], [DeferredDate], [Title], [Message], [Type], [Status]) SELECT convert(VARCHAR(38), newid()) AS [ID], DEL.[HANDLER] AS [Handler], DIA.[CASECODE] As [MatterRef], convert(VARCHAR(50), NA.[ActionID]) AS [LinkID], DIA.[DATE] As [OriginalDate], DIA.[DATE] As [DeferredDate], CASE WHEN DIA.[ActionType] <> 'E' THEN ISNULL(RTRIM(SUBSTRING(DIA.[TEXT1], 1, 255)), '') WHEN DIA.[ProcessType] = 'I' THEN RTRIM(SUBSTRING( 'Email From:' + RTRIM(ISNULL([dbo].[ky_GetNameFromEmailAddress](DIA.[EMAILADDRESS]), '')) + ' - ' + ISNULL(SUBSTRING(DIA.[Subject], 1, 255), ''), 1, 255)) ELSE RTRIM(SUBSTRING( 'Email To:' + RTRIM(ISNULL(SUBSTRING(DIA.[AddressTo], 1, 255), '')) + ' - ' + ISNULL(SUBSTRING(DIA.[Subject], 1, 255), ''), 1, 255)) END AS [Title], RTRIM(SUBSTRING(DIA.[Text1], 1, 8000)) AS [Message], @AlarmType As [Type], ALS.[StatusID] AS [Status] FROM @NA NA INNER JOIN [dbo].[Diary] DIA ON DIA.[ACTIONID] = NA.[ActionID] INNER JOIN [dbo].[DiaryDelegations] DEL ON DEL.[ACTIONID] = NA.[ActionID] INNER JOIN [dbo].[AlarmStatus] ALS ON ALS.[Description] = 'Attention' IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) / NextActions / AddDiaryStep */ IF NOT ((SELECT RTRIM(ISNULL(T.HoldCasePlan,'N')) FROM templateactions T INNER JOIN Diary D on T.ACTIONCODE = D.ACTIONCODE WHERE D.ACTIONID = @ActionID) = 'Y') BEGIN UPDATE CSM SET CSM.[CSWKTCODE] = TAC.[WKTCODE] FROM ( SELECT MAX(NA.[ActionID]) AS [MaxActionID] FROM @NA NA) LAID INNER JOIN [dbo].[Diary] DIA INNER JOIN [dbo].[TemplateActions] TAC ON TAC.[ACTIONCODE] = DIA.[ACTIONCODE] ON DIA.[ACTIONID] = LAID.[MaxActionID] INNER JOIN [dbo].[CaseMaster] CSM ON CSM.[CSCODE] = DIA.[CASECODE] END END -- END IF (@Continue = 0) /* ADDDIARYSTEP - END */ END -- END IF (@Continue = 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) */ /* Complete the diary delegations */ UPDATE DEL SET DEL.[STATUS] = 1, DEL.[HANDLER] = CASE WHEN @TakeOwnership = 1 THEN @CurFee ELSE DEL.[HANDLER] END, DEL.[TEAM] = CASE WHEN @TakeOwnership = 1 THEN @CurTeam ELSE DEL.[TEAM] END, DEL.[DelType] = CASE WHEN (@TakeOwnership = 1) AND (DEL.[DelType] = 'Released') AND (DEL.[FromHandler] = @CurFee) THEN 'Completed' ELSE DEL.[DelType] END FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ActionID AND IsNull(DEL.[STATUS], 0) <> 1 IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 1) */ /* Write new 'Completed' row to Diary Delegations */ INSERT INTO [dbo].[DiaryDelegations] ([ACTIONID], [HANDLER], [TEAM], [FromHandler], [ReturnedBy], [DELEGATE], [DATE], [TIME], [STATUS], [DELEGATESTATUS], [DelType]) SELECT DIA.[ACTIONID], DIA.[FNCODE], DIA.[TEAMCODE], DIA.[FNCODE], DIA.[FNCODE], DIA.FNCODE, @NowDateOnly, @NowClarionTime, 1, 1, 'Completed' FROM [dbo].[Diary] DIA WHERE DIA.[ACTIONID] = @ActionID IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) END -- END IF (@Owner = 1) IF (@Owner = 0) BEGIN IF (@Continue = 0) BEGIN /* top condition: (@Owner = 0) */ /* Return Action */ UPDATE DIA SET DIA.[DELEGATEDFNR] = @LocDel, DIA.[PROCESSSTATUS] = 0, DIA.[DELEGATIONSTATUS] = CASE WHEN @LocDel = DIA.[FNCODE] THEN 2 ELSE DIA.[DELEGATIONSTATUS] END FROM [dbo].[Diary] DIA WHERE DIA.[ACTIONID] = @ActionID IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 0) */ IF (@WorkProcess = 0) BEGIN INSERT INTO [dbo].[DiaryDelegations] ([ACTIONID], [HANDLER], [TEAM], [DATE], [TIME], [TIMER], [DUETIME], [REVIEW], [STATUS], [OWNER], [DELEGATE], [DELEGATESTATUS], [ActionType], [FromHandler], [ReturnedBy], [DelType]) SELECT DEL.[ACTIONID], @CurFee As [HANDLER], @CurTeam AS [TEAM], @Now, @NowClarionTime, NULL AS [TIMER], '' AS [DUETIME], '' AS [REVIEW], 1 AS [STATUS], '' AS [OWNER], @CurFee AS [DELEGATE], 1 As [DELEGATESTATUS], '' AS [ActionType], @CurFee AS [FromHandler], @CurFee AS [ReturnedBy], 'Processed' AS [DelType] FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ActionID AND DEL.[HANDLER] = @LocDel AND DEL.[STATUS] = 0 UPDATE DIA SET DIA.[WorkProcess] = 1 FROM [dbo].[Diary] DIA WHERE DIA.[ActionID] = @ActionID END INSERT INTO [dbo].[DiaryDelegations] ([ACTIONID], [ActionType], [DATE], [DATER], [DELEGATE], [DELEGATESTATUS], [DUEDATE], [DUETIME], [DelType], [FromHandler], [HANDLER], [OWNER], [REVIEW], [ReturnedBy], [STATUS], [TEAM], [TIME], [TIMER]) SELECT DEL.[ACTIONID], DEL.[ActionType], @Now, @NowDateOnly AS [DATER], DEL.[DELEGATE], 2 As [DELEGATESTATUS], DEL.[DUEDATE], DEL.[DUETIME], 'Returned' AS [DelType], DEL.[FromHandler], DEL.[HANDLER], DEL.[OWNER], DEL.[REVIEW], @CurFee AS [ReturnedBy], 1 AS [STATUS], DEL.[TEAM], @NowClarionTime, @NowClarionTime AS [TIMER] FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ActionID AND DEL.[HANDLER] = @LocDel AND DEL.[STATUS] = 0 IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) IF (@Continue = 0) BEGIN /* top condition: (@Owner = 0) */ UPDATE DEL SET DEL.[DELEGATESTATUS] = 2, DEL.[DATER] = @NowDateOnly, DEL.[TIMER] = @NowClarionTime, DEL.[ReturnedBy] = @CurFee FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ActionID AND DEL.[HANDLER] = @LocDel AND DEL.[STATUS] = 0 IF (@@ERROR <> 0) BEGIN /* this will eventually lead to a rollback */ SET @Continue = 1 END -- END IF (@@ERROR <> 0) END -- END IF (@Continue = 0) END -- END IF (@Owner = 0) END -- END IF (@Continue = 0) END END TRY BEGIN CATCH SET @Continue = 1 END CATCH IF (@Continue = 0) BEGIN BEGIN TRY IF EXISTS (SELECT TOP 1 1 FROM [dbo].[DiaryDelegations] [DEL] WHERE [DEL].[ACTIONID] = @ActionID AND [DEL].[STATUS] = 0 AND [DEL].[OWNER] = 'Y') BEGIN UPDATE [DEL] SET [DEL].[OWNER] = '' FROM [dbo].[DiaryDelegations] [DEL] WHERE [DEL].[ACTIONID] = @ActionID AND [DEL].[STATUS] = 1 AND [DEL].[OWNER] = 'Y' END END TRY BEGIN CATCH SET @Continue = 1 END CATCH END IF (@Continue = 0) BEGIN COMMIT SELECT ErrorMsg FROM @ErrorMsgTable END ELSE -- ELSE (IF (@Continue = 0)) BEGIN ROLLBACK SELECT ErrorMsg FROM @ErrorMsgTable END -- END IF (@Continue = 0) IF NOT (@Arrangement = '') BEGIN UPDATE [MAT] SET [MAT].[ChargeArrangement] = @Arrangement, [MAT].[CollectingBalance] = 0 FROM [dbo].[Diary] [DIA] INNER JOIN [dbo].[matters] [MAT] ON [MAT].[Code] = [DIA].[CASECODE] WHERE [DIA].[ACTIONID] = @ActionID END SET NoCount OFF END GO IF OBJECT_ID(N'KEYHM_TaskGetNextActionCode',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_TaskGetNextActionCode] GO CREATE PROCEDURE [dbo].[KEYHM_TaskGetNextActionCode] ( @ActionId AS INT ) AS /******************************************************************************************************* * This procedure is used to get net Action Code based on the given Action ID. * * * * Stored Procedure Name : [dbo].[KEYHM_TaskGetNextActionCode] * * Copied from : [dbo].[Ky_NETTaskGetNextActionCode] * * * * Modification History: * * 2019-04-24 Vinodhan K Created * *******************************************************************************************************/ BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; SELECT RTRIM(ISNULL(TNA.[DECISION], '')) AS [Decision], RTRIM(ISNULL(TNA.[NEXTACTION], '')) AS [NextAction], TNAC.[DESC] AS [NextActionDescription], TAC.[NEXTACTIONOPTIONAL] AS NextActionOptional, CASE WHEN DPA.[TimeFrame] = 'Any Time' THEN CONVERT(DATETIME, '18010101') WHEN DPA.[TimeFrame] = 'Day(s)' THEN DATEADD(DD, -DPA.[TimeFramAmount], DIA.[DATE]) WHEN DPA.[TimeFrame] = 'Week(s)' THEN DATEADD(WK, -DPA.[TimeFramAmount], DIA.[DATE]) WHEN DPA.[TimeFrame] = 'Month(s)' THEN DATEADD(MM, -DPA.[TimeFramAmount], DIA.[DATE]) WHEN DPA.[TimeFrame] = 'Year(s)' THEN DATEADD(YY, -DPA.[TimeFramAmount], DIA.[DATE]) ELSE CONVERT(DATETIME, '18010101') END AS [TimeFrame], [dbo].[ky_WDGetDate](GETDATE(),TNA.[WHENTYPE],TNA.[WHEN]) AS [On] FROM [diary] DIA INNER JOIN [TemplateActions] TAC ON TAC.[ACTIONCODE] = DIA.[ACTIONCODE] INNER JOIN [TemplateNextActions] TNA INNER JOIN [TemplateActions] TNAC ON TNAC.[ACTIONCODE] = TNA.[NEXTACTION] ON TNA.[ACTION] = TAC.[ACTIONCODE] LEFT JOIN TemplateDependentActions DPA ON DPA.DependentActionCode = TNA.ACTION WHERE [ACTIONID] = @ActionId END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_TaskScalarDelegatedToHandler' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_TaskScalarDelegatedToHandler] END GO CREATE PROCEDURE [dbo].[KEYHM_TaskScalarDelegatedToHandler] (@Handler VARCHAR(10), @ActionID INT) AS /******************************************************************************************************* * Checks whether an action is delegated to a particular handler. Returns 0 if not, 1 otherwise. * * * * Stored Procedure Name : [dbo].[KEYHM_TaskScalarDelegatedToHandler] * * Copied from : [dbo].[ky_NETTaskScalarDelegatedToHandler] * * * * Modification History: * * 2019-04-26 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @IsAssigned INT SELECT @IsAssigned = CASE WHEN COUNT(1) = 0 THEN 0 ELSE 1 END FROM [dbo].[DiaryDelegations] DEL WHERE DEL.[ACTIONID] = @ActionID AND DEL.[HANDLER] = @Handler AND DEL.[DelType] NOT IN ('Completed', 'Processed', 'Returned', 'Created') AND DEL.[STATUS] = 0 AND ISNULL(DEL.[OWNER], 'N') <> 'Y' SET @IsAssigned = ISNULL(@IsAssigned, 0) RETURN @IsAssigned END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_TF_GetDocFolders3' AND SO.[type] = 'TF') BEGIN DROP FUNCTION [dbo].[KEYHM_TF_GetDocFolders3] END GO CREATE FUNCTION [dbo].[KEYHM_TF_GetDocFolders3] (@parentid INT, @fulltree BIT, @includeparent BIT) RETURNS @DocFolders TABLE ([seq] INT IDENTITY (1, 1) NOT NULL PRIMARY KEY, [id] INT NOT NULL, [parent] INT NOT NULL, [foldername] VARCHAR(500) NOT NULL, [foldericon] INT NOT NULL, [foldershared] BIT NOT NULL, [folderisours] BIT NOT NULL) AS /************************************************************************************************************* * * * Stored Procedure Name : KEYHM_TF_GetDocFolders3 * * Copied From : [dbo].[ky_NETTFGetDocFolders3] * * * * Compatibility information - PLEASE update older versions if necessary to ensure the compatible software * * remains fully functional * * ***************************************************************************************************** * * * * * * * Supersedes: - ky_NETTFGetDocFolders2 * * * * First compatible version: - 5.5.1.2 * * * * Last compatible software version: - 5.5.3.9 * * * * Superseded by: - ky_NETTFGetDocFolders4 * * * * * * * ***************************************************************************************************** * * * * Retrieve a document folder tree * * @parentid - the ID of the root folder * * @fulltree - get the complete tree for @parentid * * 0 - get only the first level child nodes * * 1 - get all child nodes * * @includeparent - include the parent node itself * * 0 - the top level returned are the child nodes * * 1 - the top level returned is the parent node * * * * Modification History: * * 2016-04-20 Pino Carafa Created * * 2016-05-12 Pino Carafa Added Folder Icon * * 2017-06-26 Pino Carafa Add outer join for folder sharing * * 2017-07-12 Pino Carafa Add indicator to show whether the share is ours or we're linking to it * * 2017-09-04 Pino Carafa Corrected code to check whether a share is ours. * * 2019-08-27 Vinodhan Created KAAS_TF_GetDocFolders3 * * * *************************************************************************************************************/ BEGIN DECLARE @DocFoldersX TABLE ([seq] INT IDENTITY (0, 1) NOT NULL PRIMARY KEY, [id] INT NOT NULL, [parent] INT NOT NULL, [foldername] VARCHAR(500) NOT NULL, [foldericon] INT NOT NULL, [foldershared] BIT NOT NULL, [folderisours] BIT NOT NULL) IF ISNULL(@parentid, 0) = 0 BEGIN INSERT INTO @DocFoldersX ([id], [parent], [foldername], [foldericon], [foldershared], [folderisours]) SELECT [DF].[id], 0, [DF].[foldername], [DF].[foldericon], 0, 1 FROM [dbo].[DocFolders] [DF] WHERE [DF].[parent] IS NULL ORDER BY [DF].[foldername], [DF].[id] END ELSE BEGIN IF @includeparent = 1 BEGIN INSERT INTO @DocFoldersX ([id], [parent], [foldername], [foldericon], [foldershared], [folderisours]) SELECT [DF].[id], ISNULL([DF].[parent], 0), [DF].[foldername], [DF].[foldericon], 0, 1 FROM [dbo].[DocFolders] [DF] WHERE [DF].[id] = @parentid ORDER BY [DF].[foldername], [DF].[id] END ELSE BEGIN INSERT INTO @DocFoldersX ([id], [parent], [foldername], [foldericon], [foldershared], [folderisours]) SELECT [DF].[id], ISNULL([DF].[parent], 0), [DF].[foldername], [DF].[foldericon], 0, 1 FROM [dbo].[DocFolders] [DF] WHERE [DF].[parent] = @parentid ORDER BY [DF].[foldername], [DF].[id] END END UPDATE [DFX] SET [DFX].[foldershared] = [FSDF].[Shared], [DFX].[folderisours] = [IO].[IsOurs] FROM @DocFoldersX [DFX] INNER JOIN [dbo].[FileSharingDocFolders] [FSDF] CROSS APPLY (SELECT CASE WHEN COUNT(CASE WHEN ISNULL([FSS].[CollabDocFolderID], 0) = 0 THEN 1 ELSE NULL END) = 0 THEN 0 ELSE 1 END AS [IsOurs] FROM [dbo].[FileSharingMapping] [FSM] INNER JOIN [dbo].[FileSharingServers] [FSS] ON [FSS].[id] = [FSM].[FileSharingServersID] WHERE [FSM].[FileSharingDocFoldersID] = [FSDF].[DocFolderID]) [IO] ON [FSDF].[DocFolderID] = [DFX].[id] DECLARE @TOTAL INT DECLARE @ITEM INT SELECT @TOTAL = COUNT(1) FROM @DocFoldersX SET @ITEM = 0 WHILE @ITEM < @TOTAL BEGIN DECLARE @id INT DECLARE @parent INT DECLARE @foldername VARCHAR(500) DECLARE @foldericon INT DECLARE @foldershared BIT DECLARE @folderisours BIT SELECT @id = [DFX].[id], @parent = [DFX].[parent], @foldername = [DFX].[foldername], @foldericon = [DFX].[foldericon], @foldershared = [DFX].[foldershared], @folderisours = [DFX].[folderisours] FROM @DocFoldersX [DFX] WHERE [DFX].[seq] = @ITEM INSERT INTO @DocFolders ([id], [parent], [foldername], [foldericon], [foldershared], [folderisours]) SELECT @id, @parent, @foldername, @foldericon, @foldershared, @folderisours IF @fulltree = 1 BEGIN INSERT INTO @DocFolders ([id], [parent], [foldername], [foldericon], [foldershared], [folderisours]) SELECT [DFC].[id], [DFC].[parent], [DFC].[foldername], [DFC].[foldericon], [DFC].[foldershared], [DFC].[folderisours] FROM [dbo].[KEYHM_TF_GetDocFolders3](@id, 1, 0) [DFC] END SET @ITEM = @ITEM + 1 END RETURN END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = 'KEYHM_UpdateActionAlarm' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_UpdateActionAlarm] END GO CREATE PROCEDURE [dbo].[KEYHM_UpdateActionAlarm] (@LinkID varchar(50)) AS /******************************************************************************************************* * Set Keyhouse Risk Management Matter Alarm. * * * * Stored Procedure Name : [dbo].[KEYHM_UpdateActionAlarm] * * Copied from : [dbo].[ky_UpdateActionAlarm] * * * * Modification History : * * 2019-04-22 Vinodhan K Created * 2019-05-26 Kaushik Created * *******************************************************************************************************/ BEGIN DECLARE @MatterRef varchar(20) DECLARE @AlarmDateString varchar(23) DECLARE @AlarmDate datetime DECLARE @Date datetime DECLARE @DYSTARTTIME char(10) DECLARE @NUMVAL int DECLARE @TimeFromDate varchar(12) DECLARE @HourVal varchar(2) DECLARE @MinuteVal varchar(2) DECLARE @SecondVal varchar(2) DECLARE @MilliSecondVal varchar(3) DECLARE @Title NVARCHAR(255) DECLARE @Message NVARCHAR(max) DECLARE @ActionID INT DECLARE @NLinkID INT IF RTRIM(ISNULL(@LinkID, '')) = '' BEGIN SET @NLinkID = 0 END ELSE IF (ISNUMERIC(@LinkID) = 0) OR (CHARINDEX('.', @LinkID) > 0) OR (CHARINDEX(',', @LinkID) > 0) OR (CHARINDEX(':', @LinkID) > 0) OR (CHARINDEX('D', @LinkID) > 0) BEGIN SET @NLinkID = 0 END ELSE BEGIN SET @NLinkID = CONVERT(INT, @LinkID) END IF (@NLinkID <> 0) BEGIN select @ActionID = DIA.[ActionID], @Date = DIA.[date], @DYSTARTTIME = DIA.[DYSTARTTIME], @NUMVAL = case when isnumeric(isnull(DIA.[DYSTARTTIME], '')) = 0 then 0 when convert(int, DIA.[DYSTARTTIME]) > 8640000 then 0 else convert(int, DIA.[DYSTARTTIME]) - 1 END, @TimeFromDate = convert(varchar, DIA.[date], 114), @MatterRef = DIA.[CaseCode], @Title = CONVERT(NVARCHAR(255), CASE WHEN DIA.[ActionType] <> 'E' THEN RTRIM(substring(DIA.[TEXT1], 1, 255)) WHEN DIA.[ProcessType] = 'I' THEN RTRIM(substring('Email From:' + RTrim(DIA.[EmailAddress]) + ' - ' + substring(DIA.[Subject], 1, 255), 1, 255)) ELSE RTRIM(substring('Email To:' + RTrim(substring(DIA.[AddressTo], 1, 255)) + ' - ' + substring(DIA.[Subject], 1, 255), 1, 255)) end), @Message = CONVERT(NVARCHAR(MAX), DIA.[TEXT1]) from [dbo].[diary] DIA where DIA.[ActionID] = @NLinkID SET @HourVal = Right('00' + convert(varchar(2), FLOOR(@NUMVAL / 360000)), 2) SET @MinuteVal = Right('00' + convert(varchar(2), FLOOR((@NUMVAL - (360000 * FLOOR(@NUMVAL / 360000))) / 6000)), 2) SET @SecondVal = Right('00' + convert(varchar(2), FLOOR((@NUMVAL - (6000 * FLOOR(@NUMVAL / 6000))) / 100)), 2) SET @MilliSecondVal = Right('000' + convert(varchar(3), FLOOR((@NUMVAL - (100 * FLOOR(@NUMVAL / 100))) * 10)), 3) SET @AlarmDateString = CONVERT(VARCHAR, @DATE, 112) + ' ' + case when @TimeFromDate <> '00:00:00:000' then @TimeFromDate when @HourVal + ':' + @MinuteVal + ':' + @SecondVal + ':' + @MilliSecondVal <> '00:00:00:000' then @HourVal + ':' + @MinuteVal + ':' + @SecondVal + ':' + @MilliSecondVal when isNull(@DYSTARTTIME, '*') = '*' then '00:00:00:000' when isnumeric(isnull(@DYSTARTTIME, '')) = 1 then '00:00:00:000' when isdate(isnull(@DYSTARTTIME, '')) = 0 then '00:00:00:000' else convert(varchar, convert(datetime, @DYSTARTTIME), 114) End SET @AlarmDate = convert(datetime, @AlarmDateString) DELETE ALM FROM [dbo].[AlarmTypes] ALT INNER JOIN [dbo].[Alarms] ALM LEFT OUTER JOIN [dbo].[DiaryDelegations] DEL ON DEL.[ActionID] = @ActionID AND DEL.[Handler] = ALM.[HandlerCode] ON ALM.[Type] = ALT.[TypeID] WHERE ALT.[Description] = 'Action' AND ALM.[LinkID] = @LinkID AND ( DEL.[ActionID] is null OR DEL.[Status] = 1) UPDATE ALM SET ALM.[OriginalDate] = case when @AlarmDate > ALM.[DeferredDate] then @AlarmDate else ALM.[OriginalDate] end, ALM.[DeferredDate] = case when @AlarmDate > ALM.[DeferredDate] then @AlarmDate else ALM.[DeferredDate] end, ALM.[Title] = @Title, ALM.[Message] = @Message FROM [dbo].[AlarmTypes] ALT INNER JOIN [dbo].[Alarms] ALM ON ALM.[Type] = ALT.[TypeID] WHERE ALT.[Description] = 'Action' AND ALM.[LinkID] = @LinkID END END GO IF OBJECT_ID(N'KEYHM_UpdateCaseInformation',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_UpdateCaseInformation] GO CREATE PROCEDURE [dbo].[KEYHM_UpdateCaseInformation] (@ActionId INT, @Text1 VARCHAR(MAX), @DATE DATETIME) AS /******************************************************************************************************* * This procedure is used to Update Case Info in [dbo].[Diary]. * * * * Stored Procedure Name : [dbo].[KEYHM_UpdateCaseInformation] * * Copied from : NA * * * * Modification History: * * 2019-04-24 Vinodhan K Created * *******************************************************************************************************/ BEGIN IF EXISTS(SELECT TOP 1 1 FROM Diary WHERE ACTIONID = @ActionId) BEGIN UPDATE [dbo].[Diary] SET [TEXT1] = @Text1, [DATE] = @DATE WHERE ACTIONID = @ActionId END END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_UpdateRecentHandlerList' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_UpdateRecentHandlerList] END GO CREATE PROCEDURE [dbo].[KEYHM_UpdateRecentHandlerList] ( @HandlerCode VARCHAR(10), @AccessedBy VARCHAR(10)) AS /******************************************************************************************************* * * * Updates the recently selected handler by the currently logged in user * * * * Stored Procedure Name : [dbo].[KEYHM_UpdateRecentHandlerList] * * * * Modification History: * * 2019-08-02 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET NOCOUNT ON IF EXISTS(SELECT TOP 1 1 FROM sys.objects WHERE [Name] = 'RecentHandlerList') AND EXISTS (SELECT TOP 1 1 FROM [RecentHandlerList] WHERE [Code] = @HandlerCode AND [AccessedBy] = @AccessedBy) BEGIN DELETE FROM [RecentHandlerList] WHERE [Code] = @HandlerCode AND [AccessedBy] = @AccessedBy END IF EXISTS(SELECT TOP 1 1 FROM sys.objects WHERE [Name] = 'RecentHandlerList') AND NOT EXISTS (SELECT TOP 1 1 FROM [RecentHandlerList] WHERE [Code] = @HandlerCode AND [AccessedBy] = @AccessedBy) BEGIN INSERT INTO [RecentHandlerList] VALUES(@HandlerCode, @AccessedBy, GETDATE()) END SET NOCOUNT OFF END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_UpdateRecentMatterList' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_UpdateRecentMatterList] END GO CREATE PROCEDURE [dbo].[KEYHM_UpdateRecentMatterList] (@HANDLER varchar(10), @MATTER varchar(20)) AS /******************************************************************************************************* * * * * * Stored Procedure Name : [dbo].[KEYHM_UpdateRecentMatterList] * * Copied from : [dbo].[ky_UpdateRecentMatterList] * * * * Modification History: * * 2019-04-26 Vinodhan K Created * *******************************************************************************************************/ BEGIN EXEC [dbo].[KEYHM_SetMostRecentMatter] @HANDLER, @MATTER END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_UpdateTimeDayBook' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_UpdateTimeDayBook] END GO CREATE PROCEDURE [dbo].[KEYHM_UpdateTimeDayBook] (@Matter VARCHAR(20), @FeeEarn VARCHAR(10), @Date DATETIME, @Time INT, @Rate DECIMAL(10,2), @Charge DECIMAL(10,2), @Task VARCHAR(10), @TimeOrCharge CHAR(1), @IsChargable CHAR(1), @Comment VARCHAR(1000), @Ncccode VARCHAR(10) = NULL, @RecordID INT, @Post CHAR(1) = 'Y') AS /******************************************************************************************************* * * * * * Stored Procedure Name : [dbo].[KEYHM_UpdateTimeDayBook] * * Copied from : [dbo].[ky_NETUpdateTimeDayBook] * * * * Modification History : * * 2019-04-11 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET @Post = CASE WHEN @Post IS NULL THEN 'Y' ELSE @Post END DECLARE @PERIOD AS INT DECLARE @YEAR AS INT DECLARE @IsSAM4 bit SET @IsSAM4 = [dbo].[ISSAM4]() IF @IsSAM4 = 0 BEGIN SELECT @PERIOD = ISNULL(CL.[CURPER], 0), @YEAR = ISNULL(CL.[YEAR], 0) FROM [dbo].[CONTROL] CL END ELSE BEGIN SET @PERIOD = (SELECT CNM.[NumValue] FROM [dbo].[CtrlNum] CNM WHERE CNM.[Code] = 'CurPeriod') SET @YEAR = (SELECT CNM.[numvalue] FROM [dbo].[CtrlNum] CNM WHERE CNM.[Code] = 'CurYear') END SET @PERIOD = ISNULL(@PERIOD, 0) SET @YEAR = ISNULL(@YEAR, 0) DECLARE @ActualRate DECIMAL(18, 2) SELECT @ActualRate = [dbo].[KEYHM_FN_GetDefaultRate](RTRIM(ISNULL(@Matter, '')), RTRIM(ISNULL(@FeeEarn, '')), RTRIM(ISNULL(@Ncccode, '')), RTRIM(ISNULL(@Task, ''))) IF (@RecordID = 0) BEGIN INSERT INTO [dbo].[TimeDayBook] ([MATTER], [FEEEARN], [DATE], [TIME], [RATE], [Charge], [Charged], [TASK], [TimeOrCharge], [COMMENT], [NCCCode], [Rec_Irr], [Post], [StopwatchStatus], [Period], [Year], [MatterLevel], [TaskLevel], [ChargedMins], [FeeRate], [EntryDate], [ModifyDate]) SELECT NW.[MATTER], NW.[FEEEARN], NW.[DATE], NW.[TIME], NW.[RATE], NW.[CHARGE], NW.[CHARGE], NW.[TASK], NW.[TimeOrCharge], NW.[COMMENT], NW.[NCCCode], NW.[Rec_Irr], NW.[Post], NW.[StopwatchStatus], NW.[Period], NW.[Year], MAT.[ChargeLevel], TSC.[ChargeLevel], NW.[TIME], NW.[FEERATE], NW.[EntryDate], NW.[EntryDate] FROM (SELECT @Matter AS [MATTER], @FeeEarn AS [FEEEARN], @Date AS [DATE], @Time AS [TIME], @Rate AS [RATE], @Charge AS [CHARGE], @Task AS [TASK], @TimeOrCharge AS [TimeOrCharge], @Comment AS [COMMENT], @Ncccode AS [NCCCode], @IsChargable AS [Rec_Irr], @Post AS [Post], 1 AS [StopwatchStatus], @PERIOD AS [Period], @YEAR AS [Year], ISNULL(@ActualRate, @Rate) AS [FEERATE], CONVERT(DATETIME, CONVERT(VARCHAR, GetDate(), 112)) AS [EntryDate]) NW LEFT OUTER JOIN [dbo].[matters] MAT ON MAT.[Code] = NW.[MATTER] LEFT OUTER JOIN [dbo].[TasksCodes] TSC ON TSC.[CODE] = NW.[TASK] END ELSE BEGIN UPDATE TDB SET TDB.[MATTER] = @Matter, TDB.[FEEEARN] = @FeeEarn, TDB.[DATE] = @Date, TDB.[TIME] = @Time, TDB.[RATE] = @Rate, TDB.[Charge] = @Charge, TDB.[Charged] = @Charge, TDB.[TASK] = @Task, TDB.[TIMEORCHARGE] = @TimeOrCharge, TDB.[REC_IRR] = @IsChargable, TDB.[COMMENT] = @Comment, TDB.[Ncccode] = @Ncccode, TDB.[Post] = @Post, TDB.[MatterLevel] = CASE ISNULL(TDB.[MatterLevel], '') WHEN '' THEN MAT.[ChargeLevel] ELSE TDB.[MatterLevel] END, TDB.[TaskLevel] = CASE ISNULL(TDB.[TaskLevel], '') WHEN '' THEN TSC.[ChargeLevel] ELSE TDB.[TaskLevel] END, TDB.[FeeRate] = ISNULL(TDB.[FeeRate], @ActualRate), TDB.[ChargedMins] = @Time FROM [dbo].[TimeDayBook] TDB LEFT OUTER JOIN [dbo].[matters] MAT ON MAT.[Code] = TDB.[MATTER] LEFT OUTER JOIN [dbo].[TasksCodes] TSC ON TSC.[CODE] = TDB.[TASK] WHERE TDB.[RecordID] = @RecordID END END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_UpdateTimeEntryFromDayBook' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_UpdateTimeEntryFromDayBook] END GO CREATE PROCEDURE [dbo].[KEYHM_UpdateTimeEntryFromDayBook] (@HANDLER VARCHAR(10), @UPDByHandler VARCHAR(10), @User NVARCHAR(128)) AS /******************************************************************************************************* * Update TimeEntry values * * * * Stored Procedure Name : [dbo].[KEYHM_UpdateTimeEntryFromDayBook] * * Copied from : [dbo].[ky_NETUpdateTimeEntryFromDayBook] * * * * Modification History: * * 2019-04-24 Vinodhan K Created * *******************************************************************************************************/ BEGIN SET @UPDByHandler = RTRIM(ISNULL(@UPDByHandler, '')) SET @User = RTRIM(ISNULL(@User, N'')) DECLARE @NCOMMAND NVARCHAR(MAX) SET @NCOMMAND = N'INSERT INTO [dbo].[TimeEntryLogNew] ([MATTER], [FEEEARN], [DATE], [TIME], [RATE], [CHARGE], [TASK], [TIMEORCHARGE], [COMMENT], [BILLED], [NCCODE], [DOCKET], [TEAM], [TRACKREF], [REC_IRR], [SHOULDHAVE], [INVOICENO], [PERIOD], [YEAR], [BILLINGPERIOD], [BILLINGYEAR], [OPENINV], [RECORDID], [ActionId], [StageCode], [Leave], [BilledAmount], [IncludeInBill], [BILLINGDATE], [AxleNumber], [WriteOffDT], [WriteOffID], [LogFor]' IF @Handler <> '' BEGIN SET @NCOMMAND = @NCOMMAND + N', [HandlerLogFor]' END IF @User <> N'' BEGIN SET @NCOMMAND = @NCOMMAND + N', [LoginLogFor]' END SET @NCOMMAND = @NCOMMAND + N') SELECT [TIE].[MATTER], [TIE].[FEEEARN], [TIE].[DATE], [TIE].[TIME], [TIE].[RATE], [TIE].[CHARGE], [TIE].[TASK], [TIE].[TIMEORCHARGE], [TIE].[COMMENT], [TIE].[BILLED], [TIE].[NCCODE], [TIE].[DOCKET], [TIE].[TEAM], [TIE].[TRACKREF], [TIE].[REC_IRR], [TIE].[SHOULDHAVE], [TIE].[INVOICENO], [TIE].[PERIOD], [TIE].[YEAR], [TIE].[BILLINGPERIOD], [TIE].[BILLINGYEAR], [TIE].[OPENINV], [TIE].[RECORDID], [TIE].[ActionId], [TIE].[StageCode], [TIE].[Leave], [TIE].[BilledAmount], [TIE].[IncludeInBill], [TIE].[BILLINGDATE], [TIE].[AxleNumber], [TIE].[WriteOffDT], [TIE].[WriteOffID], ''C''' IF @UPDByHandler <> '' BEGIN SET @NCOMMAND = @NCOMMAND + N', @UPDByHandler' END IF @User <> '' BEGIN SET @NCOMMAND = @NCOMMAND + N', @User' END SET @NCOMMAND = @NCOMMAND + N' FROM [dbo].[WDNTEID] [NTEID] INNER JOIN [dbo].[TimeEntry] [TIE] ON [TIE].[RecordId] = NTEID.[NEWID] WHERE [NTEID].[HANDLER] = @Handler' EXEC sp_executesql @NCOMMAND, N'@Handler VARCHAR(10), @UPDByHandler VARCHAR(10), @User NVARCHAR(128)', @Handler, @UPDByHandler, @User UPDATE TIE SET TIE.[Charge] = CASE WHEN RTRIM(ISNULL(TIE.[MATTER], '~')) <> '~' THEN TDB.[CHARGE] ELSE 0 END, TIE.[REC_IRR] = CASE WHEN RTRIM(ISNULL(TIE.[MATTER], '~')) <> '~' THEN TIE.[REC_IRR] WHEN RTRIM(ISNULL(TIE.[REC_IRR], '')) = '' THEN 'C' ELSE TIE.[REC_IRR] END, TIE.[Units] = TDB.[Units], TIE.[MatterLevel] = TDB.[MatterLevel], TIE.[FEERate] = TDB.[FEERate], TIE.[ChargedMins] = TDB.[ChargedMins], TIE.[FEECost] = TDB.[FEECost], TIE.[TaskLevel] = TDB.[TaskLevel], TIE.[EntryDate] = TDB.[EntryDate], TIE.[ModifyDate] = TDB.[ModifyDate], TIE.[Leave] = TDB.[Leave], TIE.[TEAM] = HAN.[TEAM], TIE.[INVOICENO] = (CASE WHEN ISNULL(MAT.[OpenInvoiceNo], 0) <> 0 THEN MAT.[OpenInvoiceNo] ELSE 0 END), TIE.[OPENINV] = (CASE WHEN ISNULL(MAT.[OpenInvoiceNo], 0) <> 0 THEN 'Y' ELSE 'N' END), TIE.[BilledAmount] = (CASE WHEN ISNULL(MAT.[OpenInvoiceNo], 0) <> 0 THEN TDB.[Charge] ELSE 0 END), TIE.[IncludeInBill] = (CASE WHEN ISNULL(MAT.[OpenInvoiceNo], 0) <> 0 THEN 1 ELSE 0 END), TIE.[AxleNumber] = 0 FROM [dbo].[WDNTEID] NTEID INNER JOIN [dbo].[TimeDayBook] TDB ON TDB.[RECORDID] = NTEID.[RECORDID] INNER JOIN [dbo].[TimeEntry] TIE ON TIE.[RecordId] = NTEID.[NEWID] LEFT OUTER JOIN [dbo].[matters] MAT ON MAT.[Code] = TIE.[MATTER] INNER JOIN [dbo].[Handlers] HAN ON HAN.[CODE] = TIE.[FEEEARN] WHERE NTEID.[HANDLER] = @Handler UPDATE MAT SET MAT.[ChargeBal] = MAT.[ChargeBal] + CASE ISNULL(MAT.[OpenInvoiceNo], 0) WHEN 0 THEN TDB.[Charge] ELSE 0 END, MAT.[TimeBal] = MAT.[TimeBal] --2018-02-22 WAS MAT.[ChargeBal] ! + CASE ISNULL(MAT.[OpenInvoiceNo], 0) WHEN 0 THEN TDB.[Time] ELSE 0 END FROM [dbo].[WDNTEID] NTEID INNER JOIN [dbo].[TimeDayBook] TDB ON TDB.[RECORDID] = NTEID.[RECORDID] AND TDB.[REC_IRR] = 'C' LEFT OUTER JOIN [dbo].[matters] MAT ON MAT.[Code] = TDB.[MATTER] WHERE NTEID.[HANDLER] = @HANDLER END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_UserCanPostTime' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_UserCanPostTime] END GO CREATE PROCEDURE [dbo].[KEYHM_UserCanPostTime]( @MATTER VARCHAR(20), @HANDLER VARCHAR(20), @RECORDID VARCHAR(20) ) AS /******************************************************************************************************* * Please look at [dbo].[KEYHM_FN_UserCanPostTime] for details on how the function works, * * as this is just a wrapper procedure which calls the function. * * * * Stored Procedure Name : [dbo].[KEYHM_UserCanPostTime] * * Copied from : [dbo].[ky_NETUserCanPostTime] * * * * Modification History : * * 2019-05-17 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @ID INT IF (@RECORDID IS NOT NULL AND ISNUMERIC(@RECORDID) = 1) BEGIN SET @ID = CONVERT(INT, @RECORDID) END SELECT ISNULL([dbo].[KEYHM_FN_UserCanPostTime](@MATTER, @HANDLER, @ID), 0) AS [CODE] END GO IF EXISTS (SELECT * FROM sys.[objects] SO WHERE SO.[name] = 'KEYHM_WDTimeDayBookWithAxleErrors' AND SO.[type] = 'TF') BEGIN DROP FUNCTION [dbo].[KEYHM_WDTimeDayBookWithAxleErrors] END GO /************************************************************************************** * * KEYHM_WDTimeDayBookWithAxleErrors * * Lists the current Day Book Entries plus information about Axle errors * 2020-03-10 Rajesh Copied from ky_WDTimeDayBookWithAxleErrors **************************************************************************************/ Create Function [dbo].[KEYHM_WDTimeDayBookWithAxleErrors] (@HSEClientGroup varchar(20), @Handler varchar(10)) RETURNS @TDBWA TABLE ([IsAxleError] varchar(1), [AxleError] varchar(255), [Matter] varchar(20), [FEEEARN] varchar(10), [DATE] datetime, [TIME] int, [RATE] decimal(10,2), [CHARGE] decimal(10,2), [TASK] varchar(10), [TIMEORCHARGE] varchar(1), [STARTTIME] int, [COMMENT] varchar(1000), [NCCCODE] varchar(10), [TEAM] varchar(10), [TRACKREF] int, [DOCKET] varchar(8), [REC_IRR] varchar(1), [PERIOD] int, [YEAR] int, [RECORDID] int, [ActionId] int, [Leave] varchar(1), [StageCode] varchar(10), [Post] varchar(1)) AS BEGIN INSERT INTO @TDBWA ([IsAxleError], [AxleError], [Matter], [FEEEARN], [DATE], [TIME], [RATE], [CHARGE], [TASK], [TIMEORCHARGE], [STARTTIME], [COMMENT], [NCCCODE], [TEAM], [TRACKREF], [DOCKET], [REC_IRR], [PERIOD], [YEAR], [RECORDID], [ActionId], [Leave], [StageCode], [Post]) SELECT CASE WHEN RTRIM(ISNULL(TDB.[matter], '')) = '' -- Admin entries can't cause an Axle error THEN 'N' WHEN RTRIM(ISNULL(TDB.[matter], '')) = '~' -- Admin entries can't cause an Axle error THEN 'N' WHEN MAT.[Code] IS NULL -- Missing matter. This is an error THEN 'Y' WHEN RTRIM(IsNull(CON.[ClientGroup], '')) <> @HSEClientGroup -- If it's not an HSE Client it can't cause an Axle Error THEN 'N' WHEN RTRIM(ISNULL(WTY.[CODE], '')) = '' -- Missing Worktype. This is an error THEN 'Y' WHEN RTRIM(ISNULL(WTY.[ChildCare], '')) <> 'Y' -- If it's not a ChildCare matter it can't cause an Axle Error THEN 'N' WHEN RTRIM(ISNULL(TAC.[CODE], '')) = '' -- Missing Task. This is an error THEN 'Y' WHEN RTRIM(ISNULL(TAC.[AxleTask], '')) <> 'Y' -- This is not a Child Care task. This is an error THEN 'Y' WHEN LEN(RTRIM(ISNULL(TDB.[COMMENT], ''))) < 10 -- Comment must be at least 10 characters. This is an error. THEN 'Y' WHEN TDB.[TIME] > 1440 -- Task is too long! Must be less than 1440 minutes (i.e. 24 hours) THEN 'Y' ELSE 'N' END AS [IsAxleError], CASE WHEN RTRIM(ISNULL(TDB.[matter], '')) = '' -- Admin entries can't cause an Axle error THEN '' WHEN MAT.[Code] IS NULL -- Missing matter. This is an error THEN 'Matter: ' + RTRIM(ISNULL(TDB.[MATTER], '')) + ' not found.' WHEN RTRIM(IsNull(CON.[ClientGroup], '')) <> @HSEClientGroup -- If it's not an HSE Client it can't cause an Axle Error THEN '' WHEN RTRIM(ISNULL(WTY.[CODE], '')) = '' -- Missing Worktype. This is an error THEN 'Matter Work Type ' + RTRIM(IsNull(MAT.[WType], '')) + ' was not found for matter: ' + RTRIM(ISNULL(TDB.[MATTER], '')) WHEN RTRIM(ISNULL(WTY.[ChildCare], '')) <> 'Y' -- If it's not a ChildCare matter it can't cause an Axle Error THEN '' WHEN RTRIM(ISNULL(TAC.[CODE], '')) = '' -- Missing Task. This is an error THEN 'Task ' + RTRIM(IsNull(TAC.[CODE], '')) + ' was not found for matter: ' + RTRIM(ISNULL(TDB.[MATTER], '')) WHEN RTRIM(ISNULL(TAC.[AxleTask], '')) <> 'Y' -- This is not a Child Care task. This is an error THEN 'Task ' + RTRIM(IsNull(TAC.[CODE], '')) + ' is not a Child Care task for matter: ' + RTRIM(ISNULL(TDB.[MATTER], '')) WHEN LEN(RTRIM(ISNULL(TDB.[COMMENT], ''))) < 10 -- Comment must be at least 10 characters. This is an error. THEN 'Comment should be at least 10 characters for matter: ' + RTRIM(ISNULL(TDB.[MATTER], '')) WHEN TDB.[TIME] > 1440 -- Task is too long! Must be less than 1440 minutes (i.e. 24 hours) THEN 'Time should be less than 24 hours for matter: ' + RTRIM(ISNULL(TDB.[MATTER], '')) ELSE 'N' END AS [AxleError], RTRIM(IsNULL(TDB.[MATTER], '')) AS [Matter], RTRIM(IsNULL(TDB.[FEEEARN], '')) AS [Feeearn], TDB.[DATE], ISNULL(TDB.[TIME], 0) AS [TIME], Case When IsNull(MAT.[ChargeOutRateInd], 'N') = 'Y' THEN IsNull(MCR.[Rate], 0) When IsNull(CON.[ChargeOutRateInd], 'N') = 'Y' THEN IsNull(CCR.[Rate], 0) ELSE IsNull(FEP.[ChargeFct], 1.00) * FER.[Rate] END, Convert(numeric(8, 2), ( ( IsNull(TDB.[Time], 0) * Case When IsNull(MAT.[ChargeOutRateInd], 'N') = 'Y' THEN IsNull(MCR.[Rate], 0) When IsNull(CON.[ChargeOutRateInd], 'N') = 'Y' THEN IsNull(CCR.[Rate], 0) ELSE IsNull(FEP.[ChargeFct], 1.00) * FER.[Rate] END) / 60)), RTRIM(IsNULL(TDB.[TASK], '')) AS [TASK], RTRIM(IsNULL(TDB.[TIMEORCHARGE], '')) AS [TIMEORCHARGE], ISNULL(TDB.[STARTTIME], 0) AS [STARTTIME], RTRIM(IsNULL(TDB.[COMMENT], '')) AS [COMMENT], RTRIM(IsNULL(TDB.[NCCCODE], '')) AS [NCCCODE], RTRIM(IsNULL(TDB.[TEAM], '')) AS [TEAM], ISNULL(TDB.[TRACKREF], 0) AS [TRACKREF], RTRIM(IsNULL(TDB.[DOCKET], '')) AS [DOCKET], RTRIM(IsNULL(TDB.[REC_IRR], '')) AS [REC_IRR], ISNULL(TDB.[PERIOD], 0) AS [PERIOD], ISNULL(TDB.[YEAR], 0) AS [YEAR], ISNULL(TDB.[RECORDID], 0) AS [RECORDID], ISNULL(TDB.[ActionId], 0) AS [ActionId], RTRIM(IsNULL(TDB.[Leave], '')) AS [Leave], RTRIM(IsNULL(TDB.[StageCode], '')) AS [StageCode], RTRIM(IsNULL(TDB.[Post], '')) AS [Post] FROM [dbo].[TimeDayBook] TDB LEFT OUTER JOIN [dbo].[matters] MAT INNER JOIN [dbo].[Contacts] CON ON CON.[Code] = MAT.[ClientCode] LEFT OUTER JOIN [dbo].[WorkTypes] WTY ON WTY.[CODE] = MAT.[WType] ON MAT.[Code] = TDB.[MATTER] LEFT OUTER JOIN [dbo].[TasksCodes] TAC on TAC.[CODE] = TDB.[TASK] OUTER APPLY (SELECT MCOR.[Rate] FROM [dbo].[MatterChargeOutRates] MCOR WHERE MCOR.[FeCode] = TDB.[FEEEARN] AND MCOR.[MatterCode] = TDB.[MATTER]) MCR OUTER APPLY (SELECT CCOR.[Rate] FROM [dbo].[ClientChargeOutRates] CCOR WHERE CCOR.[FeCode] = TDB.[FEEEARN] AND CCOR.[ClientCode] = MAT.[CLIENTCODE]) CCR CROSS APPLY (SELECT CASE IsNull(MAT.[ChargeLevel], 3) WHEN 1 THEN IsNull(HDL.[RATE1], 0) WHEN 2 THEN IsNull(HDL.[RATE2], 0) WHEN 3 THEN IsNull(HDL.[RATE3], 0) WHEN 4 THEN IsNull(HDL.[RATE4], 0) WHEN 5 THEN IsNull(HDL.[RATE5], 0) ELSE IsNull(HDL.[RATE], 0) END AS [RATE] FROM [dbo].[Handlers] HDL WHERE HDL.[CODE] = TDB.[FEEEARN]) FER OUTER APPLY (SELECT CASE IsNull(TAC.[ChargeLevel], 'C') WHEN 'A' THEN 0.33 WHEN 'B' THEN 0.67 WHEN 'C' THEN 1.00 WHEN 'D' THEN 1.33 WHEN 'E' THEN 1.67 ELSE 1.00 END AS [ChargeFct] FROM [dbo].[TasksCodes] TAC WHERE TAC.[CODE] = CASE RTrim(IsNull(TDB.MATTER, '')) WHEN '' THEN TDB.[NCCCODE] ELSE TDB.[TASK] END) FEP WHERE TDB.[FEEEARN] = @Handler RETURN END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_XMLAddTimeDayBook' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_XMLAddTimeDayBook] END GO CREATE PROCEDURE [dbo].[KEYHM_XMLAddTimeDayBook] (@XML NVARCHAR(MAX)) AS BEGIN /******************************************************************************************************* * Used to add new Timedaybook entry * * * * Stored Procedure Name : [dbo].[KEYHM_XMLAddTimeDayBook] * * Copied from : [dbo].[ky_NETSPXMLAddTimeDayBook] * * * * Modification History : * * 2019-04-24 Vinodhan K Created * *******************************************************************************************************/ DECLARE @iSL INT DECLARE @Matter VARCHAR(20) DECLARE @FeeEarner VARCHAR(10) DECLARE @Minutes INT DECLARE @StopwatchStatus INT DECLARE @RecordID INT DECLARE @UpdateByPass BIT DECLARE @DeleteByPass BIT DECLARE @AddNew BIT DECLARE @Task VARCHAR(6) DECLARE @Comment VARCHAR(1000) DECLARE @ChargeDefault DECIMAL(10, 2) BEGIN TRY EXEC sp_xml_preparedocument @iSL OUTPUT, @XML END TRY BEGIN CATCH EXEC sp_xml_preparedocument @iSL OUTPUT, N'' END CATCH SELECT @Matter = [SRC].[Matter], @FeeEarner = [SRC].[FeeEarner], @Minutes = [SRC].[Minutes], @StopwatchStatus = [SRC].[StopwatchStatus], @RecordID = [SRC].[RecordID], @UpdateByPass = [SRC].[UpdateByPass], @DeleteByPass = [SRC].[DeleteByPass], @AddNew = [SRC].[AddNew], @Task = [SRC].[Task], @Comment = [SRC].[Comment] FROM OPENXML(@iSL, N'tdb') WITH ([Matter] VARCHAR(20) '@matter', [FeeEarner] VARCHAR(10) '@feeearner', [Minutes] INT '@minutes', [StopwatchStatus] INT '@stopwatchstatus', [RecordID] INT '@recordid', [UpdateByPass] INT '@updatebypass', [DeleteByPass] INT '@deletebypass', [AddNew] INT '@addnew', [Task] VARCHAR(6) '@task', [Comment] VARCHAR(1000) '@comment') [SRC] EXEC sp_xml_removedocument @iSL --Original defaults SET @Minutes = ISNULL(@Minutes, 0) SET @StopwatchStatus = ISNULL(@StopwatchStatus, 1) SET @RecordID = ISNULL(@RecordID, 0) SET @UpdateByPass = ISNULL(@UpdateByPass, 0) SET @DeleteByPass = ISNULL(@DeleteByPass, 0) SET @AddNew = ISNULL(@AddNew, 0) IF EXISTS (SELECT TOP 1 1 FROM [dbo].[matters] [MAT] INNER JOIN [dbo].[ChargingMatrix] [CMX] ON [CMX].[ARRANGEMENTCODE] = [MAT].[ChargeArrangement] AND [CMX].[CHARGECODE] = @Task WHERE [MAT].[Code] = @matter) BEGIN SELECT TOP 1 @Task = RTRIM(ISNULL([CMX].[CHARGECODE], '')), @ChargeDefault = CONVERT(DECIMAL(10, 2), ISNULL([CMX].[BAND1RATE], 0)), @Comment = RTRIM(ISNULL([CMX].[DESCRIPTION], '')) FROM [dbo].[matters] [MAT] INNER JOIN [dbo].[ChargingMatrix] [CMX] ON [CMX].[ARRANGEMENTCODE] = [MAT].[ChargeArrangement] AND [CMX].[CHARGECODE] = @Task WHERE [MAT].[Code] = @matter END ELSE IF NOT EXISTS (SELECT TOP 1 1 FROM [dbo].[TasksCodes] [TC] WITH (nolock) WHERE [TC].[CODE] = @Task) BEGIN SET @Task = '' -- If "AutoDefaultTaskTime" is enabled in the settings then use the handler's default task IF (SELECT TOP 1 ISNULL(CFG.[KeyValue], 'False') FROM [dbo].[Settings] AS [CFG] WITH (nolock) WHERE [CFG].[KeyName] = 'AutoDefaultTaskTime') = 'True' BEGIN SELECT @Task = ISNULL([HAN].[DEFAULTTASK], ''), @Comment = RTRIM(ISNULL([TSK].[DESC], '')) FROM [dbo].[Handlers] AS [HAN] WITH (nolock) INNER JOIN [dbo].[TasksCodes] AS [TSK] WITH (nolock) ON [HAN].[DEFAULTTASK] = [TSK].[CODE] WHERE [HAN].[Code] = @FeeEarner END END ELSE BEGIN SELECT @TASK = RTRIM([TC].[CODE]), @ChargeDefault = CONVERT(DECIMAL(10, 2), ISNULL([TC].[CHARGEAMT], 0)) FROM [dbo].[TasksCodes] [TC] WITH (nolock) WHERE [TC].[CODE] = @TASK END IF @UpdateByPass = 0 BEGIN UPDATE [TDB] SET [TDB].[StopwatchStatus] = 1 FROM [dbo].[TimeDayBook] [TDB] WHERE [TDB].[FeeEarn] = @FeeEarner END IF @DeleteByPass = 0 BEGIN --IF @DeleteByPass = 0 IF(@Minutes=0) BEGIN DELETE [TDB] FROM [dbo].[TimeDayBook] [TDB] WHERE [TDB].[FeeEarn] = @FeeEarner AND ISNULL([TDB].[Time], 0) = 0 AND [TDB].[Matter] <> '' AND [TDB].[TimeOrCharge] = 'T' AND RTRIM(ISNULL([TDB].[Task], '')) = '' --KEYD-5221 AND RTRIM(ISNULL([TDB].[Comment], '')) = '' --KEYD-5221 --AND [TDB].[Matter] <> @Matter END ELSE BEGIN DELETE [TDB] FROM [dbo].[TimeDayBook] [TDB] WHERE [TDB].[FeeEarn] = @FeeEarner AND ISNULL([TDB].[Time], 0) = 0 AND [TDB].[Matter] NOT IN ('' , @Matter) AND [TDB].[TimeOrCharge] = 'T' AND RTRIM(ISNULL([TDB].[Task], '')) = '' --KEYD-5221 AND RTRIM(ISNULL([TDB].[Comment], '')) = '' --KEYD-5221 END END --IF @DeleteByPass = 0 IF @RecordID <> 0 BEGIN -- IF @RecordID <> 0 UPDATE [TDB] SET [TDB].[StopwatchStatus] = @StopwatchStatus, [TDB].[Time] = @Minutes, [TDB].[Charge] = (ISNULL([TDB].[Rate], 0) * (@Minutes / 60.0)), [TDB].[Charged] = (ISNULL([TDB].[Rate], 0) * (@Minutes / 60.0)), [TDB].[Post] = 'Y' FROM [dbo].[TimeDayBook] [TDB] WHERE [TDB].[RecordID] = @RecordID SELECT TOP 1 [TDB].[RecordID], ISNULL([TDB].[Time], 0) AS [Minutes] FROM [dbo].[TimeDayBook] [TDB] WITH (nolock) WHERE [TDB].[RecordID] = @RecordID END --IF @RecordID <> 0 ELSE -- ELSE CONDITION: IF @RecordID <> 0 BEGIN -- ELSE CONDITION: IF @RecordID <> 0 -- 2018-05-25 START - Try to prevent deadlocks using a CASE WHEN construct that should -- avoid table access on the first two conditions rather than the -- original IF with OR statements that still evaluates all 3 conditions IF CASE WHEN @Matter = '' THEN 1 WHEN @AddNew = 1 THEN 1 WHEN NOT EXISTS (SELECT TOP 1 1 FROM [dbo].[TimeDayBook] [TDB] WITH (nolock) WHERE [TDB].[FeeEarn] = @FeeEarner AND RTRIM([TDB].[Matter]) = @Matter --AND [TDB].[TIMEORCHARGE]='T' KEYD-5124 - "C" type timers used to not be re-startable. But there is no need for that. AND [TDB].[Post] = 'Y') THEN 1 ELSE 0 END = 1 --Insert conditions -- 2018-05-25 END BEGIN --Insert conditions DECLARE @PERIOD AS INT DECLARE @YEAR AS INT DECLARE @IsSAM4 bit SET @IsSAM4 = [dbo].[ISSAM4]() IF @IsSAM4 = 0 BEGIN SELECT @PERIOD = [CL].[CURPER], @YEAR = [CL].[YEAR] FROM [dbo].[control] [CL] WITH (nolock) END ELSE BEGIN SELECT @PERIOD = [CL].[numvalue] FROM [dbo].[CtrlNum] [CL] WITH (nolock) WHERE [CL].[code] = 'CurPeriod' SELECT @YEAR = [CL].[numvalue] FROM [dbo].[CtrlNum] [CL] WITH (nolock) WHERE [CL].[code] = 'CurYear' END SET @PERIOD = ISNULL(@PERIOD, 0) SET @YEAR = ISNULL(@YEAR, 0) DECLARE @IsChargeable VARCHAR(1) SELECT @IsChargeable = [HAN].[ISChargeable] FROM [dbo].[Handlers] [HAN] WITH (nolock) WHERE [HAN].[CODE] = @FeeEarner SET @IsChargeable = ISNULL(@IsChargeable, 'C') DECLARE @MatterBillingMethod CHAR(1) DECLARE @ClientBillingMethod CHAR(1) DECLARE @DefaultBillingMethod CHAR(1) SELECT @MatterBillingMethod = RTRIM(ISNULL([MAT].[BillingMethod], '')), @ClientBillingMethod = RTRIM(ISNULL([CON].[BillingMethod], '')) FROM [dbo].[Matters] [MAT] WITH (nolock) LEFT OUTER JOIN [dbo].[Contacts] [CON] WITH (nolock) ON [CON].[Code] = [MAT].[ClientCode] WHERE [MAT].[Code] = @Matter SET @MatterBillingMethod = ISNULL(@MatterBillingMethod, '') SET @ClientBillingMethod = ISNULL(@ClientBillingMethod, '') IF(@MatterBillingMethod <> '') BEGIN SET @DefaultBillingMethod = @MatterBillingMethod END ELSE IF(@ClientBillingMethod <> '') BEGIN SET @DefaultBillingMethod = @ClientBillingMethod END ELSE BEGIN SET @DefaultBillingMethod = 'T' END -- John 2018-03-16 Only allow VALID methods If ISNULL(@DefaultBillingMethod, '') NOT IN ('T', 'C') BEGIN SET @DefaultBillingMethod = 'T' END INSERT INTO [dbo].[TimeDayBook] ([Matter], [FeeEarn], [Date], [Time], [Task], [TimeOrCharge], [Rec_Irr], [Post], [StopwatchStatus], [Period], [Year], [MatterLevel], [Comment], [Rate], [Charge], [Charged], [EntryDate], [ModifyDate]) SELECT [NW].[MATTER], [NW].[FeeEarn], [NW].[Date], [NW].[Time], [NW].[Task], [NW].[TimeOrCharge], @IsChargeable, [NW].[Post], [NW].[StopwatchStatus], [NW].[Period], [NW].[Year], [MAT].[ChargeLevel], [NW].[Comment], CASE WHEN @DefaultBillingMethod = 'T' THEN CONVERT(DECIMAL(10, 2), 0) WHEN ISNULL(@ChargeDefault, 0) = 0 THEN CONVERT(DECIMAL(10, 2), 0) ELSE CONVERT(DECIMAL(10, 2), @ChargeDefault) END, CASE WHEN @DefaultBillingMethod = 'T' THEN CONVERT(DECIMAL(10, 2), 0) WHEN ISNULL(@ChargeDefault, 0) = 0 THEN CONVERT(DECIMAL(10, 2), 0) ELSE CONVERT(DECIMAL(10, 2), @ChargeDefault) END, CASE WHEN @DefaultBillingMethod = 'T' THEN CONVERT(DECIMAL(10, 2), 0) WHEN ISNULL(@ChargeDefault, 0) = 0 THEN CONVERT(DECIMAL(10, 2), 0) ELSE CONVERT(DECIMAL(10, 2), @ChargeDefault) END, CONVERT(DATETIME, CONVERT(VARCHAR, GetDate(), 112)), CONVERT(DATETIME, CONVERT(VARCHAR, GetDate(), 112)) FROM (SELECT @Matter AS [MATTER], @FeeEarner AS [FeeEarn], CONVERT(VARCHAR(12), GETDATE(), 112) AS [Date], @Minutes AS [Time], @Task AS [Task], @DefaultBillingMethod AS [TimeOrCharge], 'Y' AS [Post], @StopwatchStatus AS [StopwatchStatus], @PERIOD AS [Period], @YEAR As [Year], @Comment AS [Comment]) [NW] LEFT OUTER JOIN [dbo].[matters] [MAT] WITH (nolock) ON [MAT].[Code] = [NW].[MATTER] SELECT SCOPE_IDENTITY() AS [RecordID], 0 AS [Minutes] END --Insert conditions ELSE --(ELSE CONDITION) Insert conditions BEGIN --(ELSE CONDITION) Insert conditions SET @RecordID = NULL SELECT TOP 1 @RecordID = [TDB2].[RecordID] FROM [dbo].[TimeDayBook] [TDB2] WITH (nolock) WHERE [TDB2].[FEEEARN] = @FeeEarner AND [TDB2].[MATTER] = @Matter --AND [TDB2].[TIMEORCHARGE] = 'T' KEYD-5124 ORDER BY [TDB2].[RecordID] DESC IF @RecordID IS NOT NULL BEGIN UPDATE [TDB] SET [TDB].[StopwatchStatus] = @StopwatchStatus, [TDB].[Post] = 'Y' FROM [dbo].[TimeDayBook] [TDB] WHERE [TDB].[RecordID] = @RecordID SELECT [TDB].[RecordID], ISNULL([TDB].[Time], 0) AS [Minutes] FROM [dbo].[TimeDayBook] [TDB] WITH (nolock) WHERE [TDB].[RecordID] = @RecordID END END --(ELSE CONDITION) Insert conditions END -- ELSE CONDITION: IF @RecordID <> 0 END GO IF OBJECT_ID(N'KEYHM_XMLDiaryDelegation',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_XMLDiaryDelegation] GO CREATE PROCEDURE [dbo].[KEYHM_XMLDiaryDelegation] ( @DEL VARCHAR(MAX) ) AS /******************************************************************************************************* * Performs a diary delegation based on the XML string passed in. * * * * Stored Procedure Name : [dbo].[KEYHM_XMLDiaryDelegation] * * Copied from : [dbo].[ky_NETSPXMLDiaryDelegation] * * * * Modification History: * * 2019-04-24 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @Return INT EXEC @Return = [dbo].[KEYHM_ScalarXMLDiaryDelegation] @DEL SELECT ISNULL(@Return, -4) END GO IF EXISTS (SELECT TOP 1 1 FROM SYS.[objects] SO WHERE SO.[name] = N'KEYHM_XMLFlagDayBookEntriesForAdHocPosting' AND SO.[type] = 'P') BEGIN DROP PROCEDURE [dbo].[KEYHM_XMLFlagDayBookEntriesForAdHocPosting] END GO CREATE PROCEDURE [dbo].[KEYHM_XMLFlagDayBookEntriesForAdHocPosting] (@XML NVARCHAR(MAX)) AS /******************************************************************************************************* * Flags entries for Ad Hoc posting * * * * Stored Procedure Name : [dbo].[KEYHM_XMLFlagDayBookEntriesForAdHocPosting] * * Copied from : [dbo].[ky_NETXMLFlagDayBookEntriesForAdHocPosting] * * * * Modification History : * * 2019-04-12 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @iSL INT BEGIN TRY EXEC sp_xml_preparedocument @iSL OUTPUT, @XML END TRY BEGIN CATCH EXEC sp_xml_preparedocument @iSL OUTPUT, N'' END CATCH UPDATE [TDB] SET [TDB].[AdHocPosting] = 1 FROM OPENXML(@iSL, N'AdHocPostDayBook/DayBookItem') WITH ([RecordID] VARCHAR(10) '@id') [SRC] INNER JOIN [dbo].[TimeDayBook] [TDB] ON [TDB].[RecordID] = [SRC].[RecordID] BEGIN TRY EXEC sp_xml_removedocument @iSL END TRY BEGIN CATCH END CATCH END GO IF OBJECT_ID(N'KEYHM_XMLMatterSearch',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_XMLMatterSearch] GO CREATE PROCEDURE [dbo].[KEYHM_XMLMatterSearch] (@Search NVARCHAR(MAX), @PageNumber INT, @PageSize INT, @ColumnNames VARCHAR(50) = '', @FilterValues VARCHAR(50) = '') AS /******************************************************************************************************* * Performs a matter search based on search criteria passed in in XML format through @Search. * * * * Stored Procedure Name : [dbo].[KEYHM_XMLMatterSearch] * * Copied from : [dbo].[ky_NETSPXMLMatterSearch2] * * * * Modification History: * * 2019-04-24 Vinodhan K Created * * 2020-02-25 Prabhu V Applied Custom Filter Changes with Fetching the Closed Matter * * details as well * * 2020-06-12 Arun V Closed matter check have added in recent matter list * *******************************************************************************************************/ BEGIN DECLARE @closed NCHAR(1) DECLARE @orderby NVARCHAR(50) DECLARE @order NVARCHAR(4) DECLARE @howmany INT DECLARE @handler NVARCHAR(10) DECLARE @which INT DECLARE @BitWiseID BIGINT DECLARE @searchtext VARCHAR(MAX) DECLARE @searchonlycode VARCHAR(3) DECLARE @departmentdesc VARCHAR(50) DECLARE @department VARCHAR(5) DECLARE @worktypedesc VARCHAR(50) DECLARE @worktype VARCHAR(5) DECLARE @filecolourdesc VARCHAR(20) DECLARE @filecolour VARCHAR(3) DECLARE @feecode VARCHAR(10) DECLARE @includename BIT DECLARE @includedescription BIT DECLARE @includeaddress BIT DECLARE @includeemail BIT DECLARE @includecode BIT DECLARE @includeoldref BIT DECLARE @includeuser1 BIT DECLARE @andorname VARCHAR(3) DECLARE @andornamevalue VARCHAR(200) DECLARE @andordescription VARCHAR(3) DECLARE @andordescriptionvalue VARCHAR(200) DECLARE @andoraddress VARCHAR(3) DECLARE @andoraddressvalue VARCHAR(200) DECLARE @andorcode VARCHAR(3) DECLARE @andorcodevalue VARCHAR(200) DECLARE @andorfeecode VARCHAR(3) DECLARE @andorfeecodevalue VARCHAR(200) DECLARE @andoroldref VARCHAR(3) DECLARE @andoroldrefvalue VARCHAR(200) DECLARE @andordept VARCHAR(3) DECLARE @andordeptvalue VARCHAR(200) DECLARE @andoruser1 VARCHAR(3) DECLARE @andoruser1value VARCHAR(200) DECLARE @andoruser2 VARCHAR(3) DECLARE @andoruser2value VARCHAR(200) DECLARE @andoruser3 VARCHAR(3) DECLARE @andoruser3value VARCHAR(200) DECLARE @andoryourref VARCHAR(3) DECLARE @andoryourrefvalue VARCHAR(200) DECLARE @andorwtype VARCHAR(3) DECLARE @andorwtypevalue VARCHAR(200) DECLARE @iSL INT DECLARE @StartRow INT; DECLARE @EndRow INT; SET @PageNumber = ISNULL(@PageNumber, 0) - 1; -- 0 BASED INDEX IF(@PageNumber > -1) BEGIN SET @StartRow = ((@PageNumber) * @PageSize) + 1; SET @EndRow = (@StartRow + @PageSize) - 1; END BEGIN TRY EXEC sp_xml_preparedocument @iSL OUTPUT, @Search END TRY BEGIN CATCH EXEC sp_xml_preparedocument @iSL OUTPUT, N'' END CATCH SELECT @closed = CASE ISNULL(SRC.[closed], N'N') WHEN N'Y' THEN N'Y' WHEN N'B' THEN N'B' END, @orderby = ISNULL(SRC.[orderby], N''), @order = CASE ISNULL(SRC.[order], N'DESC') WHEN N'DESC' THEN N'DESC' ELSE N'ASC' END, @howmany = ISNULL(SRC.[howmany], 500), @handler = ISNULL(SRC.[handler], N''), @which = CASE ISNULL(SRC.[which], 0) WHEN 1 THEN 1 --My Matters WHEN 2 THEN 2 --Recent Matters ELSE 0 END, --All Matters @searchtext = ISNULL(SRC.[search], ''), @searchonlycode = ISNULL(SRC.[searchonlycode], ''), @departmentdesc = ISNULL(SRC.[dept], ''), @worktypedesc = ISNULL(SRC.[wtype], ''), @filecolourdesc = ISNULL(SRC.[colour], ''), @feecode = ISNULL(SRC.[feecodefilter], ''), @includeaddress = ISNULL(SRC.[includeaddress], 0), @includeemail = ISNULL(SRC.[includeemail], 0), @includecode = ISNULL(SRC.[includecode], 0), @includedescription = ISNULL(SRC.[includedescription], 0), @includename = ISNULL(SRC.[includename], 0), @includeoldref = ISNULL(SRC.[includeoldref], 0), @includeuser1 = ISNULL(SRC.[includeuser1], 0), @andorname = ISNULL(SRC.[andorname], ''), @andornamevalue = ISNULL(SRC.[andornamevalue], ''), @andordescription = ISNULL(SRC.[andordescription], ''), @andordescriptionvalue = ISNULL(SRC.[andordescriptionvalue], ''), @andoraddress = ISNULL(SRC.[andoraddress], ''), @andoraddressvalue = ISNULL(SRC.[andoraddressvalue], ''), @andorcode = ISNULL(SRC.[andorcode], ''), @andorcodevalue = ISNULL(SRC.[andorcodevalue], ''), @andorfeecode = ISNULL(SRC.[andorfeecode], ''), @andorfeecodevalue = ISNULL(SRC.[andorfeecodevalue], ''), @andoroldref = ISNULL(SRC.[andoroldref], ''), @andoroldrefvalue = ISNULL(SRC.[andoroldrefvalue], ''), @andordept = ISNULL(SRC.[andordept], ''), @andordeptvalue = ISNULL(SRC.[andordeptvalue], ''), @andoruser1 = ISNULL(SRC.[andoruser1], ''), @andoruser1value = ISNULL(SRC.[andoruser1value], ''), @andoruser2 = ISNULL(SRC.[andoruser2], ''), @andoruser2value = ISNULL(SRC.[andoruser2value], ''), @andoruser3 = ISNULL(SRC.[andoruser3], ''), @andoruser3value = ISNULL(SRC.[andoruser3value], ''), @andoryourref = ISNULL(SRC.[andoryourref], ''), @andoryourrefvalue = ISNULL(SRC.[andoryourrefvalue], ''), @andorwtype = ISNULL(SRC.[andorwtype], ''), @andorwtypevalue = ISNULL(SRC.[andorwtypevalue], '') FROM OPENXML(@iSL, N'search') WITH ([closed] NCHAR(1) '@closed', [orderby] NVARCHAR(50) '@orderby', [order] NVARCHAR(4) '@order', [howmany] INT '@howmany', [handler] NVARCHAR(10) '@handler', [which] INT '@which', [search] VARCHAR(MAX) '@search', [searchonlycode] VARCHAR(3) '@searchonlycode', [dept] VARCHAR(50) '@departmentfilter', [wtype] VARCHAR(50) '@worktypefilter', [colour] VARCHAR(20) '@filecolourfilter', [feecodefilter] VARCHAR(10) '@feecodefilter', [includeaddress] BIT 'include/includefield[@name="address"]', [includecode] BIT 'include/includefield[@name="code"]', [includedescription] BIT 'include/includefield[@name="description"]', [includename] BIT 'include/includefield[@name="name"]', [includeoldref] BIT 'include/includefield[@name="oldref"]', [includeuser1] BIT 'include/includefield[@name="user1"]', [includeemail] BIT 'include/includefield[@name="email"]', [andorname] VARCHAR(3) 'andor/andorfield[@name="name"]/@andor', [andornamevalue] VARCHAR(100) 'andor/andorfield[@name="name"]/@search', [andordescription] VARCHAR(3) 'andor/andorfield[@name="description"]/@andor', [andordescriptionvalue] VARCHAR(100) 'andor/andorfield[@name="description"]/@search', [andoraddress] VARCHAR(3) 'andor/andorfield[@name="address"]/@andor', [andoraddressvalue] VARCHAR(100) 'andor/andorfield[@name="address"]/@search', [andorcode] VARCHAR(3) 'andor/andorfield[@name="code"]/@andor', [andorcodevalue] VARCHAR(100) 'andor/andorfield[@name="code"]/@search', [andorfeecode] VARCHAR(3) 'andor/andorfield[@name="feecode"]/@andor', [andorfeecodevalue] VARCHAR(100) 'andor/andorfield[@name="feecode"]/@search', [andoroldref] VARCHAR(3) 'andor/andorfield[@name="oldref"]/@andor', [andoroldrefvalue] VARCHAR(100) 'andor/andorfield[@name="oldref"]/@search', [andordept] VARCHAR(3) 'andor/andorfield[@name="dept"]/@andor', [andordeptvalue] VARCHAR(100) 'andor/andorfield[@name="dept"]/@search', [andoruser1] VARCHAR(3) 'andor/andorfield[@name="user1"]/@andor', [andoruser1value] VARCHAR(100) 'andor/andorfield[@name="user1"]/@search', [andoruser2] VARCHAR(3) 'andor/andorfield[@name="user2"]/@andor', [andoruser2value] VARCHAR(100) 'andor/andorfield[@name="user2"]/@search', [andoruser3] VARCHAR(3) 'andor/andorfield[@name="user3"]/@andor', [andoruser3value] VARCHAR(100) 'andor/andorfield[@name="user3"]/@search', [andoryourref] VARCHAR(3) 'andor/andorfield[@name="yourref"]/@andor', [andoryourrefvalue] VARCHAR(100) 'andor/andorfield[@name="yourref"]/@search', [andorwtype] VARCHAR(3) 'andor/andorfield[@name="wtype"]/@andor', [andorwtypevalue] VARCHAR(100) 'andor/andorfield[@name="wtype"]/@search') SRC IF @filecolourdesc <> '' BEGIN SELECT @filecolour = FC.[COLOURCODE] FROM [dbo].[FileColours] FC WITH (NOLOCK) WHERE FC.[COLOURDESC] = @filecolourdesc END SET @filecolour = ISNULL(@filecolour, '') IF @departmentdesc <> '' BEGIN SELECT @department = DP.[CODE] FROM [dbo].[Departments] DP WITH (NOLOCK) WHERE DP.[DESCRIPTION] = @departmentdesc END SET @department = ISNULL(@department, '') IF @worktypedesc <> '' BEGIN IF @worktypedesc LIKE 'Unknown Worktype: %' BEGIN SELECT @worktype = WT.[CODE] FROM [dbo].[WorkTypes] WT WITH (NOLOCK) WHERE 'Unknown Worktype: ' + WT.[CODE] = @worktypedesc OR WT.[DESC] = @worktypedesc END ELSE BEGIN SELECT @worktype = WT.[CODE] FROM [dbo].[WorkTypes] WT WITH (NOLOCK) WHERE WT.[DESC] = @worktypedesc END END SET @worktype = ISNULL(@worktype, '') SET @feecode = ISNULL(@feecode, '') EXEC sp_xml_removedocument @iSL DECLARE @NCOMMAND NVARCHAR(MAX) DECLARE @HasWhere BIT SET @HasWhere = 0 SET @handler = CASE WHEN RTRIM(ISNULL(@handler, '')) = '' THEN 'ADM' ELSE RTRIM(@handler) END SELECT @BitWiseID = HNG.[BitWiseID] FROM HandlerNETGroupMembership HNG WITH (NOLOCK) WHERE HNG.[HANDLER] = CONVERT(VARCHAR(10), @handler) SET @BitWiseID = ISNULL(@BitWiseID, [dbo].[KEYHM_FN_GetOldPermissions](RTRIM(ISNULL(@handler, '')))) IF (@handler = 'ADM') BEGIN SET @BitWiseID = CONVERT(BIGINT, -1) END -- Custom Filter Start SET @NCOMMAND = N' DECLARE @StatusCount INT = 0; IF @ColumnNames <> '''' BEGIN DECLARE @CustomFilter TABLE ([Status] VARCHAR(20)) SELECT columnName,rownumber INTO #columntbl FROM (SELECT LTRIM(RTRIM(m.n.value(''.[1]'',''varchar(8000)''))) AS columnName, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS rownumber FROM ( SELECT CAST('''' + REPLACE(@ColumnNames,'','','''') + '''' AS XML) AS x )t CROSS APPLY x.nodes(''/XMLRoot/RowData'')m(n)) ColumnTbl SELECT FilterValue,rownumber INTO #FILTERVALUETBL FROM (SELECT LTRIM(RTRIM(m.n.value(''.[1]'',''varchar(8000)''))) AS FilterValue, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS rownumber FROM ( SELECT CAST('''' + REPLACE(@FilterValues,''|'','''') + '''' AS XML) AS x )t CROSS APPLY x.nodes(''/XMLRoot/RowData'')m(n)) FILTERVALUETBL DECLARE @count INT DECLARE @lptcnt INT=1 DECLARE @ColumnName VARCHAR(50) DECLARE @FilterValue VARCHAR(2000) SELECT @count = count(1) FROM #columntbl; WHILE @lptcnt <= @count BEGIN SET @FilterValue ='''' SELECT @ColumnName = columnName FROM #columntbl WHERE rownumber = @lptcnt SELECT @FilterValue = FilterValue FROM #FILTERVALUETBL WHERE rownumber = @lptcnt IF(@ColumnName = ''Closed'') INSERT INTO @CustomFilter ([Status]) VALUES (@FilterValue) SET @lptcnt = @lptcnt + 1; END SET @StatusCount = (SELECT COUNT(1) FROM @CustomFilter WHERE [Status] IS NOT NULL AND [Status] <>'''') END ' -- Custom Filter End SET @NCOMMAND = @NCOMMAND + N' --SELECT ''How Many: '' + CONVERT(VARCHAR(10), @HowMany) --SELECT ''Handler: '' + @Handler --SELECT ''BitWise ID: '' + CONVERT(VARCHAR(10), @BitWiseID) DECLARE @Result TABLE ([id] INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED, [Time] VARCHAR(5) NOT NULL, [Code] VARCHAR(20) NOT NULL, [FileColour] VARCHAR(20) NOT NULL, [FileColour_Fld] VARCHAR(20) NOT NULL, [BackgroundColour] VARCHAR(30) NOT NULL, [TextColour] VARCHAR(30) NOT NULL, [Name] VARCHAR(256) NOT NULL, [Description] VARCHAR(200) NOT NULL, [Fe] VARCHAR(30) NOT NULL, [FeeCode] VARCHAR(10) NOT NULL, [FeeEarner] VARCHAR(30) NOT NULL, [User1] VARCHAR(100) NOT NULL, [User2] VARCHAR(100) NOT NULL, [User3] VARCHAR(100) NOT NULL, [Started] DATETIME NOT NULL, [Dept] VARCHAR(50) NOT NULL, [WorkType] VARCHAR(50) NOT NULL, [Privileges] BIGINT NOT NULL, [OldRef] VARCHAR(12) NOT NULL, [Address] VARCHAR(500) NOT NULL, [Email] VARCHAR(50) NOT NULL, [Closed] CHAR(1) NOT NULL, [OrgCloseDate] DATETIME NULL, [CloseDate] DATETIME NULL, [FileRGBColour] INT NOT NULL, [LastAccessed] DATETIME NULL, [PhoneNumber] VARCHAR(50) NOT NULL, [FileNum] INT NOT NULL, [ClientCode] VARCHAR(10) NOT NULL, [DepartmentCode] VARCHAR(5) NOT NULL, [FeeEarnerTeam] VARCHAR(10) NOT NULL, [TeamName] VARCHAR(30) NOT NULL, [YourRef] VARCHAR(100) NOT NULL, [CaseStatusCode] VARCHAR(6) NOT NULL, [CaseStatusDesc] VARCHAR(50) NOT NULL) INSERT INTO @Result ([Time], [Code], [FileColour], [FileColour_Fld], [BackgroundColour], [TextColour], [Name], [Description], [Fe], [FeeCode], [FeeEarner], [User1], [User2], [User3], [Started], [Dept], [WorkType], [Privileges], [OldRef], [Address], [Email], [Closed], [OrgCloseDate], [CloseDate], [FileRGBColour], [LastAccessed], [PhoneNumber], [FileNum], [ClientCode], [DepartmentCode], [FeeEarnerTeam], [TeamName], [YourRef], [CaseStatusCode], [CaseStatusDesc]) SELECT CASE WHEN TTT.[TOTALTIME] = ''00:00'' THEN '''' ELSE TTT.[TOTALTIME] END AS [Time], SM.[Code] AS [Code], SM.[FileColourDescription] AS [FileColour], SM.[FileColourDescription] AS [FileColour_Fld], SM.[FileBackgroundColour] AS [BackgroundColour], SM.[TextColour] AS [TextColour], SM.[Name] AS [Name], SM.[Description] AS [Description], SM.[HandlerName] AS [Fe], SM.[FECode] AS [FeeCode], SM.[HandlerName] AS [FeeEarner], SM.[User1] AS [User1], SM.[User2] AS [User2], SM.[User3] AS [User3], SM.[Started] AS [Started], SM.[DeptDescription] AS [Dept], SM.[WTypeDescription] AS [WorkType], SM.[Privileges] AS [Privileges], SM.[OldRef] AS [OldRef], SM.[Address] AS [Address], SM.[Email] AS [Email], CASE WHEN SM.[Closed] = 0 THEN ''N'' ELSE ''Y'' END AS [Closed], SM.[OrgClosedDate] AS [OrgCloseDate], SM.[CloseDate] AS [CloseDate], SM.[FileRGBColour] AS [FileRGBColour], CASE WHEN YEAR(ISNULL(RML.[DateField], CONVERT(DATETIME, ''18000101''))) < 1901 THEN NULL ELSE ISNULL(RML.[DateField], CONVERT(DATETIME, ''18000101'')) END AS [LastAccessed], SM.[PhoneNumber] AS [PhoneNumber], SM.[FileNum] AS [FileNum], SM.[ClientCode] AS [ClientCode], SM.[Dept] AS [DepartmentCode], SM.[Team] AS [FeeEarnerTeam], SM.[TeamName] AS [TeamName], SM.[YourRef] AS [YourRef], SM.[MatterStatus] AS [CaseStatusCode], SM.[MatterStatusDescription] AS [CaseStatusDesc] FROM [dbo].[SearchMatters] SM WITH (NOLOCK) CROSS APPLY (SELECT SUBSTRING(CONVERT(VARCHAR, DATEADD(minute, ISNULL(SUM(ISNULL(TDB.[time], 0)), 0), ''19000101''), 108), 1, 5) AS [TOTALTIME] FROM [dbo].[TimeDayBook] TDB WITH (NOLOCK) WHERE TDB.[FeeEarn] = @Handler AND TDB.[matter] = SM.[code] ) TTT' SET @NCOMMAND = @NCOMMAND + N' LEFT OUTER JOIN [dbo].[RecentMatterList] RML WITH (NOLOCK) ON RML.[FEE] = @handler AND RML.[MATTER] = SM.[Code] WHERE (@StatusCount = 0 OR SM.[Closed] IN (SELECT FilterValue FROM (SELECT LTRIM(RTRIM(m.n.value(''.[1]'',''varchar(8000)''))) AS FilterValue , ROW_NUMBER() OVER (ORDER BY (SELECT 1)) as rownumber FROM( SELECT CAST('''' + REPLACE((SELECT DISTINCT [Status] FROM @CustomFilter WHERE [Status] IS NOT NULL and [Status] <>''''),'','','''') + '''' AS XML) AS x )t CROSS APPLY x.nodes(''/XMLRoot/RowData'')m(n)) FILTERVALUETBLFnl)) ' IF (@BitWiseID = 0) BEGIN SET @NCOMMAND = @NCOMMAND + N' AND ( SM.[Privileges] = 0 OR SM.[Privileges] = -1)' END ELSE IF (@BitWiseID = -1) BEGIN SET @NCOMMAND = @NCOMMAND + N' AND 1 = 1' END ELSE BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[Privileges] & @BitWiseID <> 0' END IF (@which = 1) BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[FECode] = @handler' END IF (@closed = 'N') BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[Closed] = 0' END IF (@closed = 'Y') BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[Closed] = 1' END IF (@worktype <> '') BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[WType] = @WorkType' END IF (@department <> '') BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[Dept] = @department' END IF (@filecolour <> '') BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[FileColour] = @filecolour' END IF (@feecode <> '') BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[FECode] = @feecode' END DECLARE @SearchIncludes NVARCHAR(MAX) SET @SearchIncludes = N'' IF (@searchtext <> '') BEGIN IF SUBSTRING(@searchtext, 1, 1) <> '%' BEGIN SET @searchtext = '%' + @searchtext END IF SUBSTRING(@searchtext, LEN(@searchtext), 1) <> '%' BEGIN SET @searchtext = @searchtext + '%' END SET @searchtext = @searchtext COLLATE SQL_Latin1_General_Cp1251_CS_AS IF (@includeaddress = 0) AND (@includecode = 0) AND (@includedescription = 0) AND (@includename = 0) AND (@includeoldref = 0) AND (@includeuser1 = 0) AND (@includeemail = 0) BEGIN -- This is the standard call - not from Advanced Matter Search, so we search in everything IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END IF @searchonlycode <> 'yes' BEGIN SET @SearchIncludes = @SearchIncludes + N'SM.[NCDescription] LIKE @searchtext OR SM.[Code] LIKE @searchtext OR SM.[User1] LIKE @searchtext OR SM.[User2] LIKE @searchtext OR SM.[User3] LIKE @searchtext OR SM.[OldRef] LIKE @searchtext OR SM.[YourRef] LIKE @searchtext OR SM.[NCName] LIKE @searchtext OR SM.[NCAddress] LIKE @searchtext OR SM.[Email] LIKE @searchtext OR SM.[NCHandlerName] LIKE @searchtext OR SM.[NCPartnerName] LIKE @searchtext OR SM.[DeptDescription] LIKE @searchtext OR SM.[WTypeDescription] LIKE @searchtext OR SM.[FileColourDescription] LIKE @searchtext OR SM.[MatterStatusDescription] LIKE @searchtext' END ELSE BEGIN SET @SearchIncludes = @SearchIncludes + N'SM.[Code] LIKE @searchtext' END END ELSE BEGIN IF (@includeaddress = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[NCAddress] LIKE @searchtext' END IF (@includecode = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[Code] LIKE @searchtext' END IF (@includedescription = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[NCDescription] LIKE @searchtext' END IF (@includename = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[NCName] LIKE @searchtext' END IF (@includeoldref = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[OldRef] LIKE @searchtext' END IF (@includeuser1 = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[User1] LIKE @searchtext' END IF (@includeemail = 1) BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[Email] LIKE @searchtext' END END END IF @andoraddress = 'OR' BEGIN IF SUBSTRING(@andoraddressvalue, 1, 1) <> '%' BEGIN SET @andoraddressvalue = '%' + @andoraddressvalue END IF SUBSTRING(@andoraddressvalue, LEN(@andoraddressvalue), 1) <> '%' BEGIN SET @andoraddressvalue = @andoraddressvalue + '%' END SET @andoraddressvalue = @andoraddressvalue COLLATE SQL_Latin1_General_Cp1251_CS_AS IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[NCAddress] LIKE @andoraddressvalue' END IF @andorcode = 'OR' BEGIN IF CHARINDEX('%', @andorcodevalue, 1) = 0 BEGIN IF SUBSTRING(@andorcodevalue, 1, 1) <> '%' BEGIN SET @andorcodevalue = '%' + @andorcodevalue END IF SUBSTRING(@andorcodevalue, LEN(@andorcodevalue), 1) <> '%' BEGIN SET @andorcodevalue = @andorcodevalue + '%' END END IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[Code] LIKE @andorcodevalue' END IF @andordept = 'OR' BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[Dept]= @andordeptvalue' END IF @andordescription = 'OR' BEGIN IF SUBSTRING(@andordescriptionvalue, 1, 1) <> '%' BEGIN SET @andordescriptionvalue = '%' + @andordescriptionvalue END IF SUBSTRING(@andordescriptionvalue, LEN(@andordescriptionvalue), 1) <> '%' BEGIN SET @andordescriptionvalue = @andordescriptionvalue + '%' END SET @andordescriptionvalue = @andordescriptionvalue COLLATE SQL_Latin1_General_Cp1251_CS_AS IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[NCDescription] LIKE @andordescriptionvalue' END IF @andorfeecode = 'OR' BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[FECode] = @andorfeecodevalue' END IF @andorname = 'OR' BEGIN IF SUBSTRING(@andornamevalue, 1, 1) <> '%' BEGIN SET @andornamevalue = '%' + @andornamevalue END IF SUBSTRING(@andornamevalue, LEN(@andornamevalue), 1) <> '%' BEGIN SET @andornamevalue = @andornamevalue + '%' END SET @andornamevalue = @andornamevalue COLLATE SQL_Latin1_General_Cp1251_CS_AS IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[NCName] LIKE @andornamevalue' END IF @andoroldref = 'OR' BEGIN IF SUBSTRING(@andoroldrefvalue, 1, 1) <> '%' BEGIN SET @andoroldrefvalue = '%' + @andoroldrefvalue END IF SUBSTRING(@andoroldrefvalue, LEN(@andoroldrefvalue), 1) <> '%' BEGIN SET @andoroldrefvalue = @andoroldrefvalue + '%' END IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[OldRef] LIKE @andoroldrefvalue' END IF @andoruser1 = 'OR' BEGIN IF SUBSTRING(@andoruser1value, 1, 1) <> '%' BEGIN SET @andoruser1value = '%' + @andoruser1value END IF SUBSTRING(@andoruser1value, LEN(@andoruser1value), 1) <> '%' BEGIN SET @andoruser1value = @andoruser1value + '%' END IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[User1] LIKE @andoruser1value' END IF @andoruser2 = 'OR' BEGIN IF SUBSTRING(@andoruser2value, 1, 1) <> '%' BEGIN SET @andoruser2value = '%' + @andoruser2value END IF SUBSTRING(@andoruser2value, LEN(@andoruser2value), 1) <> '%' BEGIN SET @andoruser2value = @andoruser2value + '%' END IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[User2] LIKE @andoruser2value' END IF @andoruser3 = 'OR' BEGIN IF SUBSTRING(@andoruser3value, 1, 1) <> '%' BEGIN SET @andoruser3value = '%' + @andoruser3value END IF SUBSTRING(@andoruser3value, LEN(@andoruser3value), 1) <> '%' BEGIN SET @andoruser3value = @andoruser3value + '%' END IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[User3] LIKE @andoruser3value' END IF @andorwtype = 'OR' BEGIN IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[WType] = @andorwtypevalue' END IF @andoryourref = 'OR' BEGIN IF SUBSTRING(@andoryourrefvalue, 1, 1) <> '%' BEGIN SET @andoryourrefvalue = '%' + @andoryourrefvalue END IF SUBSTRING(@andoryourrefvalue, LEN(@andoryourrefvalue), 1) <> '%' BEGIN SET @andoryourrefvalue = @andoryourrefvalue + '%' END IF @SearchIncludes <> N'' BEGIN SET @SearchIncludes = @SearchIncludes + N' OR ' END SET @SearchIncludes = @SearchIncludes + N'SM.[YourRef] LIKE @andoryourrefvalue' END --SELECT @SearchIncludes IF @SearchIncludes <> '' BEGIN SET @NCOMMAND = @NCOMMAND + N' AND ( ' + @SearchIncludes + N')' END IF @andoraddress = 'AND' BEGIN IF SUBSTRING(@andoraddressvalue, 1, 1) <> '%' BEGIN SET @andoraddressvalue = '%' + @andoraddressvalue END IF SUBSTRING(@andoraddressvalue, LEN(@andoraddressvalue), 1) <> '%' BEGIN SET @andoraddressvalue = @andoraddressvalue + '%' END SET @andoraddressvalue = @andoraddressvalue COLLATE SQL_Latin1_General_Cp1251_CS_AS SET @NCOMMAND = @NCOMMAND + N' AND SM.[NCAddress] LIKE @andoraddressvalue' END IF @andorcode = 'AND' BEGIN IF SUBSTRING(@andorcodevalue, 1, 1) <> '%' BEGIN SET @andorcodevalue = '%' + @andorcodevalue END IF SUBSTRING(@andorcodevalue, LEN(@andorcodevalue), 1) <> '%' BEGIN SET @andorcodevalue = @andorcodevalue + '%' END SET @NCOMMAND = @NCOMMAND + N' AND SM.[Code] LIKE @andorcodevalue' END IF @andordept = 'AND' BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[Dept] = @andordeptvalue' END IF @andordescription = 'AND' BEGIN IF SUBSTRING(@andordescriptionvalue, 1, 1) <> '%' BEGIN SET @andordescriptionvalue = '%' + @andordescriptionvalue END IF SUBSTRING(@andordescriptionvalue, LEN(@andordescriptionvalue), 1) <> '%' BEGIN SET @andordescriptionvalue = @andordescriptionvalue + '%' END SET @andordescriptionvalue = @andordescriptionvalue COLLATE SQL_Latin1_General_Cp1251_CS_AS SET @NCOMMAND = @NCOMMAND + N' AND SM.[NCDescription] LIKE @andordescriptionvalue' END IF @andorfeecode = 'AND' BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[FECode] = @andorfeecodevalue' END IF @andorname = 'AND' BEGIN IF SUBSTRING(@andornamevalue, 1, 1) <> '%' BEGIN SET @andornamevalue = '%' + @andornamevalue END IF SUBSTRING(@andornamevalue, LEN(@andornamevalue), 1) <> '%' BEGIN SET @andornamevalue = @andornamevalue + '%' END SET @andornamevalue = @andornamevalue COLLATE SQL_Latin1_General_Cp1251_CS_AS SET @NCOMMAND = @NCOMMAND + N' AND SM.[NCName] LIKE @andornamevalue' END IF @andoroldref = 'AND' BEGIN IF SUBSTRING(@andoroldrefvalue, 1, 1) <> '%' BEGIN SET @andoroldrefvalue = '%' + @andoroldrefvalue END IF SUBSTRING(@andoroldrefvalue, LEN(@andoroldrefvalue), 1) <> '%' BEGIN SET @andoroldrefvalue = @andoroldrefvalue + '%' END SET @NCOMMAND = @NCOMMAND + N' AND SM.[OldRef] LIKE @andoroldrefvalue' END IF @andoruser1 = 'AND' BEGIN IF SUBSTRING(@andoruser1value, 1, 1) <> '%' BEGIN SET @andoruser1value = '%' + @andoruser1value END IF SUBSTRING(@andoruser1value, LEN(@andoruser1value), 1) <> '%' BEGIN SET @andoruser1value = @andoruser1value + '%' END SET @NCOMMAND = @NCOMMAND + N' AND SM.[User1] LIKE @andoruser1value' END IF @andoruser2 = 'AND' BEGIN IF SUBSTRING(@andoruser2value, 1, 1) <> '%' BEGIN SET @andoruser2value = '%' + @andoruser2value END IF SUBSTRING(@andoruser2value, LEN(@andoruser2value), 1) <> '%' BEGIN SET @andoruser2value = @andoruser2value + '%' END SET @NCOMMAND = @NCOMMAND + N' AND SM.[User2] LIKE @andoruser2value' END IF @andoruser3 = 'AND' BEGIN IF SUBSTRING(@andoruser3value, 1, 1) <> '%' BEGIN SET @andoruser3value = '%' + @andoruser3value END IF SUBSTRING(@andoruser3value, LEN(@andoruser3value), 1) <> '%' BEGIN SET @andoruser3value = @andoruser3value + '%' END SET @NCOMMAND = @NCOMMAND + N' AND SM.[User3] LIKE @andoruser3value' END IF @andorwtype = 'AND' BEGIN SET @NCOMMAND = @NCOMMAND + N' AND SM.[WType] = @andorwtypevalue' END IF @andoryourref = 'AND' BEGIN IF SUBSTRING(@andoryourrefvalue, 1, 1) <> '%' BEGIN SET @andoryourrefvalue = '%' + @andoryourrefvalue END IF SUBSTRING(@andoryourrefvalue, LEN(@andoryourrefvalue), 1) <> '%' BEGIN SET @andoryourrefvalue = @andoryourrefvalue + '%' END SET @NCOMMAND = @NCOMMAND + N' AND SM.[YourRef] LIKE @andoryourrefvalue' END SET @NCOMMAND = @NCOMMAND + N' ORDER BY ' + CASE @orderby WHEN N'description' THEN N'CASE WHEN SM.[Description] = '''' THEN 1 ELSE 0 END, SM.[Description] ' + @order + N', SM.[Code] ' + @order WHEN N'Code' THEN N'CASE WHEN SM.[Code] = '''' THEN 1 ELSE 0 END, SM.[Code] ' + @order WHEN N'Name' THEN N'CASE WHEN SM.[Name] = '''' THEN 1 ELSE 0 END, SM.[Name] ' + @order + N', SM.[Code] ' + @order WHEN N'Address' THEN N'CASE WHEN SM.[Address] = '''' THEN 1 ELSE 0 END, SM.[Address] ' + @order + N', SM.[Code] ' + @order WHEN N'Email' THEN N'CASE WHEN SM.[Email] = '''' THEN 1 ELSE 0 END, SM.[Email] ' + @order + N', SM.[Code] ' + @order WHEN N'PhoneNumber' THEN N'CASE WHEN SM.[PhoneNumber] = '''' THEN 1 ELSE 0 END, SM.[PhoneNumber] ' + @order + N', SM.[Code] ' + @order WHEN N'user1' THEN N'CASE WHEN SM.[User1] = '''' THEN 1 ELSE 0 END, SM.[User1] ' + @order + N', SM.[Code] ' + @order WHEN N'user2' THEN N'CASE WHEN SM.[User2] = '''' THEN 1 ELSE 0 END, SM.[User2] ' + @order + N', SM.[Code] ' + @order WHEN N'user3' THEN N'CASE WHEN SM.[User3] = '''' THEN 1 ELSE 0 END, SM.[User3] ' + @order + N', SM.[Code] ' + @order WHEN N'yourref' THEN N'CASE WHEN SM.[YourRef] = '''' THEN 1 ELSE 0 END, SM.[YourRef] ' + @order + N', SM.[Code] ' + @order WHEN N'OldRef' THEN N'CASE WHEN SM.[OldRef] = '''' THEN 1 ELSE 0 END, SM.[OldRef] ' + @order + N', SM.[Code] ' + @order WHEN N'FileNum' THEN N'CASE WHEN SM.[FileNum] = 0 THEN 1 ELSE 0 END, SM.[FileNum] ' + @order + N', SM.[Code] ' + @order WHEN N'department' THEN N'CASE WHEN SM.[DeptDescription] = '''' THEN 1 ELSE 0 END, SM.[DeptDescription] ' + @order + N', SM.[Code] ' + @order WHEN N'Dept' THEN N'CASE WHEN SM.[DeptDescription] = '''' THEN 1 ELSE 0 END, SM.[DeptDescription] ' + @order + N', SM.[Code] ' + @order WHEN N'worktype' THEN N'CASE WHEN SM.[WTypeDescription] = '''' THEN 1 ELSE 0 END, SM.[WTypeDescription] ' + @order + N', SM.[Code] ' + @order WHEN N'FeeCode' THEN N'CASE WHEN SM.[FECode] = '''' THEN 2 WHEN SM.[FECode] = ''ADM'' THEN 1 ELSE 0 END, SM.[FECode] ' + @order + N', SM.[Code] ' + @order WHEN N'FeeEarner' THEN N'CASE WHEN SM.[HandlerName] = '''' AND SM.[FECode] = '''' THEN 3 WHEN SM.[HandlerName] = '''' THEN 2 WHEN SM.[HandlerName] = ''Admin'' THEN 1 ELSE 0 END, SM.[HandlerName] ' + @order + N', SM.[Code] ' + @order WHEN N'FileColour_Fld' THEN N'CASE WHEN SM.[FileColourDescription] = '''' THEN 1 ELSE 0 END, SM.[FileColourDescription] ' + @order + N', SM.[Code] ' + @order WHEN N'FileColour' THEN N'CASE WHEN SM.[FileColourDescription] = '''' THEN 1 ELSE 0 END, SM.[FileColourDescription] ' + @order + N', SM.[Code] ' + @order WHEN N'started' THEN N'SM.[Started] ' + @order + N', SM.[Code] ' + @order WHEN N'LastAccessed' THEN N'CASE WHEN RML.[DateField] IS NULL THEN 1 ELSE 0 END, RML.[DateField] ' + @order + N', SM.[Code] ' + @order WHEN N'closedate' THEN N'CASE WHEN SM.[CloseDate] IS NULL THEN 1 ELSE 0 END, SM.[CloseDate] ' + @order + N', SM.[Code] ' + @order WHEN N'orgcloseddate' THEN N'CASE WHEN SM.[orgcloseddate] IS NULL THEN 1 ELSE 0 END, SM.[orgcloseddate] ' + @order + N', SM.[Code] ' + @order WHEN N'casestatusdesc' THEN N'CASE WHEN SM.[MatterStatusDescription] IS NULL THEN 1 ELSE 0 END, SM.[MatterStatusDescription] ' + @order + N', SM.[Code] ' + @order ELSE CASE WHEN @Which <> 2 THEN N'SM.[Code] ' + @order ELSE N'CASE WHEN RML.[DateField] IS NULL THEN 1 ELSE 0 END, RML.[DateField] DESC, SM.[Code] ' + @order END END SET @NCOMMAND = @NCOMMAND + N' SELECT * FROM( SELECT ROW_NUMBER() OVER(ORDER BY [Res].[id]) AS [RowNumber], [RES].[id], [RES].[Time], [RES].[Code], [RES].[FileColour], [RES].[FileColour_Fld], [RES].[BackgroundColour], [RES].[TextColour], [RES].[Name], [RES].[Description], [RES].[Fe], [RES].[FeeCode], [RES].[FeeEarner], [RES].[User1], [RES].[User2], [RES].[User3], [RES].[Started], [RES].[Dept], [RES].[WorkType], [RES].[Privileges], [RES].[OldRef], [RES].[Address], [RES].[Email], [RES].[Closed], [RES].[OrgCloseDate], [RES].[CloseDate], [RES].[FileRGBColour], [RES].[LastAccessed], [RES].[PhoneNumber], [RES].[FileNum], [RES].[ClientCode], [RES].[DepartmentCode], [RES].[FeeEarnerTeam], [RES].[TeamName], [RES].[YourRef], [RES].[CaseStatusCode], [RES].[CaseStatusDesc] FROM @Result [RES])AS MatterTable WHERE [Closed]=''N'' AND MatterTable.[RowNumber] BETWEEN @StartRow AND @EndRow ORDER BY MatterTable.[id] ASC SELECT COUNT([RES].[id]) AS [TotalRecord] FROM @Result [RES] WHERE [Closed]=''N'' SELECT USERPROMPT1 AS [UserPrompt1], USERPROMPT2 AS [UserPrompt2], USERPROMPT3 AS [UserPrompt3], YourRef AS [YourRef] FROM [Control]' EXECUTE sp_executesql @NCOMMAND, N'@HowMany INT, @BitWiseID BIGINT, @Handler VARCHAR(10), @WorkType VARCHAR(5), @department VARCHAR(5), @filecolour VARCHAR(3), @feecode VARCHAR(10), @searchtext VARCHAR(MAX), @andoraddressvalue VARCHAR(200), @andorcodevalue VARCHAR(200), @andordeptvalue VARCHAR(200), @andordescriptionvalue VARCHAR(200), @andorfeecodevalue VARCHAR(200), @andornamevalue VARCHAR(200), @andoroldrefvalue VARCHAR(200), @andoruser1value VARCHAR(200), @andoruser2value VARCHAR(200), @andoruser3value VARCHAR(200), @andorwtypevalue VARCHAR(200), @andoryourrefvalue VARCHAR(200), @StartRow INT, @EndRow INT, @ColumnNames VARCHAR(50), @FilterValues VARCHAR(50)', @Howmany, @BitWiseID, @handler, @worktype, @department, @filecolour, @feecode, @searchtext, @andoraddressvalue, @andorcodevalue, @andordeptvalue, @andordescriptionvalue, @andorfeecodevalue, @andornamevalue, @andoroldrefvalue, @andoruser1value, @andoruser2value, @andoruser3value, @andorwtypevalue, @andoryourrefvalue, @StartRow, @EndRow, @ColumnNames, @FilterValues END GO IF OBJECT_ID(N'KEYHM_XMLPostDayBook',N'P')IS NOT NULL DROP PROCEDURE [dbo].[KEYHM_XMLPostDayBook] GO CREATE PROCEDURE [dbo].[KEYHM_XMLPostDayBook] (@XML NVARCHAR(MAX)) AS /******************************************************************************************************* * Posts valid entries from the Time Day Book into the Time Entry. * * * * Stored Procedure Name : [dbo].[KEYHM_XMLPostDayBook] * * Copied from : [dbo].[ky_NETXMLPostDayBook] * * * * Modification History: * * 2019-04-24 Vinodhan K Created * *******************************************************************************************************/ BEGIN DECLARE @iSL INT DECLARE @Handler VARCHAR(10) DECLARE @HSEClientGroup VARCHAR(20) DECLARE @UPDByHandler VARCHAR(10) DECLARE @User NVARCHAR(128) DECLARE @UpdateRestriction INT BEGIN TRY EXEC sp_xml_preparedocument @iSL OUTPUT, @XML END TRY BEGIN CATCH EXEC sp_xml_preparedocument @iSL OUTPUT, N'' END CATCH SELECT @Handler = [SRC].[Handler], @HSEClientGroup = [SRC].[HSEClientGroup], @UPDByHandler = [SRC].[UPDByHandler], @User = [SRC].[User], @UpdateRestriction = [SRC].[UpdateRestriction] FROM OPENXML(@iSL, N'PostDayBook') WITH ([Handler] VARCHAR(10) '@handler', [HSEClientGroup] VARCHAR(20) '@hseclientgroup', [UPDByHandler] VARCHAR(10) '@updbyhandler', [User] NVARCHAR(128) '@user', [UpdateRestriction] INT '@updaterestriction') [SRC] BEGIN TRY EXEC sp_xml_removedocument @iSL END TRY BEGIN CATCH END CATCH SET @Handler = ISNULL(@Handler, '') SET @HSEClientGroup = ISNULL(@HSEClientGroup, '') SET @UPDByHandler = ISNULL(@UPDByHandler, '') SET @User = ISNULL(@User, N'') SET @UpdateRestriction = ISNULL(@UpdateRestriction, 0) DECLARE @MAXID int DECLARE @Continue int DECLARE @COMMAND int DECLARE @AxleErrors int DECLARE @PERIOD INT DECLARE @YEAR INT DECLARE @IsSAM4 BIT DECLARE @TUTNUMVALUE DECIMAL(17, 2) DECLARE @RoundupUnits BIT SET @RoundupUnits = 0 SELECT @RoundupUnits = [SET].[KeyValue] FROM [dbo].[Settings] [SET] WHERE [SET].[KeyName] = 'RoundupUnits' SET @IsSAM4 = [dbo].[ISSAM4]() IF @IsSAM4 = 0 BEGIN SELECT @PERIOD=ISNULL(CURPER,0), @YEAR=ISNULL(CL.[YEAR],0) FROM [CONTROL] CL END ELSE BEGIN SET @PERIOD=(SELECT ISNULL(numvalue,0) FROM CtrlNum WHERE code='CurPeriod') SET @YEAR=(SELECT ISNULL(numvalue,0) FROM CtrlNum WHERE code='CurYear') END SET @PERIOD = ISNULL(@PERIOD, 0) SET @YEAR = ISNULL(@YEAR, 0) IF (@RoundupUnits = 0) BEGIN SET @TUTNUMVALUE = 1 END ELSE BEGIN IF @IsSAM4 = 1 BEGIN SELECT @TUTNUMVALUE = CTN.[NumValue] FROM [dbo].[CtrlNum] CTN WHERE CTN.[Code] = 'TimeUnit' END SET @TUTNUMVALUE = CASE WHEN ISNULL(@TUTNUMVALUE, 0) = 0 THEN 6 ELSE @TUTNUMVALUE END END DECLARE @NTEID TABLE ([ID] int identity(1, 1), [NEWID] int, [RECORDID] int) DECLARE @PDMAT TABLE ([ID] int identity(1, 1), [CODE] varchar(20)) DECLARE @RDUP TABLE ([RECORDID] int) SELECT @AxleErrors = COUNT(1) FROM [dbo].[KEYHM_WDTimeDayBookWithAxleErrors] (@HSEClientGroup, @Handler) AXER WHERE AXER.[IsAxleError] = 'Y' SELECT @MAXID = ISNULL(MAX(TIE.[RECORDID]), 0) FROM [dbo].[TimeEntry] TIE INSERT INTO @NTEID ([NEWID], [RECORDID]) SELECT @MAXID, TDB.[RECORDID] from [dbo].[TimeDayBook] [TDB] LEFT OUTER JOIN [dbo].[matters] MAT INNER JOIN [dbo].[Contacts] CON ON CON.[Code] = MAT.[ClientCode] LEFT OUTER JOIN [dbo].[WorkTypes] WTY ON WTY.[CODE] = MAT.[WType] ON MAT.[Code] = TDB.[MATTER] LEFT OUTER JOIN [dbo].[TasksCodes] TAC ON TAC.[CODE] = TDB.[TASK] WHERE TDB.[FEEEARN] = @Handler AND [dbo].[KEYHM_FN_UserCanPostTime](TDB.[Matter], @Handler, TDB.[RECORDID]) = 0 AND ( [TDB].[TimeOrCharge] <> 'T' --KEYD-5185 OR [TDB].[Time] <> 0) --KEYD-5185 AND CASE WHEN RTRIM(ISNULL(TDB.[matter], '')) = '' -- Admin entries can't cause an Axle error THEN 'N' WHEN RTRIM(ISNULL(TDB.[matter], '')) = '~' -- Admin entries can't cause an Axle error THEN 'N' WHEN MAT.[Code] IS NULL -- Missing matter. This is an error THEN 'Y' WHEN RTRIM(IsNull(CON.[ClientGroup], '')) <> '' -- If it's not an HSE Client it can't cause an Axle Error THEN 'N' WHEN RTRIM(IsNull(CON.[ClientGroup], '')) <> ISNULL(@HSEClientGroup, '') -- If it's not an HSE Client it can't cause an Axle Error THEN 'N' WHEN RTRIM(ISNULL(WTY.[CODE], '')) = '' -- Missing Worktype. This is an error THEN 'Y' WHEN RTRIM(ISNULL(WTY.[ChildCare], '')) <> 'Y' -- If it's not a ChildCare matter it can't cause an Axle Error THEN 'N' WHEN RTRIM(ISNULL(TAC.[CODE], '')) = '' -- Missing Task. This is an error THEN 'Y' WHEN RTRIM(ISNULL(TAC.[AxleTask], '')) <> 'Y' -- This is not a Child Care task. This is an error THEN 'Y' WHEN LEN(RTRIM(ISNULL(TDB.[COMMENT], ''))) < 10 -- Comment must be at least 10 characters. This is an error. THEN 'Y' WHEN TDB.[TIME] > 1440 -- Task is too long! Must be less than 1440 minutes (i.e. 24 hours) THEN 'Y' ELSE 'N' END = 'N' AND ( @UpdateRestriction = 0 OR ( @UpdateRestriction = 1 AND [TDB].[AdHocPosting] = 1) OR ( @UpdateRestriction = 2 AND [TDB].[Date] < CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 112)))) -- Please Note that AdHocPosting should only be evaluated ONCE - Start UPDATE [TDB] SET [TDB].[AdHocPosting] = 0 FROM [dbo].[TimeDayBook] [TDB] WHERE [TDB].[FeeEarn] = @Handler AND [TDB].[AdHocPosting] <> 0 -- Please Note that AdHocPosting should only be evaluated ONCE - End INSERT INTO @PDMAT ([CODE]) SELECT DISTINCT TDB.[MATTER] FROM [dbo].[TimeDayBook] TDB LEFT OUTER JOIN [dbo].[matters] MAT --2015-09-01 ON MAT.CODE = TDB.Matter WHERE TDB.[FEEEARN] = @Handler AND ISNULL(MAT.Closed,'N')<>'Y' UPDATE NTEID SET NTEID.[NEWID] = NTEID.[ID] + NTEID.[NEWID] FROM @NTEID NTEID --IF (@TUTNUMVALUE <> 1) ----PINO 2015-08-25 - second fix -- BEGIN ----PINO 2015-08-25 - second fix -- Round all Time Daybook Values up to the nearest Unit. DECLARE @RECID INT INSERT INTO @RDUP ([RECORDID]) SELECT TDB.[RecordID] FROM @NTEID NTEID INNER JOIN [dbo].[TimeDayBook] TDB ON TDB.[RECORDID] = NTEID.[RECORDID] AND TDB.[TimeOrCharge] <> 'C' SELECT TOP 1 @RECID = RDUP.[RECORDID] FROM @RDUP RDUP WHILE (@RECID IS NOT NULL) BEGIN DELETE RDUP FROM @RDUP RDUP WHERE RDUP.[RECORDID] = @RECID EXEC [dbo].[KEYHM_SetTimeDaybookRateCharge] @RECID, @TUTNUMVALUE SET @RECID = NULL SELECT TOP 1 @RECID = RDUP.[RECORDID] FROM @RDUP RDUP END --END ----PINO 2015-08-25 - second fix SET IDENTITY_INSERT [dbo].[TimeEntry] ON INSERT INTO [dbo].[TimeEntry] ([MATTER], [FEEEARN], [DATE], [TIME], [RATE], [TASK], [TIMEORCHARGE], [COMMENT], [NCCODE], [DOCKET], [TEAM], [TRACKREF], [REC_IRR], [PERIOD], [YEAR], [BillingPeriod], [BillingYear], [ACTIONID], [StageCode], [Branch], [RECORDID]) SELECT CASE WHEN RTRIM(ISNULL(TDB.[TASK], '')) <> '' THEN TDB.[MATTER] WHEN RTRIM(ISNULL(TDB.[MATTER], '')) <> '' THEN TDB.[MATTER] ELSE '~' END, TDB.[FEEEARN], TDB.[DATE], TDB.[TIME], TDB.[RATE], TDB.[TASK], TDB.[TIMEORCHARGE], TDB.[COMMENT], CASE WHEN RTRIM(ISNULL(TDB.[TASK], '')) <> '' THEN '' WHEN RTRIM(ISNULL(TDB.[MATTER], '')) = '~' THEN TDB.[NCCCode] WHEN RTRIM(ISNULL(TDB.[MATTER], '')) <> '' THEN '' ELSE TDB.[NCCCODE] END, CASE WHEN ISNUMERIC(RTRIM(ISNULL(TDB.[DOCKET],''))) = 1 THEN CONVERT(decimal(9,0), RTRIM(ISNULL(TDB.[DOCKET],''))) ELSE 0 END, TDB.[TEAM], TDB.[TRACKREF], TDB.[REC_IRR], CASE WHEN ISNULL(TDB.[PERIOD], 0) = 0 THEN @PERIOD ELSE TDB.[PERIOD] END, CASE WHEN ISNULL(TDB.[YEAR], 0) = 0 THEN @YEAR ELSE TDB.[YEAR] END, 0, --2015-08-27 0, --2015-08-27 TDB.[ACTIONID], TDB.[StageCode], CASE WHEN TDB.[Matter] = '~' THEN '' ELSE ISNULL(HAN.[BRANCH], '') END, -- 2015-09-01 John NTEID.[NEWID] FROM @NTEID NTEID INNER JOIN [dbo].[TimeDayBook] TDB ON TDB.[RECORDID] = NTEID.[RECORDID] LEFT OUTER JOIN [dbo].[Handlers] HAN -- 2015-09-01 John ON HAN.[CODE] = TDB.[FeeEarn] LEFT OUTER JOIN [dbo].[Matters] MAT on MAT.Code = TDB.Matter SET IDENTITY_INSERT [dbo].[TimeEntry] OFF SELECT @MAXID = ISNULL(MAX(TIE.[RECORDID]), 0) FROM [dbo].[TimeEntry] TIE DBCC CHECKIDENT([TimeEntry], RESEED, @MAXID) DELETE [dbo].[WDNTEID] WHERE [handler] = @Handler INSERT INTO [dbo].[WDNTEID] ([Handler], [id], [NewId], [RECORDID]) SELECT @Handler, [ID], [NEWID], [RECORDID] FROM @NTEID EXEC [dbo].[KEYHM_UpdateTimeEntryFromDayBook] @HANDLER, @UPDByHandler, @User EXEC [dbo].[KEYHM_CheckUnpostableEntries] @HANDLER DELETE TDB FROM @NTEID NTEID INNER JOIN [dbo].[TimeDayBook] TDB ON TDB.[RECORDID] = NTEID.[RECORDID] INNER JOIN [dbo].[TimeEntry] TIE ON TIE.[RECORDID] = NTEID.[NEWID] LEFT OUTER JOIN [dbo].[matters] MAT ON MAT.[Code] = TIE.[MATTER] WHERE TIE.[MATTER] = '~' OR MAT.[Code] IS NOT NULL UPDATE MAT SET MAT.[ChargeBal] = ISNULL(TIE.[Charge], 0), MAT.[TimeBal] = ISNULL(TIE.[Time], 0) FROM @PDMAT PDM INNER JOIN [dbo].[Matters] MAT ON MAT.[Code] = PDM.[CODE] LEFT OUTER JOIN (SELECT TIE.[Matter], SUM(ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0)) AS [Charge], SUM(ISNULL(TIE.[Time], 0)) AS [Time] FROM [dbo].[TimeEntry] AS TIE WHERE TIE.[TimeOrCharge] <> 'B' AND TIE.[Rec_Irr] = 'C' AND TIE.[IncludeInBill] <> 2 AND CASE WHEN @IsSAM4 = 1 -- SAM4 doesn't use billedamount AND ISNULL(TIE.[InvoiceNo], 0) = 0 THEN 1 WHEN @IsSAM4 <> 1 -- SAM3 does AND ABS(ISNULL(TIE.[BilledAmount], 0)) < ABS(ISNULL(TIE.[Charge], 0)) THEN 1 ELSE 0 END = 1 GROUP BY TIE.[Matter]) AS TIE ON TIE.[Matter] = MAT.[Code] WHERE MAT.[Code] IS NOT NULL IF (@AxleErrors = 0) BEGIN SELECT COUNT(1) AS [TOTAL] from [dbo].[TimeDayBook] TDB WHERE TDB.[FEEEARN] = @Handler END ELSE BEGIN SELECT DISTINCT AXER.[AxleError] FROM [dbo].[ky_WDTimeDayBookWithAxleErrors] (@HSEClientGroup, @Handler) AXER WHERE AXER.[IsAxleError] = 'Y' END DECLARE @IsTimerRunning BIT SET @IsTimerRunning = 0; IF EXISTS(SELECT TOP 1 1 FROM TimeDayBook WHERE FeeEarn = @Handler AND StopwatchStatus = 0) BEGIN SET @IsTimerRunning = 1; END SELECT @IsTimerRunning AS [IsTimerRunning] END GO