/* Sistemo stored x bugs risolti */ set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_creaListaPrelievo * * crea un nuovo record nella ElencoListePrelievo e restituisce il codice ID appena creato * * Steamware, S.E.L. 8 (FROM Stintino) * mod: 2010.07.30 * ************************************/ alter PROCEDURE stp_creaListaPrelievo ( @Anno NVARCHAR(2), @Mese NVARCHAR(2), @CodTipoLista NVARCHAR(10), @CodCS NCHAR(2), @CodCliente NVARCHAR(6), @RagSociale NVARCHAR(35), @CodSoggetto NCHAR(17), @Particolare NVARCHAR(15), @DescParticolare NVARCHAR(30), @DisegnoGrezzo NVARCHAR(30), @Esponente NVARCHAR(6), @Figura NVARCHAR(4), @CodImballo NVARCHAR(15), @QtaTot DECIMAL(10,2), @Destinatario NVARCHAR(50) ) AS -- Dichiarazioni iniziali DECLARE @CodLista AS NVARCHAR(12) DECLARE @numLista AS INT DECLARE @temp AS INT DECLARE @ora AS DATETIME ------------------------------------------------------------------------------------------------------ -- codice lista di prelievo KAAMM00000 - K = start char, AA = anno, MM = mese, 00000 = progressivo ------------------------------------------------------------------------------------------------------ -- controllo se ci sia già una lista di prelievo per company / flusso anno BEGIN TRAN -- cerco nella tab contatori liste prelievo l'ultimo valido SET @numLista = ( SELECT COUNT(*) FROM ContatoriListePrelievo WHERE CodCS = @CodCS AND Anno = @Anno AND Mese = @Mese ) -- controllo se record c'è... IF(@numLista > 0) BEGIN -- se c'è incremento di 1 in tab UPDATE ContatoriListePrelievo SET LastIdx = LastIdx + 1 WHERE CodCS = @CodCS AND Anno = @Anno AND Mese = @Mese END ELSE BEGIN -- lo creo! INSERT INTO ContatoriListePrelievo(CodCS, Anno, Mese, LastIdx) VALUES (@CodCS, @Anno, @Mese, 1) END -- aggiorno numero lista prelievo SET @numLista = ( SELECT LastIdx FROM ContatoriListePrelievo WHERE CodCS = @CodCS AND Anno = @Anno AND Mese = @Mese ) COMMIT TRAN ------------------------------------------------------------------------------------------------------ BEGIN TRAN ------------------------------------------------------------------------------------------------------ -- Ciclo principale x inserimento nuovo record ------------------------------------------------------------------------------------------------------ -- ottengo il nuovo codice lista di prelievo completo SET @CodLista = 'K' + @CodCS + @Anno + dbo.f_padLeft(CAST(@Mese AS NVARCHAR(2)), 2, '0') + + dbo.f_padLeft(CAST(@numLista AS NVARCHAR(5)), 5, '0') INSERT INTO ElencoListePrelievo (CodLista, CodTipoLista, CodCS, DataCreaz, CodCliente, RagSociale, CodSoggetto, Particolare, DescParticolare, DisegnoGrezzo, Esponente, Figura, CodImballo, QtaTot, CodStatoLista, Destinatario) VALUES (@CodLista, @CodTipoLista, @CodCS, GETDATE(), @CodCliente, @RagSociale, @CodSoggetto, @Particolare, @DescParticolare, @DisegnoGrezzo, @Esponente,@Figura, @CodImballo, @QtaTot, 0, @Destinatario) COMMIT TRAN SELECT * FROM V_elencoListePrelievo WHERE CodLista = @CodLista; RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_RLP_delete * * cancella riga x un UDC non prelevato * * Steamware, S.E.L. * mod: 2010.09.03 * ****************************************/ create PROCEDURE stp_RLP_delete ( @Original_CodLista AS varchar(12), @Original_UDC NVARCHAR(50) ) AS -- cancello DELETE FROM RigheListePrelievo WHERE CodLista = @Original_CodLista AND UDC = @Original_UDC RETURN go /*************************************** * STORED stp_RLP_sbloccaNonPrelevate * * sblocca righe liste di prelievo ATTIVE x UDC non prelevati * * Steamware, S.E.L. * mod: 2010.08.31 * ****************************************/ alter PROCEDURE stp_RLP_sbloccaNonPrelevate ( @CodLista NVARCHAR(12), @UDC NVARCHAR(50) ) AS -- creo una CTE x le righe liste prelievo ATTIVE (escludo bozze e liste scaricate) - candidate per sblocco che NON fanno aprte della lista di prelievo attuale WITH cteUdcRigheAttive AS ( SELECT RLP.CodLista, RLP.UDC, RLP.Prelevato FROM RigheListePrelievo AS RLP INNER JOIN ElencoListePrelievo AS ELP ON RLP.CodLista = ELP.CodLista WHERE (ELP.CodStatoLista BETWEEN 1 AND 3) AND RLP.Prelevato = 1 AND ELP.CodLista <> @CodLista ) -- effettua "sblocco" delle righe liste prelievo che danno UDC prelevati ma che NON risultano UPDATE cteUdcRigheAttive SET Prelevato = 0 WHERE UDC = @UDC RETURN go /*************************************** * STORED stp_RLP_updateQty * * aggiorna qta dato un UDC * * Steamware, S.E.L. * mod: 2010.07.06 * ****************************************/ create PROCEDURE stp_RLP_updateQty ( @UDC VARCHAR(50), @Qta DECIMAL ) AS update RigheListePrelievo SET Qta = @Qta WHERE (UDC = @UDC) RETURN go commit go -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(220, GETDATE()) GO