Files
GMW/GMW_data/SqlScripts/V2.0/GMW_00452_stored.sql
Samuele E. Locatelli bdd7b413e8 Riaggiunto GMW_data
2016-11-22 17:58:00 +01:00

686 lines
15 KiB
Transact-SQL

set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*****************************************
* STORED stp_UDC_updateNoteByRQ
*
* Aggiorna note UDC dato il rapp di qualità cui sono legate
*
* Steamware, S.E.L.
* mod: 2012.02.14
*
****************************************/
alter PROCEDURE stp_UDC_updateNoteByRQ
(
@nRapQual NUMERIC(6,0),
@note NVARCHAR(500)
)
AS
UPDATE ElencoCartellini
SET note = @note
,ModDate=GETDATE(),
CodEvento = 'UDC_RDQ'
FROM ElencoCartellini AS ec INNER JOIN v_RapQualNote AS rq ON ec.UDC = rq.UDC
WHERE (rq.nRapQual = @nRapQual) AND ec.note <> @note
RETURN
go
commit
go
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),
@IdxPosizione INT,
@CodEvento VARCHAR(10)
)
AS
BEGIN TRAN
-- libero la posizione attuale dell'UDC (se c'è...)
DELETE
FROM PosizioneUdcCorrente
WHERE UDC = @UDC
-- aggiorno l'UDC come posizione finale...
UPDATE ElencoCartellini
SET IdxPosizione = @IdxPosizione, ModDate = GETDATE(), CodEvento = @CodEvento
WHERE UDC = @UDC
COMMIT TRAN
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*****************************************
* STORED stp_EDM_spostaDataMtx
*
* Sposta un datamatrix in un nuovo gitterbox
*
* Steamware, S.E.L.
* mod: 2011.05.05
*
****************************************/
alter PROCEDURE stp_EDM_spostaDataMtx
(
@CodDataMatrix NUMERIC(23),
@CodGitterbox NVARCHAR(10),
@CodSoggetto VARCHAR(17)
)
AS
DECLARE @CodEvento VARCHAR(10)
SET @CodEvento = 'SpostaDMtx'
-- salvo codice gitterbox di partenza
DECLARE @CodGitterboxFrom AS NVARCHAR(10)
SET @CodGitterboxFrom = ( SELECT CodGitterbox FROM ElencoDataMatrix WHERE CodDataMatrix = @CodDataMatrix )
UPDATE ElencoDataMatrix
SET CodGitterbox = @CodGitterbox
WHERE CodDataMatrix = @CodDataMatrix
-- aggiorno valori QTA gitterbox di partenza...
UPDATE ElencoCartellini
SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterboxFrom )
,ModDate=GETDATE()
,CodEvento = @CodEvento
,CodSoggetto = @CodSoggetto
WHERE UDC = @CodGitterboxFrom
-- aggiorno valoti QTA gitterbox destinazione e modificatore...
UPDATE ElencoCartellini
SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox )
,ModDate=GETDATE()
,CodEvento = @CodEvento
,CodSoggetto = @CodSoggetto
WHERE UDC = @CodGitterbox
-- aggiorno righe liste di prelievo...
UPDATE RigheListePrelievo
SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterboxFrom )
WHERE UDC = @CodGitterboxFrom
-- aggiorno valoti QTA gitterbox destinazione...
UPDATE RigheListePrelievo
SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox )
WHERE UDC = @CodGitterbox
-- select finale!
SELECT *
FROM ElencoDataMatrix
WHERE CodDataMatrix = @CodDataMatrix
RETURN
go
/*****************************************
* STORED stp_EDM_svuotaGitterbox
*
* Elimina il codice gitterbox dai datamatrix associati (svuotandolo...)
*
* Steamware, S.E.L.
* mod: 2011.05.06
*
****************************************/
alter PROCEDURE stp_EDM_svuotaGitterbox
(
@CodGitterbox NVARCHAR(10),
@CodSoggetto VARCHAR(17)
)
AS
DECLARE @CodEvento VARCHAR(10)
SET @CodEvento = 'SvuotaGbox'
UPDATE ElencoDataMatrix
SET CodGitterbox = 'EmptyGBox'
WHERE CodGitterbox = @CodGitterbox
-- aggiorno valoti QTA gitterbox originale...
UPDATE ElencoCartellini
SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox )
,ModDate=GETDATE()
,CodEvento = @CodEvento
,CodSoggetto = @CodSoggetto
WHERE UDC = @CodGitterbox
-- aggiorno valoti QTA gitterbox 'EmptyGBox
UPDATE ElencoCartellini
SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = 'EmptyGBox' )
,ModDate = GETDATE()
,CodEvento = @CodEvento
,CodSoggetto = @CodSoggetto
WHERE UDC = 'EmptyGBox'
-- aggiorno righe liste di prelievo...
UPDATE RigheListePrelievo
SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox )
WHERE UDC = @CodGitterbox
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/***************************************
* STORED stp_processaSpedizTerz
*
* effettua la spedizione verso i terzisti, se deliberati è ok così, se non deliberati restano in posizione 305 da deliberare
*
* Steamware, S.E.L.
* mod: 2012.05.30
*
****************************************/
alter PROCEDURE stp_processaSpedizTerz
(
@CodSoggetto NVARCHAR(17)
)
AS
-- UDC x cursore
DECLARE @UDC NVARCHAR(50) -- UDC SQL
-- evento da usare
DECLARE @CodEvento AS NVARCHAR(10)
SET @CodEvento = 'SpeWipTerz'
-- Dichiaro e carico il cursore
DECLARE Udc4Ter CURSOR LOCAL FOR
SELECT UDC FROM ElencoCartellini WHERE IdxPosizione IN (SELECT IdxPosizione FROM TabTranPosizEventi WHERE CodEvento = @CodEvento)
OPEN Udc4Ter
FETCH NEXT FROM Udc4Ter
INTO @UDC
WHILE @@FETCH_STATUS = 0
BEGIN
-- processo gli UDC...
UPDATE ElencoCartellini
SET IdxPosizione = ttpe.IdxPosizioneTo
,ModDate=GETDATE()
,CodEvento = @CodEvento
,CodSoggetto = @CodSoggetto
FROM ElencoCartellini ec INNER JOIN TabTranPosizEventi ttpe ON ec.IdxPosizione=ttpe.IdxPosizione
WHERE ec.UDC = @UDC AND ttpe.CodEvento = @CodEvento
FETCH NEXT FROM Udc4Ter INTO @UDC
END
CLOSE Udc4Ter
DEALLOCATE Udc4Ter
RETURN
go
/***************************************
* STORED stp_riattivaUdc
*
* riattiva un dato UDC (da mag consumato negativo a corrispettivo positivo) --> se era positivo NON FA NULLA!!! (perchè uso ABS e controllo sia < 0)
*
* Steamware, S.E.L.
* mod: 2012.05.30
*
****************************************/
alter PROCEDURE stp_riattivaUdc
(
@UDC VARCHAR(50),
@CodSoggetto NVARCHAR(17)
)
AS
DECLARE @CodEvento VARCHAR(10)
DECLARE @CodTipoDichiaraz VARCHAR(1)
DECLARE @IdxCella INT
DECLARE @CodCS NVARCHAR(2)
SET @CodEvento = 'UDC_RIA'
SET @CodTipoDichiaraz = 'U'
BEGIN TRAN
-- faccio update posizione
UPDATE ElencoCartellini
SET IdxPosizione = ABS(IdxPosizione)
,ModDate=GETDATE()
,CodEvento = @CodEvento
,CodSoggetto = @CodSoggetto
WHERE UDC = @UDC AND IdxPosizione IN (SELECT IdxPosizione FROM AnagPosizioni WHERE (IsRiattivaEnabled = 1)
)
-- lo elimino da eventuali precedenti liste di prelievo sennò poi non potrei + prelevarlo
DELETE FROM RigheListePrelievo
WHERE UDC = @UDC
-- imposto posizione CELLA corrente x l'udc nella prima libera
SET @IdxCella = (SELECT c.IdxCella FROM Celle c inner join Blocchi b ON c.IdxBlocco=b.IdxBlocco INNER JOIN ElencoCartellini e ON b.CodMag = CAST(e.IdxPosizione AS NVARCHAR(50)) WHERE e.UDC = @UDC)
SET @CodCS = (SELECT CodCS FROM ElencoCartellini WHERE UDC = @UDC)
INSERT INTO PosizioneUdcCorrente
VALUES(@Udc, @IdxCella, @CodCS, GETDATE())
COMMIT TRAN
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/***************************************
* STORED stp_sbloccaUdc
*
* sblocca un dato UDC per modifica
*
* Steamware, S.E.L.
* mod: 2012.05.30
*
****************************************/
alter PROCEDURE stp_sbloccaUdc
(
@UDC VARCHAR(50),
@CodSoggetto NVARCHAR(17)
)
AS
DECLARE @CodEvento VARCHAR(10)
DECLARE @CodTipoDichiaraz VARCHAR(1)
SET @CodEvento = 'UDC_SBL'
SET @CodTipoDichiaraz = 'U'
BEGIN TRAN
-- faccio update
UPDATE ElencoCartellini
SET ModDate = GETDATE()
,CodEvento = @CodEvento
,CodSoggetto = @CodSoggetto
WHERE UDC = @UDC
COMMIT TRAN
RETURN
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: 2012.05.30
*
****************************************/
alter PROCEDURE stp_scaricaUdc
(
@UDC VARCHAR(50),
@IdxPosizione INT,
@CodEvento VARCHAR(10),
@CodSoggetto NVARCHAR(17)
)
AS
BEGIN TRAN
-- libero la posizione attuale dell'UDC (se c'è...)
DELETE
FROM PosizioneUdcCorrente
WHERE UDC = @UDC
-- aggiorno l'UDC come posizione finale...
UPDATE ElencoCartellini
SET IdxPosizione = @IdxPosizione
,ModDate = GETDATE()
,CodEvento = @CodEvento
,CodSoggetto = @CodSoggetto
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: 2012.05.30
*
************************************/
alter PROCEDURE stp_UDC_delibera
(
@CodTipoDelibera NVARCHAR(50),
@UDC NVARCHAR(50),
@CodEvento VARCHAR(10),
@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()
,CodEvento = @CodEvento
,CodSoggetto = @CodSoggetto
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, 0
END
COMMIT TRAN
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/***************************************
* STORED stp_UDC_updateIdxPosizione
*
* aggiorna un cartellino x la sua posizione logica
*
* Steamware, S.E.L.
* mod: 2012.05.30
*
****************************************/
alter PROCEDURE stp_UDC_updateIdxPosizione
(
@UDC VARCHAR(50),
@IdxPosizione INT,
@CodSoggetto NVARCHAR(17)
)
AS
------------------------------------------------------------------------------------------------------
-- Ciclo principale x edit record
------------------------------------------------------------------------------------------------------
BEGIN TRAN
-- modifico il record
UPDATE ElencoCartellini
SET IdxPosizione = @IdxPosizione
,ModDate = GETDATE()
,CodEvento='UDC_MOV'
,CodSoggetto = @CodSoggetto
WHERE UDC = @UDC
COMMIT TRAN
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-- restituisco la tab dati con l'udc appena inserito
------------------------------------------------------------------------------------------------------
SELECT *
FROM ElencoCartellini
WHERE UDC = @UDC
------------------------------------------------------------------------------------------------------
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*****************************************
* STORED stp_UDC_updateNoteByRQ
*
* Aggiorna note UDC dato il rapp di qualità cui sono legate
*
* Steamware, S.E.L.
* mod: 2012.02.14
*
****************************************/
alter PROCEDURE stp_UDC_updateNoteByRQ
(
@nRapQual NUMERIC(6,0),
@note NVARCHAR(500),
@CodSoggetto NVARCHAR(17)
)
AS
UPDATE ElencoCartellini
SET note = @note
,ModDate = GETDATE()
,CodEvento = 'UDC_RDQ'
,CodSoggetto = @CodSoggetto
FROM ElencoCartellini AS ec INNER JOIN v_RapQualNote AS rq ON ec.UDC = rq.UDC
WHERE (rq.nRapQual = @nRapQual) AND ec.note <> @note
RETURN
go
/***************************************
* STORED stp_UDC_updateQty
*
* update qta UDC
*
* Steamware, S.E.L.
* mod: 2012.05.30
*
****************************************/
alter PROCEDURE stp_UDC_updateQty
(
@UDC VARCHAR(50),
@CodSoggetto VARCHAR(17),
@CodTipoDichiaraz CHAR(1),
@CodEvento VARCHAR(10),
@Qta DECIMAL(10,2)
)
AS
------------------------------------------------------------------------------------------------------
-- Ciclo principale x edit record
------------------------------------------------------------------------------------------------------
BEGIN TRAN
-- modifico il record
UPDATE ElencoCartellini
SET Qta = @Qta
,ModDate = GETDATE()
,CodEvento = @CodEvento
,CodSoggetto = @CodSoggetto
WHERE UDC = @UDC
COMMIT TRAN
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-- restituisco la tab dati con l'udc appena inserito
------------------------------------------------------------------------------------------------------
SELECT *
FROM ElencoCartellini
WHERE UDC = @UDC
------------------------------------------------------------------------------------------------------
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/***************************************
* STORED stp_ATD_getByKey
*
* recupera Tipo Delibera da chiave
*
* Steamware, S.E.L.
* mod: 2012.05.30
*
************************************/
create PROCEDURE stp_ATD_getByKey
(
@CodTipoDelibera NVARCHAR(50)
)
AS
SELECT *
FROM AnagTipoDelibere
WHERE CodTipoDelibera = @CodTipoDelibera
RETURN
go
commit
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(452, GETDATE())
GO