Freeze 2.0 warehouse monolista e documento fisso F1/F2
This commit is contained in:
82
sql_tests/riattiva_pickinglist_20261001.sql
Normal file
82
sql_tests/riattiva_pickinglist_20261001.sql
Normal file
@@ -0,0 +1,82 @@
|
||||
/* Solo copia locale di test HOMESERVER. Non distribuire come patch produzione.
|
||||
Riattiva 233,234,240,241 conservando date, righe, UDC e posizioni attuali.
|
||||
Salva i valori di testata per un rollback mirato; non e' un backup dei DB.
|
||||
*/
|
||||
USE Mediseawall;
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
IF CONVERT(nvarchar(128), SERVERPROPERTY('MachineName')) <> N'HOMESERVER'
|
||||
THROW 51000, 'Script riservato alla copia di test su HOMESERVER.', 1;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
IF OBJECT_ID('dbo.py_TestPickingListReactivation_20261001', 'U') IS NOT NULL
|
||||
THROW 51001, 'Preparazione gia eseguita: controllare il backup prima di ripetere.', 1;
|
||||
|
||||
DECLARE @Targets TABLE (ID int PRIMARY KEY, Documento int NOT NULL);
|
||||
INSERT INTO @Targets VALUES (11882,233),(11883,234),(11890,240),(11891,241);
|
||||
|
||||
IF (SELECT COUNT(*) FROM SAMA1.dbo.BAMTES b WITH (UPDLOCK,HOLDLOCK)
|
||||
JOIN @Targets t ON b.ID=t.ID AND b.NUMDOC=t.Documento
|
||||
WHERE b.ANNDOC=2026 AND b.STATO='D'
|
||||
AND b.DATDOC>CAST(GETDATE()-30 AS int)) <> 4
|
||||
THROW 51002, 'Le quattro testate non corrispondono allo scenario atteso.', 1;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM dbo.py_XMag_ViewPackingListStorico h
|
||||
JOIN dbo.XMag_GiacenzaPallet g ON g.IDCella=h.Cella
|
||||
WHERE h.Documento IN (233,234,240,241,244) AND h.Cella NOT IN (1000,9999)
|
||||
AND LTRIM(RTRIM(g.BarcodePallet)) COLLATE Latin1_General_CI_AS <>
|
||||
h.Pallet COLLATE Latin1_General_CI_AS
|
||||
) THROW 51003, 'Cella fisica con altre UDC: preparazione annullata.', 1;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT Pallet FROM dbo.py_XMag_ViewPackingListStorico
|
||||
WHERE Documento IN (233,234,240,241,244) AND Cella<>9999
|
||||
GROUP BY Pallet HAVING COUNT(DISTINCT Documento)>1
|
||||
) THROW 51004, 'Una UDC residua appartiene a piu liste candidate.', 1;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM dbo.py_BarcodePickingListSkip
|
||||
WHERE Documento IN ('233','234','240','241') AND Risolto=0)
|
||||
OR EXISTS (SELECT 1 FROM dbo.py_PickingListPrelievoSequenza
|
||||
WHERE Documento IN ('233','234','240','241') AND DelDataOra IS NULL)
|
||||
OR EXISTS (SELECT 1 FROM dbo.PyPickingListReservation
|
||||
WHERE NULLIF(LTRIM(RTRIM(Documento)),'') IS NOT NULL)
|
||||
THROW 51005, 'Prenotazioni, skip o sequenze attive: verificare prima del test.', 1;
|
||||
|
||||
CREATE TABLE dbo.py_TestPickingListReactivation_20261001 (
|
||||
BamtesID int NOT NULL PRIMARY KEY,
|
||||
Anno smallint NOT NULL,
|
||||
Documento int NOT NULL,
|
||||
StatoOriginale char(1) NOT NULL,
|
||||
DataDocumentoOriginale float NOT NULL,
|
||||
ApplicataIl datetime2 NOT NULL,
|
||||
RipristinataIl datetime2 NULL
|
||||
);
|
||||
INSERT INTO dbo.py_TestPickingListReactivation_20261001
|
||||
(BamtesID,Anno,Documento,StatoOriginale,DataDocumentoOriginale,ApplicataIl)
|
||||
SELECT b.ID,b.ANNDOC,b.NUMDOC,b.STATO,b.DATDOC,SYSDATETIME()
|
||||
FROM SAMA1.dbo.BAMTES b JOIN @Targets t ON t.ID=b.ID;
|
||||
|
||||
UPDATE b SET STATO='P'
|
||||
FROM SAMA1.dbo.BAMTES b JOIN @Targets t ON t.ID=b.ID;
|
||||
IF @@ROWCOUNT<>4 THROW 51006, 'Numero di testate aggiornate inatteso.', 1;
|
||||
|
||||
IF (SELECT COUNT(DISTINCT Documento) FROM dbo.py_ViewPackingListPrelievo
|
||||
WHERE Documento IN (233,234,240,241,244)
|
||||
AND DataDocumento>CAST(GETDATE()-30 AS int))<>5
|
||||
THROW 51007, 'Le cinque liste non risultano tutte visibili. Rollback.', 1;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT>0 ROLLBACK TRANSACTION;
|
||||
THROW;
|
||||
END CATCH;
|
||||
|
||||
SELECT Documento,COUNT(DISTINCT Pallet) AS UdcResidue
|
||||
FROM dbo.py_ViewPackingListPrelievo
|
||||
WHERE Documento IN (233,234,240,241,244)
|
||||
GROUP BY Documento ORDER BY Documento;
|
||||
Reference in New Issue
Block a user