234 lines
6.0 KiB
Transact-SQL
234 lines
6.0 KiB
Transact-SQL
/*
|
|
Modifica di tab conf x definire se si possano spostare o modificare qta degli UDC in liste di prelievo secondo lo stato di queste LDP
|
|
*/
|
|
|
|
alter table AnagStatiListe add
|
|
canMovUDC bit,
|
|
canQtaUDC bit;
|
|
go
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
UPDATE dbo.AnagStatiListe SET
|
|
canMovUDC=1, canQtaUDC=1
|
|
WHERE CodStatoLista=0
|
|
UPDATE dbo.AnagStatiListe SET
|
|
canMovUDC=1, canQtaUDC=1
|
|
WHERE CodStatoLista=1
|
|
UPDATE dbo.AnagStatiListe SET
|
|
canMovUDC=1, canQtaUDC=1
|
|
WHERE CodStatoLista=2
|
|
UPDATE dbo.AnagStatiListe SET
|
|
canMovUDC=1, canQtaUDC=1
|
|
WHERE CodStatoLista=3
|
|
UPDATE dbo.AnagStatiListe SET
|
|
canMovUDC=0, canQtaUDC=0
|
|
WHERE CodStatoLista=4
|
|
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
|
|
DECLARE @udcInLdpPrel BIT
|
|
|
|
-- controllo cella di partenza
|
|
SET @IdxCellaFrom = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC)
|
|
SET @IdxCellaFrom = ISNULL(@IdxCellaFrom,0) -- controllo x cella null...
|
|
|
|
-- controllo UDC, se faccia parte di LDP che NON permette MOV...
|
|
SET @udcInLdpPrel = ( SELECT ISNULL(COUNT(rldp.UDC),0)
|
|
FROM RigheListePrelievo rldp INNER JOIN ElencoListePrelievo ldp
|
|
ON ldp.CodLista=rldp.CodLista INNER JOIN AnagStatiListe asl
|
|
ON ldp.CodStatoLista = asl.CodStatoLista
|
|
WHERE asl.canMovUDC = 0
|
|
AND rldp.UDC=@UDC )
|
|
-- controllo se cella di destinazione e di partenza coincidono NON FACCIO NULLA... altrimenti procedo
|
|
IF (@IdxCellaTo <> @IdxCellaFrom)
|
|
BEGIN
|
|
-- controllo UDC "libero" da LDP (ovvero non faccia parte di LDP in uno stato che NON permette MOV, nel qual caso NON sposto)
|
|
IF (@udcInLdpPrel = 0)
|
|
-- tutto ok PROCEDO!
|
|
BEGIN
|
|
|
|
-- controllo se la cella di partenza vada indicata come piena o meno
|
|
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 cella di partenza NON raggiunta aggiorno NON Piena
|
|
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'
|
|
WHERE CodStatoLista < 4
|
|
)
|
|
END
|
|
|
|
|
|
|
|
-- creo una nuova posizione per l'UDC
|
|
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif)
|
|
VALUES(@UDC, @IdxCellaTo, @CodCS, GETDATE())
|
|
|
|
SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaTo)
|
|
|
|
-- controllo se la cella di dest vada indicata come piena, altrimenti NON la indicherò (mai) come piena...
|
|
SET @capienza = (
|
|
SELECT CASE CheckPiena WHEN 1 THEN tc.Capienza ELSE @numUdc + 1 END
|
|
FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
|
|
WHERE c.IdxCella = @IdxCellaTo
|
|
)
|
|
|
|
|
|
-- se capienza raggiunta aggiorno...
|
|
IF(@numUdc >= @capienza)
|
|
BEGIN
|
|
EXEC stp_celle_updPiena @IdxCellaTo, 1
|
|
END
|
|
|
|
END -- cellaFrom e cellaTo non coincidono...
|
|
END -- UDC NON appartiene a LDP già prelevate...
|
|
|
|
COMMIT TRAN
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit;
|
|
go
|
|
|
|
|
|
set xact_abort on;
|
|
go
|
|
|
|
begin transaction;
|
|
go
|
|
|
|
set ANSI_NULLS on;
|
|
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
|
|
|
|
|
|
DECLARE @udcInLdpPrel BIT
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Ciclo principale x edit record
|
|
------------------------------------------------------------------------------------------------------
|
|
BEGIN TRAN
|
|
|
|
-- controllo UDC, se faccia parte di LDP che NON permette modifica QTA...
|
|
SET @udcInLdpPrel = ( SELECT ISNULL(COUNT(rldp.UDC),0)
|
|
FROM RigheListePrelievo rldp INNER JOIN ElencoListePrelievo ldp
|
|
ON ldp.CodLista=rldp.CodLista INNER JOIN AnagStatiListe asl
|
|
ON ldp.CodStatoLista = asl.CodStatoLista
|
|
WHERE asl.canQtaUDC = 0
|
|
AND rldp.UDC=@UDC )
|
|
|
|
-- controllo UDC "libero" da LDP (ovvero non faccia parte di LDP in uno stato che NON permette Modifica QTA, nel qual caso NON sposto)
|
|
IF (@udcInLdpPrel = 0)
|
|
-- tutto ok PROCEDO!
|
|
BEGIN
|
|
-- modifico il record
|
|
UPDATE ElencoCartellini
|
|
SET Qta = @Qta
|
|
,ModDate = GETDATE()
|
|
,CodEvento = @CodEvento
|
|
,CodSoggetto = @CodSoggetto
|
|
WHERE UDC = @UDC
|
|
END
|
|
COMMIT TRAN
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- restituisco la tab dati con l'udc appena inserito
|
|
------------------------------------------------------------------------------------------------------
|
|
SELECT *
|
|
FROM ElencoCartellini
|
|
WHERE UDC = @UDC
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit;
|
|
go
|
|
|
|
|
|
|
|
|
|
|
|
-- registro versione...
|
|
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(462, GETDATE())
|
|
GO
|