USE [Hubie]
GO

/****** Object:  StoredProcedure [dbo].[sp_PageFakturisanje_AZU]    Script Date: 02.02.2026 14:25:01 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[sp_PageFakturisanje_AZU]  
				 @sifra_preduzeca int,
				 @kor_id int,
				 @jezik_id int = 4,
				 @Datum_od datetime, 
				 @Datum_do datetime,
				 @OrganizacioneJedinice dbo.tabela_0 READONLY,
				 @PoslovniPartneri dbo.tabela_0 readonly,
				 @StatusiEDI dbo.tabela_0 READONLY,
				 @Fk_St_217 int,
				 @Fk_PoslovnaGodina int,
				 @id bigint = 0
AS
BEGIN
	IF Object_id('tempdb..#OutPut_Fakture143143143') IS NOT NULL DROP TABLE #OutPut_Fakture143143143
	CREATE TABLE #OutPut_Fakture143143143
	(
		[Pk_Id] [smallint] Identity (1,1),
		[Id] bigint,
		Fk_OJ int, 
		Sifra_OJ int,
		Naziv_OJ nvarchar(100),

		BrojFakture bigint,
		DatumFakture datetime,	

		Fk_Partnera int,
		sifraPartner int,
		nazivPartner nvarchar(100),

		Vrednost decimal(18,2),

		Fk_VSL int,
		Sifra_Alfa_VSL nvarchar(5),
		Naziv_VSL nvarchar(100),

		Broj_Dokumenta bigint,
		Datum_Dokumenta datetime,	

		Fk_Status_Hubie int,
		Sifra_Status_Hubie int,
		Naziv_Status_Hubie nvarchar(100),

		Fk_Status_SEF int,
		Sifra_Status_SEF int,
		Naziv_Status_SEF nvarchar(100),
		Boja_Status_SEF NVARCHAR(100),

		[Neaktivan] BIT DEFAULT 0,
		DaliLikvidiran bit not null default 0,
		[Stornirana] BIT,
		
		Fk_st_217 int,
		naziv_Fk_St_217 nvarchar(100),
		

		DatumPrometaDobara datetime,
		RokPlacanja datetime,
		[PozivNaBroj] varchar (50),

		Fk_Fakturisao int,
		[sifraFakturisao] int,
		[nazivFakturisao] nvarchar(100),

		Fk_OdgovornoLice int,
		[sifraOdgovornoLice] int,
		[nazivOdgovornoLice] nvarchar(100),

		Fk_MestoPrometaDobara int,
		[SifraMestoPrometaDobara] int,
		NazivMestoPrometaDobara nvarchar(100),

		[Fk_ZiroRacunMoj] int,
		[ZiroRacunMoj] nvarchar(40),

		[Fk_St_125] int,
		[naziv_Fk_St_125] nvarchar(200),
		[Fk_St_165] int,
		[naziv_Fk_St_165] nvarchar(200),
		Fk_DokumentReferenca bigint,

		[Fk_Valuta] int,

		BrojDanaValute int,
		[Opis] nvarchar(2000),
		JBKJS nvarchar(10),
		[ImaFinasijskuKorekciju] BIT default 0,
		BrojNarudzbenice nvarchar(200),
		SpremnoZaFakturisanje BIT default 0,

		[K_Ins] int,
	    [K_Upd]int,
	    KorisnikUneo nvarchar(151),
	    [D_Ins] datetime,
	    [D_Upd] datetime,
	    KorisnikIzmenio nvarchar(151)
	) 

	declare @ptabOJ int,
			@Dokumenta dbo.tabela_0,
			@Pk_Guid_ZaPresipanje uniqueidentifier

	select @ptabOJ=dbo.fn_GetPtab(1,'m_orgjedinica')

	IF OBJECT_ID('tempdb..#OrganizacioneJediniceTempFLT143143') IS NOT NULL DROP TABLE #OrganizacioneJediniceTempFLT143143
	CREATE TABLE #OrganizacioneJediniceTempFLT143143
	(
		t0_bigint_0 int
	)

	IF OBJECT_ID('tempdb..#OrganizacioneJediniceTemp143143') IS NOT NULL DROP TABLE #OrganizacioneJediniceTemp143143
	CREATE TABLE #OrganizacioneJediniceTemp143143
	(
		t0_bigint_0 int
	)

	IF OBJECT_ID('tempdb..#PoslovniPartneriTemp143143') IS NOT NULL DROP TABLE #PoslovniPartneriTemp143143
	CREATE TABLE #PoslovniPartneriTemp143143
	(
		t0_bigint_0 int
	)

	IF OBJECT_ID('tempdb..#VrsteRobnihDokumenataTemp143143') IS NOT NULL DROP TABLE #VrsteRobnihDokumenataTemp143143
	CREATE TABLE #VrsteRobnihDokumenataTemp143143
	(
		t0_bigint_0 int,
		DaLiKorekcija bit default 0
	)

	IF OBJECT_ID('tempdb..#StatusiEDITemp143143') IS NOT NULL DROP TABLE #StatusiEDITemp143143
	CREATE TABLE #StatusiEDITemp143143
	(
		t0_bigint_0 int
	)

	declare @SS_3214 int,
			@datum datetime,
			@Query nvarchar(max),
			@IMA_PRAVO_SVE_OJ INT

	select  @SS_3214 = HUBIE.dbo.fn_GetStaticneStavkeKonfiguracijaString(3214),
			@datum = dbo.fn_datum( GETDATE() ),
			@IMA_PRAVO_SVE_OJ=[dbo].[fn_GetKorisnikImaPravo] (@sifra_preduzeca, @kor_id, 271)

	------------------------------------------------------------SKUPLANJE OJ------------------------------------------------------------------
	INSERT INTO #OrganizacioneJediniceTempFLT143143(t0_bigint_0)
	SELECT DISTINCT t0_bigint_0
	FROM @OrganizacioneJedinice
	where t0_bigint_0>0

	--if(@@ROWCOUNT<=0)
	--begin
		if(@SS_3214 in (1,2))
		begin
			INSERT INTO #OrganizacioneJediniceTemp143143(t0_bigint_0)
			select OJ.pk_id
			from hubie.dbo.s_KorisnikAplOrgJedinica KOA
			inner join hubie.dbo.m_orgjedinica OJ on OJ.pk_id = KOA.fk_OrgJed							
			where KOA.fk_korisnikApl = @Kor_Id
			  and KOA.Neaktivnost = 0	
			  and OJ.s_neaktivan = 0 
			  and OJ.p_tab = @ptabOJ

			IF @SS_3214 = '2'
			begin
				DELETE DT
				FROM #OrganizacioneJediniceTemp143143 DT
				inner join hubie.dbo.m_orgJedinica OJ on OJ.pk_id = DT.t0_bigint_0
				where isnull(OJ.Blokiran,0) = 1		
			end
			else
			begin
				DELETE DT 
				FROM #OrganizacioneJediniceTemp143143 DT
				inner join hubie.dbo.m_orgJedinica OJ on OJ.pk_id = DT.t0_bigint_0
				inner join Hubie.dbo.m_orgjedinicaDatumVazenja OJDV on OJDV.fk_organizacionajedinica = OJ.pk_id and OJDV.neaktivnost = 0
				where isnull(OJ.Blokiran,0) = 1 or (NOT(@datum BETWEEN OJDV.DatumVazenjaOd AND OJDV.DatumVazenjaDo)) or (OJDV.DatumVazenjaOd IS NULL AND OJDV.DatumVazenjaDo IS NULL)
			end
		end
		else
		begin
			IF (@IMA_PRAVO_SVE_OJ > 0)
			BEGIN
				INSERT INTO #OrganizacioneJediniceTemp143143 (t0_bigint_0)
				select OJ.pk_id
				from hubie.dbo.m_orgjedinica OJ
				where OJ.s_neaktivan = 0 and OJ.p_tab = @ptabOJ
			END
			ELSE
			BEGIN
				INSERT INTO #OrganizacioneJediniceTemp143143 (t0_bigint_0)
				Select OJ.Pk_Id
				from Hubie.dbo.fn_VratiSveOrgJedKorisnik(@Sifra_Preduzeca,@Kor_Id) F1
	 			inner join m_OrgJedinica OJ on (OJ.Pk_Id = F1.Fk_OrgJed)					
			END
		end
	--end
------------------------------------------------------------SKUPLANJE OJ------------------------------------------------------------------

	insert into #PoslovniPartneriTemp143143(t0_bigint_0)
	select t0_bigint_0
	from @PoslovniPartneri

	insert into #StatusiEDITemp143143(t0_bigint_0)
	select t0_bigint_0
	from @StatusiEDI

	set @query='SELECT f.[pk_id], 
		   f.[BrojFakture], 
		   f.[Fk_Partner], 
		   p.[sifra], 
		   pn.[naziv],
		   f.[DatumFakture], 
		   f.[Fk_St_124],
		   f.[Fk_St_124],
		   ssu.naziv_stavke,
		   f.VrednostFakture,
		   oj.Sifra, 
		   Ojn.naziv,
		   ISNULL(F.Stornirana, 0), 
		   f.[K_Ins], 
		   f.[K_Upd], 
		   f.[D_Ins], 
		   f.[D_Upd],
		   IsNull(OJ.Pk_Id,0),
		   f.[Fk_St_217],
		   fkst217.naziv_stavke,
		   f.DatumPrometa,
		   f.RokPlacanja,
		   f.[PozivNaBroj],
		   rf.pk_id,
		   rf.sifra, 
		   rfn.prezime+ '' '' + rfn.Ime,
		   rol.pk_id,
		   rol.sifra, 
		   roln.prezime+ '' '' + roln.Ime,
		   m.Pk_id,
		   m.sifra,
		   nu.Naziv,
		   f.Fk_St_125,
		   f.Fk_St_165,
		   f.Fk_ZiroRacunMoj,
		   pzr.[Ziro_Racun],
		   ho.Fk_Status,
		   se.StatusDisplayName,
		   se.DodatniPodatakSTRING1,
		   f.[FK_Valuta],
		   isnull(fn.[Opis],'''')
	FROM [HUBIE].[dbo].p_Faktura F
	left outer join [HUBIE].[dbo].p_Faktura_u fn on fn.FK_Faktura = f.pk_id
	inner join [HUBIE].[dbo].m_Partner p on p.pk_id = f.Fk_Partner
	inner join [HUBIE].[dbo].m_Partner_u pn on pn.fk_partner = p.pk_id and pn.jezik_id ='+ ltrim(@jezik_id)+'
	left outer join [HUBIE].[dbo].m_radnik rf on rf.pk_id = f.[Fakturisao]
	left outer join [HUBIE].[dbo].m_radnik_u rfn on rfn.fk_radnik = rf.pk_id and rfn.jezik_id = '+ ltrim(@jezik_id)+'
	left outer join [HUBIE].[dbo].m_radnik rol on rol.pk_id = f.[OdgovornoLice]
	left outer join [HUBIE].[dbo].m_radnik_u roln on roln.fk_radnik = rol.pk_id and roln.jezik_id = '+ ltrim(@jezik_id)+'
	left outer join [HUBIE].[dbo].m_mesto m on m.pk_id = f.Fk_MestoPrometa
	left outer join [HUBIE].[dbo].m_mesto_u NU on NU.fk_mesto = m.pk_id and NU.jezik_id = '+ ltrim(@jezik_id)+'
	left outer join [HUBIE].[dbo].m_OrgJedinica OJ on OJ.pk_id = f.Fk_OrgJed
	left outer join [HUBIE].[dbo].m_OrgJedinica_u OJN on OJN.fk_orgjed = OJ.pk_id and OJN.jezik_id = '+ ltrim(@jezik_id)+'
	inner join [HUBIE].[dbo].m_PartnerZiroRacun pzr on pzr.pk_id = f.[Fk_ZiroRacunMoj]
	left outer join [HUBIE].[dbo].[p_FakturaCK] FCK on FCK.Fk_Faktura = F.pk_id AND FCK.Neaktivnost = 0
	left outer JOIN [Hubie].[dbo].[m_OstaleAnalitikeStavkeJezik] OASJ ON OASJ.PK_ID = FCK.[Fk_Projekat]
	left outer JOIN [Hubie].[dbo].[m_Naziv_u] N ON N.FK_ID = FCK.[Fk_Projekat] AND N.JEZIK_ID = '+ ltrim(@jezik_id)+' 
	left outer JOIN [Hubie].[dbo].[m_Partner] PP ON PP.PK_ID = FCK.[Fk_Partner]
	left outer JOIN [Hubie].[dbo].[m_Partner_u] PPN ON PPN.FK_Partner = FCK.[Fk_Partner] AND PPN.JEZIK_ID = '+ ltrim(@jezik_id)+'
	left outer join [Hubie].[dbo].[s_staticnestavkejezik] ssu on f.[Fk_St_124]=ssu.fk_stat_stavke and ssu.jezik_id = '+ ltrim(@jezik_id)+'
	left outer join [Hubie].[dbo].[s_staticnestavkejezik] fkst217 on f.[Fk_St_217]=fkst217.fk_stat_stavke and fkst217.jezik_id ='+ ltrim(@jezik_id)+'
	left JOIN dbo.p_FakturaEDI fe (NOLOCK) ON fe.Fk_Faktura = f.pk_id AND fe.NacinEksporta = 7592 
	left JOIN hubie_edi.dbo.eDokument_Header_OUT ho (NOLOCK) ON ho.Pk_Id = fe.ID_HubieEDI_Zaglavlje AND ho.Neaktivnost = 0
	left JOIN Hubie_EDI.dbo.s_EdiStatusi se (NOLOCK) ON se.pk_id = ho.Fk_Status
	'

	if exists(select top 1 * from #OrganizacioneJediniceTemp143143)
	begin
		set @Query=@Query+' join #OrganizacioneJediniceTemp143143 otmp on f.Fk_OrgJed=otmp.t0_bigint_0
		'
	end

	if exists(select top 1 * from #OrganizacioneJediniceTempFLT143143)
	begin
		set @Query=@Query+' join #OrganizacioneJediniceTempFLT143143 otmpflt on f.Fk_OrgJed=otmpflt.t0_bigint_0
		'
	end

	if exists(select top 1 * from #PoslovniPartneriTemp143143)
	begin
		set @Query=@Query+' join #PoslovniPartneriTemp143143 ptmp on f.Fk_Partner=ptmp.t0_bigint_0
		'
	end

	if exists(select top 1 * from #StatusiEDITemp143143)
	begin
		set @Query=@Query+' join #StatusiEDITemp143143 stmp on se.pk_id=stmp.t0_bigint_0
		'
	end

	set @query=@query+'WHERE  
		f.Fk_PoslovnaGodina = '+ltrim(@fk_poslovnaGodina)+'
		'
	if(isnull(@datum_od,'')<>'' and isnull(@datum_od,'')<>'')
	begin
		set @query=@query+'and f.DatumFakture BETWEEN '''+ convert(nvarchar,@datum_od,120)+''' AND '''+ convert(nvarchar,@datum_do,120)+'''
		'
	end

	set @query=@query+'and f.Neaktivnost=0
		'
	if(isnull(@id,0)<>0)
	begin
		set @query=@query+'and f.Pk_id='+ltrim(@id)+'
		'
	end	
	
	if(isnull(@Fk_St_217,0)>0)
	begin
		set @query=@query+'and f.[Fk_St_217]='+ltrim(@Fk_St_217)+'
		'
	end

	Insert into #OutPut_Fakture143143143
				(Id, 
				 BrojFakture, 
				 Fk_Partnera, 
				 sifraPartner, 
				 nazivPartner,
	             DatumFakture, 
				 Fk_Status_Hubie, 
				 Sifra_Status_Hubie,
				 Naziv_Status_Hubie, 
	             Vrednost, 
	             Sifra_OJ, 
				 Naziv_OJ, 
				 Stornirana,
	             K_Ins, 
				 K_Upd, 
				 D_Ins, 
				 D_Upd, 
	             Fk_OJ,
				 Fk_st_217,
				 naziv_Fk_St_217,
				 DatumPrometaDobara,
				 RokPlacanja,
				 PozivNaBroj,
				 Fk_Fakturisao,
				 sifraFakturisao,
				 nazivFakturisao,
				 Fk_OdgovornoLice,
				 sifraOdgovornoLice,
				 nazivOdgovornoLice,
				 Fk_MestoPrometaDobara,
				 SifraMestoPrometaDobara,
				 NazivMestoPrometaDobara,
				 Fk_St_125,
				 Fk_St_165,
				 Fk_ZiroRacunMoj,
				 ZiroRacunMoj,
				 Fk_Status_SEF,
				 Naziv_Status_SEF,
				 Boja_Status_SEF,
				 Fk_Valuta,
				 Opis
				 ) 
	exec(@query)

	IF (@SS_3214 in ('1', '2'))
	BEGIN	
		IF @SS_3214 = '2'
		BEGIN
			UPDATE F
			SET	Neaktivan = moj.[Blokiran]
			FROM #OutPut_Fakture143143143 F
			INNER JOIN hubie.dbo.m_OrgJedinica moj ON moj.Pk_Id = F.Fk_OJ
		END
		ELSE
		BEGIN
			UPDATE F
			SET	Neaktivan = CASE WHEN moj.[Blokiran] = 1 or (NOT(@datum BETWEEN DatumVazenjaOd AND DatumVazenjaDo)) or (DatumVazenjaOd IS NULL AND DatumVazenjaDo IS NULL) THEN 1 ELSE 0 END
			FROM #OutPut_Fakture143143143 F
			INNER JOIN hubie.dbo.m_OrgJedinica moj ON moj.Pk_Id = F.Fk_OJ
			INNER JOIN hubie.dbo.m_orgJedinicaDatumVazenja DV ON DV.fk_organizacionajedinica = moj.Pk_Id and DV.neaktivnost = 0
		END
	END	

	UPDATE x 
	SET Fk_Status_SEF = ho.Fk_Status,
		Naziv_Status_SEF = se.StatusDisplayName,
		Boja_Status_SEF = se.DodatniPodatakSTRING1
	FROM #OutPut_Fakture143143143 x 
	INNER JOIN dbo.p_FakturaEDI fe (NOLOCK) ON fe.Fk_Faktura = x.Id AND fe.NacinEksporta = 7592 
	INNER JOIN hubie_edi.dbo.eDokument_Header_OUT ho (NOLOCK) ON ho.Pk_Id = fe.ID_HubieEDI_Zaglavlje AND ho.Neaktivnost = 0
	INNER JOIN Hubie_EDI.dbo.s_EdiStatusi se (NOLOCK) ON se.pk_id = ho.Fk_Status

	UPDATE x 
	SET KorisnikUneo = KI.Prezime + ' ' + KI.Ime,
		KorisnikIzmenio = KU.Prezime + ' ' + KU.Ime
	FROM #OutPut_Fakture143143143 x 
	LEFT OUTER JOIN dbo.s_KorisnikApl KI (NOLOCK) on (x.K_Ins = KI.Pk_Id)
	LEFT OUTER JOIN dbo.s_KorisnikApl KU (NOLOCK) on (x.K_Upd = KU.Pk_Id)

	UPDATE x 
	SET DaliLikvidiran = 1
	FROM #OutPut_Fakture143143143 x 
	INNER JOIN dbo.p_FakturaDodatno d (NOLOCK) ON d.Fk_Faktura = x.Id AND d.Fk_St_655 = 5912 AND ISNULL(d.Podatak,'') = '1'

	UPDATE x 
	SET Fk_DokumentReferenca = Fk_Dokument
	FROM #OutPut_Fakture143143143 x 
	join p_FakturaDokument fd on x.Id=fd.Fk_Faktura

	UPDATE x 
	SET BrojDanaValute = ABS(DATEDIFF(day,x.RokPlacanja,x.DatumFakture))
	FROM #OutPut_Fakture143143143 x 

	UPDATE x
	SET x.naziv_Fk_St_125=SJ.Naziv_Stavke
	FROM #OutPut_Fakture143143143 x 
	JOIN s_StaticneStavkeJezik SJ ON X.Fk_St_125=SJ.Fk_Stat_Stavke AND SJ.Jezik_Id=@jezik_id AND SJ.S_Neaktivan=0

	UPDATE x
	SET x.naziv_Fk_St_165=SJ.Naziv_Stavke
	FROM #OutPut_Fakture143143143 x 
	JOIN s_StaticneStavkeJezik SJ ON X.Fk_St_165=SJ.Fk_Stat_Stavke AND SJ.Jezik_Id=@jezik_id AND SJ.S_Neaktivan=0

	UPDATE X 
	SET X.JBKJS = isnull(pp.Podatak,'')		
	FROM #OutPut_Fakture143143143 X
	INNER JOIN hubie.dbo.m_PartnerPodatak pp on x.Fk_Partnera = pp.Fk_Partner 
    where pp.Fk_st_6 = 5789

	UPDATE X
	SET X.Fk_VSL=D.Fk_VrstaDokument,
		X.Sifra_Alfa_VSL=VD.Sifra_Alfa,
		X.Naziv_VSL=VDU.Naziv_Dokumenta
	FROM #OutPut_Fakture143143143 X
	JOIN rt_Dokument D ON X.Fk_DokumentReferenca=D.Pk_Id AND D.Neaktivnost=0
	JOIN s_VrstaDokument VD ON D.Fk_VrstaDokument=VD.Pk_Id
	JOIN s_VrstaDokument_u VDU ON VDU.Fk_VrstaDokument=VD.Pk_Id AND VDU.Jezik_Id=@jezik_id

	UPDATE X
	SET X.ImaFinasijskuKorekciju=1
	FROM #OutPut_Fakture143143143 X
	JOIN Hubie.dbo.fn_VratiKonfiguracijuOtpremnicaKorekcijaFaktura (@Sifra_Preduzeca) F1 ON X.Fk_VSL=F1.Fk_VrstaDokument_Otpremnica
	JOIN rt_Dokument_2 D2 ON D2.fk_Veza_dok1=X.Fk_DokumentReferenca 
	JOIN rt_Dokument D ON D.Pk_Id = D2.Fk_dokument
	where D.Neaktivnost = 0 
	AND D.Storniran = 0 
	AND D.Fk_VrstaDokument = F1.Fk_VrstaDokument_FinKorekcijaNabavnogDela 

	UPDATE X 
	set X.BrojNarudzbenice = isnull(fp.Opis,'')		
	from #OutPut_Fakture143143143 X
	  inner join hubie.dbo.p_FakturaPodatak fp (nolock) on X.ID = fp.fk_Faktura and fp.neaktivnost = 0
    where fp.Fk_st_494 = 8123
	----------------------------------SPREMNOST ZA FAKTURISANJE----------------------------------------------------------
	insert into @Dokumenta(t0_bigint_0)
	Select Fk_DokumentReferenca from #OutPut_Fakture143143143
	Set @Pk_Guid_ZaPresipanje = newid()
	exec sp_VratiSpremnostDokumenataZaFakturisanje @Sifra_Preduzeca = @Sifra_Preduzeca,
																		  @Jezik_Id = @Jezik_Id,
																		  @Kor_Id = 1,
																		  @Dokumenta = @Dokumenta,
																		  @DodatniPodatak = null,
																		  @DodatniPodatak1 = null,
																		  @DodatniPodatak2 = null,
																		  @Pk_Guid_ZaPresipanje = @Pk_Guid_ZaPresipanje,
																		  @DaliSelect = 0	

	Update DD
	Set SpremnoZaFakturisanje = case when P.PodatakBigint2 > 0 then 1 else
								case when P.PodatakString1 = '4' then 2 else 0 end
								end 
	from #OutPut_Fakture143143143 DD
	inner join z_Presipanje P (nolock) on (DD.Fk_DokumentReferenca = P.PodatakBigint1)
	where P.Pk_Guid = @Pk_Guid_ZaPresipanje
			  
	Delete z_Presipanje where Pk_Guid = @Pk_Guid_ZaPresipanje
	----------------------------------SPREMNOST ZA FAKTURISANJE----------------------------------------------------------

	Select * FROM #OutPut_Fakture143143143
	order by BrojFakture desc

END
GO

