-- modifiche 2021.10 x gestione assegnazione gruppi, ordinamento, visualizzazione gruppi in Bazaar USE [ETS_PROJ] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- modifica tab Dip2ATR alter TABLE [dbo].[Dip2ATR] ADD [GrpOrder] [int] NOT NULL DEFAULT 1 GO -- fix ordinamento dipendenti in gruppi update Dip2ATR set GrpOrder = RIGHT(Gruppo,2) GO -- rimozione ordinamento dal gruppi ( riduzione a VERI gruppi) update Dip2ATR set gruppo = REPLACE(gruppo, RIGHT(Gruppo,3),'') GO -- tab gruppi CREATE TABLE [dbo].[AnagGruppi]( [Gruppo] [nvarchar](50) NOT NULL, [Descrizione] [nvarchar](250) NOT NULL, [OrdGruppo] [int] NOT NULL, [Visibile] [bit] NOT NULL, CONSTRAINT [PK_AnagGruppi] PRIMARY KEY CLUSTERED ( [Gruppo] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AnagGruppi] ADD CONSTRAINT [DF_AnagGruppi_Gruppo] DEFAULT ('') FOR [Gruppo] GO ALTER TABLE [dbo].[AnagGruppi] ADD CONSTRAINT [DF_AnagGruppi_Descrizione] DEFAULT ('-') FOR [Descrizione] GO ALTER TABLE [dbo].[AnagGruppi] ADD CONSTRAINT [DF_AnagGruppi_OrdGruppo] DEFAULT ((1)) FOR [OrdGruppo] GO ALTER TABLE [dbo].[AnagGruppi] ADD CONSTRAINT [DF_AnagGruppi_Visibile] DEFAULT ((1)) FOR [Visibile] GO -- popolamento tab gruppi già ordinati insert into AnagGruppi select distinct REPLACE(gruppo, LEFT(gruppo,3),'') as gruppo, gruppo as descrizione, left(gruppo, 2) as OrdGruppo, 1 as visibile from dip2atr GO -- gruppo zzz non visibile... UPDATE AnagGruppi SET Visibile = 0 , Descrizione = 'NON ASSEGNATO' WHERE Gruppo = 'ZZZ' GO -- sistemo gruppi sugli utenti UPDATE Dip2ATR SET Gruppo = REPLACE(gruppo, LEFT(gruppo,3),'') GO -- sistemo le stored collegate /********************************************************** * STORED stp_D2ATR_getBazOrd * * recupera elenco dipendenti abilitati a bazaar ordinati x i gruppi validi * * mod: S.E.L. 2013.09.04 - release * mod: S.E.L. 2021.10.15 revisione sistema gruppi ed ordinamento * **********************************************************/ ALTER PROCEDURE [dbo].[stp_D2ATR_getBazOrd] AS SELECT D2A.* FROM Dip2ATR D2A INNER JOIN AnagGruppi AG ON D2A.Gruppo = AG.Gruppo ORDER BY AG.OrdGruppo, D2A.GrpOrder RETURN GO /********************************************************** * STORED stp_D2ATR_getBazOrd * * recupera elenco dipendenti abilitati a bazaar * * mod: S.E.L. 2017.07.18 * mod: S.E.L. 2021.10.15 revisione sistema gruppi ed ordinamento **********************************************************/ ALTER PROCEDURE [dbo].[stp_Dip_Baz] AS SELECT dip.* FROM Dipendenti dip INNER JOIN Dip2ATR D2A ON dip.idxDipendente=D2A.idxDipendente INNER JOIN AnagGruppi AG ON D2A.Gruppo = AG.Gruppo ORDER BY AG.OrdGruppo, D2A.GrpOrder RETURN GO /********************************************************** * STORED stp_AG_updateQuery * * update gruppo * * mod: S.E.L. 2021.10.15 * **********************************************************/ CREATE PROCEDURE [dbo].[stp_AG_updateQuery] ( @Original_Gruppo NVARCHAR(50), @Descrizione NVARCHAR(250), @OrdGruppo INT, @Visibile BIT ) AS SET NOCOUNT OFF; UPDATE AnagGruppi SET Descrizione = @Descrizione, OrdGruppo = @OrdGruppo, Visibile = @Visibile WHERE Gruppo = @Original_Gruppo; SELECT * FROM AnagGruppi WHERE Gruppo = @Original_Gruppo; GO /********************************************************** * STORED stp_AG_deleteQuery * * elimina gruppo (SE NON Impiegato) * * mod: S.E.L. 2021.10.15 * **********************************************************/ CREATE PROCEDURE [dbo].[stp_AG_deleteQuery] ( @Original_Gruppo int ) AS SET NOCOUNT OFF; -- controllo: se ci sono record assegnati a fase NON cancello ma archivio... DECLARE @trovate INT = 0; SET @trovate = ( SELECT ISNULL(COUNT(*),0) FROM Dip2ATR WHERE Gruppo = @Original_Gruppo ) IF(@trovate < 1) BEGIN -- elimino gruppo DELETE FROM AnagGruppi WHERE Gruppo = @Original_Gruppo END GO /********************************************************** * STORED stp_AG_InsertQuery * * crezione nuovo gruppo * * mod: S.E.L. 2021.10.15 * **********************************************************/ create PROCEDURE [dbo].[stp_AG_InsertQuery] ( @Gruppo NVARCHAR(50), @Descrizione NVARCHAR(250) ) AS SET NOCOUNT OFF; DECLARE @maxOrd INT = 999; SELECT @maxOrd = MAX(OrdGruppo) FROM AnagGruppi INSERT INTO AnagGruppi ( Gruppo, Descrizione, OrdGruppo, Visibile) VALUES (@Gruppo, @Descrizione, @maxOrd+1, 1); SELECT * FROM AnagGruppi WHERE Gruppo = @Gruppo GO /********************************************************** * STORED stp_AG_GetData * * crezione nuovo gruppo * * mod: S.E.L. 2021.10.15 * **********************************************************/ CREATE PROCEDURE [dbo].[stp_AG_GetData] AS SET NOCOUNT ON; SELECT * FROM v_AnagGruppi ORDER BY OrdGruppo GO -- viste e altri parametri x gestione Gruppi CREATE VIEW [dbo].[v_AnagGruppi] AS SELECT AG.Gruppo ,AG.Descrizione ,AG.OrdGruppo ,AG.Visibile ,ISNULL(dbo.v_Dip2Group.NumDip, 0) AS NumDip FROM dbo.AnagGruppi AG LEFT OUTER JOIN dbo.v_Dip2Group ON AG.Gruppo = dbo.v_Dip2Group.Gruppo GO CREATE VIEW [dbo].[v_Dip2ATR] AS SELECT D2A.*, D.Cognome, D.Nome, ISNULL(D.dataNascita, '1900-01-01') AS dataNascita, D.SIGLA, D.attivo FROM dbo.Dip2ATR D2A INNER JOIN Dipendenti D ON D2a.idxDipendente = D.idxDipendente GO /********************************************************** * STORED stp_D2ATR_getBazOrd * * recupera elenco dipendenti abilitati a bazaar ordinati x i gruppi validi * * mod: S.E.L. 2013.09.04 - release * mod: S.E.L. 2021.10.15 revisione sistema gruppi ed ordinamento * **********************************************************/ ALTER PROCEDURE [dbo].[stp_D2ATR_getBazOrd] AS SELECT D2A.* FROM v_Dip2ATR D2A INNER JOIN AnagGruppi AG ON D2A.Gruppo = AG.Gruppo ORDER BY AG.OrdGruppo, D2A.GrpOrder RETURN GO /********************************************************** * STORED stp_D2ATR_getByGroup * * recupera elenco dipendenti da gruppo * * mod: S.E.L. 2021.10.15 release * **********************************************************/ CREATE PROCEDURE [dbo].[stp_D2ATR_getByGroup] ( @Gruppo NVARCHAR(50) = '' ) AS SELECT D2A.* FROM v_Dip2ATR D2A WHERE Gruppo = @Gruppo ORDER BY GrpOrder RETURN GO /********************************************************** * STORED stp_D2ATR_updateQuery * * update dipentente x editing tipo, gruppo, ordinamento * * mod: S.E.L. 2021.10.15 release * **********************************************************/ CREATE PROCEDURE [dbo].[stp_D2ATR_updateQuery] ( @Original_idxDipendente INT = 0, @CodTipoRisorsa NVARCHAR(50), @Gruppo NVARCHAR(50), @GrpOrder INT ) AS UPDATE Dip2ATR SET CodTipoRisorsa = @CodTipoRisorsa , Gruppo = @Gruppo , GrpOrder = @GrpOrder WHERE idxDipendente = @Original_idxDipendente SELECT * FROM Dip2ATR WHERE idxDipendente = @Original_idxDipendente RETURN GO insert into AnagTipoRisorse(CodTipoRisorsa, DescrTipoRisorsa, costoOrario) VALUES ('ND', 'NON ASSEGNATO', 40) GO /********************************************************** * STORED stp_D2ATR_insertMissing * * aggiunta dipententi mancanti in gruppo zzz * * mod: S.E.L. 2021.10.16 release * **********************************************************/ CREATE PROCEDURE [dbo].[stp_D2ATR_insertMissing] AS WITH cteNewUser AS ( SELECT D.idxDipendente FROM Dipendenti D LEFT OUTER JOIN Dip2ATR D2A ON D.idxDipendente = D2A.idxDipendente WHERE D.gruppo = 'ETS' AND D2A.idxDipendente IS NULL ) INSERT INTO Dip2ATR(idxDipendente, CodTipoRisorsa, Gruppo, GrpOrder) SELECT idxDipendente, 'ND', 'ZZZ', 999 FROM cteNewUser RETURN GO -- fix primary key ALTER TABLE Dip2ATR DROP CONSTRAINT PK_Dip2ATR ALTER TABLE Dip2ATR ADD CONSTRAINT PK_Dip2ATR PRIMARY KEY (idxDipendente) GO /********************************************************** * STORED stp_D2ATR_deleteQuery * * eliminazione dipentente NON gestito in Bazaar * * mod: S.E.L. 2021.10.19 release * **********************************************************/ create PROCEDURE [dbo].[stp_D2ATR_deleteQuery] ( @Original_idxDipendente INT = 0 ) AS DELETE FROM Dip2ATR WHERE idxDipendente = @Original_idxDipendente RETURN GO /************************************* * STORED PROCEDURE stp_VSCom_getByWeek * * elenco commesse impegnate nel periodo * * mod : 2021.10.19 * aut : S.E. Locatelli **************************************/ CREATE PROCEDURE [dbo].[stp_VSCom_getByWeek] ( @Anno INT = 0, @Sett INT = 0 ) AS SET NOCOUNT ON; ;WITH cteFasi AS ( SELECT DISTINCT idxFase FROM BazaarRisorse WHERE Anno = @Anno AND Sett = @Sett ) SELECT vsc.* FROM v_selCommesse vsc INNER JOIN cteFasi cte ON vsc.value = cte.idxFase GO /************************************* * STORED PROCEDURE stp_VSCom_getShortByWeek * * elenco commesse impegnate nel periodo * * mod : 2021.10.19 * aut : S.E. Locatelli **************************************/ CREATE PROCEDURE [dbo].[stp_VSCom_getShortByWeek] ( @Anno INT = 0, @Sett INT = 0 ) AS SET NOCOUNT ON; ;WITH cteFasi AS ( SELECT DISTINCT idxFase FROM BazaarRisorse WHERE Anno = @Anno AND Sett = @Sett ) SELECT vsc.* FROM v_selCommesseShort vsc INNER JOIN cteFasi cte ON vsc.value = cte.idxFase GO /************************************* * STORED PROCEDURE stp_VSCom_getShortByIrWeek * * elenco commesse con IMPIEGO RISORSE nel periodo * * mod : 2021.10.19 * aut : S.E. Locatelli **************************************/ CREATE PROCEDURE [dbo].[stp_VSCom_getShortByIrWeek] ( @Anno INT = 0, @Sett INT = 0 ) AS SET NOCOUNT ON; ;WITH cteFasi AS ( SELECT DISTINCT idxFase FROM ImpiegoRisorse WHERE Anno = @Anno AND Sett = @Sett ) SELECT vsc.* FROM v_selCommesseShort vsc INNER JOIN cteFasi cte ON vsc.value = cte.idxFase GO /********************************************************** * STORED stp_BAZ_getByAnnoSett * * recupera record di Bazaar Risorse per anno e settimana selezionate * * mod: S.E.L. 2013.09.04 * mod: S.E.L. 2021.10.19 * **********************************************************/ ALTER PROCEDURE [dbo].[stp_BAZ_getByAnnoSett] ( @Anno int, @Sett int, @showAll BIT = 1 -- 1 = mostra tutti, 0 = solo impostati a visibili in gruppi ) AS SET NOCOUNT ON; -- seleziono i dip (TUTTI distinct) WITH cteDip AS ( SELECT DISTINCT D2A.idxDipendente FROM Dip2ATR D2A INNER JOIN AnagGruppi AG ON D2A.Gruppo = AG.Gruppo WHERE (AG.Visibile = 1 OR @showAll = 1) ) -- le fasi , cteFasi AS ( SELECT DISTINCT idxFase FROM dbo.BazaarRisorse WHERE Anno = @Anno AND Sett = @Sett ) -- le combinazioni (TUTTE) a zero... , cteComb AS ( SELECT @Anno as Anno, @Sett as Sett, cteDip.idxDipendente, cteFasi.idxFase, 0 as Allocazione, '00000' as SchemaWeek, 0 as OreTot FROM cteDip CROSS JOIN cteFasi ) -- le combinazioni NON esplicite , cteMiss AS ( SELECT cte.* FROM cteComb cte LEFT OUTER JOIN BazaarRisorse br ON cte.Anno=br.anno AND cte.Sett=br.Sett AND cte.idxDipendente=br.idxDipendente AND cte.idxFase = br.idxFase WHERE br.Allocazione is null ) SELECT * FROM cteMiss UNION SELECT BR.* FROM dbo.BazaarRisorse BR INNER JOIN Dip2ATR D2A ON BR.idxDipendente = D2A.idxDipendente INNER JOIN AnagGruppi AG ON D2A.Gruppo = AG.Gruppo WHERE (AG.Visibile = 1 OR @showAll = 1) AND Anno = @Anno AND Sett = @Sett GO /********************************************************** * STORED stp_D2ATR_getBazOrd * * recupera elenco dipendenti abilitati a bazaar * * mod: S.E.L. 2017.07.18 * mod: S.E.L. 2021.10.15 revisione sistema gruppi ed ordinamento * mod: S.E.L. 2021.10.19 criterio show SOLO se visibili (x display filtrato) **********************************************************/ alter PROCEDURE [dbo].[stp_Dip_Baz] ( @showAll BIT = 1 -- 1 = mostra tutti, 0 = solo impostati a visibili in gruppi ) AS SELECT dip.* FROM Dipendenti dip INNER JOIN Dip2ATR D2A ON dip.idxDipendente=D2A.idxDipendente INNER JOIN AnagGruppi AG ON D2A.Gruppo = AG.Gruppo WHERE (AG.Visibile = 1 OR @showAll = 1) ORDER BY AG.OrdGruppo, D2A.GrpOrder RETURN GO /********************************************************** * STORED stp_D2ATR_getBazOrd * * recupera elenco dipendenti abilitati a bazaar ordinati x i gruppi validi * * mod: S.E.L. 2013.09.04 - release * mod: S.E.L. 2021.10.15 revisione sistema gruppi ed ordinamento * mod: S.E.L. 2021.10.19 revisione x filtraggio visibili o tutti * **********************************************************/ ALTER PROCEDURE [dbo].[stp_D2ATR_getBazOrd] ( @showAll BIT = 1 -- 1 = mostra tutti, 0 = solo impostati a visibili in gruppi ) AS SELECT D2A.* FROM v_Dip2ATR D2A INNER JOIN AnagGruppi AG ON D2A.Gruppo = AG.Gruppo WHERE (AG.Visibile = 1 OR @showAll = 1) ORDER BY AG.OrdGruppo, D2A.GrpOrder RETURN GO -- sistemazione finale gestione registro timbrature cona ttività CREATE SYNONYM [dbo].[syn_GPW_TimbratureExpl] FOR [ETS_GPW].[dbo].[TimbratureExpl] GO CREATE VIEW [dbo].TimbratureExpl AS SELECT dataLav ,idxDipendente ,YEAR(dataLav) AS Anno ,DATEPART(wk, dataLav) AS Sett ,CognomeNome ,entrata_1 ,uscita_1 ,entrata_2 ,uscita_2 ,entrata_3 ,uscita_3 ,entrata_4 ,uscita_4 ,h_lav ,minLav ,minOrd ,minNonLav ,minStra ,minPerm ,minFer ,minMal ,minFest ,minMpp ,minArcoPres ,isOkTim ,isOkApp ,block ,chkFunCod ,chkFunRes ,isOk ,isOkLav ,h_giust FROM syn_GPW_TimbratureExpl GO /********************************************************** * STORED stp_TE_getByAnnoSett * * recupera record TImbrature Expl per anno e settimana selezionate * * mod: S.E.L. 2021.10.19 * **********************************************************/ CREATE PROCEDURE [dbo].[stp_TE_getByAnnoSett] ( @Anno int, @Sett int, @showAll BIT = 1 -- 1 = mostra tutti, 0 = solo impostati a visibili in gruppi ) AS SET NOCOUNT ON; -- seleziono i dip (TUTTI distinct) WITH cteDip AS ( SELECT DISTINCT D2A.idxDipendente FROM Dip2ATR D2A INNER JOIN AnagGruppi AG ON D2A.Gruppo = AG.Gruppo WHERE (AG.Visibile = 1 OR @showAll = 1) ) SELECT TE.* FROM dbo.TimbratureExpl TE INNER JOIN Dip2ATR D2A ON TE.idxDipendente = D2A.idxDipendente INNER JOIN AnagGruppi AG ON D2A.Gruppo = AG.Gruppo WHERE (AG.Visibile = 1 OR @showAll = 1) AND Anno = @Anno AND Sett = @Sett GO