﻿DROP PROCEDURE IF EXISTS sp_FollowUpMukodesiHely
GO

CREATE PROCEDURE sp_FollowUpMukodesiHely
	@intezmenyId int,
	@aktTanevId int,
	@kovetkezoTanevId int,
	@mukodesiHelyId int
AS
BEGIN

DECLARE @kovetkezoMukodesiHelyId int
       ,@ujKovetkezoMukodesiHelyId int
       ,@mukodesiHelyNev nvarchar(100)
       ,@isKovItemTorolt char(1)
       ,@mukodesiHelyKod nvarchar(3)

SELECT 
   @kovetkezoMukodesiHelyId = mh.ID
  ,@isKovItemTorolt = mh.TOROLT
FROM T_MUKODESIHELY_OSSZES mh
WHERE mh.C_INTEZMENYID = @intezmenyId
  AND mh.C_TANEVID = @kovetkezoTanevId
  AND mh.ELOZOTANEVIREKORDID = @mukodesiHelyId

SELECT 
   @mukodesiHelyNev = C_NEV
  ,@mukodesiHelyKod = C_MUKODESIHELYAZONOSITO 
FROM T_MUKODESIHELY_OSSZES WHERE ID = @mukodesiHelyId AND C_TANEVID=@aktTanevId


SELECT @ujKovetkezoMukodesiHelyId=ID from T_MUKODESIHELY_OSSZES WHERE TOROLT='F' AND C_TANEVID=@kovetkezoTanevId AND
  (
    (@mukodesiHelyNev=C_NEV AND ISNULL(@mukodesiHelyKod,0)=ISNULL(C_MUKODESIHELYAZONOSITO,0))
    OR
    (@mukodesiHelyNev=C_NEV AND (@mukodesiHelyKod IS NULL OR NOT EXISTS(SELECT 1 FROM T_MUKODESIHELY_OSSZES WHERE ISNULL(@mukodesiHelyKod,0)=ISNULL(C_MUKODESIHELYAZONOSITO,0) AND ISNULL(ELOZOTANEVIREKORDID,0)<>@mukodesiHelyId AND TOROLT='F' AND C_TANEVID=@kovetkezoTanevId)))
    OR
    (@mukodesiHelyKod=C_MUKODESIHELYAZONOSITO AND NOT EXISTS(SELECT 1 FROM T_MUKODESIHELY_OSSZES WHERE @mukodesiHelyNev=C_NEV AND ISNULL(ELOZOTANEVIREKORDID,0)<>@mukodesiHelyId AND TOROLT='F' AND C_TANEVID=@kovetkezoTanevId))
  )
AND ISNULL(ELOZOTANEVIREKORDID,0)<>@mukodesiHelyId

IF ISNULL(@kovetkezoMukodesiHelyId,0) <> @ujKovetkezoMukodesiHelyId BEGIN
  UPDATE T_MUKODESIHELY_OSSZES SET ELOZOTANEVIREKORDID = NULL WHERE ID = @kovetkezoMukodesiHelyId
  UPDATE T_MUKODESIHELY_OSSZES SET ELOZOTANEVIREKORDID = @mukodesiHelyId WHERE ID = @ujKovetkezoMukodesiHelyId
  SET @kovetkezoMukodesiHelyId=@ujKovetkezoMukodesiHelyId
END

IF (SELECT TOROLT FROM T_MUKODESIHELY_OSSZES WHERE ID = @mukodesiHelyId)='T' OR (SELECT TOROLT FROM T_MUKODESIHELY_OSSZES WHERE ELOZOTANEVIREKORDID = @mukodesiHelyId)='T' OR 
  EXISTS (SELECT 1 FROM T_MUKODESIHELY_OSSZES WHERE 
  ((C_NEV=@mukodesiHelyNev AND (ISNULL(C_MUKODESIHELYAZONOSITO,0)<>@mukodesiHelyKod OR @mukodesiHelyKod IS NULL)) 
OR (C_NEV<>@mukodesiHelyNev AND ISNULL(C_MUKODESIHELYAZONOSITO,0) = @mukodesiHelyKod))
 AND TOROLT='F' AND C_TANEVID=@kovetkezoTanevId AND ISNULL(ELOZOTANEVIREKORDID,0)<>@mukodesiHelyId)
BEGIN
	RETURN
END

IF (@kovetkezoMukodesiHelyId IS NULL)
BEGIN
	INSERT INTO T_MUKODESIHELY_OSSZES (
		 C_AJTO
		,C_EMAILCIM
		,C_EMELET
		,C_FAX
		,C_HAZSZAM
		,C_INTEZMENYADATOKID
		,C_INTEZMENYID
		,C_IRANYITOSZAM
		,C_KOZTERULETJELLEG
		,C_KOZTERULETNEV
		,C_MUKODESIHELYAZONOSITO
		,C_MUKODESIHELYTIPUSA
		,C_NEV
		,C_SZEKHELY
		,C_TAGINTEZMENY
		,C_TAGINTEZMENYIKOD
		,C_TANEVID
		,C_TELEFONSZAM
		,C_VAROS
		,C_VEZETONEVE
		,C_FUNKCIOTERULET
		,SERIAL
		,LASTCHANGED
		,CREATED
		,MODIFIER
		,CREATOR
		,ELOZOTANEVIREKORDID
    ) 
	SELECT 
		 t.C_AJTO AS C_AJTO
		,t.C_EMAILCIM AS C_EMAILCIM
		,t.C_EMELET AS C_EMELET
		,C_FAX AS C_FAX
		,t.C_HAZSZAM AS C_HAZSZAM
		,ia.ID AS C_INTEZMENYADATOKID
		,t.C_INTEZMENYID   AS C_INTEZMENYID
		,t.C_IRANYITOSZAM AS C_IRANYITOSZAM
		,t.C_KOZTERULETJELLEG AS C_KOZTERULETJELLEG
		,t.C_KOZTERULETNEV AS C_KOZTERULETNEV
		,C_MUKODESIHELYAZONOSITO AS C_MUKODESIHELYAZONOSITO
		,t.C_MUKODESIHELYTIPUSA AS C_MUKODESIHELYTIPUSA
		,t.C_NEV AS C_NEV
		,C_SZEKHELY AS C_SZEKHELY
		,C_TAGINTEZMENY AS C_TAGINTEZMENY
		,C_TAGINTEZMENYIKOD AS C_TAGINTEZMENYIKOD
		,@kovetkezoTanevId   AS C_TANEVID  
		,t.C_TELEFONSZAM AS C_TELEFONSZAM
		,t.C_VAROS AS C_VAROS
		,C_VEZETONEVE AS C_VEZETONEVE
		,C_FUNKCIOTERULET
		,0 AS SERIAL             
		,t.LASTCHANGED AS LASTCHANGED
		,t.LASTCHANGED AS CREATED
		,t.MODIFIER AS MODIFIER
		,t.MODIFIER AS CREATOR
		,t.ID AS ELOZOTANEVIREKORDID
    FROM T_MUKODESIHELY_OSSZES t 
		INNER JOIN T_INTEZMENYADATOK_OSSZES ia ON ia.ELOZOTANEVIREKORDID=t.C_INTEZMENYADATOKID AND ia.TOROLT='F'
	WHERE t.ID=@mukodesiHelyId
	  
END
ELSE
BEGIN
	UPDATE kovetkezo SET
		 kovetkezo.C_AJTO = aktiv.C_AJTO
		,kovetkezo.C_EMAILCIM = aktiv.C_EMAILCIM
		,kovetkezo.C_EMELET = aktiv.C_EMELET
		,kovetkezo.C_FAX = aktiv.C_FAX
		,kovetkezo.C_HAZSZAM = aktiv.C_HAZSZAM
		,kovetkezo.C_IRANYITOSZAM = aktiv.C_IRANYITOSZAM
		,kovetkezo.C_KOZTERULETJELLEG = aktiv.C_KOZTERULETJELLEG
		,kovetkezo.C_KOZTERULETNEV = aktiv.C_KOZTERULETNEV
		,kovetkezo.C_MUKODESIHELYAZONOSITO = aktiv.C_MUKODESIHELYAZONOSITO
		,kovetkezo.C_MUKODESIHELYTIPUSA = aktiv.C_MUKODESIHELYTIPUSA
		,kovetkezo.C_NEV = aktiv.C_NEV
		,kovetkezo.C_SZEKHELY = aktiv.C_SZEKHELY
		,kovetkezo.C_TAGINTEZMENY = aktiv.C_TAGINTEZMENY
		,kovetkezo.C_TAGINTEZMENYIKOD = aktiv.C_TAGINTEZMENYIKOD
		,kovetkezo.C_TELEFONSZAM = aktiv.C_TELEFONSZAM
		,kovetkezo.C_VAROS = aktiv.C_VAROS
		,kovetkezo.C_VEZETONEVE = aktiv.C_VEZETONEVE
		,kovetkezo.C_FUNKCIOTERULET = aktiv.C_FUNKCIOTERULET
		,kovetkezo.SERIAL += 1
		,kovetkezo.MODIFIER = aktiv.MODIFIER
		,kovetkezo.LASTCHANGED = aktiv.LASTCHANGED
	FROM T_MUKODESIHELY_OSSZES kovetkezo
		INNER JOIN T_MUKODESIHELY_OSSZES aktiv ON aktiv.ID = @mukodesiHelyId and aktiv.TOROLT='F' AND aktiv.ID=kovetkezo.ELOZOTANEVIREKORDID
	
END

END
GO