208 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			208 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP PROCEDURE IF EXISTS uspFollowUpAlkalmazott
 | 
						|
GO
 | 
						|
 
 | 
						|
CREATE PROCEDURE uspFollowUpAlkalmazott
 | 
						|
   @intezmenyId int
 | 
						|
  ,@aktTanevId int
 | 
						|
  ,@kovetkezoTanevId int
 | 
						|
  ,@alkalmazottId int
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
  SET NOCOUNT ON;
 | 
						|
  BEGIN --DECLARE,CREATE
 | 
						|
  DECLARE 
 | 
						|
     @ujAlkalmazottId int
 | 
						|
    ,@ExcludeInsertColumns nvarchar(max)
 | 
						|
    ,@insertColList nvarchar(max)
 | 
						|
    ,@selectColList nvarchar(max)
 | 
						|
    ,@updateColList nvarchar(max)
 | 
						|
    ,@partialSql nvarchar(max)
 | 
						|
    ,@fullSql nvarchar(max)
 | 
						|
  
 | 
						|
  CREATE TABLE #excludedColumns (
 | 
						|
     colName nvarchar(128) COLLATE DATABASE_DEFAULT
 | 
						|
    ,excludeType nvarchar(10) COLLATE DATABASE_DEFAULT
 | 
						|
  )
 | 
						|
  CREATE TABLE #columnMappings (
 | 
						|
     insertColName nvarchar(128) COLLATE DATABASE_DEFAULT
 | 
						|
    ,selectColName nvarchar(128) COLLATE DATABASE_DEFAULT
 | 
						|
    ,updateColname nvarchar(128) COLLATE DATABASE_DEFAULT
 | 
						|
    ,tableName nvarchar(128) COLLATE DATABASE_DEFAULT
 | 
						|
  )
 | 
						|
  END
 | 
						|
  BEGIN --default return
 | 
						|
    DECLARE @eloTag nvarchar(40)=(SELECT C_ELOTAG FROM T_FELHASZNALO WHERE ID = @alkalmazottId)
 | 
						|
    IF @eloTag LIKE '%[[]HO%' 
 | 
						|
      OR @eloTag LIKE '%[[]BTA%'
 | 
						|
      OR @eloTag LIKE '%[[]KGK%' 
 | 
						|
      OR @eloTag LIKE '%[[]KA%'
 | 
						|
    BEGIN
 | 
						|
	    RETURN
 | 
						|
    END
 | 
						|
 | 
						|
    IF (SELECT TOROLT FROM T_FELHASZNALO_OSSZES WHERE ID = @alkalmazottId) = 'T' 
 | 
						|
      OR (SELECT TOROLT FROM T_FELHASZNALO_OSSZES WHERE ID = @ujAlkalmazottId) = 'T' 
 | 
						|
      OR EXISTS (SELECT 1 FROM T_MUNKAUGYIADATOK WHERE C_ALKALMAZOTTID=@alkalmazottId AND ISNULL(C_ALKALMAZASMEGSZUNESE,'2200-01-01')<=(SELECT C_KEZDONAP FROM T_TANEV WHERE ID = @kovetkezoTanevId))
 | 
						|
    BEGIN
 | 
						|
      RETURN
 | 
						|
    END
 | 
						|
  END
 | 
						|
  BEGIN --SETUP
 | 
						|
  SELECT @ujAlkalmazottId = ID
 | 
						|
  FROM T_FELHASZNALO_OSSZES 
 | 
						|
  WHERE ELOZOTANEVIREKORDID = @alkalmazottId 
 | 
						|
    AND C_TANEVID = @kovetkezoTanevId   
 | 
						|
  
 | 
						|
  SET @ExcludeInsertColumns = 'FTIP'
 | 
						|
    
 | 
						|
  INSERT INTO #columnMappings (insertColName,selectColName,updateColname,tableName)
 | 
						|
  SELECT insertColName,selectColName,updateColname,'T_FELHASZNALO' FROM fnGetFollowUpColumnMapping (@ExcludeInsertColumns,'T_FELHASZNALO')
 | 
						|
  UNION ALL
 | 
						|
  SELECT insertColName,selectColName,updateColname,'T_ALKALMAZOTT' FROM fnGetFollowUpColumnMapping (@ExcludeInsertColumns,'T_ALKALMAZOTT')
 | 
						|
  UNION ALL
 | 
						|
  SELECT insertColName,selectColName,updateColname,'T_MUNKAUGYIADATOK' FROM fnGetFollowUpColumnMapping (@ExcludeInsertColumns,'T_MUNKAUGYIADATOK')
 | 
						|
 | 
						|
  END
 | 
						|
 | 
						|
  --====================================================== T_FELHASZNALO==================================================--
 | 
						|
  BEGIN
 | 
						|
  IF @ujAlkalmazottId IS NULL
 | 
						|
    BEGIN
 | 
						|
      SELECT @insertColList = ISNULL(@insertColList+','+insertColname,insertColname) FROM #columnMappings WHERE tableName IN ('T_FELHASZNALO')
 | 
						|
      SELECT @selectColList = ISNULL(@selectColList+','+selectColName,selectColName) FROM #columnMappings WHERE tableName IN ('T_FELHASZNALO')
 | 
						|
 | 
						|
      SET @partialSql = N'
 | 
						|
        INSERT INTO T_FELHASZNALO_OSSZES (
 | 
						|
          '+@insertColList+'
 | 
						|
        ) SELECT 
 | 
						|
          '+@selectColList+' 
 | 
						|
        FROM T_FELHASZNALO_OSSZES s 
 | 
						|
        WHERE s.ID = @alkalmazottId 
 | 
						|
          AND EXISTS (SELECT 1 FROM T_ALKALMAZOTT_OSSZES WHERE T_ALKALMAZOTT_OSSZES.ID = s.ID AND TOROLT = ''F'')
 | 
						|
          AND s.TOROLT = ''F''
 | 
						|
        SET @ujAlkalmazottId = SCOPE_IDENTITY()'
 | 
						|
    END
 | 
						|
    ELSE BEGIN      
 | 
						|
      SELECT 
 | 
						|
        @updateColList = ISNULL(@updateColList+','+insertColName+' = '+updateColname,insertColName+' = '+updateColname) 
 | 
						|
      FROM #columnMappings
 | 
						|
      WHERE tableName = 'T_FELHASZNALO' AND updateColname IS NOT NULL
 | 
						|
 | 
						|
      SET @partialSql =N'
 | 
						|
        UPDATE t SET
 | 
						|
          '+@updateColList+'
 | 
						|
        FROM T_FELHASZNALO_OSSZES t
 | 
						|
          INNER JOIN T_FELHASZNALO_OSSZES s ON s.ID = t.ELOZOTANEVIREKORDID
 | 
						|
        WHERE t.ID = @ujAlkalmazottId'
 | 
						|
    END
 | 
						|
    
 | 
						|
    SET @updateColList = NULL
 | 
						|
    SET @selectColList = NULL
 | 
						|
    SET @insertColList = NULL
 | 
						|
    --PRINT @partialSql
 | 
						|
    SET @fullSql = @partialSql
 | 
						|
  END
 | 
						|
  --====================================================== T_FELHASZNALO VÉGE=============================================--
 | 
						|
  
 | 
						|
  --====================================================== T_ALKALMAZOTT==================================================--
 | 
						|
  BEGIN 
 | 
						|
    IF NOT EXISTS (SELECT 1 FROM T_ALKALMAZOTT_OSSZES WHERE ID = @ujAlkalmazottId) BEGIN
 | 
						|
      INSERT INTO #columnMappings VALUES
 | 
						|
        ('ID','@ujAlkalmazottId',NULL,'T_ALKALMAZOTT')
 | 
						|
 | 
						|
      SELECT @insertColList = ISNULL(@insertColList+','+insertColname,insertColname) FROM #columnMappings WHERE tableName IN ('T_ALKALMAZOTT')
 | 
						|
      SELECT @selectColList = ISNULL(@selectColList+','+selectColName,selectColName) FROM #columnMappings WHERE tableName IN ('T_ALKALMAZOTT')
 | 
						|
 | 
						|
      SET @partialSql = N'
 | 
						|
        INSERT INTO T_ALKALMAZOTT_OSSZES (
 | 
						|
          '+@insertColList+'
 | 
						|
        ) SELECT 
 | 
						|
          '+@selectColList+'
 | 
						|
        FROM T_ALKALMAZOTT_OSSZES s 
 | 
						|
        WHERE s.C_ALTANEVID = @aktTanevId AND s.ID = @alkalmazottId'
 | 
						|
    END
 | 
						|
    ELSE BEGIN
 | 
						|
      SELECT 
 | 
						|
        @updateColList = ISNULL(@updateColList+','+insertColName+' = '+updateColname,insertColName+' = '+updateColname)
 | 
						|
      FROM #columnMappings
 | 
						|
      WHERE tableName = 'T_ALKALMAZOTT' AND updateColname IS NOT NULL
 | 
						|
       
 | 
						|
      SET @partialSql = N'
 | 
						|
        UPDATE t SET
 | 
						|
          '+@updateColList+'
 | 
						|
        FROM T_ALKALMAZOTT_OSSZES t
 | 
						|
          INNER JOIN T_ALKALMAZOTT_OSSZES s ON s.ID = t.ELOZOTANEVIREKORDID
 | 
						|
        WHERE t.ID = @ujAlkalmazottId'
 | 
						|
    END
 | 
						|
    
 | 
						|
    --PRINT @partialSql
 | 
						|
    SET @updateColList = NULL
 | 
						|
    SET @selectColList = NULL
 | 
						|
    SET @insertColList = NULL
 | 
						|
    SET @fullSql += @partialSql
 | 
						|
  END
 | 
						|
  --====================================================== T_ALKALMAZOTT VÉGE=============================================--
 | 
						|
  
 | 
						|
  --====================================================== T_MUNKAUGYIADATOK==============================================--
 | 
						|
  BEGIN 
 | 
						|
    IF NOT EXISTS (SELECT 1 FROM T_MUNKAUGYIADATOK_OSSZES WHERE C_ALKALMAZOTTID = @ujAlkalmazottId) BEGIN
 | 
						|
      
 | 
						|
      SELECT @insertColList = ISNULL(@insertColList+','+insertColname,insertColname) FROM #columnMappings WHERE tableName IN ('T_MUNKAUGYIADATOK')
 | 
						|
      SELECT @selectColList = ISNULL(@selectColList+','+selectColName,selectColName) FROM #columnMappings WHERE tableName IN ('T_MUNKAUGYIADATOK')
 | 
						|
 | 
						|
      SET @partialSql = N'
 | 
						|
        INSERT INTO T_MUNKAUGYIADATOK_OSSZES (
 | 
						|
          '+@insertColList+'
 | 
						|
        ) SELECT 
 | 
						|
          '+@selectColList+'
 | 
						|
        FROM T_MUNKAUGYIADATOK_OSSZES s 
 | 
						|
          INNER JOIN T_FELADATELLATASIHELY_OSSZES f ON f.ELOZOTANEVIREKORDID = s.C_FELADATELLATASIHELYID AND f.TOROLT=''F''
 | 
						|
        WHERE s.TOROLT = ''F'' AND s.C_ALKALMAZOTTID = @alkalmazottId'
 | 
						|
    END
 | 
						|
    ELSE
 | 
						|
    BEGIN
 | 
						|
      SELECT 
 | 
						|
        @updateColList = ISNULL(@updateColList+','+insertColName+' = '+updateColname,insertColName+' = '+updateColname) 
 | 
						|
      FROM #columnMappings
 | 
						|
      WHERE tableName = 'T_MUNKAUGYIADATOK' AND updateColname IS NOT NULL
 | 
						|
 | 
						|
      SET @partialSql = N'
 | 
						|
        UPDATE t SET
 | 
						|
          '+@updateColList+'
 | 
						|
        FROM T_MUNKAUGYIADATOK_OSSZES t
 | 
						|
          INNER JOIN T_MUNKAUGYIADATOK_OSSZES s ON s.ID = t.ELOZOTANEVIREKORDID
 | 
						|
          INNER JOIN T_FELADATELLATASIHELY_OSSZES f ON f.ELOZOTANEVIREKORDID = s.C_FELADATELLATASIHELYID AND f.TOROLT=''F''
 | 
						|
        WHERE t.C_ALKALMAZOTTID = @ujAlkalmazottId'
 | 
						|
    END
 | 
						|
    --PRINT @partialSql
 | 
						|
    SET @fullSql += @partialSql
 | 
						|
  END
 | 
						|
  --====================================================== T_MUNKAUGYIADATOK VÉGE=========================================--
 | 
						|
    
 | 
						|
  BEGIN --Cím, Email, Telefon
 | 
						|
    EXEC uspFollowUpFelhasznaloCim @intezmenyId,@aktTanevid,@kovetkezoTanevId,@alkalmazottId
 | 
						|
    EXEC uspFollowUpFelhasznaloEmail @intezmenyId,@aktTanevid,@kovetkezoTanevId,@alkalmazottId
 | 
						|
    EXEC uspFollowUpFelhasznaloTelefon @intezmenyId,@aktTanevid,@kovetkezoTanevId,@alkalmazottId
 | 
						|
  END
 | 
						|
 | 
						|
  EXEC sp_executesql 
 | 
						|
     @fullSql,N'
 | 
						|
     @alkalmazottId int
 | 
						|
    ,@intezmenyId int
 | 
						|
    ,@kovetkezoTanevId int
 | 
						|
    ,@aktTanevId int
 | 
						|
    ,@ujAlkalmazottId int'
 | 
						|
    ,@alkalmazottId = @alkalmazottId 
 | 
						|
    ,@intezmenyId = @intezmenyId 
 | 
						|
    ,@kovetkezoTanevId = @kovetkezoTanevId
 | 
						|
    ,@ujAlkalmazottId = @ujAlkalmazottId
 | 
						|
    ,@aktTanevId = @aktTanevId
 | 
						|
 | 
						|
  IF DB_NAME() LIKE '%KRETA[_]KLIK[_]%' BEGIN --sp_FollowUpAlkalmazottVegzettsegKK
 | 
						|
		EXEC uspFollowUpAlkalmazottVegzettsegKK
 | 
						|
			 @intezmenyId
 | 
						|
			,@aktTanevId
 | 
						|
			,@kovetkezoTanevId
 | 
						|
			,@alkalmazottId
 | 
						|
  END
 | 
						|
END |