Files
ETS/ETS_Data/SQL/ETS_PROJ/ETS_PROJ_2110.sql
2021-10-19 17:50:16 +02:00

677 lines
15 KiB
Transact-SQL

-- 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