From 83dd3bb55314f1665f8273769d705ea08e8dd88b Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 31 May 2023 18:11:40 +0200 Subject: [PATCH] Aggiunta stored varie + OrderCloning --- .../SqlScripts/Stored/stp_OrderClone.sql | 75 +++++++++++++++++++ .../Stored/stp_OrderList_getFilt.sql | 42 +++++++++++ .../Stored/stp_prt_OrderReportExpl.sql | 75 +++++++++++++++++++ 3 files changed, 192 insertions(+) create mode 100644 WebDoorCreator.Data/SqlScripts/Stored/stp_OrderClone.sql create mode 100644 WebDoorCreator.Data/SqlScripts/Stored/stp_OrderList_getFilt.sql create mode 100644 WebDoorCreator.Data/SqlScripts/Stored/stp_prt_OrderReportExpl.sql diff --git a/WebDoorCreator.Data/SqlScripts/Stored/stp_OrderClone.sql b/WebDoorCreator.Data/SqlScripts/Stored/stp_OrderClone.sql new file mode 100644 index 0000000..f8fafbe --- /dev/null +++ b/WebDoorCreator.Data/SqlScripts/Stored/stp_OrderClone.sql @@ -0,0 +1,75 @@ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + + + +/*-- ============================================= +-- Author: G.A.R. +-- Description: Duplicazione composizione ordine (=Doors + DoorOp) + +EXEC dbo.stp_OrderClone 0, 0, 'samuele.locatelli@egalware.com' + +-- Mod. date: 2023.05.31 +-- =============================================*/ +CREATE PROCEDURE [dbo].[stp_OrderClone] +( + @OrderIdSrc INT = 0 + ,@OrderIdDest INT = 0 + ,@UserIdMod NVARCHAR(500) +) +AS +BEGIN + + SET NOCOUNT ON; + SET XACT_ABORT ON; + + DECLARE @TotRow AS INT; + DECLARE @Cursor AS INT = 1; + DECLARE @DoorIdNew AS INT; + + DROP TABLE IF EXISTS #tmpDoor + + SELECT ROW_NUMBER() OVER (ORDER BY DoorId) AS Riga, * + INTO #TmpDoor + FROM dbo.Door + WHERE OrderId = @OrderIdSrc + + SET @TotRow = @@ROWCOUNT + + BEGIN TRAN + + WHILE ( @Cursor <= @TotRow ) + BEGIN + + -- duplico porte... + -- SELECT * FROM #TmpDoor WHERE Riga = @Cursor + + INSERT INTO dbo.Door + SELECT @OrderIdDest, TypeId, DoorExtCode, DateIns, UserIdIns, GETDATE() AS DateMod, @UserIdMod AS UserIdMod, DoorDescript, Quantity, UnitCost, DateLockExpiry, MeasureUnit, UserIdLock + FROM #TmpDoor + WHERE Riga = @Cursor + + SET @DoorIdNew = SCOPE_IDENTITY() + -- SELECT @DoorIdNew + + -- duplico OP delle porte + INSERT INTO dbo.DoorOp + SELECT @DoorIdNew, dr.Description, dr.DateIns, dr.UserIdIns, GETDATE() AS DateMod, @UserIdMod AS UserIdMod, dr.JsoncConfigVal, dr.ObjectId, dr.JsoncActVal, dr.DtConfirm, dr.userConfirm + FROM #TmpDoor tm + INNER JOIN dbo.DoorOp dr ON tm.DoorId = dr.DoorId + WHERE tm.Riga = @Cursor + + -- SELECT * FROM dbo.DoorOp WHERE DoorId = @DoorIdNew + + SET @Cursor += 1 + END + + COMMIT + +END + + +GO diff --git a/WebDoorCreator.Data/SqlScripts/Stored/stp_OrderList_getFilt.sql b/WebDoorCreator.Data/SqlScripts/Stored/stp_OrderList_getFilt.sql new file mode 100644 index 0000000..3d80d39 --- /dev/null +++ b/WebDoorCreator.Data/SqlScripts/Stored/stp_OrderList_getFilt.sql @@ -0,0 +1,42 @@ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + + +/*-- ============================================= +-- Author: S.E.L. +-- Description: Elenco ordini + valorizzazioni da criteri di filtraggio + +EXEC dbo.stp_OrderList_getFilt 0, 0, NULL, NULL + +-- Mod. date: 2023.03.13 +-- =============================================*/ +CREATE PROCEDURE [dbo].[stp_OrderList_getFilt] +( + @CompanyId INT = 0 + ,@OrderStatus INT = 0 + ,@DataFrom DATETIME = NULL + ,@DataTo DATETIME = NULL +) +AS +BEGIN + + SET NOCOUNT ON; + + -- fix periodo SE non fosse specificato + SELECT @DataFrom = ISNULL(@DataFrom, '2000-01-01') + SELECT @DataTo = ISNULL(@DataTo, '9999-12-31') + + -- Insert statements for procedure here + SELECT * + FROM dbo.v_OrderStatus + WHERE ( CompanyId = @CompanyId OR @CompanyId = 0 ) + AND ( OrderStatus = @OrderStatus OR @OrderStatus = 0 ) + AND DateIns BETWEEN @DataFrom AND @DataTo + +END + +GO + diff --git a/WebDoorCreator.Data/SqlScripts/Stored/stp_prt_OrderReportExpl.sql b/WebDoorCreator.Data/SqlScripts/Stored/stp_prt_OrderReportExpl.sql new file mode 100644 index 0000000..a8e568a --- /dev/null +++ b/WebDoorCreator.Data/SqlScripts/Stored/stp_prt_OrderReportExpl.sql @@ -0,0 +1,75 @@ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: S.E.L. +-- Description: Door Order Report data exploded by OrderId +-- Create date: 2023.05.22 +-- ============================================= +CREATE PROCEDURE [dbo].[stp_prt_OrderReportExpl] +( + @OrderId INT = 0 +) +AS +BEGIN + + SET NOCOUNT ON; + -- Insert statements for procedure here + + SELECT + ORD.OrderId, + ORD.CompanyId, + ORD.OrderExtCode, + ORD.DateIns, + ORD.UserIdIns, + ORD.DateMod, + ORD.UserIdMod, + ORD.Status, + ORD.OrderDescript, + COM.CompanyExtCode, + COM.CompanyName, + COM.Address, + COM.ZipCode, + COM.City, + COM.State, + COM.VAT, + DOR.DoorId, + ROW_NUMBER() OVER ( PARTITION BY DOR.DoorId ORDER BY DOR.DoorId) AS RowDoor, -- mi serve per i totoali sul report + DOR.TypeId, + DOR.DoorExtCode, + DOR.DoorDescript, + DOR.Quantity, + DOR.UnitCost, + DOR.MeasureUnit, + CASE + WHEN DOP.ObjectId IN ('Profiles','Size','Swing') THEN 'INFO' + WHEN DOP.ObjectId IN ('Properties','Finishing') THEN 'OPTIONS' + --WHEN CHARINDEX('template', DOP.JsoncActVal) > 0 THEN 'HARDWARE' + ELSE 'HARDWARE' END AS ObjectType, + DOP.ObjectId as ObjectKey, + + CASE + WHEN DOP.ObjectId = 'Properties' THEN JSON_VALUE(JsoncActVal,'$.Properties.Properties') + WHEN DOP.ObjectId = 'Finishing' THEN JSON_VALUE(JsoncActVal,'$.Finishing.Finishing') + WHEN DOP.ObjectId = 'Size' THEN JSON_QUERY(JsoncActVal,'$.Size') + WHEN DOP.ObjectId = 'Swing' THEN JSON_VALUE(JsoncActVal,'$.Swing.Swing') + --WHEN DOP.ObjectId = 'Profiles' THEN JSON_QUERY(JsoncActVal,'$.Profiles') + --WHEN CHARINDEX('template', DOP.JsoncActVal) > 0 THEN 'HARDWARE' + ELSE DOP.JsoncActVal END AS ObjectVal, + --DOP.JsoncActVal as ObjectVal, + 1 as ObjectQty + FROM + [Order] AS ORD + INNER JOIN Company AS COM ON ORD.CompanyId = COM.CompanyId + INNER JOIN Door AS DOR ON ORD.OrderId = DOR.OrderId + INNER JOIN DoorOp AS DOP ON DOR.DoorId = DOP.DoorId + WHERE + ORD.OrderId = @OrderId + + +END + +GO +