﻿DROP PROCEDURE IF EXISTS uspFollowupRendszerBeallitas

GO

CREATE PROCEDURE uspFollowupRendszerBeallitas 
   @intezmenyId int
  ,@aktTanevId int
  ,@kovetkezoTanevId int
  ,@beallitasId int  
AS BEGIN
  SET NOCOUNT ON;

  IF NOT EXISTS (SELECT 1 from T_TANEV where ID = @kovetkezoTanevId and C_KOVETKEZO = 'T' and C_AKTIVALVA is null and C_ISKIVALASZTHATO = 'T')
    BEGIN
      RETURN;
    END

  DECLARE
     @updateColList nvarchar(max)
    ,@sql nvarchar(max)
  
  SELECT 
    @updateColList = ISNULL(@updateColList+','+insertColName+' = '+updateColname,insertColName+' = '+updateColname)
  FROM fnGetFollowUpColumnMapping ('','T_RENDSZERBEALLITAS')
  WHERE updateColname IS NOT NULL

  SET @sql = N'
    UPDATE t SET
      '+@updateColList+'
    FROM T_RENDSZERBEALLITAS_OSSZES t
      INNER JOIN T_RENDSZERBEALLITAS_OSSZES s ON s.ID = @beallitasId AND s.ID = t.ELOZOTANEVIREKORDID'
  
  PRINT @sql
  EXEC sp_executesql 
     @sql,N'
     @intezmenyId int
    ,@aktTanevId int
    ,@kovetkezoTanevId int
    ,@beallitasId int'
    ,@intezmenyId = @intezmenyId 
    ,@aktTanevId = @aktTanevId 
    ,@kovetkezoTanevId = @kovetkezoTanevId 
    ,@beallitasId = @beallitasId 

  -- Dátum típusú rendszerbeállításoknál az alapértelmezett beállításnál a dátumokat a tanév első és utolsó napja közé módosítjuk
  IF EXISTS (
    SELECT 1 
    FROM T_RENDSZERBEALLITAS_OSSZES rbk
      INNER JOIN T_RENDSZERBEALLITAS_OSSZES rba ON rba.ID = @beallitasId 
        AND rba.ID = rbk.ELOZOTANEVIREKORDID 
        AND rba.C_ERTEKTIPUS = 1696
        AND rba.C_BEALLITASTIPUS <> 3082
        AND rba.TOROLT = 'F'
    WHERE rbk.TOROLT = 'F'
  )
  BEGIN
    DECLARE @rbDatum datetime
      ,@rbID int

    SELECT @rbID = rbk.ID, @rbDatum = CAST(JSON_VALUE(rbk.C_ERTEK, '$.Date') AS datetime)
    FROM T_RENDSZERBEALLITAS_OSSZES rbk
      INNER JOIN T_RENDSZERBEALLITAS_OSSZES rba ON rba.ID = @beallitasId 
        AND rba.ID = rbk.ELOZOTANEVIREKORDID
        AND rba.C_ERTEKTIPUS = 1696
        AND rba.TOROLT = 'F'
    WHERE rbk.TOROLT = 'F'

    UPDATE rbk SET
       rbk.C_ERTEK = JSON_MODIFY(rbk.C_ERTEK, '$.Date', CONVERT(nvarchar, nn.C_NAPDATUMA, 126))
      ,rbk.SERIAL = rbk.SERIAL + 1
      ,rbk.MODIFIER = rba.MODIFIER
      ,rbk.LASTCHANGED = rba.LASTCHANGED
    FROM T_RENDSZERBEALLITAS_OSSZES rbk
    INNER JOIN T_RENDSZERBEALLITAS_OSSZES rba ON rba.ID = @beallitasId 
        AND rba.ID = rbk.ELOZOTANEVIREKORDID
        AND rba.TOROLT = 'F'
    INNER JOIN T_NAPTARINAP_OSSZES nn ON nn.C_TANEVID = rbk.C_TANEVID AND nn.TOROLT = 'F'
      AND DATEPART(month, nn.C_NAPDATUMA) = DATEPART(month, @rbDatum)
      AND DATEPART(day, nn.C_NAPDATUMA) = DATEPART(day, @rbDatum)
    WHERE rbk.ID = @rbID
      AND rbk.TOROLT = 'F'
      AND @rbDatum <> nn.C_NAPDATUMA
  END
END
GO
