Aggiunta stored varie + OrderCloning

This commit is contained in:
Samuele Locatelli
2023-05-31 18:11:40 +02:00
parent 303632843c
commit 83dd3bb553
3 changed files with 192 additions and 0 deletions
@@ -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
@@ -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
@@ -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