USE [Hubie]
GO
/****** Object:  StoredProcedure [dbo].[sp_VratiDozvoljeneRazlogeReklamacija]    Script Date: 09.02.2026 09:54:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER PROC [dbo].[sp_VratiDozvoljeneRazlogeReklamacija] (@sifra_preduzeca INT, @jezik_id INT, @kor_id INT, @guid_prijem UNIQUEIDENTIFIER, @fk_artikal INT = null, @fk_konfig INT = NULL) AS
BEGIN
	DECLARE @datum_prijema DATETIME, @danas DATETIME, @fk_prijem BIGINT, @fk_vsl_prijem INT, @razlika INT, @fk_oj INT, @fk_VOJ INT,@ptab_k INT, @br_dana_prijem INT,
	   @fk_rg INT, @fk_rg_nad INT, @ind INT, @cnt INT, @br_dana INT, @fk_konfigrg INT, @brdana_art INT, @sifra_VOJ INT
		
	IF OBJECT_ID('tempdb..#Razlozi45634534') IS NOT NULL DROP TABLE #Razlozi45634534
	CREATE TABLE #Razlozi45634534 (
		fk_razlog INT,		
		Sifra_razlog NVARCHAR(30),
		Naziv_razlog NVARCHAR(100),
		br_dana INT,
		Tip_razloga INT DEFAULT 0
	)
	
	
	
	SET @danas = dbo.fn_Datum(GETDATE())
	SELECT @ptab_k = dbo.fn_GetPtab(@sifra_preduzeca, 'ir_Konfiguracija')
			
	
	SELECT @fk_prijem = d.Pk_Id, 
		   @fk_vsl_prijem = d.Fk_VrstaDokument, 
		   @datum_prijema = d.Datum_Dokumenta,
		   @fk_oj = d2.fk_Id_fk_st_28_1
	FROM dbo.rt_DokumentGuid g (NOLOCK)
	INNER JOIN dbo.rt_Dokument d (NOLOCK) ON d.Pk_Id = g.Fk_Dokument
	INNER JOIN dbo.rt_Dokument_2 d2 (NOLOCK) ON d2.Fk_dokument = d.Pk_Id 
	WHERE g.MojGuid = @guid_prijem
	
	SELECT @fk_VOJ = moj.Fk_VrstaOrgJedinica, @sifra_VOJ = voj.Sifra
	FROM  dbo.m_OrgJedinica moj (NOLOCK) 
	INNER JOIN dbo.m_VrstaOrgJedinica voj (NOLOCK) ON voj.Pk_Id = moj.Fk_VrstaOrgJedinica
	WHERE moj.Pk_Id = @fk_oj
	
	SET @razlika = DATEDIFF(DAY, @datum_prijema, @danas)	
		
	IF (isnull(@fk_konfig,0) <= 0)
	BEGIN
		
		SELECT TOP 1 @Fk_Konfig = k.Pk_Id
		FROM dbo.ir_Konfiguracija k (NOLOCK) 
		WHERE k.Fk_St_823 = 8958 AND k.Neaktivnost = 0 AND k.P_Tab = @ptab_k
		AND k.Fk_Id = @fk_oj
		
		IF (@@ROWCOUNT <= 0)
		BEGIN			
			SELECT TOP 1  @Fk_Konfig = k.Pk_Id
			FROM dbo.ir_Konfiguracija k (NOLOCK) 
			WHERE k.Fk_St_823 = 8957 AND k.Neaktivnost = 0 AND k.P_Tab = @ptab_k
			AND k.Fk_Id = @fk_VOJ
			
				IF (@@ROWCOUNT <= 0)
				BEGIN		
					SELECT TOP 1 @Fk_Konfig = k.Pk_Id
					FROM dbo.ir_Konfiguracija k (NOLOCK)
					WHERE k.P_Tab = @ptab_k
					AND k.Neaktivnost = 0
					AND k.Fk_St_823 = 8956		 
				END
		END
				
		
	END
	
	IF (isnull(@fk_konfig,0) <= 0)
	BEGIN
		RAISERROR(N'Ne postoji konfiguracija za org. jedinicu prijema!',17,1)
		RETURN 1		
	END
		
	SELECT TOP 1 @br_dana_prijem = irp.BrojDana 
	FROM dbo.ir_KonfiguracijaPrijem irp (NOLOCK)
	WHERE irp.Fk_Konfiguracija = @fk_konfig
	AND irp.Neaktivnost = 0
	AND irp.Fk_VSL = @fk_vsl_prijem
		
	IF (@@ROWCOUNT <= 0)
	BEGIN
		RAISERROR(N'Prijem nije konfigurisan za tekuću org. jedinicu prijema!',17,1)
		RETURN 1		
	END
	
	IF (@razlika > @br_dana_prijem)
	BEGIN
		RAISERROR(N'Istekao je rok za reklamaciju ovog prijema!',17,1)
		RETURN 1	
	END
	
	SELECT @fk_rg = a.Fk_RobnaGrupa 
	FROM dbo.m_Artikal a (NOLOCK)
	WHERE a.Pk_Id = @fk_artikal 
	
	SET @ind = @@ROWCOUNT
	SET @cnt = 0
	SET @br_dana = null	
	
	WHILE (@ind > 0 AND @cnt < 10)
	BEGIN
		SET @cnt = @cnt + 1
		
		SELECT @br_dana = krg.BrojDana, @fk_konfigrg = krg.Pk_Id
		FROM dbo.ir_KonfiguracijaRG krg (NOLOCK)
		WHERE krg.Fk_Konfiguracija = @fk_konfig
		AND krg.Neaktivnost = 0
		AND krg.Fk_RG = @fk_rg
		
		IF (@br_dana IS NULL)
		BEGIN
			SELECT @fk_rg_nad = rg.Nadredjen 
			FROM dbo.m_RobnaGrupaArtikal rg (NOLOCK)
			WHERE rg.Pk_Id = @fk_rg
			
			IF (@fk_rg_nad > 0)
				BEGIN
					SET @fk_rg = @fk_rg_nad
					SET @ind = 1
				END
			ELSE 
				SET @ind = 0
			
			
		END
		ELSE 
		SET @ind = 0
		
	END
	
	IF (@br_dana IS NULL)
	BEGIN
		SELECT @br_dana = krg.BrojDana, @fk_konfigrg = krg.Pk_Id
		FROM dbo.ir_KonfiguracijaRG krg (NOLOCK)
		WHERE krg.Fk_Konfiguracija = @fk_konfig
		AND krg.Neaktivnost = 0
		AND krg.Fk_RG IS NULL
		
	END
	
	IF (@br_dana IS NULL)
	BEGIN
		SET @br_dana = @br_dana_prijem
	END
	
	
	DECLARE @fk_St_484 INT
	
	IF (@sifra_VOJ = 27) 
	SET @fk_St_484 = 3031
	ELSE 
		SET @fk_St_484 = 3032
	
	
	
	
	INSERT INTO #Razlozi45634534
	(
		fk_razlog,
		Sifra_razlog,
		Naziv_razlog
	)
	SELECT rr.Pk_Id, rtrim(rr.Sifra), rr.Naziv
	FROM dbo.m_RazlogReklamacije rr (NOLOCK) 
	WHERE rr.S_Neaktivan = 0
	AND rr.Fk_ST_448 =  2487
	AND rr.Fk_ST_484 = @fk_St_484
	
	
	
	UPDATE x
	SET x.br_dana = @br_dana
	FROM #Razlozi45634534 x 
	
	IF (@fk_konfigrg > 0)
	BEGIN
		--- redosled od najmanje do najvise prioritetnog izuzetka
		--- artikal - null - br. dana
		--- null - razlog - br. dana
		--- artikal - razlog - br. dana
		
		
		SELECT TOP 1 @brdana_art = i.BrojDana
		FROM dbo.ir_KonfiguracijaRG_Izuzetak i (NOLOCK)
		WHERE i.Fk_KonfiguracijaRG = @fk_konfigrg
		AND i.Neaktivnost = 0
		AND i.Fk_Artikal = @fk_artikal
		
		IF (@@ROWCOUNT > 0)
		BEGIN
			UPDATE x 
			SET x.br_dana = @brdana_art
			FROM #Razlozi45634534 x 
		END
		
		UPDATE x 
		SET br_dana = i.BrojDana
		FROM #Razlozi45634534 x 
		INNER JOIN dbo.ir_KonfiguracijaRG_Izuzetak i (NOLOCK) ON i.Fk_Razlog = x.fk_razlog AND i.Fk_KonfiguracijaRG = @fk_konfigrg AND i.Neaktivnost = 0 AND (i.Fk_Artikal IS NULL) 
		
		UPDATE x 
		SET br_dana = i.BrojDana
		FROM #Razlozi45634534 x 
		INNER JOIN dbo.ir_KonfiguracijaRG_Izuzetak i (NOLOCK) ON i.Fk_Razlog = x.fk_razlog AND i.Fk_KonfiguracijaRG = @fk_konfigrg AND i.Neaktivnost = 0 AND i.Fk_Artikal = @fk_artikal
		
				
	END
	
	
	
	DELETE x 	
	FROM #Razlozi45634534 x 
	WHERE @razlika > x.br_dana 
	
	--- za sada fixni razlog koji dopusta unos reklamiranog vise od primljenog
	UPDATE x 
	SET x.Tip_razloga = 1
	FROM #Razlozi45634534 x 
	WHERE x.fk_razlog = 2
	
	
	
	
	SELECT fk_razlog, Sifra_razlog, Naziv_razlog , Tip_razloga
	 FROM #Razlozi45634534
	
	
	
	
END 
