set xact_abort on go begin transaction go INSERT INTO dbo.Permessi VALUES ('POST_fusiCons', 'consumoFusi.aspx', 4, 5, 'ConsFusi', 'ConsFusiExpl') go commit transaction go set xact_abort on go begin transaction go INSERT INTO dbo.Permessi2Funzione VALUES ('POST_fusiCons', N'GMW_consFusi', 'S') go commit transaction go set xact_abort on go begin transaction go UPDATE AnagPosizioni set idxposizione=3 WHERE IdxPosizione=7 go commit transaction go set xact_abort on go begin transaction go INSERT INTO dbo.TabTranPosizEventi VALUES (N'UDC_CONS', 3, -3, 0, NULL, N'consumo fusi') INSERT INTO dbo.TabTranPosizEventi VALUES (N'UDC_FUSI', 0, 3, 49, N'Fusi', N'creazione UDC fusi (creare magazzino e blocco x fusi e sostituire 49)') go commit transaction go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_UDC_insNewFull * * crea un nuovo record nella TabStatoOdpUdc FULL (con pesi, qta...) e restituisce il codice UDC appena creato * * Steamware, S.E.L. * mod: 2010.04.28 * ****************************************/ alter PROCEDURE stp_UDC_insNewFull ( @CodCS VARCHAR(2), @Flusso VARCHAR(2), @Anno VARCHAR(2), @CodCliente VARCHAR(6), @Particolare VARCHAR(15), @CodImpianto AS VARCHAR(50), @CodStampo VARCHAR(8), @Esponente VARCHAR(6), @Figura VARCHAR(4), @DataFus DATETIME, @TurnoFus INT, @CodImballo VARCHAR(15), @CodSoggetto VARCHAR(17), @Tara FLOAT, @IdxPosizione INT, @CodTipoDichiaraz CHAR(1), @CodEvento VARCHAR(10), @Qta DECIMAL(10,2), @PesoTot FLOAT, @PesoCad FLOAT, @CodStato VARCHAR(50), @UDC_parent VARCHAR(50), @DoDeleteUdcParent BIT, @Note NVARCHAR(500) ) AS -- DECLARE iniziali DECLARE @UDC AS VARCHAR(50) DECLARE @RagSociale AS VARCHAR(35) DECLARE @DescParticolare AS VARCHAR(30) DECLARE @DescImpianto AS VARCHAR(50) DECLARE @DisegnoGrezzo AS VARCHAR(30) DECLARE @NumCont AS INT DECLARE @numFlu AS INT DECLARE @numUdc AS INT DECLARE @nextUdc AS INT DECLARE @IdxCella AS INT SET @UDC_parent = UPPER(@UDC_parent) -- nel caso sia passato in minuscolo ------------------------------------------------------------------------------------------------------ -- Caricamento Dati da anagrafica ------------------------------------------------------------------------------------------------------ -- cerco la ragione sociale... SET @RagSociale = ISNULL( ( SELECT RagSociale FROM RilPro.AnagClienti WHERE (CodCliente = @CodCliente) ) , '') -- Cerco descrizione del particolare... SET @DescParticolare = ISNULL( ( SELECT DescParticolare FROM RilPro.AnagParticolari WHERE (Particolare = @Particolare) ) , 'ND') -- se non lo trova provo anche nell'anagrafica leghe IF(@DescParticolare = 'ND')-- OR (@DescParticolare is null) BEGIN SET @DescParticolare = ISNULL( ( SELECT DescLega FROM RilPro.AnagLeghe WHERE ('L'+CodLega = @Particolare) ) , '') END -- cerco codice disegno grezzo SET @DisegnoGrezzo = ISNULL( ( SELECT DisegnoGrezzo FROM RilPro.AnagParticolari WHERE (Particolare = @Particolare) ) , '') -- cerco descrizione Impianto SET @DescImpianto = ISNULL( ( SELECT DescImpianto FROM AnagImpianti WHERE (CodImpianto = @CodImpianto) ) , '') -- Calcolo contatore intero successivo x il contenitore... SET @NumCont = ( SELECT ISNULL(MAX(NumCont), 0) + 1 AS NumCont FROM ElencoCartellini WHERE (Particolare = @Particolare) AND (DataFus = @DataFus) AND (TurnoFus = @TurnoFus) AND (CodImpianto = @CodImpianto) AND (CodStampo = @CodStampo) AND (Figura = @Figura) ) ------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------ -- Flusso ------------------------------------------------------------------------------------------------------ -- controllo se esiste il flusso (bilancia)... SET @numFlu = ( SELECT count(*) FROM AnagBilance WHERE CodBilancia = @Flusso ) -- ...sennò lo creo... IF(@numFlu = 0) BEGIN -- se c'è inserisco in tab INSERT INTO AnagBilance(CodBilancia, DescrImpianto, CodCS) VALUES (@Flusso, @Flusso, @CodCS) END ------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------ -- UDC ------------------------------------------------------------------------------------------------------ -- controllo se ci sia già un UDC per company / flusso anno BEGIN TRAN -- cerco nella tab contatori se esiste contatore x il flusso -- controllo se record c'è... IF EXISTS( SELECT TOP 1 Flusso FROM ContatoriUdc WHERE CodCS = @CodCS AND Flusso = @Flusso AND Anno = @Anno ) BEGIN -- se c'è incremento di 1 in tab UPDATE ContatoriUdc SET LastIdx = LastIdx + 1 WHERE CodCS = @CodCS AND Flusso = @Flusso AND Anno = @Anno END ELSE BEGIN -- lo creo! INSERT INTO ContatoriUdc(CodCS, Flusso, Anno, LastIdx) VALUES (@CodCS, @Flusso, @Anno, 1) END -- aggiorno numero UDC SET @numUdc = ( SELECT LastIdx FROM ContatoriUdc WHERE CodCS = @CodCS AND Flusso = @Flusso AND Anno = @Anno ) COMMIT TRAN ------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------ -- Ciclo principale x inserimento nuovo record ------------------------------------------------------------------------------------------------------ BEGIN TRAN -- ottengo il nuovo codice UDC completo SET @UDC = dbo.componiUdc(@CodCS, @Flusso, @Anno, @numUdc) -- inserisco un nuovo record INSERT INTO ElencoCartellini(UDC, CodCS, CodCliente, RagSociale, Particolare, DescParticolare, DisegnoGrezzo, Esponente, CodImpianto, DescImpianto, CodStampo, Figura, DataFus, TurnoFus, CodImballo, CodSoggetto, NumCont, Tara, Qta, CodStato, IdxPosizione, PesoTot, PesoCad, CreateDate, ModDate, Note, CodEvento) VALUES (@UDC, @CodCS, @CodCliente, @RagSociale, @Particolare, @DescParticolare, @DisegnoGrezzo, @Esponente, @CodImpianto, @DescImpianto, @CodStampo, @Figura, @DataFus, @TurnoFus, @CodImballo, @CodSoggetto, @NumCont, @Tara, @Qta, @CodStato, @IdxPosizione, @PesoTot, @PesoCad, GETDATE(), GETDATE(), @Note, @CodEvento) -- inserisco relazione parent-child tra UDC vecchio (tara) e nuovo (pesa) SSE UDC_Parent valido IF((NOT @UDC_parent IS NULL) AND (NOT @UDC_parent = '')) BEGIN INSERT INTO RelazUDC(UDC_parent, UDC_child) VALUES (@UDC_parent, @UDC) END COMMIT TRAN ------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------ -- Ciclo secondario x eventuale cancellazione UDC tara parent e inserimento in posizione ------------------------------------------------------------------------------------------------------ -- se richiesto elimino l'UDC parent (tara) IF(@DoDeleteUdcParent = 1) BEGIN DELETE FROM ElencoCartellini WHERE UDC = @UDC_parent END -- cerco in TabTranPosizEventi record x calcolare cella DECLARE @IdxBloccoTo INT SET @IdxBloccoTo = 0 /* da testare... SET @IdxBloccoTo = ( SELECT ISNULL( ( SELECT IdxBloccoTo FROM TabTranPosizEventi WHERE CodEvento = @CodEvento AND IdxPosizione = 0 AND IdxPosizioneTo = @IdxPosizione AND CodStatoTo = @CodStato ), 0) ) -- se non lo trovo cerco con CodStatoTo null... IF(@IdxBloccoTo = 0) BEGIN SET @IdxBloccoTo = ( SELECT ISNULL( ( SELECT IdxBloccoTo FROM TabTranPosizEventi WHERE CodEvento = @CodEvento AND IdxPosizione = 0 AND IdxPosizioneTo = @IdxPosizione ), 0) ) END */ -- se NON HO trovato una conf x @IdxBloccoTo utilizzo questo valore utilizzo modalità "vecchia" IF(@IdxBloccoTo = 0) BEGIN -- calcolo la prima cella della posizione indicata.. SET @IdxCella = ( SELECT TOP 1 c.IdxCella FROM Celle c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco WHERE b.CodMag = CAST(@IdxPosizione AS NVARCHAR(50)) ) END ELSE BEGIN -- calcolo la prima cella della posizione indicata.. SET @IdxCella = ( SELECT TOP 1 c.IdxCella FROM Celle c WHERE c.IdxBlocco = @IdxBloccoTo ) END -- inserisco il cartellino nella prima cella della posizione indicata... INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif, CodSoggetto) VALUES(@Udc, @IdxCella, @CodCs, GETDATE(), @CodSoggetto) ------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------ -- restituisco la tab dati con l'udc appena inserito ------------------------------------------------------------------------------------------------------ SELECT * FROM ElencoCartellini WHERE UDC = @UDC ------------------------------------------------------------------------------------------------------ RETURN go /*************************************** * STORED stp_UDC_insNewFull_fixUDC * * crea un nuovo record nella TabStatoOdpUdc FULL (con pesi, qta...) avendo in entrata il codice UDC da utilizzare * * Steamware, S.E.L. * mod: 2011.12.07 * ****************************************/ alter PROCEDURE stp_UDC_insNewFull_fixUDC ( @UDC AS NVARCHAR(50), @CodCS VARCHAR(2), @Flusso VARCHAR(2), @Anno VARCHAR(2), @CodCliente VARCHAR(6), @Particolare VARCHAR(15), @CodImpianto AS VARCHAR(50), @CodStampo VARCHAR(8), @Esponente VARCHAR(6), @Figura VARCHAR(4), @DataFus DATETIME, @TurnoFus INT, @CodImballo VARCHAR(15), @CodSoggetto VARCHAR(17), @Tara FLOAT, @IdxPosizione INT, @CodTipoDichiaraz CHAR(1), @CodEvento VARCHAR(10), @Qta DECIMAL(10,2), @PesoTot FLOAT, @PesoCad FLOAT, @CodStato VARCHAR(50), @UDC_parent VARCHAR(50), @DoDeleteUdcParent BIT, @Note NVARCHAR(500) ) AS -- DECLARE iniziali DECLARE @RagSociale AS VARCHAR(35) DECLARE @DescParticolare AS VARCHAR(30) DECLARE @DescImpianto AS VARCHAR(50) DECLARE @DisegnoGrezzo AS VARCHAR(30) DECLARE @NumCont AS INT DECLARE @numFlu AS INT DECLARE @numUdc AS INT DECLARE @nextUdc AS INT DECLARE @IdxCella AS INT ------------------------------------------------------------------------------------------------------ -- Caricamento Dati da anagrafica ------------------------------------------------------------------------------------------------------ -- cerco la ragione sociale... SET @RagSociale = ISNULL( ( SELECT RagSociale FROM RilPro.AnagClienti WHERE (CodCliente = @CodCliente) ) , '') -- Cerco descrizione del particolare... SET @DescParticolare = ISNULL( ( SELECT DescParticolare FROM RilPro.AnagParticolari WHERE (Particolare = @Particolare) ) , 'ND') -- se non lo trova provo anche nell'anagrafica leghe IF(@DescParticolare = 'ND')-- OR (@DescParticolare is null) BEGIN SET @DescParticolare = ISNULL( ( SELECT DescLega FROM RilPro.AnagLeghe WHERE ('L'+CodLega = @Particolare) ) , '') END -- cerco codice disegno grezzo SET @DisegnoGrezzo = ISNULL( ( SELECT DisegnoGrezzo FROM RilPro.AnagParticolari WHERE (Particolare = @Particolare) ) , '') -- cerco descrizione Impianto SET @DescImpianto = ISNULL( ( SELECT DescImpianto FROM AnagImpianti WHERE (CodImpianto = @CodImpianto) ) , '') -- Calcolo contatore intero successivo x il contenitore... SET @NumCont = ( SELECT ISNULL(MAX(NumCont), 0) + 1 AS NumCont FROM ElencoCartellini WHERE (Particolare = @Particolare) AND (DataFus = @DataFus) AND (TurnoFus = @TurnoFus) AND (CodImpianto = @CodImpianto) AND (CodStampo = @CodStampo) AND (Figura = @Figura) ) ------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------ -- Ciclo principale x inserimento nuovo record ------------------------------------------------------------------------------------------------------ BEGIN TRAN -- inserisco un nuovo record INSERT INTO ElencoCartellini(UDC, CodCS, CodCliente, RagSociale, Particolare, DescParticolare, DisegnoGrezzo, Esponente, CodImpianto, DescImpianto, CodStampo, Figura, DataFus, TurnoFus, CodImballo, CodSoggetto, NumCont, Tara, Qta, CodStato, IdxPosizione, PesoTot, PesoCad, CreateDate, ModDate, Note, CodEvento) VALUES (@UDC, @CodCS, @CodCliente, @RagSociale, @Particolare, @DescParticolare, @DisegnoGrezzo, @Esponente, @CodImpianto, @DescImpianto, @CodStampo, @Figura, @DataFus, @TurnoFus, @CodImballo, @CodSoggetto, @NumCont, @Tara, @Qta, @CodStato, @IdxPosizione, @PesoTot, @PesoCad, GETDATE(), GETDATE(), @Note, @CodEvento) -- inserisco relazione parent-child tra UDC vecchio (tara) e nuovo (pesa) SSE UDC_Parent valido IF((NOT @UDC_parent IS NULL) AND (NOT @UDC_parent = '')) BEGIN INSERT INTO RelazUDC(UDC_parent, UDC_child) VALUES (@UDC_parent, @UDC) END COMMIT TRAN ------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------ -- Ciclo secondario x eventuale cancellazione UDC tara parent e inserimento in posizione ------------------------------------------------------------------------------------------------------ -- se richiesto elimino l'UDC parent (tara) IF(@DoDeleteUdcParent = 1) BEGIN DELETE FROM ElencoCartellini WHERE UDC = @UDC_parent END -- cerco in TabTranPosizEventi record x calcolare cella DECLARE @IdxBloccoTo INT SET @IdxBloccoTo = 0 /* da testare... SET @IdxBloccoTo = ( SELECT ISNULL( ( SELECT IdxBloccoTo FROM TabTranPosizEventi WHERE CodEvento = @CodEvento AND IdxPosizione = 0 AND IdxPosizioneTo = @IdxPosizione AND CodStatoTo = @CodStato ), 0) ) -- se non lo trovo cerco con CodStatoTo null... IF(@IdxBloccoTo = 0) BEGIN SET @IdxBloccoTo = ( SELECT ISNULL( ( SELECT IdxBloccoTo FROM TabTranPosizEventi WHERE CodEvento = @CodEvento AND IdxPosizione = 0 AND IdxPosizioneTo = @IdxPosizione ), 0) ) END */ -- se NON HO trovato una conf x @IdxBloccoTo utilizzo questo valore utilizzo modalità "vecchia" IF(@IdxBloccoTo = 0) BEGIN -- calcolo la prima cella della posizione indicata.. SET @IdxCella = ( SELECT TOP 1 c.IdxCella FROM Celle c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco WHERE b.CodMag = CAST(@IdxPosizione AS NVARCHAR(50)) ) END ELSE BEGIN -- calcolo la prima cella della posizione indicata.. SET @IdxCella = ( SELECT TOP 1 c.IdxCella FROM Celle c WHERE c.IdxBlocco = @IdxBloccoTo ) END -- inserisco il cartellino nella prima cella della posizione indicata.. INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif, CodSoggetto) VALUES(@Udc, @IdxCella, @CodCs, GETDATE(), @CodSoggetto) ------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------ -- restituisco la tab dati con l'udc appena inserito ------------------------------------------------------------------------------------------------------ SELECT * FROM ElencoCartellini WHERE UDC = @UDC ------------------------------------------------------------------------------------------------------ RETURN go commit go INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(516, GETDATE()) GO SELECT TOP 10 * FROM LogUpdateDb ORDER BY Versione DESC