526 lines
12 KiB
Transact-SQL
526 lines
12 KiB
Transact-SQL
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_scaricaUdc
|
|
*
|
|
* elimina dalle posizioni correnti un UDC, salvandone la posizione precedente nella tab storica (per scaricamento / spedizione)
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.09.28
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_scaricaUdc
|
|
(
|
|
@UDC VARCHAR(50),
|
|
@IdxCellaFrom INT,
|
|
@IdxPosizione INT
|
|
)
|
|
AS
|
|
|
|
BEGIN TRAN
|
|
-- libero la posizione attuale dell'UDC (se c'è...)
|
|
DELETE
|
|
FROM PosizioneUdcCorrente
|
|
WHERE UDC = @UDC AND IdxCella = @IdxCellaFrom
|
|
|
|
-- aggiorno l'UDC come posizione finale...
|
|
UPDATE ElencoCartellini
|
|
SET IdxPosizione = @IdxPosizione, ModDate = GETDATE()
|
|
WHERE UDC = @UDC
|
|
|
|
COMMIT TRAN
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_UDC_delibera
|
|
*
|
|
* fa la delibera dell'UDC andando a processare la state machien e quindi eventualmente cambiando la sua posizione
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.09.13
|
|
*
|
|
************************************/
|
|
alter PROCEDURE stp_UDC_delibera
|
|
(
|
|
@CodTipoDelibera NVARCHAR(50),
|
|
@UDC NVARCHAR(50),
|
|
@CodSoggetto NVARCHAR(17),
|
|
@CodCS VARCHAR(2)
|
|
)
|
|
|
|
AS
|
|
|
|
BEGIN TRAN
|
|
DECLARE @IdxPosizioneTo AS INT
|
|
DECLARE @IdxPosizioneFrom AS INT
|
|
DECLARE @IdxPosizionePre AS NVARCHAR(50)
|
|
DECLARE @IdxCellaPre AS INT
|
|
DECLARE @IdxCellaTo AS INT
|
|
|
|
-- ricavo cella ATTUALE
|
|
SET @IdxCellaPre = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC)
|
|
|
|
-- ricavo posizione ATTUALE
|
|
SET @IdxPosizionePre = (SELECT TOP 1 b.CodMag FROM Celle c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco WHERE c.IdxCella = @IdxCellaPre)
|
|
|
|
|
|
-- registro delibera
|
|
INSERT INTO DELIBERE
|
|
VALUES (@CodTipoDelibera, @UDC, GETDATE(), @CodSoggetto)
|
|
|
|
-- ricavo nuova posizione
|
|
SET @IdxPosizioneTo = (SELECT tt.IdxPosizioneTo
|
|
FROM TabTranPosizEventi tt INNER JOIN AnagTipoDelibere atd ON tt.CodEvento = atd.CodEvento
|
|
WHERE (atd.CodTipoDelibera = @CodTipoDelibera))
|
|
|
|
-- ricavo posizione TEORICA VECCHIA
|
|
SET @IdxPosizioneFrom = (SELECT tt.IdxPosizione
|
|
FROM TabTranPosizEventi tt INNER JOIN AnagTipoDelibere atd ON tt.CodEvento = atd.CodEvento
|
|
WHERE (atd.CodTipoDelibera = @CodTipoDelibera))
|
|
|
|
-- calcolo la prima cella della nuova posizione...
|
|
SET @IdxCellaTo = (
|
|
SELECT TOP 1 IdxCella FROM Celle
|
|
WHERE IdxBlocco = (
|
|
SELECT IdxBlocco FROM Blocchi
|
|
WHERE CodMag=CAST(@IdxPosizioneTo AS NVARCHAR(50)))
|
|
)
|
|
|
|
-- faccio update posizione
|
|
UPDATE ElencoCartellini
|
|
SET IdxPosizione = @IdxPosizioneTo, ModDate = GETDATE()
|
|
WHERE UDC = @UDC
|
|
|
|
-- controllo posizioni actual e from teorica: SE e SOLO SE corrispondono faccio spostamento...
|
|
IF(CAST(@IdxPosizioneFrom AS NVARCHAR(50)) = @IdxPosizionePre)
|
|
BEGIN
|
|
-- ora cambio anche la posizione corrente dell'UDC (e tramite trigger storicizza...)
|
|
EXEC stp_spostaUdc @CodCS, @UDC, @IdxCellaTo
|
|
END
|
|
|
|
COMMIT TRAN
|
|
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_ParticolariOverview
|
|
*
|
|
* elenco di overview sull'impiego dei particolari (dettaglio a "maglie larghe")
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.05.31
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_ParticolariOverview
|
|
(
|
|
@searchVal VARCHAR(50),
|
|
@CodCS VARCHAR(2)
|
|
)
|
|
AS
|
|
|
|
SELECT RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare, ISNULL(COUNT(dbo.ElencoCartellini.UDC), 0) AS NumUDC,
|
|
ISNULL(SUM(dbo.ElencoCartellini.Qta), 0) AS TotQta, ISNULL(COUNT(dbo.PosizioneUdcCorrente.IdxCella), 0) AS NumInMag
|
|
FROM RilPro.AnagParticolari LEFT OUTER JOIN
|
|
dbo.ElencoCartellini ON RilPro.AnagParticolari.Particolare = dbo.ElencoCartellini.Particolare LEFT OUTER JOIN
|
|
dbo.PosizioneUdcCorrente ON dbo.ElencoCartellini.UDC = dbo.PosizioneUdcCorrente.UDC
|
|
WHERE RilPro.AnagParticolari.CodCS = @CodCS AND RilPro.AnagParticolari.Particolare = @searchVal
|
|
AND ElencoCartellini.IdxPosizione >= 0 -- vincolo posizioni mag attive
|
|
GROUP BY RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare
|
|
|
|
RETURN
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_ParticolariOverviewLike
|
|
*
|
|
* elenco di overview sull'impiego dei particolari (dettaglio a "maglie larghe") - modalità LIKE
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.05.31
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_ParticolariOverviewLike
|
|
(
|
|
@searchVal VARCHAR(50),
|
|
@CodCS VARCHAR(2)
|
|
)
|
|
AS
|
|
|
|
SELECT RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare, ISNULL(COUNT(ElencoCartellini.UDC), 0) AS NumUDC,
|
|
SUM(ISNULL(ElencoCartellini.Qta, 0)) AS TotQta, ISNULL(COUNT(PosizioneUdcCorrente.IdxCella), 0) AS NumInMag
|
|
FROM RilPro.AnagParticolari LEFT OUTER JOIN
|
|
ElencoCartellini ON RilPro.AnagParticolari.Particolare = ElencoCartellini.Particolare LEFT OUTER JOIN
|
|
PosizioneUdcCorrente ON ElencoCartellini.UDC = PosizioneUdcCorrente.UDC
|
|
WHERE (RilPro.AnagParticolari.CodCS = @CodCS)
|
|
AND ((RilPro.AnagParticolari.Particolare LIKE '%' + @searchVal + '%') OR (RilPro.AnagParticolari.DescParticolare LIKE '%' + @searchVal + '%'))
|
|
AND ElencoCartellini.IdxPosizione >= 0 -- vincolo posizioni mag attive
|
|
GROUP BY RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_paretoDettMagByParticolare
|
|
*
|
|
* restituisce elenco giacenze a magazzino in logica pareto (quantità) per un dato particolare
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.06.04
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_paretoDettMagByParticolare
|
|
(
|
|
@CodCS VARCHAR(2),
|
|
@Particolare VARCHAR(20)
|
|
)
|
|
AS
|
|
|
|
SELECT TOP (100) PERCENT am.CodCS, am.CodMag, am.DescMag, b.IdxBlocco, b.CodBlocco, ec.Particolare,
|
|
ec.Esponente, COUNT(puc.UDC) AS NumUDC, ISNULL(MIN(puc.DataRif),
|
|
GETDATE()) AS Oldest, ISNULL(MAX(puc.DataRif), GETDATE()) AS Newest, SUM(ec.Qta) AS QtaTotPz,
|
|
asp.DescStato, ec.IdxPosizione AS CodMagLog
|
|
FROM AnagMag am INNER JOIN
|
|
Blocchi b ON am.CodMag = b.CodMag AND am.CodCS = b.CodCS INNER JOIN
|
|
Celle c INNER JOIN
|
|
ElencoCartellini ec LEFT OUTER JOIN
|
|
PosizioneUdcCorrente puc ON ec.UDC = puc.UDC ON c.IdxCella = puc.IdxCella ON
|
|
b.IdxBlocco = c.IdxBlocco INNER JOIN
|
|
AnagStatiProdotto asp ON ec.CodStato = asp.CodStato
|
|
WHERE (c.Attiva = 1) AND (am.CodCS = @CodCS) AND (ec.Particolare = @Particolare)
|
|
GROUP BY am.CodCS, am.CodMag, am.DescMag, b.IdxBlocco, b.CodBlocco, b.NumX, b.NumY, b.NumZ,
|
|
ec.Particolare, ec.Esponente, ec.IdxPosizione, asp.DescStato
|
|
ORDER BY QtaTotPz DESC
|
|
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_spostaUdc
|
|
*
|
|
* sposta un UDC, salvandone la posizione precedente (se esiste) nella tab storica
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.06.11
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_spostaUdc
|
|
(
|
|
@CodCS VARCHAR(2),
|
|
@UDC VARCHAR(50),
|
|
@IdxCellaTo INT
|
|
)
|
|
AS
|
|
|
|
BEGIN TRAN
|
|
|
|
-- DICHIARAZIONI iniziali variabili
|
|
DECLARE @IdxCellaFrom INT
|
|
DECLARE @capienza INT
|
|
DECLARE @numUdc INT
|
|
|
|
-- controllo cella di partenza
|
|
SET @IdxCellaFrom = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC)
|
|
-- controllo se la cella di dest vada indicata come piena
|
|
SET @capienza = (
|
|
SELECT tc.Capienza
|
|
FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
|
|
WHERE c.IdxCella = @IdxCellaFrom
|
|
)
|
|
SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaFrom)
|
|
-- se capienza raggiunta aggiorno...
|
|
IF(@numUdc -1 < @capienza)
|
|
BEGIN
|
|
EXEC stp_celle_updPiena @IdxCellaFrom, 0
|
|
END
|
|
|
|
-- cancello posizione occupata
|
|
DELETE
|
|
FROM PosizioneUdcCorrente
|
|
WHERE UDC = @UDC
|
|
|
|
-- cancello eventuali righe liste di prelievo FUSI per l'UDC
|
|
DELETE FROM RigheListePrelievo
|
|
WHERE UDC = @UDC AND CodLista IN (
|
|
SELECT CodLista FROM ElencoListePrelievo
|
|
WHERE CodTipoLista='01-PreFus'
|
|
)
|
|
|
|
|
|
|
|
-- creo una nuova posizione per l'UDC
|
|
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif)
|
|
VALUES(@UDC, @IdxCellaTo, @CodCS, GETDATE())
|
|
|
|
-- controllo se la cella di dest vada indicata come piena
|
|
SET @capienza = (
|
|
SELECT tc.Capienza
|
|
FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
|
|
WHERE c.IdxCella = @IdxCellaTo
|
|
)
|
|
SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaTo)
|
|
-- se capienza raggiunta aggiorno...
|
|
IF(@numUdc >= @capienza)
|
|
BEGIN
|
|
EXEC stp_celle_updPiena @IdxCellaTo, 1
|
|
END
|
|
|
|
COMMIT TRAN
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
DELETE FROM dbo.TabTranPosizEventi WHERE CodEvento=N'UDC_RIEN' and IdxPosizione=88
|
|
go
|
|
|
|
commit transaction
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
INSERT INTO dbo.AnagTipoEvento
|
|
VALUES (N'UDC_RIEN54', N'Rientro UDC da 88 a 54')
|
|
INSERT INTO dbo.AnagTipoEvento
|
|
VALUES (N'UDC_RIEN84', N'Rientro UDC da 88 a 84')
|
|
DELETE FROM dbo.AnagTipoEvento WHERE CodEvento=N'UDC_RIEN'
|
|
go
|
|
|
|
commit transaction
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
INSERT INTO dbo.TabTranPosizEventi
|
|
VALUES (N'UDC_RIEN54', 88, 54, 1)
|
|
INSERT INTO dbo.TabTranPosizEventi
|
|
VALUES (N'UDC_RIEN84', 88, 84, 1)
|
|
go
|
|
|
|
commit transaction
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_spostaUdc
|
|
*
|
|
* sposta un UDC, salvandone la posizione precedente (se esiste) nella tab storica
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.06.11
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_spostaUdc
|
|
(
|
|
@CodCS VARCHAR(2),
|
|
@UDC VARCHAR(50),
|
|
@IdxCellaTo INT,
|
|
@resetRLP BIT
|
|
)
|
|
AS
|
|
|
|
BEGIN TRAN
|
|
|
|
-- DICHIARAZIONI iniziali variabili
|
|
DECLARE @IdxCellaFrom INT
|
|
DECLARE @capienza INT
|
|
DECLARE @numUdc INT
|
|
|
|
-- controllo cella di partenza
|
|
SET @IdxCellaFrom = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC)
|
|
-- controllo se la cella di dest vada indicata come piena
|
|
SET @capienza = (
|
|
SELECT tc.Capienza
|
|
FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
|
|
WHERE c.IdxCella = @IdxCellaFrom
|
|
)
|
|
SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaFrom)
|
|
-- se capienza raggiunta aggiorno...
|
|
IF(@numUdc -1 < @capienza)
|
|
BEGIN
|
|
EXEC stp_celle_updPiena @IdxCellaFrom, 0
|
|
END
|
|
|
|
-- cancello posizione occupata
|
|
DELETE
|
|
FROM PosizioneUdcCorrente
|
|
WHERE UDC = @UDC
|
|
|
|
-- SE RICHIESTO cancello eventuali righe liste di prelievo FUSI per l'UDC
|
|
IF(@resetRLP = 1)
|
|
BEGIN
|
|
DELETE FROM RigheListePrelievo
|
|
WHERE UDC = @UDC AND CodLista IN (
|
|
SELECT CodLista FROM ElencoListePrelievo
|
|
WHERE CodTipoLista='01-PreFus'
|
|
)
|
|
END
|
|
|
|
|
|
|
|
-- creo una nuova posizione per l'UDC
|
|
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif)
|
|
VALUES(@UDC, @IdxCellaTo, @CodCS, GETDATE())
|
|
|
|
-- controllo se la cella di dest vada indicata come piena
|
|
SET @capienza = (
|
|
SELECT tc.Capienza
|
|
FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
|
|
WHERE c.IdxCella = @IdxCellaTo
|
|
)
|
|
SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaTo)
|
|
-- se capienza raggiunta aggiorno...
|
|
IF(@numUdc >= @capienza)
|
|
BEGIN
|
|
EXEC stp_celle_updPiena @IdxCellaTo, 1
|
|
END
|
|
|
|
COMMIT TRAN
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_annullaUDC
|
|
*
|
|
* annulla un UDC
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.04.28
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_annullaUDC
|
|
(
|
|
@UDC VARCHAR(20),
|
|
@CodSoggetto VARCHAR(17)
|
|
)
|
|
AS
|
|
|
|
BEGIN TRAN
|
|
|
|
-- faccio update
|
|
UPDATE ElencoCartellini
|
|
SET IdxPosizione = 0, ModDate = GETDATE()
|
|
WHERE UDC = @UDC
|
|
|
|
|
|
COMMIT TRAN
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
|
|
|
|
|
|
-- registro versione...
|
|
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(335, GETDATE())
|
|
GO
|