added Paste queries when pasting into a ‘parent’
This commit is contained in:
parent
12e5c4ac76
commit
2d04077df0
@ -9512,3 +9512,252 @@ GO
|
|||||||
IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetTransitionReportData Succeeded'
|
IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetTransitionReportData Succeeded'
|
||||||
ELSE PRINT 'Procedure Creation: vesp_GetTransitionReportData Error on Creation'
|
ELSE PRINT 'Procedure Creation: vesp_GetTransitionReportData Error on Creation'
|
||||||
GO
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
/****** Object: StoredProcedure [PasteItemChild] ******/
|
||||||
|
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemChild]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||||
|
DROP PROCEDURE [PasteItemChild];
|
||||||
|
GO
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||||
|
Copyright 2015 - Volian Enterprises, Inc. All rights reserved.
|
||||||
|
|
||||||
|
Copies & Pastes into a level above the copied item, for example copied item is step pasted into a section.
|
||||||
|
|
||||||
|
Example test:
|
||||||
|
|
||||||
|
declare @NewItemID int
|
||||||
|
declare @dts datetime
|
||||||
|
set @newitemid = 0
|
||||||
|
set @dts = getdate()
|
||||||
|
exec PasteItemChild 1493,484,20041,2,@dts,'KATHY',@NewItemID output
|
||||||
|
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[PasteItemChild]
|
||||||
|
(
|
||||||
|
@ItemID int=null, @StartItemID int=null, -- ItemID is destination, StartItemID is top of copy
|
||||||
|
@Type int=null, @FromType int=null, @DTS datetime, @UserID nvarchar(100), -- Type is step/section type for content record, fromtype is for parts
|
||||||
|
@NewItemID int output
|
||||||
|
)
|
||||||
|
WITH EXECUTE AS OWNER
|
||||||
|
AS
|
||||||
|
BEGIN TRY -- Try Block
|
||||||
|
BEGIN TRANSACTION
|
||||||
|
if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0)
|
||||||
|
BEGIN
|
||||||
|
RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1)
|
||||||
|
RETURN
|
||||||
|
END
|
||||||
|
-- First make a copy of the input StartItemID
|
||||||
|
-- DestFormatID is the formatid for the destination parent's format
|
||||||
|
DECLARE @DestFormatID int
|
||||||
|
SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0)
|
||||||
|
EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT
|
||||||
|
-- print 'testing PasteItemChild 1 ' + cast(dbo.ve_GetTransitionErrorCount() as varchar(20))
|
||||||
|
DECLARE @ChildID int, @ContentID int, @ParentContentID int, @LastChanged timestamp
|
||||||
|
, @newLastChanged timestamp, @Error int, @Rowcount int, @ChildDeleted int
|
||||||
|
SELECT @ChildID = pp.[ItemID],@ParentContentID = ii.ContentID, @LastChanged = pp.LastChanged
|
||||||
|
FROM [ITEMS] ii
|
||||||
|
LEFT JOIN [PARTS] pp on pp.ContentID=ii.ContentID and pp.FromType=@FromType
|
||||||
|
WHERE ii.[ItemID]=@ItemID
|
||||||
|
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[tblParts]') AND OBJECTPROPERTY(id,N'IsTable') = 1)
|
||||||
|
BEGIN
|
||||||
|
SELECT @ChildDeleted = pp.[ItemID],@ParentContentID = ii.ContentID, @LastChanged = pp.LastChanged
|
||||||
|
FROM [ITEMS] ii
|
||||||
|
LEFT JOIN [tblPARTS] pp on pp.ContentID=ii.ContentID and pp.FromType=@FromType
|
||||||
|
WHERE ii.[ItemID]=@ItemID and pp.DeleteStatus > 0
|
||||||
|
END
|
||||||
|
-- No existing child - Add Parts record. Note that don't need to update any transition records if no existing children
|
||||||
|
IF @ChildID is null
|
||||||
|
BEGIN
|
||||||
|
IF @ChildDeleted is not null
|
||||||
|
DELETE FROM [tblParts] WHERE ItemID = @ChildDeleted
|
||||||
|
EXECUTE AddPart @ParentContentID, @FromType, @newItemID, @DTS, @UserID, @newLastChanged output
|
||||||
|
END
|
||||||
|
ELSE -- Children exist: Update existing Parts record and adjust transition records that may have pointed to 1st child.
|
||||||
|
BEGIN
|
||||||
|
EXECUTE UpdatePart @ParentContentID, @FromType, @newItemID, @DTS, @UserID, @LastChanged, @newLastChanged output
|
||||||
|
UPDATE [Items] SET [PreviousID]=@newItemID WHERE [ItemID]=@ChildID
|
||||||
|
|
||||||
|
-- Update content records for the transitions, this only fixes the link portion. Code fixes the text.
|
||||||
|
Update CC
|
||||||
|
Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ChildID,@newItemID)
|
||||||
|
From CONTENTS CC
|
||||||
|
JOIN Transitions TT ON TT.FromID = CC.ContentID
|
||||||
|
WHERE TT.ToID = @ChildID OR TT.RangeID = @ChildID
|
||||||
|
-- Update transitions that pointed to @ItemID to point to @newItemID
|
||||||
|
Update TRANSITIONS
|
||||||
|
Set ToID = CASE ToID WHEN @ChildID THEN @newItemID ELSE ToID END,
|
||||||
|
RangeID = CASE RangeID WHEN @ChildID THEN @newItemID ELSE RangeID END
|
||||||
|
WHERE ToID = @ChildID OR RangeID = @ChildID
|
||||||
|
END
|
||||||
|
-- Add 'Verification Required' AnnotationType
|
||||||
|
DECLARE @typeID int
|
||||||
|
SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required'
|
||||||
|
IF(@typeID IS NULL)
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian')
|
||||||
|
SELECT @typeID = SCOPE_IDENTITY()
|
||||||
|
END
|
||||||
|
-- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID
|
||||||
|
-- I don't expect to see any transitions that point to @ChildID. They should have changed in
|
||||||
|
-- the update above to point to @newItemID. This is here for consistency with the other insert
|
||||||
|
-- stored procedures
|
||||||
|
INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID])
|
||||||
|
SELECT ItemID, @typeID,'Verify Transition Destination',@UserID
|
||||||
|
FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS
|
||||||
|
where ToID IN(@ChildID,@newItemID) OR RangeID IN(@ChildID,@newItemID))
|
||||||
|
-- Transition Text gets updated in ItemInsertExt.cs
|
||||||
|
IF( @@TRANCOUNT > 0 ) COMMIT
|
||||||
|
PRINT 'Child Added ' + ltrim(str(@newItemID))
|
||||||
|
EXECUTE GetItem @newItemID
|
||||||
|
delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid))
|
||||||
|
delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid))
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH -- Catch Block
|
||||||
|
IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level
|
||||||
|
ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback
|
||||||
|
EXEC vlnErrorHandler
|
||||||
|
END CATCH
|
||||||
|
GO
|
||||||
|
-- Display the status of Proc creation
|
||||||
|
IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemChild Succeeded'
|
||||||
|
ELSE PRINT 'Procedure Creation: PasteItemChild Error on Creation'
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
/****** Object: StoredProcedure [PasteDocVersionChild] ******/
|
||||||
|
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteDocVersionChild]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||||
|
DROP PROCEDURE [PasteDocVersionChild];
|
||||||
|
GO
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||||
|
Copyright 2014 - Volian Enterprises, Inc. All rights reserved.
|
||||||
|
|
||||||
|
Copies & Pastes into a docversion that does NOT have any existing procedures.
|
||||||
|
|
||||||
|
Example test:
|
||||||
|
|
||||||
|
declare @NewItemID int
|
||||||
|
declare @dts datetime
|
||||||
|
set @newitemid = 0
|
||||||
|
set @dts = getdate()
|
||||||
|
exec PasteDocVersionChild 5,30,@dts,'KATHY',@NewItemID output
|
||||||
|
|
||||||
|
*****************************************************************************/
|
||||||
|
CREATE PROCEDURE [dbo].[PasteDocVersionChild]
|
||||||
|
(
|
||||||
|
@VersionID int=null, @StartItemID int=null, -- VersionID is destination (docversion), StartItemID is top of copy (i.e. procedure)
|
||||||
|
@DTS datetime, @UserID nvarchar(100),
|
||||||
|
@ThisVersionID int output
|
||||||
|
)
|
||||||
|
WITH EXECUTE AS OWNER
|
||||||
|
AS
|
||||||
|
BEGIN TRY -- Try Block
|
||||||
|
BEGIN TRANSACTION
|
||||||
|
if not exists (select * from DocVersions where versionid = @VersionID)
|
||||||
|
BEGIN
|
||||||
|
RAISERROR ('###Cannot Paste Procedure###This document version has been deleted in another session',16,1)
|
||||||
|
RETURN
|
||||||
|
END
|
||||||
|
-- First make a copy of the input StartItemID (Procedure)
|
||||||
|
-- DestFormatID is the formatid for the destination parent's format
|
||||||
|
DECLARE @NewItemID int
|
||||||
|
DECLARE @DestFormatID int
|
||||||
|
SET @ThisVersionID = @VersionID
|
||||||
|
SET @DestFormatID = .dbo.vefn_GetDocVersionInheritedFormat(@VersionID)
|
||||||
|
EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT
|
||||||
|
UPDATE [DOCVERSIONS] SET [ItemID] = @NewItemID where [VersionID]=@VersionID
|
||||||
|
IF( @@TRANCOUNT > 0 ) COMMIT
|
||||||
|
PRINT 'Child Added ' + ltrim(str(@newItemID))
|
||||||
|
EXECUTE GetDocVersion @ThisVersionID
|
||||||
|
delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid))
|
||||||
|
delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid))
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH -- Catch Block
|
||||||
|
IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level
|
||||||
|
ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback
|
||||||
|
EXEC vlnErrorHandler
|
||||||
|
END CATCH
|
||||||
|
GO
|
||||||
|
-- Display the status of Proc creation
|
||||||
|
IF (@@Error = 0) PRINT 'Procedure Creation: PasteDocVersionChild Succeeded'
|
||||||
|
ELSE PRINT 'Procedure Creation: PasteDocVersionChild Error on Creation'
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
/****** Object: StoredProcedure [vefn_GetDocVersionInheritedFormat] ******/
|
||||||
|
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetDocVersionInheritedFormat]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1)
|
||||||
|
DROP FUNCTION [vefn_GetDocVersionInheritedFormat];
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE FUNCTION [dbo].[vefn_GetDocVersionInheritedFormat] (@VersionID int) RETURNS int
|
||||||
|
WITH EXECUTE AS OWNER
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
DECLARE @FormatID as int
|
||||||
|
-- First get format for the input doc version
|
||||||
|
begin
|
||||||
|
with Itemz([Level], [VersionID], [FolderID], [ParentID], [FormatID]) as (
|
||||||
|
-- DocVersion From Item
|
||||||
|
select 0 [Level], DV.VersionID, DV.FolderID, null, DV.FormatID
|
||||||
|
from DocVersions DV
|
||||||
|
where [VersionID] = @VersionID
|
||||||
|
Union All
|
||||||
|
-- Folders
|
||||||
|
select [Level] + 1, null, FF.ParentID, FF.FolderID, FF.FormatID
|
||||||
|
from Itemz Z
|
||||||
|
join Folders FF on FF.FolderID = Z.ParentID and FF.ParentID <> FF.FolderID
|
||||||
|
where Z.FormatID is null
|
||||||
|
)
|
||||||
|
Select @FormatID = FormatID from Itemz ZZ Where FormatID is not null
|
||||||
|
OPTION (MAXRECURSION 10000)
|
||||||
|
RETURN @FormatID
|
||||||
|
END
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
-- Display the status of Proc creation
|
||||||
|
IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetDocVersionInheritedFormat Succeeded'
|
||||||
|
ELSE PRINT 'ScalarFunction Creation: vefn_GetDocVersionInheritedFormat Error on Creation'
|
||||||
|
GO
|
||||||
|
|
||||||
|
/*********the following funcion is for debugging copy/paste where transition text in content records does not get updated */
|
||||||
|
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetTransitionErrorCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1)
|
||||||
|
DROP FUNCTION [ve_GetTransitionErrorCount];
|
||||||
|
/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 03/20/2012 17:50:44 ******/
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
/*
|
||||||
|
select dbo.ve_GetTransitionErrorCount ()
|
||||||
|
print 'testing ' + cast(dbo.ve_GetTransitionErrorCount() as varchar(20))
|
||||||
|
*/
|
||||||
|
|
||||||
|
CREATE FUNCTION [dbo].[ve_GetTransitionErrorCount] () RETURNS int
|
||||||
|
WITH EXECUTE AS OWNER
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
DECLARE @Count int
|
||||||
|
select @Count = count(*) from (
|
||||||
|
select dbo.ve_GetShortPathFromContentId(contentid) location, * from (
|
||||||
|
select contentid, text, tt.*,
|
||||||
|
case when text like '%'+ case when tt.toid = tt.rangeid and tt.IsRange = 0
|
||||||
|
then
|
||||||
|
'#Link:Transition:' + cast(TranType as nvarchar(2)) +
|
||||||
|
' ' + cast(TransitionID as nvarchar(10)) + ' ' + cast(ToID as nvarchar(10)) + '%'
|
||||||
|
else
|
||||||
|
'#Link:TransitionRange:' + cast(TranType as nvarchar(2)) +
|
||||||
|
' ' + cast(TransitionID as nvarchar(10)) + ' ' + cast(ToID as nvarchar(10)) + ' ' + cast(RangeID as nvarchar(10))+ '%'
|
||||||
|
end then 'matches' else 'different' end ContentMatchesTrans,
|
||||||
|
case when text like '%'+
|
||||||
|
'#Link:TransitionRange:' + cast(TranType as nvarchar(2)) +
|
||||||
|
' ' + cast(TransitionID as nvarchar(10)) + ' ' + cast(ToID as nvarchar(10)) + ' ' + cast(RangeID as nvarchar(10))+ '%'
|
||||||
|
then 'matches' else 'different' end ContentMatchesRangeTrans
|
||||||
|
from Contents cc
|
||||||
|
join transitions tt on tt.fromid = cc.contentid) mm
|
||||||
|
where ContentMatchesTrans = 'different') mm
|
||||||
|
return @Count END
|
Loading…
x
Reference in New Issue
Block a user