USE [Hubie]
GO
/****** Object:  StoredProcedure [dbo].[sp_Dok6_InsertKorekcijeOtpremnice]    Script Date: 02.02.2026 12:24:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_Dok6_InsertKorekcijeOtpremnice] (@Sifra_Preduzeca int = 1,@Jezik_Id int = 4,@Kor_Id int,@Fk_DokumentOtpremnice bigint,@Komentar nvarchar(1000),
	@TabelaStavke dbo.tabela_0 readonly,@DodatniPodatak nvarchar(100) = null,@DodatniPodatak1 nvarchar(100) = null,@DodatniPodatak2 nvarchar(100) = null,
	@Fk_DOkument_OUT bigint = null output,@Fk_DOkument_OUT_PlusnaKorekcija bigint = null output,@DaliSelect bit = 1) AS
BEGIN
	/*
		@TabelaStavke : t0_bigint_0 - Fk_ZSD
						    t0_bigint_1 - Fk_Artikal
							 t0_bigint_2 - Fk_ArtikalEan
							 t0_numeric0 - Kolicina_Korekcije
							 t0_numeric1 - Kolicina_Originalna
							 t0_numeric2 - Kolicina_Nova
							 t0_numeric3 - Cena_Stara
							 t0_numeric4 - Cena_Nova

							 -- KADA JE FINANSIJSKA KOREKCIJA NABAVNOG DELA
							 t0_bigint_0 - Fk_ZSD
							 t0_numeric0 - Kolicina
							 t0_numeric1 - K216
							 t0_numeric2 - K218
							 t0_numeric3 - K409
							 t0_numeric4 - Stara 288
	*/

	declare @Azuriran bit,@Fk_PoslovnaGodina int,@Datum datetime,@Fk_OrgJed int,@Fk_St_28_2 int,@Fk_St_28_3 int,@Fk_ID_Fk_St_28_2 int,@Fk_ID_Fk_St_28_3 int,
		@Fk_Radnik int,@Rez int,@Fk_VrstaKorekcija int,@Fk_VrstaFaktura int,@Fk_St_42_Korekcija int,@Guid_Izvorni uniqueidentifier,@Fk_VrstaOtpremnica int,@broj_Dokumenta bigint,
		@Storniran bit,@Datum_Valute datetime,@Fk_PartnerIsporuka int,@Stari_Pk_Id bigint,@PtabVSL int,@SmerPromene char(1),@ZnakPromene char(1),@DaliValutacijaStavki bit,
		@PorukaGreske nvarchar(400),@brojac int,@MaxBrojac int,@SmerOtpremnice char(1),@ZnakOtpremnice char(1),@tekuciZSD bigint,@LastZSD bigint,@Valutacija smallint,
		@Fk_Artikal int,@DaliProdajni int,@K5440 numeric(28,10),@K5441 numeric(28,10),@K5442 numeric(28,10),@K5443 numeric(28,10),@K288 numeric(28,10),@K366 numeric(28,10),
		@K219 numeric(28,10),@K225 numeric(28,10),@K223 numeric(28,10),@K1450 numeric(28,10),@K1451 numeric(28,10),@K1452 numeric(28,10),@K1453 numeric(28,10),@K586 numeric(28,10),
		@K587 numeric(28,10),@K284 numeric(28,10),@K285 numeric(28,10),@K631 numeric(28,10),@K630 numeric(28,10),@K629 numeric(28,10),@K3453 numeric(28,10),@Fk_Partner int,
		@Osnovica numeric(28,10),@DaliValutacija bit,@K330 numeric(28,10),@NAC numeric(28,10),@PRUC numeric(28,10),@IRUC numeric(28,10),@Fk_PoslednjaKalkulacija bigint,
		@DaliInacice int,@K287 numeric(28,10),@K286 numeric(28,10),@Kolicina numeric(28,10),@Fk_VrstaPlusnaKorekcija int,@Fk_St_42_PlusnaKorekcija int,
		@DaliMinusnaIPlusnaNaIstiDokument int,@DaliKorekcija int,@DaliPlusnaKorekcija int,@SmerPLusneKorekcije char(1),@ZnakPlusneKorekcije char(1),
		@DaliValutacijaStavkiPlusna bit,@DaliProdajniPlusna bit,@Fk_VrstaZaProveru int,@ValutacijaZaProveru bit,@ProdajniZaProveru int,@broj_Dokumenta_Plusna bigint,
		@Sifra_Lokacija int,@Rezervisano numeric(28,10),@DaliPlusnaCepanje int,@BrojacDokCepanje int,@MaxBrojacDokCepanje int,@Datum_Valute_Plusna datetime,@TekucaValutacija smallint,
		@Datum_Korekcije datetime,@Datum_Plusne datetime,@InicijalniBrojDanaValute int,@TekuciDatumKorekcije int,@TekuciDatumPlusne int,@DatumSad datetime,
		@Datum_Valute_Korekcija datetime,@DaliCepamPoValutaciji int,@DaliPreuzimamDatumValuteOtpremnice_Korekcija int,@BrojDanaValuteOtpremnice int,@Datum_Valute_Otpremnice datetime,
		@DaliPreuzimamDatumValuteOtpremnice_PlusnaKorekcija int,@Datum_Otpremnice datetime,@RazlikaDatumOtpremeDatumDokumenta int,@MinBrojDanaRazlike int,@poruka nvarchar(400),
		@DaliSvodimValutacijuStavkiNaZaglavljeDokumentaAkoZadrzavamDV int,@DokumentaZaSlanje dbo.tabela_0,@Pk_Guid_ZaPresipanje uniqueidentifier,@DaliJeSpreman int,@Razlog int,
		@BrojacPromeneCene int,@MaxBrojacPromeneCene int,@Fk_ZSD bigint,@Cena_Nova numeric(28,10),@PoreskaStopa numeric(28,10),@Preracunata numeric(28,10),@IznosPoreza numeric(28,10),
		@SifraVOJ int,@Fk_PoslovnaGodina_Korekcije int,@Fk_PoslovnaGodina_Plusne int,@DaliFinKorekcijaNabavnogDela int,@DatumFinKorekcije datetime,@Fk_St_42_FinKorekcije int,
		@Fk_VrstaDokumentFinKorekcije int,@ModelFakturisanogPovrata1MP2VP int,@Fk_VrstaDokumentPomoc int,@Fk_DokumentPomoc bigint,@K216 numeric(28,10),@K218 numeric(28,10),
		@K409 numeric(28,10),@K410 numeric(28,10),@K411 numeric(28,10),@K217 numeric(28,10),@K275 numeric(28,10),@K408 numeric(28,10),@K702 numeric(28,10)
	
	Select @PtabVSL = Hubie.dbo.fn_GetPtab(@Sifra_Preduzeca,'r_VrstaDokumentSet'),
			 @Komentar = Nullif(ltrim(rtrim(@Komentar)),''),
			 @Fk_DOkument_OUT = null,
			 @Fk_DOkument_OUT_PlusnaKorekcija = null,
			 @DaliInacice = Hubie.dbo.fn_GetStaticneStavkeKonfiguracijaInt(6972),
			 @DaLiminusnaIPlusnaNaIstiDokument = 0,
			 @Dalikorekcija = 0,
			 @DaliPLusnaKorekcija = 0,
			 @DaliPlusnaCepanje = 0,
			 @DatumSad = Hubie.dbo.fn_GetDatumBezVremena(getdate()),
			 @DaliCepamPoValutaciji = Hubie.dbo.fn_GetStaticneStavkeKonfiguracijaInt(8077),
			 @DaliSvodimValutacijuStavkiNaZaglavljeDokumentaAkoZadrzavamDV = 1,
			 @MaxBrojacPromeneCene = 0,
			 @DaliFinKorekcijaNabavnogDela = 0,
			 @ModelFakturisanogPovrata1MP2VP = 0

	if @DodatniPodatak = 'FIN_KOREKCIJA_NABAVNOG_DELA'
		begin
			Set @DaliFinKorekcijaNabavnogDela = 1
		end

	if Hubie.dbo.fn_GetStaticneStavkeKonfiguracijaInt(8127) > 0
		begin
			Set @DaliSvodimValutacijuStavkiNaZaglavljeDokumentaAkoZadrzavamDV = 0
		end

	Select top 1 @Fk_VrstaOtpremnica = D.Fk_VrstaDokument,
					 @Fk_PoslovnaGodina = D.Fk_Poslovna_Godina,
					 @Datum = D.Datum_Dokumenta,
					 @Datum_Otpremnice = D.Datum_Dokumenta,
					 @Datum_Valute = D2.Datum_Valute,
					 @Datum_Valute_Otpremnice = IsNull(D2.Datum_Valute,D.Datum_Dokumenta),
					 @Fk_OrgJed = D2.fk_Id_fk_st_28_1,
					 @Fk_St_28_2 = D2.fk_st_28_2,
					 @Fk_St_28_3 = D2.fk_st_28_3,
					 @Fk_ID_Fk_St_28_2 = D2.fk_Id_fk_st_28_2,
					 @Fk_ID_Fk_St_28_3 = D2.fk_Id_fk_st_28_3,
					 @Azuriran = D2.Azuriran,
					 @Fk_PartnerIsporuka = D2.Fk_PartnerIsporuka,
					 @Storniran = D.Storniran,
					 @Guid_Izvorni = IsNull(G.IzvorniGuid,G.MojGuid),
					 @Stari_Pk_Id = IsNull(D.Stari_Pk_id,0),
					 @Fk_Radnik = D2.fk_radnik1,
					 @Fk_Partner = case when D2.fk_st_28_2 = 141 then D2.fk_Id_fk_st_28_2 else 
						case when D2.fk_st_28_3 = 141 then D2.fk_Id_fk_st_28_3 else null end
						end
		from rt_Dokument D (nolock)
		inner join rt_Dokument_2 D2 (nolock)
		on (D.Pk_Id = D2.Fk_dokument)
		left outer join rt_DokumentGuid G (nolock)
		on (D.Pk_Id = G.Fk_Dokument)
	where D.Pk_Id = @Fk_DokumentOtpremnice
	  and D.Neaktivnost = 0
	if @@Rowcount = 0
		begin
			Raiserror('Dokument ne postoji u bazi !',17,1)
			return 1
		end
	
	Select @DaliValutacijaStavki = Hubie.dbo.fn_GetKonfiguracijaDokumentaInt(901,@Fk_VrstaOtpremnica)

	if exists
	(
		Select top 1 *
			from r_VrstaDokumentSet VDS (nolock)
			inner join r_VrstaDokumentKalElementSet K (nolock)
			on (VDS.Pk_Id = K.Fk_VrstaDokumentSet and K.Fk_St_43 = 288 and K.Neaktivnost = 0 and K.Da_Li_Se_Prikazuje > 0)
		where VDS.Fk_S_VrstaDokument = @Fk_VrstaOtpremnica
		  and VDS.P_Tab = @PtabVSL
		  and ((K.Formula = 'NFCIPORN') or (replace(K.Formula,' ','') = 'NFC+IPORN'))
	)
		begin
			Set @ModelFakturisanogPovrata1MP2VP = 1
			if exists
			(
				Select top 1 *
					from r_VrstaDokumentSet VDS (nolock)
					inner join r_VrstaDokumentKalElementSet K (nolock)
					on (VDS.Pk_Id = K.Fk_VrstaDokumentSet and K.Fk_St_43 = 366 and K.Neaktivnost = 0 and K.Da_Li_Se_Prikazuje > 0)
				where VDS.Fk_S_VrstaDokument = @Fk_VrstaOtpremnica
				  and VDS.P_Tab = @PtabVSL
			)
				begin
					Set @ModelFakturisanogPovrata1MP2VP = 2
				end
		end

	Select top 1 @SifraVOJ = VOJ.Sifra 
		from m_OrgJedinica OJ (nolock)
		inner join m_VrstaOrgJedinica VOJ (nolock)
		on (OJ.Fk_VrstaOrgJedinica = VOj.Pk_Id)
	where OJ.Pk_Id = @Fk_OrgJed

	Select @Datum_Korekcije = @Datum,
			 @Datum_Plusne = @Datum,
			 @DatumFinKorekcije = @Datum,
			 @InicijalniBrojDanaValute = datediff(day,@Datum,@Datum_Valute_Otpremnice),
			 @Datum_Valute_Plusna = @Datum_Valute,
			 @Datum_Valute_Korekcija = @Datum_Valute
	
	Set @BrojDanaValuteOtpremnice = @InicijalniBrojDanaValute

	if @DaliInacice > 0
		begin
			if exists
			(
				Select top 1 *
					from m_OrgJedinica OJ (nolock)
					inner join m_VrstaOrgJedinica VOJ (nolock)
					on (OJ.Fk_VrstaOrgJedinica = VOJ.Pk_Id)
				where Oj.Pk_Id = @Fk_OrgJed
				  and VOJ.Sifra in (27,44,45)
			)
				begin
					Set @DaliInacice = 0
				end
		end

	if @Stari_Pk_Id > 0
		begin
			Raiserror('Dokument nije nastao na serveru !',17,1)
			return 1
		end

	if @Azuriran = 0
		begin
			Raiserror('Dokument nije zakljucan !',17,1)
			return 1
		end

	if @Storniran = 1
		begin
			Raiserror('Dokument je storniran !',17,1)
			return 1
		end

	Select top 1 @Fk_VrstaFaktura = F1.Fk_VrstaDokument_Faktura,
					 @Fk_VrstaKorekcija = VD.Pk_Id,
					 @Fk_St_42_Korekcija = VD.Fk_ST_42,
					 @Fk_VrstaPlusnaKorekcija = VD1.Pk_Id,
					 @Fk_St_42_PlusnaKorekcija = VD1.Fk_ST_42,
					 @Fk_St_42_FinKorekcije = VD2.Fk_ST_42,
					 @Fk_VrstaDokumentFinKorekcije = VD2.Pk_Id	
		from Hubie.dbo.fn_VratiKonfiguracijuOtpremnicaKorekcijaFaktura (@Sifra_Preduzeca) F1
		left outer join s_VrstaDokument VD (nolock)
		on (F1.Fk_VrstaDokument_Korekcija = VD.Pk_Id)
		left outer join s_VrstaDokument VD1 (nolock)
		on (F1.Fk_VrstaDokument_PlusnaKorekcija = VD1.Pk_Id)
		left outer join s_VrstaDokument VD2 (nolock)
		on (F1.Fk_VrstaDokument_FinKorekcijaNabavnogDela = VD2.Pk_Id)
	where F1.Fk_VrstaDokument_Otpremnica = @Fk_VrstaOtpremnica
	
	if object_id('tempdb..#Otpakovano43') is not null drop table #Otpakovano43
	CREATE TABLE #Otpakovano43
	(
		Fk_ZSD bigint,
		Fk_Artikal int,
		Fk_ArtikalEan int,
		Kolicina_Korekcije numeric(28,10),
		ZaInsert bit not null default 0,
		ValutacijaStavki smallint default 0,
		Kolicina_Originalna numeric(28,10),
		Kolicina_Nova numeric(28,10),
		Cena_Stara numeric(28,10),
		Cena_Nova numeric(28,10),
		ModPromeneCene int not null default 0 -- 0-Bez promene,1-Promena cene,2-Promena cene i kolicine
	)
	CREATE NONCLUSTERED INDEX Otpakovano43_ind on #Otpakovano43(Fk_ZSD)
	if object_id('tempdb..#OtpakovanoFin43') is not null drop table #OtpakovanoFin43
	CREATE TABLE #OtpakovanoFin43
	(
		Fk_ZSD bigint not null,
		Fk_Artikal int,
		Fk_ArtikalEan int,
		Kolicina numeric(28,10) not null,
		InicijalnaKolicina numeric(28,10),
		Fk_ZSD_ZaKalkulaciju bigint,
		ValutacijaStavki smallint default 0,
		K216 numeric(28,10) not null,
		K218 numeric(28,10) not null,
		K409 numeric(28,10) not null,
		Cena288 numeric(28,10) not null,
		K410 numeric(28,10),
		K411 numeric(28,10),
		K217 numeric(28,10),
		K275 numeric(28,10),
		K408 numeric(28,10),
		K702 numeric(28,10),
		Fk_St_22 int
	)
	CREATE NONCLUSTERED INDEX OtpakovanoFin43_ind on #OtpakovanoFin43(Fk_ZSD)
	if object_id('tempdb..#Kumulativi43') is not null drop table #Kumulativi43
	CREATE TABLE #Kumulativi43
	(
		Fk_ZSD bigint,
		Fk_Artikal int,
		Fk_ArtikalEan int,
		K288 numeric(28,10),
		Kolicina numeric(28,10) not null,
		ValutacijaStavki smallint default 0		
	)
	if object_id('tempdb..#StavkeKorekcije6666') is not null drop table #StavkeKorekcije6666
	CREATE TABLE #StavkeKorekcije6666
	(
		Pk_Id int identity(1,1) primary key clustered,
		Fk_Artikal int,
		Fk_ArtikalEan int,
		Kolicina numeric(28,10),
		Cena288 numeric(28,10),
		Fk_ZSD bigint,
		Fk_ZSD_Novi bigint,
		Fk_St_22 int,
		Kolicina_Ulaz numeric(28,10),
		Kolicina_Izlaz numeric(28,10),
		Kolicina_Neutice numeric(28,10),
		ValutacijaStavki smallint default 0,
		ZaInsert bit not null default 0
	)
	if object_id('tempdb..#StavkePlusne6666') is not null drop table #StavkePlusne6666
	CREATE TABLE #StavkePlusne6666
	(
		Pk_Id int identity(1,1) primary key clustered,
		Fk_Artikal int,
		Fk_ArtikalEan int,
		Kolicina numeric(28,10),
		Cena288 numeric(28,10),
		Fk_ZSD bigint,
		Fk_ZSD_Novi bigint,
		Fk_St_22 int,
		Kolicina_Ulaz numeric(28,10),
		Kolicina_Izlaz numeric(28,10),
		Kolicina_Neutice numeric(28,10),
		ValutacijaStavki smallint default 0,
		ZaInsert bit not null default 0,
		RB_Dokumenta int not null default 1,
		Fk_Dokument bigint
	)
	if object_id('tempdb..#Zabranjeni475') is not null drop table #Zabranjeni475
	CREATE TABLE #Zabranjeni475
	(
		Fk_St_475 int primary key clustered
	)
	if object_id('tempdb..#Zabranjeni43') is not null drop table #Zabranjeni43
	CREATE TABLE #Zabranjeni43
	(
		Fk_St_43 int primary key clustered
	)
	if object_id('tempdb..#Duplikati56565') is not null drop table #Duplikati56565
	CREATE TABLE #Duplikati56565
	(
		Fk_ZSD bigint primary key clustered,
		Koliko int
	)
	if object_id('tempdb..#kalkulacijaNoviArtikli4545') is not null drop table #kalkulacijaNoviArtikli4545
	CREATE TABLE #kalkulacijaNoviArtikli4545 
	(	
		pK_Id int ,
		fk_st_43 int, 
		naziv nvarchar(100),
		vrednost numeric(28,10)
	)	
	if object_id('tempdb..#KalkulacijeSve5454545') is not null drop table #KalkulacijeSve5454545
	CREATE TABLE #KalkulacijeSve5454545
	(
		Fk_Artikal int,
		Fk_St_43 int,
		RB int,
		Vrednost numeric(28,10)
	)
	if object_id('tempdb..#KalkulacijePromenaCene5454545') is not null drop table #KalkulacijePromenaCene5454545
	CREATE TABLE #KalkulacijePromenaCene5454545
	(
		Fk_ZSD bigint,
		Fk_St_43 int,
		RB int,
		Vrednost numeric(28,10)
	)
	CREATE NONCLUSTERED INDEX KalkulacijePromenaCene5454545_ind on #KalkulacijePromenaCene5454545(Fk_ZSD)
	CREATE NONCLUSTERED INDEX KalkulacijePromenaCene5454545_ind1 on #KalkulacijePromenaCene5454545(Fk_ZSD,Fk_St_43)
	if object_id('tempdb..#kalkulacijaRadna4545') is not null drop table #kalkulacijaRadna4545
	CREATE TABLE #kalkulacijaRadna4545 
	(	
		Fk_ZSD bigint,
		fk_st_43 int, 
		Rb int,
		vrednost numeric(28,10)
	)
	CREATE NONCLUSTERED INDEX kalkulacijaRadna4545_ind on #kalkulacijaRadna4545(fk_st_43)
	if object_id('tempdb..#ZaInsertStavke5454545') is not null drop table #ZaInsertStavke5454545
	CREATE TABLE #ZaInsertStavke5454545
	(
		Pk_Id int identity(1,1) primary key clustered,
		Fk_Artikal int,
		Kolicina numeric(28,10),
		Cena_Final numeric(28,10)
	)
	if object_id('tempdb..#DistValutacijePlusne454545554154') is not null drop table #DistValutacijePlusne454545554154
	CREATE TABLE #DistValutacijePlusne454545554154
	(
		Pk_Id int identity(1,1),
		ValutacijaStavki smallint
	)
	CREATE UNIQUE CLUSTERED INDEX DistValutacijePlusne454545554154_ind on #DistValutacijePlusne454545554154(Pk_Id)
	if object_id('tempdb..#KreiranaDokumentaPlusneKorekcije54455555') is not null drop table #KreiranaDokumentaPlusneKorekcije54455555
	CREATE TABLE #KreiranaDokumentaPlusneKorekcije54455555
	(
		Pk_Id int identity(1,1) primary key clustered,
		Fk_Dokument bigint
	)
	CREATE UNIQUE NONCLUSTERED INDEX KreiranaDokumentaPlusneKorekcije54455555_ind on #KreiranaDokumentaPlusneKorekcije54455555(Fk_Dokument)
	if object_id('tempdb..#DokumentaVrednost45454555') is not null drop table #DokumentaVrednost45454555
	CREATE TABLE #DokumentaVrednost45454555
	(
		Fk_Dokument bigint,
		Vrednost numeric(28,10)
	)
	CREATE UNIQUE CLUSTERED INDEX DokumentaVrednost45454555_ind on #DokumentaVrednost45454555(Fk_Dokument)
	if object_id('tempdb..#PromeneCeneInsert43') is not null drop table #PromeneCeneInsert43
	CREATE TABLE #PromeneCeneInsert43
	(
		Pk_id int identity(1,1),
		Fk_ZSD bigint,
		Fk_Artikal int,
		Fk_ArtikalEan int,
		ValutacijaStavki smallint default 0,
		Kolicina_Minus numeric(28,10),
		Kolicina_Plus numeric(28,10),
		Cena_Stara numeric(28,10),
		Cena_Nova numeric(28,10),
		Fk_ZSD_Novi bigint,
		Fk_St_22 int,
		Kolicina_Ulaz numeric(28,10),
		Kolicina_Izlaz numeric(28,10),
		Kolicina_Neutice numeric(28,10),
		RB_Dokumenta int not null default 1,
		Fk_Dokument bigint,

		K216 numeric(28,10),
		K218 numeric(28,10),
		K409 numeric(28,10),
		Cena288 numeric(28,10),
		K410 numeric(28,10),
		K411 numeric(28,10),
		K217 numeric(28,10),
		K275 numeric(28,10),
		K408 numeric(28,10),
		K702 numeric(28,10)
	)
	CREATE UNIQUE CLUSTERED INDEX PromeneCeneInsert43_ind on #PromeneCeneInsert43(Pk_id)
	CREATE NONCLUSTERED INDEX PromeneCeneInsert43_ind1 on #PromeneCeneInsert43(Fk_ZSD)
	if object_id('tempdb..#VrsteDokumenataAmabalazeOtpremnica45454545') is not null drop table #VrsteDokumenataAmabalazeOtpremnica45454545
	CREATE TABLE #VrsteDokumenataAmabalazeOtpremnica45454545
	(
		Fk_VrstaDokument int
	)
	if object_id('tempdb..#VrsteDokumenataAmabalazeKorekcija45454545') is not null drop table #VrsteDokumenataAmabalazeKorekcija45454545
	CREATE TABLE #VrsteDokumenataAmabalazeKorekcija45454545
	(
		Fk_VrstaDokument int
	)
	if object_id('tempdb..#DokumentaOtpremniceAmbalaze45454545') is not null drop table #DokumentaOtpremniceAmbalaze45454545
	CREATE TABLE #DokumentaOtpremniceAmbalaze45454545
	(
		Fk_Dokument bigint
	)
	CREATE UNIQUE CLUSTERED INDEX DokumentaOtpremniceAmbalaze45454545_ind on #DokumentaOtpremniceAmbalaze45454545(Fk_Dokument)
	if object_id('tempdb..#DokumentaKorekcijeAmbalaze45454545') is not null drop table #DokumentaKorekcijeAmbalaze45454545
	CREATE TABLE #DokumentaKorekcijeAmbalaze45454545
	(
		Fk_Dokument bigint
	)
	CREATE UNIQUE CLUSTERED INDEX DokumentaKorekcijeAmbalaze45454545_ind on #DokumentaKorekcijeAmbalaze45454545(Fk_Dokument)

	if @DaliFinKorekcijaNabavnogDela > 0
		begin -- FIN KOREKCIJA
			insert into #OtpakovanoFin43(Fk_ZSD, Kolicina, K216, K218, K409,Cena288)
			Select t0_bigint_0 as Fk_ZSD,t0_numeric0 as Kolicina,t0_numeric1 as K216,t0_numeric2 as K218,t0_numeric3 as K409,t0_numeric4 as Cena288
				from @TabelaStavke
			if @@Error <> 0
				return 1
			
			if not exists
			(
				Select top 1 *
					from #OtpakovanoFin43
			)
				begin
					Raiserror('Nema stavki za korekciju !',17,1)
					return 1
				end

			Update O
				Set Fk_Artikal = ZSD.Fk_Artikal,
					 Fk_ArtikalEan = ZSD.Fk_ArtikalEan
				from #OtpakovanoFin43 O
				inner join rt_ZalihaStavkaDok ZSD (nolock)
				on (O.Fk_ZSD = ZSD.Pk_Id)
				left outer join rt_ZalihaStavkaDokStornirana S (nolock)
				on (ZSD.Pk_Id = S.Fk_ZalihaStavkaDok)
				left outer join rt_ZalihaStavkaDokStornirana S1 (nolock)
				on (ZSD.Pk_Id = S1.FK_ZalihaStavkaDokStornirana)
			where ZSD.Neaktivnost = 0
			  and S1.Pk_Id is null
			  and S.Pk_Id is null

			if @DaliValutacijaStavki > 0
				begin
					Update S
						Set ValutacijaStavki = V.DaniValute
						from #OtpakovanoFin43 S
						inner join rt_ZalihaStavkaDokValutacija V (nolock)
						on (S.Fk_ZSD = V.Fk_ZalihaStavkaDok)
				end

			if exists
			(
				Select top 1 *
					from #OtpakovanoFin43
				where Fk_Artikal is null
			)
				begin
					Select * from #OtpakovanoFin43 where Fk_Artikal is null
					Raiserror('Evidentirane su nepostojece stavke !',17,1)
					return 1
				end
			
			Select top 1 @Fk_VrstaDokumentPomoc = Fk_VrstaDokument_Korekcija 
				from Hubie.dbo.fn_VratiKonfiguracijuOtpremnicaKorekcijaFaktura(@Sifra_Preduzeca)
			where Fk_VrstaDokument_Otpremnica = @Fk_VrstaOtpremnica
				and Fk_VrstaDokument_Korekcija > 0
			if @@rowcount > 0
				begin
					Select top 1 @Fk_DokumentPomoc = D.Pk_Id 
						from rt_Dokument D (nolock)
						inner join rt_Dokument_2 D2 (nolock)
						on (D.Pk_Id = D2.Fk_dokument)
					where D2.fk_veza_dok1 = @Fk_DokumentOtpremnice
						and D.Fk_VrstaDokument = @Fk_VrstaDokumentPomoc
						and D.Neaktivnost = 0
						and D.Storniran = 0
				end

			if @DaliValutacijaStavki > 0
				begin -- VALUTACIJA STAVKI
					truncate table #Kumulativi43
					insert into #Kumulativi43(Fk_Artikal, Fk_ArtikalEan, Kolicina, K288,Fk_ZSD, ValutacijaStavki )
					Select ZSD.Fk_Artikal,MAX(ZSD.Fk_ArtikalEan),SUM(IsNull(ZSD.Kolicina_Izlaz,0) + IsNull(ZSD.Kolicina_Neutice,0) - ISNull(ZSD.Kolicina_Ulaz,0)),SKE.Kal_Element,MAX(ZSD.Pk_Id),IsNull(V.DaniValute,0)
						from rt_ZalihaStavkaDok ZSD (nolock)
						inner join rt_StavkaDokKalElementi SKE (nolock)
						on (ZSD.Pk_Id = SKE.Fk_ZalihaStavkaDok and SKE.FK_ST_43 = 288)
						left outer join rt_ZalihaStavkaDokValutacija V (nolock)
						on (ZSD.Pk_Id = V.Fk_ZalihaStavkaDok)
					where ZSD.Fk_Dokument = @Fk_DokumentOtpremnice
						and ZSD.Neaktivnost = 0
					group by ZSD.Fk_Artikal,SKE.Kal_Element,IsNull(V.DaniValute,0)
					having SUM(IsNull(ZSD.Kolicina_Izlaz,0) + IsNull(ZSD.Kolicina_Neutice,0) - ISNull(ZSD.Kolicina_Ulaz,0)) <> 0

					Update O
						Set Fk_ZSD_ZaKalkulaciju = K.Fk_ZSD,
							 InicijalnaKolicina = IsNull(K.Kolicina,0)
						from #OtpakovanoFin43 O
						inner join #Kumulativi43 K
						on (O.Fk_Artikal = K.Fk_Artikal and O.Cena288 = K.K288 and O.ValutacijaStavki = K.ValutacijaStavki)

					if @Fk_DokumentPomoc > 0
						begin -- KOREKCIJA
							truncate table #Kumulativi43
							insert into #Kumulativi43(Fk_Artikal, Fk_ArtikalEan, Kolicina, K288,Fk_ZSD, ValutacijaStavki )
							Select ZSD.Fk_Artikal,MAX(ZSD.Fk_ArtikalEan),SUM(IsNull(ZSD.Kolicina_Izlaz,0) + IsNull(ZSD.Kolicina_Neutice,0) - ISNull(ZSD.Kolicina_Ulaz,0)),SKE.Kal_Element,MAX(ZSD.Pk_Id),IsNull(V.DaniValute,0)
								from rt_ZalihaStavkaDok ZSD (nolock)
								inner join rt_StavkaDokKalElementi SKE (nolock)
								on (ZSD.Pk_Id = SKE.Fk_ZalihaStavkaDok and SKE.FK_ST_43 = 288)
								left outer join rt_ZalihaStavkaDokValutacija V (nolock)
								on (ZSD.Pk_Id = V.Fk_ZalihaStavkaDok)
							where ZSD.Fk_Dokument = @Fk_DokumentPomoc
								and ZSD.Neaktivnost = 0
							group by ZSD.Fk_Artikal,SKE.Kal_Element,IsNull(V.DaniValute,0)
							having SUM(IsNull(ZSD.Kolicina_Izlaz,0) + IsNull(ZSD.Kolicina_Neutice,0) - ISNull(ZSD.Kolicina_Ulaz,0)) <> 0

							Update O
								Set Fk_ZSD_ZaKalkulaciju = K.Fk_ZSD,
										InicijalnaKolicina = IsNull(O.InicijalnaKolicina,0) + IsNull(K.Kolicina,0)
								from #OtpakovanoFin43 O
								inner join #Kumulativi43 K
								on (O.Fk_Artikal = K.Fk_Artikal and O.Cena288 = K.K288 and O.ValutacijaStavki = K.ValutacijaStavki)
						end -- KOREKCIJA
				end -- VALUTACIJA STAVKI
			else
				begin -- BEZ VALUTACIJA STAVKI
					truncate table #Kumulativi43
					insert into #Kumulativi43(Fk_Artikal, Fk_ArtikalEan, Kolicina, K288,Fk_ZSD)
					Select ZSD.Fk_Artikal,MAX(ZSD.Fk_ArtikalEan),SUM(IsNull(ZSD.Kolicina_Izlaz,0) + IsNull(ZSD.Kolicina_Neutice,0) - ISNull(ZSD.Kolicina_Ulaz,0)),SKE.Kal_Element,MAX(ZSD.Pk_Id)
						from rt_ZalihaStavkaDok ZSD (nolock)
						inner join rt_StavkaDokKalElementi SKE (nolock)
						on (ZSD.Pk_Id = SKE.Fk_ZalihaStavkaDok and SKE.FK_ST_43 = 288)
					where ZSD.Fk_Dokument = @Fk_DokumentOtpremnice
						and ZSD.Neaktivnost = 0
					group by ZSD.Fk_Artikal,SKE.Kal_Element
					having SUM(IsNull(ZSD.Kolicina_Izlaz,0) + IsNull(ZSD.Kolicina_Neutice,0) - ISNull(ZSD.Kolicina_Ulaz,0)) <> 0

					Update O
						Set Fk_ZSD_ZaKalkulaciju = K.Fk_ZSD,
							 InicijalnaKolicina = IsNull(K.Kolicina,0)
						from #OtpakovanoFin43 O
						inner join #Kumulativi43 K
						on (O.Fk_Artikal = K.Fk_Artikal and O.Cena288 = K.K288)

					if @Fk_DokumentPomoc > 0
						begin
							truncate table #Kumulativi43
							insert into #Kumulativi43(Fk_Artikal, Fk_ArtikalEan, Kolicina, K288,Fk_ZSD)
							Select ZSD.Fk_Artikal,MAX(ZSD.Fk_ArtikalEan),SUM(IsNull(ZSD.Kolicina_Izlaz,0) + IsNull(ZSD.Kolicina_Neutice,0) - ISNull(ZSD.Kolicina_Ulaz,0)),SKE.Kal_Element,MAX(ZSD.Pk_Id)
								from rt_ZalihaStavkaDok ZSD (nolock)
								inner join rt_StavkaDokKalElementi SKE (nolock)
								on (ZSD.Pk_Id = SKE.Fk_ZalihaStavkaDok and SKE.FK_ST_43 = 288)
							where ZSD.Fk_Dokument = @Fk_DokumentPomoc
								and ZSD.Neaktivnost = 0
							group by ZSD.Fk_Artikal,SKE.Kal_Element
							having SUM(IsNull(ZSD.Kolicina_Izlaz,0) + IsNull(ZSD.Kolicina_Neutice,0) - ISNull(ZSD.Kolicina_Ulaz,0)) <> 0

							Update O
								Set Fk_ZSD_ZaKalkulaciju = K.Fk_ZSD,
									 InicijalnaKolicina = IsNull(O.InicijalnaKolicina,0) + IsNull(K.Kolicina,0)
								from #OtpakovanoFin43 O
								inner join #Kumulativi43 K
								on (O.Fk_Artikal = K.Fk_Artikal and O.Cena288 = K.K288)
						end
				end -- BEZ VALUTACIJA STAVKI

			if exists
			(
				Select top 1 *
					from #OtpakovanoFin43
				where Kolicina <> IsNull(InicijalnaKolicina,0)
			)
				begin
					Select *
						from #OtpakovanoFin43
					where Kolicina <> IsNull(InicijalnaKolicina,0)
					Select top 1 @PorukaGreske = 'Stavka (ID:'+ltrim(IsNull(Fk_ZSD,0))+') ima korigovanu kolicinu !'
						from #OtpakovanoFin43
					where Kolicina <> IsNull(InicijalnaKolicina,0)
					Raiserror(@PorukaGreske,17,1)
					return 1
				end

			if exists
			(
				Select top 1 *
					from #OtpakovanoFin43
				where K216  <= 0 
			)
				begin
					Select top 1 @PorukaGreske = 'Stavka (ID:'+ltrim(IsNull(Fk_ZSD,0))+') ima neispravnu fakturnu cenu !'
						from #OtpakovanoFin43
					where K216  <= 0 
					Raiserror(@PorukaGreske,17,1)
					return 1
				end

			if exists
			(
				Select top 1 *
					from #OtpakovanoFin43
				where K218  <= 0 
			)
				begin
					Select top 1 @PorukaGreske = 'Stavka (ID:'+ltrim(IsNull(Fk_ZSD,0))+') ima neispravnu neto fakturnu cenu !'
						from #OtpakovanoFin43
					where K218  <= 0 
					Raiserror(@PorukaGreske,17,1)
					return 1
				end

			if exists
			(
				Select top 1 *
					from #OtpakovanoFin43
				where K409 < 0 
			)
				begin
					Select top 1 @PorukaGreske = 'Stavka (ID:'+ltrim(IsNull(Fk_ZSD,0))+') ima neispravan procenat poreza !'
						from #OtpakovanoFin43
					where K409  < 0 
					Raiserror(@PorukaGreske,17,1)
					return 1
				end

			Update O
				Set K408 = PS.Sifra,
					 K702 = PSD.Preracunata_Stopa
				from Hubie.dbo.m_PoreskaStopa PS (nolock)
				inner join Hubie.dbo.m_PoreskaStopaDatum PSD (nolock)
				on 
				(
					PSD.PK_Id = 
					(
						Select top 1 D.PK_Id
							from m_PoreskaStopaDatum D (nolock)
						where D.Fk_PoreskaStopa = PS.Pk_Id
						  and D.S_Neaktivan = 0
						  and D.Datum_Vaznosti_Od <= @Datum
						order by D.Datum_Vaznosti_Od desc,D.PK_Id desc
					)
				)
				inner join #OtpakovanoFin43 O
				on (O.K409 = PSD.Poreska_Stopa)
			where PS.S_Neaktivan = 0 
			  and PS.Fk_ST_20 = 101

			if exists
			(
				Select top 1 *
					from #OtpakovanoFin43
				where K408 is null
			)
				begin
					Select top 1 @PorukaGreske = 'Stavka (ID:'+ltrim(IsNull(Fk_ZSD,0))+') ima neispravnu poresku stopu (procenat poreza) !'
						from #OtpakovanoFin43
					where K408 is null
					Raiserror(@PorukaGreske,17,1)
					return 1
				end

			Update #OtpakovanoFin43
				Set K275 = K216 - K218
			 
			Update #OtpakovanoFin43
				Set K217 = K275 / K216 * 100.000000000000
				
			Update #OtpakovanoFin43
				Set K410 = K409 * K218 / 100.000000000000
				
			Update #OtpakovanoFin43	
				Set K411 = K218 + K410  
				
			Update O
				Set Fk_St_22 = A.Fk_ST_22
				from #OtpakovanoFin43 O
				inner join m_Artikal A (nolock)
				on (O.Fk_Artikal = A.Pk_Id)

			Set @BrojacPromeneCene = 0
			insert into #PromeneCeneInsert43(Fk_ZSD, Fk_Artikal, Fk_ArtikalEan,ValutacijaStavki, Kolicina_Minus, Kolicina_Plus,
			   Cena_Stara, Cena_Nova, Fk_St_22, K216, K218, K409, Cena288, K410, K411, K217, K275, K408, K702)
			Select Fk_ZSD_ZaKalkulaciju, Fk_Artikal, Fk_ArtikalEan,ValutacijaStavki,Hubie.dbo.fn_Float(Kolicina) * Hubie.dbo.fn_Float(-1.00000),Kolicina,
				Cena288,K411,Fk_St_22,K216,K218, K409, Cena288, K410, K411, K217, K275, K408, K702
				from #OtpakovanoFin43
			order by Fk_ZSD
			Set @MaxBrojacPromeneCene = @@rowcount 
		end -- FIN KOREKCIJA
	else
		begin 
			insert into #Otpakovano43(Fk_ZSD, Fk_Artikal,Fk_ArtikalEan, Kolicina_Korekcije,Kolicina_Originalna,Kolicina_Nova, Cena_Stara, Cena_Nova)
			Select t0_bigint_0,t0_bigint_1,t0_bigint_2,t0_numeric0,t0_numeric1,t0_numeric2,t0_numeric3,t0_numeric4
				from @TabelaStavke
			if @@Error <> 0
				return 1
			
			if not exists
			(
				Select top 1 *
					from #Otpakovano43
			)
				begin
					Raiserror('Nema stavki za korekciju !',17,1)
					return 1
				end

			Update #Otpakovano43
				Set ModPromeneCene = case when Kolicina_Originalna = Kolicina_Nova then 1 else 2 end
			where Cena_Stara <> Cena_Nova
	
			Update #Otpakovano43
				Set Fk_ArtikalEan = Nullif(Fk_ArtikalEan,0),
					 Kolicina_Korekcije = IsNull(Kolicina_Korekcije,0),
					 Kolicina_Originalna = IsNull(Kolicina_Originalna,0),
					 Kolicina_Nova = IsNull(Kolicina_Nova,0),
					 Cena_Stara = IsNull(Cena_Stara,0),
					 Cena_Nova = IsNull(Cena_Nova,0)

			if exists
			(
				Select top 1 *
					from #Otpakovano43
				where Kolicina_Originalna = Kolicina_Nova
				  and ModPromeneCene = 0
			)
				begin
					Select top 1 @PorukaGreske = 'Stavka (ID:'+ltrim(IsNull(Fk_ZSD,0))+') nema stavki za korekciju !'
						from #Otpakovano43
					where Kolicina_Originalna = Kolicina_Nova
					  and ModPromeneCene = 0
					Raiserror(@PorukaGreske,17,1)
					return 1
				end

			if exists
			(
				Select top 1 *
					from #Otpakovano43
				where Cena_Stara <= 0 
			)
				begin
					Select top 1 @PorukaGreske = 'Stavka (ID:'+ltrim(IsNull(Fk_ZSD,0))+') ima neispravnu osnovnu cenu !'
						from #Otpakovano43
					where Cena_Stara <= 0
					Raiserror(@PorukaGreske,17,1)
					return 1
				end

			if exists
			(
				Select top 1 *
					from #Otpakovano43
				where Cena_Nova <= 0 
			)
				begin
					Select top 1 @PorukaGreske = 'Stavka (ID:'+ltrim(IsNull(Fk_ZSD,0))+') ima neispravnu novu cenu !'
						from #Otpakovano43
					where Cena_Nova <= 0
					Raiserror(@PorukaGreske,17,1)
					return 1
				end

			if exists
			(
				Select top 1 *
					from #Otpakovano43
				where Kolicina_Nova < 0 
			)
				begin
					Select top 1 @PorukaGreske = 'Stavka (ID:'+ltrim(IsNull(Fk_ZSD,0))+N') ima neispravnu novu količinu !'
						from #Otpakovano43
					where Kolicina_Nova < 0 
					Raiserror(@PorukaGreske,17,1)
					return 1
				end

			Update #Otpakovano43
				Set ZaInsert = 1
			where IsNull(Fk_ZSD,0) < 1

			If exists
			(
				Select top 1 *
					from #Otpakovano43 O
					left outer join rt_ZalihaStavkaDok ZSD (nolock)
					on (O.Fk_ZSD = ZSD.Pk_Id and ZSD.Neaktivnost = 0 and ZSD.Fk_Dokument = @Fk_DokumentOtpremnice and O.Fk_Artikal = ZSD.Fk_Artikal)
				where ZSD.Pk_Id is null
				  and O.ZaInsert = 0
			) 
				begin
					Select top 1 @PorukaGreske = 'Stavka (ID:'+ltrim(IsNull(O.Fk_ZSD,0))+') ne postoji na dokumentu !'
						from #Otpakovano43 O
						left outer join rt_ZalihaStavkaDok ZSD (nolock)
						on (O.Fk_ZSD = ZSD.Pk_Id and ZSD.Neaktivnost = 0 and ZSD.Fk_Dokument = @Fk_DokumentOtpremnice and O.Fk_Artikal = ZSD.Fk_Artikal)
					where ZSD.Pk_Id is null
					  and O.ZaInsert = 0
					Raiserror(@PorukaGreske,17,1)
					return 1
				end
	
			insert into #Duplikati56565(Fk_ZSD, Koliko)
			Select Fk_ZSD,count(*)
				from #Otpakovano43
			where Fk_ZSD > 0
			group by Fk_ZSD
			having count(*) > 1
			if @@Rowcount > 0
				begin
					Select top 1 @PorukaGreske = 'Duplikati (ID:'+ltrim(Fk_ZSD)+') - '+ltrim(Koliko)+'puta !' 
						from #Duplikati56565
					order by Koliko desc
					Raiserror(@PorukaGreske,17,1)
					return 1
				end

			if exists
			(
				Select top 1 * 
					from #Otpakovano43 O
					left outer join m_Artikal A (nolock)
					on (A.Pk_Id = O.Fk_Artikal and A.S_Neaktivan = 0)
				where O.ZaInsert = 1
				  and A.Pk_Id is null
			)
				begin
					Select top 1 @PorukaGreske = 'Nepostojeci artikal (ID:'+ltrim(IsNull(O.Fk_Artikal,0))+') !' 
						from #Otpakovano43 O
						left outer join m_Artikal A (nolock)
						on (A.Pk_Id = O.Fk_Artikal and A.S_Neaktivan = 0)
					where O.ZaInsert = 1
					  and A.Pk_Id is null
					Raiserror(@PorukaGreske,17,1)
					return 1
				end
	
			if exists
			(
				Select top 1 *
					from #Otpakovano43
				where ModPromeneCene > 0
				  and IsNull(Fk_ZSD,0) <= 0
				  and ZaInsert = 0
			)
				begin
					Select top 1 @PorukaGreske = 'Artikal: '+Hubie.dbo.fn_GetArtikalPrikaz(@Sifra_Preduzeca,@Jezik_Id,O.Fk_Artikal) + ' nema stavku na koju bi se odnosila promena cene !'
						from #Otpakovano43 O
					where O.ModPromeneCene > 0
					  and IsNull(O.Fk_ZSD,0) <= 0
					  and O.ZaInsert = 0
					Raiserror(@PorukaGreske,17,1)
					return 1
				end

			insert into #Duplikati56565(Fk_ZSD, Koliko)
			Select Fk_Artikal,count(*)
				from #Otpakovano43
			where ZaInsert = 1
			group by Fk_Artikal
			having count(*) > 1
			if @@Rowcount > 0
				begin
					Select top 1 @PorukaGreske = 'Duplikati (Artikal ID:'+ltrim(Fk_ZSD)+') - '+ltrim(Koliko)+'puta !' 
						from #Duplikati56565
					order by Koliko desc
					Raiserror(@PorukaGreske,17,1)
					return 1
				end
	
			if exists
			(
				Select top 1 * 
					from #Otpakovano43
				where ModPromeneCene > 0
				  and ZaInsert = 0
			)
				begin
					Set @BrojacPromeneCene = 0
					insert into #PromeneCeneInsert43(Fk_ZSD, Fk_Artikal, Fk_ArtikalEan,ValutacijaStavki,Kolicina_Minus, Kolicina_Plus, Cena_Stara, Cena_Nova)
					Select O.Fk_ZSD, O.Fk_Artikal, O.Fk_ArtikalEan, O.ValutacijaStavki,(Hubie.dbo.fn_float(O.Kolicina_Originalna) * Hubie.dbo.fn_float(-1.00000000000)),O.Kolicina_Nova,O.Cena_Stara,O.Cena_Nova
						from #Otpakovano43 O
					where O.ModPromeneCene > 0
					  and O.Kolicina_Nova > 0
					  and O.ZaInsert = 0
					Set @MaxBrojacPromeneCene = @@rowcount

					Update O
						Set Kolicina_Korekcije = P.Kolicina_Minus
						from #Otpakovano43 O
						inner join #PromeneCeneInsert43 P
						on (O.Fk_ZSD = P.Fk_ZSD)
				end
		end
	
	if exists
	(
		Select top 1 *
			from #Otpakovano43
		where Kolicina_Korekcije < 0
	)
		begin -- MINUSNA KOREKCIJA
			Set @DaliKorekcija = 1
			if not exists
			(
				Select top 1 *
					from s_VrstaDokument (nolock)
				where Pk_Id = @Fk_VrstaKorekcija  
			)
				begin
					Raiserror('Nije konfigurisan dokument korekcije !',17,1)
					return 1
				end
		end -- MINUSNA KOREKCIJA

	if exists
	(
		Select top 1 *
			from #OtpakovanoFin43
	)
		begin -- FIN KOREKCIJA NABAVNOG DELA
			if not exists
			(
				Select top 1 *
					from s_VrstaDokument (nolock)
				where Pk_Id = @Fk_VrstaDokumentFinKorekcije  
			)
				begin
					Raiserror('Nije konfigurisan dokument fin.korekcije !',17,1)
					return 1
				end
		end -- FIN KOREKCIJA NABAVNOG DELA

	if IsNull(@DaliFinKorekcijaNabavnogDela,0) < 1		
		begin
			if exists
			(
				Select top 1 *
					from #Otpakovano43
				where Kolicina_Korekcije > 0
			) or @MaxBrojacPromeneCene > 0
				begin -- PLUSNA KOREKCIJA
					if not exists
					(
						Select top 1 *
							from s_VrstaDokument (nolock)
						where Pk_Id = @Fk_VrstaPlusnaKorekcija  
					)
						begin
							Select @DaliMinusnaIPlusnaNaIstiDokument = 1,
									 @DaliKorekcija = 1
						end
					else
						begin
							Set @DaliPlusnaKorekcija = 1
							if @DaliCepamPoValutaciji > 0
								begin
									Set @DaliPlusnaCepanje = 1
								end
						end
				end -- PLUSNA KOREKCIJA
		end

	if @DaliKorekcija > 0 or @DaliFinKorekcijaNabavnogDela > 0
		begin
			if exists
			(
				Select top 1 *
					from rt_DokumentRealizovan (nolock)
				where Fk_Dokument = @Fk_DokumentOtpremnice
				  and Neaktivnost = 0
			)
				begin
					Raiserror('Otpremnica je realizovana !',17,1)
					return 1
				end

			if exists
			(
				Select top 1 *
					from rt_Dokument_2 D2 (nolock)
					inner join rt_Dokument D (nolock)
					on (D.Pk_Id = D2.Fk_dokument)
				where D2.fk_Veza_dok2 = @Fk_DokumentOtpremnice
				  and D.Neaktivnost = 0
				  and D.Fk_VrstaDokument = @Fk_VrstaFaktura
				  and D.Storniran = 0
			)
				begin
					Raiserror('Evidentiran je dokument fakture !',17,1)
					return 1
				end
		end
	
	if @DaliKorekcija > 0
		begin
			if exists
			(
				Select top 1 *
					from rt_Dokument_2 D2 (nolock)
					inner join rt_Dokument D (nolock)
					on (D.Pk_Id = D2.Fk_dokument)
				where D2.fk_Veza_dok1 = @Fk_DokumentOtpremnice
				  and D.Neaktivnost = 0
				  and D.Fk_VrstaDokument = @Fk_VrstaKorekcija
				  and D.Storniran = 0
			)
				begin
					Raiserror('Evidentiran je dokument korekcije !',17,1)
					return 1
				end

			if @Fk_VrstaDokumentFinKorekcije > 0
				begin
					if exists
					(
						Select top 1 *
							from rt_Dokument_2 D2 (nolock)
							inner join rt_Dokument D (nolock)
							on (D.Pk_Id = D2.Fk_dokument)
						where D2.fk_Veza_dok1 = @Fk_DokumentOtpremnice
						  and D.Neaktivnost = 0
						  and D.Fk_VrstaDokument = @Fk_VrstaDokumentFinKorekcije
						  and D.Storniran = 0
					)
						begin
							Raiserror('Evidentiran je dokument fin.korekcije !',17,1)
							return 1
						end
				end
		end

	if @DaliFinKorekcijaNabavnogDela > 0
		begin
			if exists
			(
				Select top 1 *
					from rt_Dokument_2 D2 (nolock)
					inner join rt_Dokument D (nolock)
					on (D.Pk_Id = D2.Fk_dokument)
				where D2.fk_Veza_dok1 = @Fk_DokumentOtpremnice
				  and D.Neaktivnost = 0
				  and D.Fk_VrstaDokument = @Fk_VrstaDokumentFinKorekcije
				  and D.Storniran = 0
			)
				begin
					Raiserror('Evidentiran je dokument fin.korekcije !',17,1)
					return 1
				end
		end
	
	if @DaliKorekcija > 0 or @DaliFinKorekcijaNabavnogDela > 0
		begin -- AKO JE PLUSNA KOREKCIJA (DODATNA OTPREMNICA) OVE VALIDACIJE NE VAZE
			-- PROVERE OTPREMNICE
			if exists
			(
				select top 1 * 
				from Hubie.dbo.p_FakturaDokument fd (nolock)
				where fd.Fk_Dokument = @Fk_DokumentOtpremnice
					and fd.Neaktivnost = 0
			)
				begin		
					SET @poruka = dbo.fn_GetPorukajezik(8129,@Jezik_id)
					Raiserror(@poruka,17,1)
					return 1							
				end	
		
			if exists
			(
				Select top 1 *
					from r_VrstaDokumentSetKonfiguracija K (nolock)
				where K.Fk_VrstaDokumentSet = @Fk_VrstaOtpremnica
					and K.Neaktivnost = 0
					and K.Fk_St_176 = 8162
					and Hubie.dbo.fn_MeConvertToInt32(K.Parametar,0) > 0
			)
				begin
					Delete @DokumentaZaSlanje
					insert into @DokumentaZaSlanje(t0_bigint_0)
					Select @Fk_DokumentOtpremnice
					Set @Pk_Guid_ZaPresipanje = newid()
					exec sp_VratiSpremnostDokumenataZaFakturisanje @Sifra_Preduzeca = @sifra_preduzeca,
																					@Jezik_Id = @jezik_id,
																					@Kor_Id = @Kor_id,
																					@Dokumenta = @DokumentaZaSlanje,
																					@DodatniPodatak = null,
																					@DodatniPodatak1 = null,
																					@DodatniPodatak2 = null,
																					@Pk_Guid_ZaPresipanje = @Pk_Guid_ZaPresipanje,
																					@DaliSelect = 0
					Select top 1 @DaliJeSpreman = P.PodatakBigint2,
									 @Razlog = Hubie.dbo.fn_MeConvertToInt32(P.PodatakString1,0) 
						from z_Presipanje P (nolock)
					where P.Pk_Guid = @Pk_Guid_ZaPresipanje
						and P.PodatakBigint1 = @Fk_DokumentOtpremnice

					Delete z_Presipanje where Pk_Guid = @Pk_Guid_ZaPresipanje
				 
					if @DaliJeSpreman > 0
						begin
							SET @poruka = dbo.fn_GetDokumentPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_DokumentOtpremnice)
							Set @poruka = 'Dokument: '+IsNull(@poruka,'') + ' je potvrdjen za fakturisanje !'
							Raiserror(@poruka,17,1)
							return 1	
						end
					if @Razlog = 4
						begin
							SET @poruka = dbo.fn_GetDokumentPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_DokumentOtpremnice)
							Set @poruka = 'Dokument: '+IsNull(@poruka,'') + ' je fakturisan !'
							Raiserror(@poruka,17,1)
							return 1	
						end
				end
		end

	if @DaliKorekcija > 0
		begin
			Select @DaliValutacijaStavki = Hubie.dbo.fn_GetKonfiguracijaDokumentaInt(901,@Fk_VrstaKorekcija),
					 @DaliProdajni = Hubie.dbo.fn_GetDaliDokumentPodrzanZaPrimenuProdajnihUslova (@Sifra_Preduzeca,@Fk_VrstaKorekcija),
					 @TekuciDatumKorekcije = Hubie.dbo.fn_GetKonfiguracijaDokumentaInt(3397,@Fk_VrstaKorekcija),
					 @DaliPreuzimamDatumValuteOtpremnice_Korekcija = Hubie.dbo.fn_GetKonfiguracijaDokumentaInt(8125,@Fk_VrstaKorekcija)

			if @TekuciDatumKorekcije > 0
				begin
					Select @Datum_Korekcije = @DatumSad,
							 @Datum_Valute_Korekcija = case when @InicijalniBrojDanaValute > 0 then dateadd(day,@InicijalniBrojDanaValute,@DatumSad) else @DatumSad end
					if @DaliPreuzimamDatumValuteOtpremnice_Korekcija > 0
						begin
							Set @Datum_Valute_Korekcija = @Datum_Valute_Otpremnice
						end	
				end

			if 1 = Hubie.dbo.fn_GetDaliZakljucanObracunskiPeriodJedanZaSve(@sifra_preduzeca,@Fk_Vrstakorekcija,'',0,@Fk_OrgJed,1,19,@Datum_Korekcije)
				begin
					Raiserror('Zakljucan obracunski period !',17,1)
					return 1
				end
		end

	if @DaliFinkorekcijaNabavnogDela > 0
		begin
			Select @DaliValutacijaStavki = Hubie.dbo.fn_GetKonfiguracijaDokumentaInt(901,@Fk_VrstaDokumentFinKorekcije),
					 @DaliProdajni = Hubie.dbo.fn_GetDaliDokumentPodrzanZaPrimenuProdajnihUslova (@Sifra_Preduzeca,@Fk_VrstaDokumentFinKorekcije),
					 @TekuciDatumKorekcije = Hubie.dbo.fn_GetKonfiguracijaDokumentaInt(3397,@Fk_VrstaDokumentFinKorekcije),
					 @DaliPreuzimamDatumValuteOtpremnice_Korekcija = Hubie.dbo.fn_GetKonfiguracijaDokumentaInt(8125,@Fk_VrstaDokumentFinKorekcije)

			if @TekuciDatumKorekcije > 0
				begin
					Select @Datum_Korekcije = @DatumSad,
							 @Datum_Valute_Korekcija = case when @InicijalniBrojDanaValute > 0 then dateadd(day,@InicijalniBrojDanaValute,@DatumSad) else @DatumSad end
					if @DaliPreuzimamDatumValuteOtpremnice_Korekcija > 0
						begin
							Set @Datum_Valute_Korekcija = @Datum_Valute_Otpremnice
						end	
				end

			if 1 = Hubie.dbo.fn_GetDaliZakljucanObracunskiPeriodJedanZaSve(@sifra_preduzeca,@Fk_VrstaDokumentFinKorekcije,'',0,@Fk_OrgJed,1,19,@Datum_Korekcije)
				begin
					Raiserror('Zakljucan obracunski period !',17,1)
					return 1
				end
		end

	if @DaliPlusnaKorekcija > 0
		begin
			Select @DaliValutacijaStavkiPlusna = Hubie.dbo.fn_GetKonfiguracijaDokumentaInt(901,@Fk_VrstaPlusnaKorekcija),
					 @DaliProdajniPlusna = Hubie.dbo.fn_GetDaliDokumentPodrzanZaPrimenuProdajnihUslova (@Sifra_Preduzeca,@Fk_VrstaPlusnaKorekcija),
					 @TekuciDatumPlusne = Hubie.dbo.fn_GetKonfiguracijaDokumentaInt(3397,@Fk_VrstaPlusnaKorekcija),
					 @DaliPreuzimamDatumValuteOtpremnice_PlusnaKorekcija = Hubie.dbo.fn_GetKonfiguracijaDokumentaInt(8125,@Fk_VrstaPlusnaKorekcija),
					 @MinBrojDanaRazlike = Hubie.dbo.fn_GetKonfiguracijaDokumentaInt(8128,@Fk_VrstaOtpremnica)	
			
			if @TekuciDatumPlusne > 0
				begin
					Select @Datum_Plusne = @DatumSad,
							 @Datum_Valute_Plusna = case when @InicijalniBrojDanaValute > 0 then dateadd(day,@InicijalniBrojDanaValute,@DatumSad) else @DatumSad end	
					if @DaliPreuzimamDatumValuteOtpremnice_PlusnaKorekcija > 0
						begin
							Set @Datum_Valute_Plusna = @Datum_Valute_Otpremnice
						end
				end

			if @MinBrojDanaRazlike > 0
				begin
					if datediff(day,@Datum_Otpremnice,@DatumSad) < @MinBrojDanaRazlike
						begin
							Set @PorukaGreske = 'MIN. broj dana koji mora da protekne za dodatnu otpremu je : '+ltrim(@MinBrojDanaRazlike)
							Raiserror(@PorukaGreske,17,1)
							return 1
						end
				end

			if 1 = Hubie.dbo.fn_GetDaliZakljucanObracunskiPeriodJedanZaSve(@sifra_preduzeca,@Fk_VrstaPlusnaKorekcija,'',0,@Fk_OrgJed,1,19,@Datum_Plusne)
				begin
					Raiserror('Zakljucan obracunski period !',17,1)
					return 1
				end
		end
	
	if @DaliPlusnaKorekcija > 0
		begin
			Select @ProdajniZaProveru = @DaliProdajniPlusna,
					 @ValutacijaZaProveru = @DaliValutacijaStavkiPlusna,
					 @Fk_VrstaZaProveru = @Fk_VrstaPlusnaKorekcija
		end
	else
		begin
			Select @ProdajniZaProveru = @DaliProdajni,
					 @ValutacijaZaProveru = @DaliValutacijaStavki,
					 @Fk_VrstaZaProveru = @Fk_VrstaKorekcija
		end

	Set @brojac = 0
	insert into #ZaInsertStavke5454545(Fk_Artikal,Kolicina,Cena_Final)
	Select Fk_Artikal,SUM(Kolicina_Korekcije),(case when ModPromeneCene > 0 then Cena_Nova else 0 end)
		from #Otpakovano43
	where ZaInsert = 1
	group by Fk_Artikal,(case when ModPromeneCene > 0 then Cena_Nova else 0 end)
	Set @MaxBrojac = @@rowcount
	while @brojac < @MaxBrojac
		begin -- PETLJA ZA NOVE ARTIKLE
			Set @brojac = @brojac + 1
			Select top 1 @Fk_Artikal = Fk_Artikal,
							 @Fk_PoslednjaKalkulacija = null,
							 @Kolicina = Kolicina,
							 @Cena_Nova = Cena_Final							 
				from #ZaInsertStavke5454545 
			where Pk_Id = @brojac

			if IsNull(@DaliPlusnaKorekcija,0) < 1
				begin
					Set @Datum_Plusne = @Datum_Korekcije
					Set @Datum_Valute_Plusna = @Datum_Valute_Korekcija
				end
			
			exec sp_VratiVrstaDokumentKalElementSet2_ID @sifra_preduzeca = @Sifra_Preduzeca,
																	  @fk_ZalihaStavkaDok = @Fk_PoslednjaKalkulacija output,
																	  @fk_poslovna_godina = @Fk_PoslovnaGodina,
																	  @fk_st_28_1 = 139,
																	  @fk_id_fk_st_28_1 = @Fk_OrgJed,
																	  @Fk_Artikal = @Fk_Artikal,
																	  @datum = @Datum_Otpremnice
			if IsNull(@Fk_PoslednjaKalkulacija,0) < 1
				begin
					Set @PorukaGreske = 'Artikal: '+ Hubie.dbo.fn_GetArtikalPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_Artikal)+' nema poslednju kalkulaciju !'
					Raiserror(@PorukaGreske,17,1)
					return 1
				end

			TRUNCATE TABLE #kalkulacijaNoviArtikli4545
			insert into #kalkulacijaNoviArtikli4545(pK_Id,fk_st_43,naziv,vrednost)
			exec sp_VratiVrstaDokumentKalElementSet3 	@sifra_preduzeca = @sifra_preduzeca,
																	@fk_VrstaDokument = @Fk_VrstaZaProveru,
																	@fk_poslovna_godina = @Fk_PoslovnaGodina,
																	@Fk_St_42 = null,
																	@fk_st_28_1 = 139,
																	@fk_id_fk_st_28_1 = @Fk_OrgJed,
																	@fk_Artikal = @Fk_Artikal,
																	@datum = @Datum_Otpremnice,
																	@vratitabelu = 1,
																	@fk_ZalihaStavkaDok = @Fk_PoslednjaKalkulacija,
																	@string = ''
			Select top 1 @NAC = KA.vrednost
				from #kalkulacijaNoviArtikli4545 KA
			where KA.fk_st_43 = 274
				and KA.vrednost > 0
			if @@Rowcount = 0
				begin
					Set @PorukaGreske = 'Artikal: '+ Hubie.dbo.fn_GetArtikalPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_Artikal)+' nema poslednju kalkulaciju !'
					Raiserror(@PorukaGreske,17,1)
					return 1
				end
				
			if ((@DaliProdajni > 0 or @DaliInacice > 0) and @ModelFakturisanogPovrata1MP2VP = 0)
				begin  -- PRODAJNI ILI INACICE 
					if @DaliInacice > 0
						begin -- INACICE
							begin try
								exec sp_SetStatusFakturisanPO @sifra_preduzeca = @Sifra_Preduzeca,
																		@kor_id = @Kor_Id,
																		@fk_Dokument = @Fk_DokumentOtpremnice,
																		@DaliSamoOutputVarijanta = 1,
																		@Fk_ArtikalVarijanta = @Fk_Artikal,
																		@Kolicina_ArtikalVarijanta = @Kolicina,
																		@K219 = @K219 output,
																		@K225 = @K225 output,
																		@K285 = @K285 output,
																		@K284 = @K284 output,
																		@K366 = @K366 output,
																		@K223 = @K223 output,
																		@K287 = @K287 output,
																		@K286 = @K286 output,
																		@K288 = @K288 output,
																		@K1450 = @K1450 output,
																		@K1451 = @K1451 output,
																		@K586 = @K586 output,
																		@K587 = @K587 output,
																		@Valutacija = @Valutacija output
								Select @Osnovica = @K366,
										 @DaliValutacija = @ValutacijaZaProveru

								if @ValutacijaZaProveru > 0 
									begin
										Update #Otpakovano43
											Set ValutacijaStavki = IsNull(@Valutacija,0)
										where Fk_Artikal = @Fk_Artikal 
									end
							end try
							begin catch
								Set @PorukaGreske = error_message()
								Raiserror(@PorukaGreske,17,1)
								return 1
							end catch
						end -- INACICE	 
					else if @ProdajniZaProveru = 1
						begin -- PRODAJNI
							exec @rez = sp_Dok6_VratiPrimenjeneProdajneUslove @Sifra_preduzeca = @sifra_preduzeca,
																						@Jezik_id = @jezik_id,
																						@Kor_Id = @Kor_Id,
																						@Fk_Artikal = @Fk_Artikal,
																						@Fk_Dokument = 0,
																						@Fk_VrstaDokument_FIX = @Fk_VrstaZaProveru,
																						@Fk_OrgJed_FIX = @Fk_OrgJed,
																						@Datum_FIX = @Datum_Otpremnice,
																						@Datum_Valute_FIX = @Datum_Valute_Otpremnice,
																						@Fk_Partner_FIX = @Fk_Partner,
																						@RabatNaDokumentu_FIX = 0,
																						@Fk_Valuta_FIX = 0,
																						@Kurs_FIX = null,
																						@Fk_PoslednjaKalkulacija = @Fk_PoslednjaKalkulacija,
																						@K5440 = @K5440 output,
																						@K5441 = @K5441 output,
																						@K5442 = @K5442 output,
																						@K5443 = @K5443 output,
																						@K288 = @K288 output,
																						@K366 = @K366 output,
																						@K219 = @K219 output,
																						@K225 = @K225 output,
																						@K223 = @K223 output,
																						@K1450 = @K1450 output,
																						@K1451 = @K1451 output,
																						@K1452 = @K1452 output,
																						@K1453 = @K1453 output,
																						@K586 = @K586 output,
																						@K587 = @K587 output,
																						@K284 = @K284 output,
																						@K285 = @K285 output,
																						@K631 = @K631 output,
																						@K630 = @K630 output,
																						@K629 = @K629 output,
																						@K3453 = @K3453 output,
																						@Osnovica = @Osnovica output,
																						@Valutacija = @Valutacija output,
																						@DaliValutacija = @DaliValutacija output,
																						@K330 = @K330 output
								if @rez <> 0
									begin
										Set @PorukaGreske = Hubie.dbo.fn_GetArtikalPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_Artikal)
										Set @PorukaGreske = dbo.fn_GetGreskaProdajnihUslova(@Sifra_Preduzeca,@Jezik_Id,@rez)+' ['+IsNull(@PorukaGreske,'')+'] '+dbo.fn_GetPorukajezik(6608,@jezik_id)+' !'
										Raiserror(@PorukaGreske,17,1)
										return 1
									end
								else
									begin
										if @ValutacijaZaProveru > 0
											begin
												Update #Otpakovano43
													Set ValutacijaStavki = IsNull(@Valutacija,0)
												where Fk_Artikal = @Fk_Artikal 
											end
									end
							end -- PRODAJNI

					Set @IRUC = @Osnovica - @NAC
					Set @PRUC = @IRUC / @NAC * 100.0000000
					Update #kalkulacijaNoviArtikli4545
						Set vrednost = @IRUC
					where fk_st_43 in (279,628)
					Update #kalkulacijaNoviArtikli4545
						Set vrednost = @PRUC
					where fk_st_43 in (278,627)

					Update K
						Set vrednost = X.Iznos
						from #kalkulacijaNoviArtikli4545 K
						inner join 
						(
							Select IsNull(@K5440,0) as Iznos,5440 as Fk_St_43
							UNION
							Select IsNull(@K5441,0) as Iznos,5441 as Fk_St_43
							UNION
							Select IsNull(@K5442,0) as Iznos,5442 as Fk_St_43
							UNION
							Select IsNull(@K5443,0) as Iznos,5443 as Fk_St_43
							UNION
							Select IsNull(@K288,0) as Iznos,288 as Fk_St_43
							UNION
							Select IsNull(@K366,0) as Iznos,366 as Fk_St_43
							UNION
							Select IsNull(@K219,0) as Iznos,219 as Fk_St_43
							UNION
							Select IsNull(@K225,0) as Iznos,225 as Fk_St_43
							UNION
							Select IsNull(@K223,0) as Iznos,223 as Fk_St_43
							UNION
							Select IsNull(@K1450,0) as Iznos,1450 as Fk_St_43
							UNION
							Select IsNull(@K1451,0) as Iznos,1451 as Fk_St_43
							UNION
							Select IsNull(@K1452,0) as Iznos,1452 as Fk_St_43
							UNION
							Select IsNull(@K1453,0) as Iznos,1453 as Fk_St_43
							UNION
							Select IsNull(@K586,0) as Iznos,586 as Fk_St_43
							UNION
							Select IsNull(@K587,0) as Iznos,587 as Fk_St_43
							UNION
							Select IsNull(@K284,0) as Iznos,284 as Fk_St_43
							UNION
							Select IsNull(@K285,0) as Iznos,285 as Fk_St_43
							UNION
							Select IsNull(@K631,0) as Iznos,631 as Fk_St_43
							UNION
							Select IsNull(@K630,0) as Iznos,630 as Fk_St_43
							UNION
							Select IsNull(@K629,0) as Iznos,629 as Fk_St_43
							UNION
							Select IsNull(@K3453,0) as Iznos,3453 as Fk_St_43
							UNION
							Select IsNull(@K330,0) as Iznos,330 as Fk_St_43
							UNION
							Select IsNull(@K286,0) as Iznos,286 as Fk_St_43
							UNION
							Select IsNull(@K287,0) as Iznos,287 as Fk_St_43
						) X
						on (K.fk_st_43 = X.Fk_St_43)
				end -- PRODAJNI ILI INACICE
			
			if @Cena_Nova > 0
				begin 
					Select @NAC = 0,
							 @PoreskaStopa = 0,
							 @Preracunata = 0,
							 @IRUC = 0,
							 @PRUC = 0,
							 @Osnovica = 0,
							 @K285 = 0,
							 @K284 = 0  
					
					Select top 1 @NAC = vrednost 
						from #kalkulacijaNoviArtikli4545
					where fk_st_43 = 274
					  and vrednost > 0
					if @@Rowcount = 0
						begin
							Set @PorukaGreske = 'Artikal: '+Hubie.dbo.fn_GetArtikalPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_Artikal) + ' nema NAC !'
							Raiserror(@PorukaGreske,17,1)
							return 1
						end

					Select top 1 @PoreskaStopa = vrednost 
						from #kalkulacijaNoviArtikli4545
					where fk_st_43 = 222
					  and vrednost > 0
					if @@Rowcount = 0
						begin
							Set @PoreskaStopa = 0
						end

					Set @Preracunata = (100.0000000000000 * @PoreskaStopa)/(100.0000000000000 + @PoreskaStopa)
					Set @IznosPoreza = @Cena_Nova * @Preracunata / 100.00000000000000
					Set @Osnovica = @Cena_Nova - @IznosPoreza
					Set @IRUC = @Osnovica - @NAC
					Set @PRUC = @IRUC / @NaC * 100.000000000000000
					if @SifraVOJ in (27,44,45)
						begin -- MP
							Select top 1 @K631 = vrednost 
								from #kalkulacijaNoviArtikli4545
							where fk_st_43 = 631
							  and vrednost > 0
							if @@Rowcount = 0
								begin
									Set @PorukaGreske = 'Artikal: '+Hubie.dbo.fn_GetArtikalPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_Artikal) + ' nema MPC !'
									Raiserror(@PorukaGreske,17,1)
									return 1
								end
							Set @K284 = @K631 - @Cena_Nova
							Set @K285 = @K284 / @K631 * 100.0000000000000000000
						end -- MP
					else
						begin -- VP
							Select top 1 @K219 = vrednost 
								from #kalkulacijaNoviArtikli4545
							where fk_st_43 = 219
							  and vrednost > 0
							if @@Rowcount = 0
								begin
									Set @PorukaGreske = 'Artikal: '+Hubie.dbo.fn_GetArtikalPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_Artikal) + ' nema VPC !'
									Raiserror(@PorukaGreske,17,1)
									return 1
								end
							Set @K284 = @K219 - @Osnovica
							Set @K285 = @K284 / @K219 * 100.0000000000000000000
						end -- VP
					
					if @ModelFakturisanogPovrata1MP2VP > 0
						begin 
							Update #kalkulacijaNoviArtikli4545
								Set vrednost = @Cena_Nova
							where fk_st_43 in (411)
							Select @PRUC = 0,
									 @IRUC = 0,
									 @K284 = 0,
									 @K285 = 0,
									 @K631 = @Cena_Nova,
									 @K225 = @Cena_Nova,
									 @K219 = @Osnovica

							Update #kalkulacijaNoviArtikli4545
								Set vrednost = @IznosPoreza
							where fk_st_43 in (410)
							Update #kalkulacijaNoviArtikli4545
								Set vrednost = @Cena_Nova
							where fk_st_43 in (631,225)
							Update #kalkulacijaNoviArtikli4545
								Set vrednost = @Osnovica
							where fk_st_43 in (216,218,219,274,2406,2409,2924)
							Update #kalkulacijaNoviArtikli4545
								Set vrednost = 0
							where fk_st_43 in (217,275,286,287,586,587,2404,2405,2407,2408,2922,2923,276,277)
						end 

					Update #kalkulacijaNoviArtikli4545
						Set vrednost = @Osnovica
					where fk_st_43 in (366,629)

					Update #kalkulacijaNoviArtikli4545
						Set vrednost = @Cena_Nova
					where fk_st_43 in (288)

					Update #kalkulacijaNoviArtikli4545
						Set vrednost = @IznosPoreza
					where fk_st_43 in (630,223)

					Update #kalkulacijaNoviArtikli4545
						Set vrednost = @PRUC
					where fk_st_43 in (627,278)

					Update #kalkulacijaNoviArtikli4545
						Set vrednost = @IRUC
					where fk_st_43 in (628,279)

					Update #kalkulacijaNoviArtikli4545
						Set vrednost = @K284
					where fk_st_43 in (284,1451)

					Update #kalkulacijaNoviArtikli4545
						Set vrednost = @K285
					where fk_st_43 in (285,1450)

					Update #kalkulacijaNoviArtikli4545
						Set vrednost = 0
					where fk_st_43 in (1452,1453,586,587)
				end

			insert into #KalkulacijeSve5454545(Fk_Artikal, Fk_St_43, RB, Vrednost)
			Select @Fk_Artikal,fk_st_43, pK_Id, vrednost
				from #kalkulacijaNoviArtikli4545
		end -- PETLJA ZA NOVE ARTIKLE
	
	if @MaxBrojacPromeneCene > 0
		begin
			Set @BrojacPromeneCene = 0
			while @BrojacPromeneCene < @MaxBrojacPromeneCene
				begin
					Set @BrojacPromeneCene = @BrojacPromeneCene + 1
					Select top 1 @Fk_ZSD = Fk_ZSD, 
									 @Fk_Artikal = Fk_Artikal,
									 @Cena_Nova = Cena_Nova,
									 @NAC = 0,
									 @PoreskaStopa = 0,
									 @Preracunata = 0,
									 @IRUC = 0,
									 @PRUC = 0,
									 @Osnovica = 0,
									 @K285 = 0,
									 @K284 = 0,
									 @K216 = K216,
									 @K218 = K218,
									 @K409 = K409,
									 @K410 = K410,
									 @K411 = K411,
									 @K217 = K217,
									 @K275 = K275,
									 @K408 = K408,
									 @K702 = K702  
						from #PromeneCeneInsert43
					where Pk_id = @BrojacPromeneCene

					truncate table #kalkulacijaRadna4545
					insert into #kalkulacijaRadna4545(Fk_ZSD, fk_st_43, Rb,vrednost)
					Select SKE.Fk_ZalihaStavkaDok, SKE.FK_ST_43, SKE.RedniBroj,SKE.Kal_Element
						from rt_StavkaDokKalElementi SKE (nolock)
					where SKE.Fk_ZalihaStavkaDok = @Fk_ZSD
					  and SKE.FK_ST_43 > -1

					if @DaliFinKorekcijaNabavnogDela > 0
						begin
							Select @NAC = @K218,
									 @PoreskaStopa = @K409,
									 @Preracunata = @K702,
									 @IznosPoreza = @K410,
									 @Osnovica = @K218,
									 @IRUC = 0,
									 @PRUC = 0,
									 @K631 = @K411,
									 @K284 = 0,
									 @K285 = 0,
									 @K219 = @K218,
									 @K225 = @K411 	
									 
							Update #kalkulacijaRadna4545
								Set vrednost = @K216
							where fk_st_43 in (216)
							Update #kalkulacijaRadna4545
								Set vrednost = @K217
							where fk_st_43 in (217,2404)
							Update #kalkulacijaRadna4545
								Set vrednost = @K218
							where fk_st_43 in (218,219,274,2406,2409,2924)
							Update #kalkulacijaRadna4545
								Set vrednost = @K275
							where fk_st_43 in (275,2405)
							Update #kalkulacijaRadna4545
								Set vrednost = @K408
							where fk_st_43 in (408,307) -- DODAO 307 GREGA 20260128
							Update #kalkulacijaRadna4545
								Set vrednost = @K409
							where fk_st_43 in (222,409)
							Update #kalkulacijaRadna4545
								Set vrednost = @K702
							where fk_st_43 in (702,280)
							Update #kalkulacijaRadna4545
								Set vrednost = @K410
							where fk_st_43 in (410)
							Update #kalkulacijaRadna4545
								Set vrednost = @K411
							where fk_st_43 in (411,631,225)
							Update #kalkulacijaRadna4545
								Set vrednost = 0
							where fk_st_43 in (284,285,276,277,2407,2408,2922,2923)
						end
					else
						begin
							Select top 1 @NAC = vrednost 
								from #kalkulacijaRadna4545
							where fk_st_43 = 274
							  and vrednost > 0
							if @@Rowcount = 0
								begin
									Set @PorukaGreske = 'Artikal: '+Hubie.dbo.fn_GetArtikalPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_Artikal) + ' nema NAC !'
									Raiserror(@PorukaGreske,17,1)
									return 1
								end

							Select top 1 @PoreskaStopa = vrednost 
								from #kalkulacijaRadna4545
							where fk_st_43 = 222
							  and vrednost > 0
							if @@Rowcount = 0
								begin
									Set @PoreskaStopa = 0
								end

							Set @Preracunata = (100.0000000000000 * @PoreskaStopa)/(100.0000000000000 + @PoreskaStopa)
							Set @IznosPoreza = @Cena_Nova * @Preracunata / 100.00000000000000
							Set @Osnovica = @Cena_Nova - @IznosPoreza
							Set @IRUC = @Osnovica - @NAC
							Set @PRUC = @IRUC / @NaC * 100.000000000000000
							if @SifraVOJ in (27,44,45)
								begin -- MP
									Select top 1 @K631 = vrednost 
										from #kalkulacijaRadna4545
									where fk_st_43 = 631
									  and vrednost > 0
									if @@Rowcount = 0
										begin
											Set @PorukaGreske = 'Artikal: '+Hubie.dbo.fn_GetArtikalPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_Artikal) + ' nema MPC !'
											Raiserror(@PorukaGreske,17,1)
											return 1
										end
									Set @K284 = @K631 - @Cena_Nova
									Set @K285 = @K284 / @K631 * 100.0000000000000000000
								end -- MP
							else
								begin -- VP
									Select top 1 @K219 = vrednost 
										from #kalkulacijaRadna4545
									where fk_st_43 = 219
									  and vrednost > 0
									if @@Rowcount = 0
										begin
											Set @PorukaGreske = 'Artikal: '+Hubie.dbo.fn_GetArtikalPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_Artikal) + ' nema VPC !'
											Raiserror(@PorukaGreske,17,1)
											return 1
										end
									Set @K284 = @K219 - @Osnovica
									Set @K285 = @K284 / @K219 * 100.0000000000000000000
								end -- VP

							if @ModelFakturisanogPovrata1MP2VP > 0
								begin 
									Update #kalkulacijaRadna4545
										Set vrednost = @Cena_Nova
									where fk_st_43 in (411)
									Select @PRUC = 0,
											 @IRUC = 0,
											 @K284 = 0,
											 @K285 = 0,
											 @K631 = @Cena_Nova,
											 @K225 = @Cena_Nova,
											 @K219 = @Osnovica

									Update #kalkulacijaRadna4545
										Set vrednost = @IznosPoreza
									where fk_st_43 in (410)
									Update #kalkulacijaRadna4545
										Set vrednost = @Cena_Nova
									where fk_st_43 in (631,225)
									Update #kalkulacijaRadna4545
										Set vrednost = @Osnovica
									where fk_st_43 in (216,218,219,274,2406,2409,2924)
									Update #kalkulacijaRadna4545
										Set vrednost = 0
									where fk_st_43 in (217,275,286,287,586,587,2404,2405,2407,2408,2922,2923,276,277)
								end 
						end
					
					Update #kalkulacijaRadna4545
						Set vrednost = @Osnovica
					where fk_st_43 in (366,629)

					Update #kalkulacijaRadna4545
						Set vrednost = @Cena_Nova
					where fk_st_43 in (288)

					Update #kalkulacijaRadna4545
						Set vrednost = @IznosPoreza
					where fk_st_43 in (630,223)

					Update #kalkulacijaRadna4545
						Set vrednost = @PRUC
					where fk_st_43 in (627,278)

					Update #kalkulacijaRadna4545
						Set vrednost = @IRUC
					where fk_st_43 in (628,279)

					Update #kalkulacijaRadna4545
						Set vrednost = @K284
					where fk_st_43 in (284,1451)

					Update #kalkulacijaRadna4545
						Set vrednost = @K285
					where fk_st_43 in (285,1450)

					Update #kalkulacijaRadna4545
						Set vrednost = 0
					where fk_st_43 in (1452,1453,586,587)

					insert into #KalkulacijePromenaCene5454545(Fk_ZSD,Fk_St_43, RB, Vrednost)
					Select @Fk_ZSD,fk_st_43, Rb, vrednost
						from #kalkulacijaRadna4545
				end
		end
	
	insert into #Zabranjeni43(Fk_St_43)
	Select Fk_ST_43
		from Hubie.dbo.fn_VratiZabranjeneKalElemente(@Sifra_Preduzeca)

	Delete K
		from #KalkulacijePromenaCene5454545 K
		inner join #Zabranjeni43 Z
		on (K.Fk_St_43 = Z.Fk_St_43)

	if @DaliPlusnaKorekcija = 0
		begin -- SVE IDE NA KOREKCIJU
			Set @brojac = 0
			if @DaliFinKorekcijaNabavnogDela > 0
				begin
					insert into #StavkeKorekcije6666(Fk_Artikal, Fk_ArtikalEan, Kolicina, Fk_ZSD, Fk_St_22,ZaInsert,ValutacijaStavki)
					Select O.Fk_Artikal, O.Fk_ArtikalEan,Hubie.dbo.fn_float(O.Kolicina) * Hubie.dbo.fn_float(-1.000000000000), O.Fk_ZSD_ZaKalkulaciju,O.fk_St_22,0,O.ValutacijaStavki
						from #OtpakovanoFin43 O
					order by O.Fk_ZSD
				end
			else
				begin	
					insert into #StavkeKorekcije6666(Fk_Artikal, Fk_ArtikalEan, Kolicina, Fk_ZSD, Fk_St_22,ZaInsert)
					Select O.Fk_Artikal, O.Fk_ArtikalEan,O.Kolicina_Korekcije, Z.Pk_Id,A.fk_St_22,O.ZaInsert
						from #Otpakovano43 O
						inner join m_Artikal A (nolock)
						on (O.Fk_Artikal = A.Pk_Id)
						left outer join rt_ZalihaStavkaDok Z (nolock)
						on (O.Fk_ZSD = Z.Pk_Id)
					where Z.Pk_Id is null
					UNION
					Select O.Fk_Artikal, O.Fk_ArtikalEan,O.Kolicina_Korekcije, Z.Pk_Id,A.fk_St_22,O.ZaInsert
						from #Otpakovano43 O
						inner join rt_ZalihaStavkaDok Z (nolock)
						on (O.Fk_ZSD = Z.Pk_Id)
						inner join m_Artikal A (nolock)
						on (Z.Fk_Artikal = A.Pk_Id)
					order by O.ZaInsert,Z.Pk_Id,O.Fk_Artikal, O.Fk_ArtikalEan,O.Kolicina_Korekcije, A.fk_St_22
				end
			Set @MaxBrojac = @@rowcount
		end -- SVE IDE NA KOREKCIJU
	else
		begin -- DEO NA KOREKCIJU,OSTATAK NA PLUSNU
			Set @brojac = 0
			insert into #StavkeKorekcije6666(Fk_Artikal, Fk_ArtikalEan, Kolicina, Fk_ZSD, Fk_St_22,ZaInsert)
			Select O.Fk_Artikal, O.Fk_ArtikalEan,O.Kolicina_Korekcije, Z.Pk_Id,A.fk_St_22,O.ZaInsert
				from #Otpakovano43 O
				inner join m_Artikal A (nolock)
				on (O.Fk_Artikal = A.Pk_Id)
				left outer join rt_ZalihaStavkaDok Z (nolock)
				on (O.Fk_ZSD = Z.Pk_Id)
			where Z.Pk_Id is null
			  and O.Kolicina_Korekcije < 0
			UNION
			Select O.Fk_Artikal, O.Fk_ArtikalEan,O.Kolicina_Korekcije, Z.Pk_Id,A.fk_St_22,O.ZaInsert
				from #Otpakovano43 O
				inner join rt_ZalihaStavkaDok Z (nolock)
				on (O.Fk_ZSD = Z.Pk_Id)
				inner join m_Artikal A (nolock)
				on (Z.Fk_Artikal = A.Pk_Id)
			where O.Kolicina_Korekcije < 0
			order by O.ZaInsert,Z.Pk_Id,O.Fk_Artikal, O.Fk_ArtikalEan,O.Kolicina_Korekcije, A.fk_St_22
			Set @MaxBrojac = @@rowcount

			insert into #StavkePlusne6666(Fk_Artikal, Fk_ArtikalEan, Kolicina, Fk_ZSD, Fk_St_22,ZaInsert)
			Select O.Fk_Artikal, O.Fk_ArtikalEan,O.Kolicina_Korekcije, Z.Pk_Id,A.fk_St_22,O.ZaInsert
				from #Otpakovano43 O
				inner join m_Artikal A (nolock)
				on (O.Fk_Artikal = A.Pk_Id)
				left outer join rt_ZalihaStavkaDok Z (nolock)
				on (O.Fk_ZSD = Z.Pk_Id)
			where Z.Pk_Id is null
			  and O.Kolicina_Korekcije > 0
			UNION
			Select O.Fk_Artikal, O.Fk_ArtikalEan,O.Kolicina_Korekcije, Z.Pk_Id,A.fk_St_22,O.ZaInsert
				from #Otpakovano43 O
				inner join rt_ZalihaStavkaDok Z (nolock)
				on (O.Fk_ZSD = Z.Pk_Id)
				inner join m_Artikal A (nolock)
				on (Z.Fk_Artikal = A.Pk_Id)
			where O.Kolicina_Korekcije > 0
			order by O.ZaInsert,Z.Pk_Id,O.Fk_Artikal, O.Fk_ArtikalEan,O.Kolicina_Korekcije, A.fk_St_22
		end -- DEO NA KOREKCIJU,OSTATAK NA PLUSNU

	if @DaliValutacijaStavki = 1 and IsNull(@DaliFinKorekcijaNabavnogDela,0) < 1
		begin
			Update S
				Set ValutacijaStavki = O.ValutacijaStavki
				from #StavkeKorekcije6666 S
				inner join #Otpakovano43 O
				on (S.Fk_Artikal = O.Fk_Artikal)
			where O.ZaInsert = 1

			if @MaxBrojacPromeneCene > 0
				begin
					Update S
						Set ValutacijaStavki = O.ValutacijaStavki
						from #PromeneCeneInsert43 S
						inner join #StavkeKorekcije6666 O
						on (S.Fk_Artikal = O.Fk_Artikal)
				end
		end
	if @DaliValutacijaStavkiPlusna > 0
		begin
			Update S
				Set ValutacijaStavki = O.ValutacijaStavki
				from #StavkePlusne6666 S
				inner join #Otpakovano43 O
				on (S.Fk_Artikal = O.Fk_Artikal)
			where O.ZaInsert = 1

			if @MaxBrojacPromeneCene > 0
				begin
					Update S
						Set ValutacijaStavki = O.ValutacijaStavki
						from #PromeneCeneInsert43 S
						inner join #StavkePlusne6666 O
						on (S.Fk_Artikal = O.Fk_Artikal)
				end
		end
	
	insert into #Zabranjeni475(Fk_St_475)
	Select Fk_St_475
		from Hubie.dbo.fn_VratiZabranjeneFk_ST_475_ZaPrepis (@Sifra_Preduzeca) 

	if @DaliKorekcija > 0
		begin
			Select top 1 @SmerPromene = SmerPromene1,
							 @ZnakPromene = ZnakPromene1 
				from r_VrstaDokumentSet
			where Fk_S_VrstaDokument = @Fk_VrstaKorekcija
			  and P_Tab = @PtabVSL

			Select top 1 @SmerOtpremnice = SmerPromene1,
							 @ZnakOtpremnice = ZnakPromene1 
				from r_VrstaDokumentSet
			where Fk_S_VrstaDokument = @Fk_VrstaOtpremnica
			  and P_Tab = @PtabVSL

			if ((@SmerPromene <> @SmerOtpremnice) or (@ZnakPromene <> @ZnakOtpremnice))
				begin
					Raiserror('Dokumenta otpremnice i korekcije moraju biti konfigursana na isti nacin !',17,1)
					return 1
				end

			Update S
				Set Fk_St_22 = A.Fk_ST_22
				from #StavkeKorekcije6666 S
				inner join m_Artikal A (nolock)
				on (S.Fk_Artikal = A.Pk_Id)

			Update S
				Set Fk_St_22 = A.Fk_ST_22
				from #PromeneCeneInsert43 S
				inner join m_Artikal A (nolock)
				on (S.Fk_Artikal = A.Pk_Id)

			if @ZnakPromene = '-'
				begin
					Update #StavkeKorekcije6666
						Set Kolicina = Hubie.dbo.fn_float(Kolicina) * Hubie.dbo.fn_float(-1.000000000)

					Update #PromeneCeneInsert43
						Set Kolicina_Plus = Hubie.dbo.fn_float(Kolicina_Plus) * Hubie.dbo.fn_float(-1.000000000)
				end

			if @SmerPromene in ('U','u')
				begin
					Update #StavkeKorekcije6666
						Set Kolicina_Ulaz = Kolicina
					Update #PromeneCeneInsert43
						Set Kolicina_Ulaz = Kolicina_Plus
				end
			else if @SmerPromene in ('I','i')
				begin
					Update #StavkeKorekcije6666
						Set Kolicina_Izlaz = Kolicina
					Update #PromeneCeneInsert43
						Set Kolicina_Izlaz = Kolicina_Plus
				end
			else
				begin
					Update #StavkeKorekcije6666
						Set Kolicina_Neutice = Kolicina
					Update #PromeneCeneInsert43
						Set Kolicina_Neutice = Kolicina_Plus
				end

			Update #StavkeKorekcije6666
				Set Kolicina_Neutice = Kolicina,
					 Kolicina_Ulaz = null,
					 Kolicina_Izlaz = null
			where Fk_St_22 in (2634,3180)

			Update #PromeneCeneInsert43
				Set Kolicina_Neutice = Kolicina_Plus,
					 Kolicina_Ulaz = null,
					 Kolicina_Izlaz = null
			where Fk_St_22 in (2634,3180)

			if @DaliValutacijaStavki = 1
				begin
					Update S
						Set ValutacijaStavki = V.DaniValute
						from #StavkeKorekcije6666 S
						inner join rt_ZalihaStavkaDokValutacija V (nolock)
						on (S.Fk_ZSD = V.Fk_ZalihaStavkaDok)

					Update S
						Set ValutacijaStavki = V.DaniValute
						from #PromeneCeneInsert43 S
						inner join rt_ZalihaStavkaDokValutacija V (nolock)
						on (S.Fk_ZSD = V.Fk_ZalihaStavkaDok)
				end
		end
	
	if @DaliFinKorekcijaNabavnogDela > 0
		begin
			Select top 1 @SmerPromene = SmerPromene1,
							 @ZnakPromene = ZnakPromene1 
				from r_VrstaDokumentSet
			where Fk_S_VrstaDokument = @Fk_VrstaDokumentFinKorekcije
			  and P_Tab = @PtabVSL

			Select top 1 @SmerOtpremnice = SmerPromene1,
							 @ZnakOtpremnice = ZnakPromene1 
				from r_VrstaDokumentSet
			where Fk_S_VrstaDokument = @Fk_VrstaOtpremnica
			  and P_Tab = @PtabVSL

			if ((@SmerPromene <> @SmerOtpremnice) or (@ZnakPromene <> @ZnakOtpremnice))
				begin
					Raiserror('Dokumenta otpremnice i fin.korekcije moraju biti konfigursana na isti nacin !',17,1)
					return 1
				end

			if @ZnakPromene = '-'
				begin
					Update #StavkeKorekcije6666
						Set Kolicina = Hubie.dbo.fn_float(Kolicina) * Hubie.dbo.fn_float(-1.000000000)

					Update #PromeneCeneInsert43
						Set Kolicina_Plus = Hubie.dbo.fn_float(Kolicina_Plus) * Hubie.dbo.fn_float(-1.000000000)
				end

			if @SmerPromene in ('U','u')
				begin
					Update #StavkeKorekcije6666
						Set Kolicina_Ulaz = Kolicina
					Update #PromeneCeneInsert43
						Set Kolicina_Ulaz = Kolicina_Plus
				end
			else if @SmerPromene in ('I','i')
				begin
					Update #StavkeKorekcije6666
						Set Kolicina_Izlaz = Kolicina
					Update #PromeneCeneInsert43
						Set Kolicina_Izlaz = Kolicina_Plus
				end
			else
				begin
					Update #StavkeKorekcije6666
						Set Kolicina_Neutice = Kolicina
					Update #PromeneCeneInsert43
						Set Kolicina_Neutice = Kolicina_Plus
				end

			Update #StavkeKorekcije6666
				Set Kolicina_Neutice = Kolicina,
					 Kolicina_Ulaz = null,
					 Kolicina_Izlaz = null
			where Fk_St_22 in (2634,3180)

			Update #PromeneCeneInsert43
				Set Kolicina_Neutice = Kolicina_Plus,
					 Kolicina_Ulaz = null,
					 Kolicina_Izlaz = null
			where Fk_St_22 in (2634,3180)
		end

	if @DaliPlusnaKorekcija > 0
		begin
			Select top 1 @SmerPLusneKorekcije = SmerPromene1,
							 @ZnakPlusneKorekcije = ZnakPromene1 
				from r_VrstaDokumentSet
			where Fk_S_VrstaDokument = @Fk_VrstaPlusnaKorekcija
			  and P_Tab = @PtabVSL

			Select top 1 @SmerOtpremnice = SmerPromene1,
							 @ZnakOtpremnice = ZnakPromene1 
				from r_VrstaDokumentSet
			where Fk_S_VrstaDokument = @Fk_VrstaOtpremnica
			  and P_Tab = @PtabVSL

			if ((@SmerPLusneKorekcije <> @SmerOtpremnice) or (@ZnakPlusneKorekcije <> @ZnakOtpremnice))
				begin
					Raiserror('Dokumenta otpremnice i plusne korekcije moraju biti konfigursana na isti nacin !',17,1)
					return 1
				end

			Update S
				Set Fk_St_22 = A.Fk_ST_22
				from #StavkePlusne6666 S
				inner join m_Artikal A (nolock)
				on (S.Fk_Artikal = A.Pk_Id)

			Update S
				Set Fk_St_22 = A.Fk_ST_22
				from #PromeneCeneInsert43 S
				inner join m_Artikal A (nolock)
				on (S.Fk_Artikal = A.Pk_Id)

			if @ZnakPlusneKorekcije = '-'
				begin
					Update #StavkePlusne6666
						Set Kolicina = Hubie.dbo.fn_float(Kolicina) * Hubie.dbo.fn_float(-1.000000000)
					Update #PromeneCeneInsert43
						Set Kolicina_Plus = Hubie.dbo.fn_float(Kolicina_Plus) * Hubie.dbo.fn_float(-1.000000000)
				end

			if @SmerPLusneKorekcije in ('U','u')
				begin
					Update #StavkePlusne6666
						Set Kolicina_Ulaz = Kolicina
					Update #PromeneCeneInsert43
						Set Kolicina_Ulaz = Kolicina_Plus
				end
			else if @SmerPLusneKorekcije in ('I','i')
				begin
					Update #StavkePlusne6666
						Set Kolicina_Izlaz = Kolicina
					Update #PromeneCeneInsert43
						Set Kolicina_Izlaz = Kolicina_Plus
				end
			else
				begin
					Update #StavkePlusne6666
						Set Kolicina_Neutice = Kolicina
					Update #PromeneCeneInsert43
						Set Kolicina_Neutice = Kolicina_Plus
				end

			Update #StavkePlusne6666
				Set Kolicina_Neutice = Kolicina,
					 Kolicina_Ulaz = null,
					 Kolicina_Izlaz = null
			where Fk_St_22 in (2634,3180)

			Update #PromeneCeneInsert43
				Set Kolicina_Neutice = Kolicina_Plus,
					 Kolicina_Ulaz = null,
					 Kolicina_Izlaz = null
			where Fk_St_22 in (2634,3180)

			if @DaliValutacijaStavkiPlusna = 1
				begin
					Update S
						Set ValutacijaStavki = V.DaniValute
						from #StavkePlusne6666 S
						inner join rt_ZalihaStavkaDokValutacija V (nolock)
						on (S.Fk_ZSD = V.Fk_ZalihaStavkaDok)

					Update S
						Set ValutacijaStavki = V.DaniValute
						from #PromeneCeneInsert43 S
						inner join rt_ZalihaStavkaDokValutacija V (nolock)
						on (S.Fk_ZSD = V.Fk_ZalihaStavkaDok)
				end
		end
	
	if @DaliKorekcija > 0
		begin
			if @DaliPreuzimamDatumValuteOtpremnice_Korekcija > 0
				begin
					if @DaliSvodimValutacijuStavkiNaZaglavljeDokumentaAkoZadrzavamDV > 0
						begin
							if @Datum_Korekcije > @Datum_Otpremnice
								begin
									Set @RazlikaDatumOtpremeDatumDokumenta = datediff(day,@Datum_Otpremnice,@Datum_Korekcije)
									Update #StavkeKorekcije6666
										Set ValutacijaStavki = IsNull(ValutacijaStavki,0) - @RazlikaDatumOtpremeDatumDokumenta

									Update #PromeneCeneInsert43
										Set ValutacijaStavki = IsNull(ValutacijaStavki,0) - @RazlikaDatumOtpremeDatumDokumenta
								end
						end
				end
		end

	if @DaliFinKorekcijaNabavnogDela > 0 
		begin
			if @DaliPreuzimamDatumValuteOtpremnice_Korekcija > 0
				begin
					if @DaliSvodimValutacijuStavkiNaZaglavljeDokumentaAkoZadrzavamDV > 0
						begin
							if @DatumFinKorekcije > @Datum_Otpremnice
								begin
									Set @RazlikaDatumOtpremeDatumDokumenta = datediff(day,@Datum_Otpremnice,@DatumFinKorekcije)
									Update #StavkeKorekcije6666
										Set ValutacijaStavki = IsNull(ValutacijaStavki,0) - @RazlikaDatumOtpremeDatumDokumenta

									Update #PromeneCeneInsert43
										Set ValutacijaStavki = IsNull(ValutacijaStavki,0) - @RazlikaDatumOtpremeDatumDokumenta
								end
						end
				end
		end

	if @DaliPlusnaKorekcija > 0
		begin
			if @DaliPreuzimamDatumValuteOtpremnice_PlusnaKorekcija > 0
				begin
					if @DaliSvodimValutacijuStavkiNaZaglavljeDokumentaAkoZadrzavamDV > 0
						begin
							if @Datum_Plusne > @Datum_Otpremnice
								begin
									Set @RazlikaDatumOtpremeDatumDokumenta = datediff(day,@Datum_Otpremnice,@Datum_Plusne)
									Update #StavkePlusne6666
										Set ValutacijaStavki = IsNull(ValutacijaStavki,0) - @RazlikaDatumOtpremeDatumDokumenta

									Update #PromeneCeneInsert43
										Set ValutacijaStavki = IsNull(ValutacijaStavki,0) - @RazlikaDatumOtpremeDatumDokumenta
								end
						end
				end

			Set @BrojacDokCepanje = 0
			insert into #DistValutacijePlusne454545554154(ValutacijaStavki)
			Select ValutacijaStavki
				from #StavkePlusne6666
			UNION
			Select ValutacijaStavki
				from #PromeneCeneInsert43
			order by ValutacijaStavki
			Set @MaxBrojacDokCepanje = @@rowcount
			if @MaxBrojacDokCepanje > 1
				begin
					Update S
						Set RB_Dokumenta = D.Pk_Id
						from #StavkePlusne6666 S
						inner join #DistValutacijePlusne454545554154 D
						on (S.ValutacijaStavki = D.ValutacijaStavki)

					Update S
						Set RB_Dokumenta = D.Pk_Id 
						from #PromeneCeneInsert43 S
						inner join #DistValutacijePlusne454545554154 D
						on (S.ValutacijaStavki = D.ValutacijaStavki)
				end
		end
	
	if @DaliKorekcija > 0
		begin
			insert into #VrsteDokumenataAmabalazeOtpremnica45454545(Fk_VrstaDokument)
			Select Pk_Id
				from s_VrstaDokument
			where Pk_Id = Hubie.dbo.fn_GetVrstaDokumentZaduzenjeRazduzenjeAmbalze(@sifra_preduzeca,@Fk_VrstaOtpremnica,@SifraVOJ,1)
			UNION
			Select Pk_Id
				from s_VrstaDokument
			where Pk_Id = Hubie.dbo.fn_GetVrstaDokumentZaduzenjeRazduzenjeAmbalze(@sifra_preduzeca,@Fk_VrstaOtpremnica,@SifraVOJ,0)
			if @@Rowcount > 0
				begin
					insert into #DokumentaOtpremniceAmbalaze45454545(Fk_Dokument)
					Select D.Pk_Id
						from rt_Dokument_2 D2 (nolock)
						inner join rt_Dokument D (nolock)
						on (D.Pk_Id = D2.Fk_dokument)
						inner join #VrsteDokumenataAmabalazeOtpremnica45454545 VD
						on (D.Fk_VrstaDokument = VD.Fk_VrstaDokument)
					where D2.fk_veza_dok1 = @Fk_DokumentOtpremnice
					  and D.Neaktivnost = 0
				end
		end

	declare @SpoljnaTransakcija bit
	if @@Trancount > 0
		Set @SpoljnaTransakcija = 1
	else
		Set @SpoljnaTransakcija = 0

	if @SpoljnaTransakcija = 0 and @@Trancount = 0
		BEGIN TRAN
	
	if @DaliKorekcija > 0
		begin -- KOREKCIJA
			Select @brojac = 0,
					 @MaxBrojac = 0
			Select @MaxBrojac = count(*) 
				from #StavkeKorekcije6666 	 
			
			Set @Fk_PoslovnaGodina_Korekcije = @Fk_PoslovnaGodina
			if 1 <> Hubie.dbo.fn_GetDaliMozeDatumPoslovnaGodina(@Sifra_preduzeca,@Datum_Korekcije,@Fk_PoslovnaGodina_Korekcije)
				begin
					Select top 1 @Fk_PoslovnaGodina_Korekcije = Fk_PoslovnaGodina 
						from Hubie.dbo.fn_VratiPoslovneGodineUPeriodu(@Sifra_Preduzeca,@Datum_Korekcije,@Datum_Korekcije)
					if @@Rowcount = 0
						begin
							if @SpoljnaTransakcija = 0 and @@Trancount > 0
								rollback tran
							Raiserror('Nije definisana poslovna godina za korekciju !',17,1)
							return 1
						end
				end

			Set @broj_Dokumenta = null
			Select @broj_Dokumenta = MAX(D2.Broj_Dokumenta)
				from rt_Dokument D 
				inner join rt_Dokument_2 d2 
				on (D.Pk_Id = D2.Fk_dokument)
			where D.Fk_Poslovna_Godina = @Fk_PoslovnaGodina_Korekcije
			  and D.Neaktivnost = 0
			  and D.Fk_VrstaDokument = @Fk_VrstaKorekcija
			  and d2.fk_Id_fk_st_28_1 = @Fk_OrgJed
			  and d2.fk_st_28_1 = 139
			Set @broj_Dokumenta = IsNull(@broj_Dokumenta,0) + 1

			insert into rt_DOkument(Neaktivnost, Fk_Poslovna_Godina, FK_ST_42,Fk_VrstaDokument, Datum_Dokumenta, Storniran, K_Ins, K_Upd)
			Select 0,@Fk_PoslovnaGodina_Korekcije,@Fk_St_42_Korekcija,@Fk_VrstaKorekcija,@Datum_Korekcije,0,@Kor_Id,@Kor_Id
			if @@Error <> 0
				begin
					if @SpoljnaTransakcija = 0 and @@Trancount > 0
						rollback tran
					return 1
				end
			Set @Fk_DOkument_OUT = scope_identity()

			insert into rt_Dokument_2(Fk_dokument, fk_st_28_1, fk_Id_fk_st_28_1,Broj_Dokumenta, fk_st_28_2, fk_Id_fk_st_28_2, fk_radnik1, Azuriran,
							Automatsko_formiranje, fk_Veza_dok1, Iskontiran, broj_Dostavnice, Datum_dostavnice, Datum_Valute, k_ins, k_upd, RegBrVozila,
							VozacImePrezime, VozacBrojLK, VozacJMBG, Rabat, Fk_PartnerIsporuka,fk_st_28_3, fk_Id_fk_st_28_3)
			Select @Fk_DOkument_OUT, fk_st_28_1, fk_Id_fk_st_28_1,@broj_Dokumenta, fk_st_28_2, fk_Id_fk_st_28_2, @Fk_Radnik, 0,
				1, @Fk_DokumentOtpremnice, 0, broj_Dostavnice, null as Datum_dostavnice, @Datum_Valute_Korekcija, @Kor_Id, @Kor_Id, RegBrVozila,
				VozacImePrezime, VozacBrojLK, VozacJMBG, Rabat, @Fk_PartnerIsporuka,fk_st_28_3, fk_Id_fk_st_28_3
				from rt_Dokument_2 D2 (nolock)
			where D2.Fk_dokument = @Fk_DokumentOtpremnice
			if @@Error <> 0
				begin
					if @SpoljnaTransakcija = 0 and @@Trancount > 0
						rollback tran
					return 1
				end

			if @Komentar is not null
				begin
					insert into rt_Dokument_2_u(fk_Dokument_2, jezik_id, Komentar_1, k_ins, k_upd)
					Select @Fk_DOkument_OUT,@Jezik_Id,@Komentar,@Kor_Id,@Kor_Id
					if @@Error <> 0
						begin
							if @SpoljnaTransakcija = 0 and @@Trancount > 0
								rollback tran
							return 1
						end
				end
	
			exec sp_PrepisDokumentPodatakSaDokumentaNaDokument @Sifra_Preduzeca = @Sifra_Preduzeca,
																				@Kor_Id = @Kor_Id,
																				@Fk_DokumentSource = @Fk_DokumentOtpremnice,
																				@Fk_DokumentDestination = @Fk_DOkument_OUT,
																				@DaliRadimUpdate = 0,
																				@DodatniPodatak = null,
																				@DodatniPodatak1 = null,
																				@DodatniPodatak2 = null
			if @@Error <> 0
				begin
					if @SpoljnaTransakcija = 0 and @@Trancount > 0
						rollback tran
					return 1
				end

			insert into rt_DokumentGuid(IzvorniGuid,Fk_Dokument)
			Select @Guid_Izvorni,@Fk_DOkument_OUT
			if @@Error <> 0
				begin
					if @SpoljnaTransakcija = 0 and @@Trancount > 0
						rollback tran
					return 1
				end
	
			Select @brojac = 0
			Select @MaxBrojac = MAX(Pk_Id) 
				from #StavkeKorekcije6666

			while @brojac < @MaxBrojac
				begin -- STAVKE
					Set @brojac = @brojac + 1
					Select top 1 @tekuciZSD = Fk_ZSD,
									 @Valutacija = ValutacijaStavki,
									 @Fk_Artikal = Fk_Artikal 
						from #StavkeKorekcije6666
					where Pk_Id = @brojac
					if @@Rowcount > 0
						begin
							insert into rt_ZalihaStavkaDok(Neaktivnost, Fk_PoslovnaGodina, Fk_St_28,Fk_PK_Id_Nosioca, Fk_Artikal, Fk_ArtikalEan, Datum_TransakcijeDokumenta, Fk_Dokument, 
								Kolicina_Ulaz, Kolicina_Izlaz, Kolicina_Neutice, K_Ins, K_Upd)
							Select top 1 0,@Fk_PoslovnaGodina_Korekcije,139,@Fk_OrgJed,Fk_Artikal,Fk_ArtikalEan,@Datum_Korekcije,@Fk_DOkument_OUT,Kolicina_Ulaz,
								Kolicina_Izlaz, Kolicina_Neutice,@Kor_Id,@Kor_Id
								from #StavkeKorekcije6666
							where Pk_Id = @brojac
							if @@Error <> 0
								begin
									if @SpoljnaTransakcija = 0 and @@Trancount > 0
										rollback tran
									return 1
								end
							Set @LastZSD = scope_Identity()

							Update #StavkeKorekcije6666
								Set Fk_ZSD_Novi = @LastZSD
							where Pk_Id = @brojac

							if @Valutacija <> 0
								begin
									insert into rt_ZalihaStavkaDokValutacija(Fk_ZalihaStavkaDok, DaniValute)
									Select top 1 Fk_ZSD_Novi, ValutacijaStavki
										from #StavkeKorekcije6666
									where Pk_Id = @brojac
									if @@Error <> 0
										begin
											if @SpoljnaTransakcija = 0 and @@Trancount > 0
												rollback tran
											return 1
										end
								end

							if @tekuciZSD > 0
								begin
									insert into rt_StavkaDokKalElementi(Fk_ZalihaStavkaDok, RedniBroj, FK_ST_43,  Kal_Element)
									Select @LAstZSD,SKE.RedniBroj, SKE.FK_ST_43, SKE.Kal_Element
										from rt_StavkaDokKalElementi SKE (nolock)
										left outer join #Zabranjeni43 Z
										on (SKE.FK_ST_43 = Z.Fk_St_43)
									where SKE.Fk_ZalihaStavkaDok = @tekuciZSD
									  and Z.Fk_St_43 is null
									order by SKE.FK_ST_43
									if @@Error <> 0
										begin
											if @SpoljnaTransakcija = 0 and @@Trancount > 0
												rollback tran
											return 1
										end
								end
							else
								begin -- OVDE IDE INSERT
									insert into rt_StavkaDokKalElementi(Fk_ZalihaStavkaDok, RedniBroj, FK_ST_43,  Kal_Element)
									Select @LAstZSD,K.RB, K.FK_ST_43, K.Vrednost
										from #KalkulacijeSve5454545 K (nolock)
										left outer join #Zabranjeni43 Z
										on (K.Fk_St_43 = Z.Fk_St_43)
									where K.Fk_Artikal = @Fk_Artikal
									  and Z.Fk_St_43 is null
									order by K.FK_ST_43
									if @@Error <> 0
										begin
											if @SpoljnaTransakcija = 0 and @@Trancount > 0
												rollback tran
											return 1
										end
								end -- OVDE IDE INSERT
						end
				end -- STAVKE

			if @DaliPlusnaKorekcija = 0 and @MaxBrojacPromeneCene > 0
				begin -- I PROMENE CENE IDU NA KOREKCIJU
					Set @brojac = 0
					while @brojac < @MaxBrojacPromeneCene
						begin -- STAVKE PROMENE CENE
							Set @brojac = @brojac + 1
							Select top 1 @tekuciZSD = Fk_ZSD,
											 @Valutacija = ValutacijaStavki,
											 @Fk_Artikal = Fk_Artikal 
								from #PromeneCeneInsert43
							where Pk_Id = @brojac
							if @@Rowcount > 0
								begin
									insert into rt_ZalihaStavkaDok(Neaktivnost, Fk_PoslovnaGodina, Fk_St_28,Fk_PK_Id_Nosioca, Fk_Artikal, Fk_ArtikalEan, Datum_TransakcijeDokumenta, Fk_Dokument, 
										Kolicina_Ulaz, Kolicina_Izlaz, Kolicina_Neutice, K_Ins, K_Upd)
									Select top 1 0,@Fk_PoslovnaGodina_Korekcije,139,@Fk_OrgJed,Fk_Artikal,Fk_ArtikalEan,@Datum_Korekcije,@Fk_DOkument_OUT,Kolicina_Ulaz,
										Kolicina_Izlaz, Kolicina_Neutice,@Kor_Id,@Kor_Id
										from #PromeneCeneInsert43
									where Pk_Id = @brojac
									if @@Error <> 0
										begin
											if @SpoljnaTransakcija = 0 and @@Trancount > 0
												rollback tran
											return 1
										end
									Set @LastZSD = scope_Identity()

									Update #PromeneCeneInsert43
										Set Fk_ZSD_Novi = @LastZSD
									where Pk_Id = @brojac

									if @Valutacija <> 0
										begin
											insert into rt_ZalihaStavkaDokValutacija(Fk_ZalihaStavkaDok, DaniValute)
											Select top 1 Fk_ZSD_Novi, ValutacijaStavki
												from #PromeneCeneInsert43
											where Pk_Id = @brojac
											if @@Error <> 0
												begin
													if @SpoljnaTransakcija = 0 and @@Trancount > 0
														rollback tran
													return 1
												end
										end

									insert into rt_StavkaDokKalElementi(Fk_ZalihaStavkaDok, RedniBroj, FK_ST_43,  Kal_Element)
									Select @LAstZSD,RB, Fk_St_43, Vrednost 
										from #KalkulacijePromenaCene5454545
									where Fk_ZSD = @tekuciZSD
									order by Fk_St_43
									if @@Error <> 0
										begin
											if @SpoljnaTransakcija = 0 and @@Trancount > 0
												rollback tran
											return 1
										end
										
								end
						end -- STAVKE PROMENE CENE
				end -- I PROMENE CENE IDU NA KOREKCIJU
		end -- KOREKCIJA

	if @DaliFinKorekcijaNabavnogDela > 0
		begin -- FIN KOREKCIJA
			Select @brojac = 0,
					 @MaxBrojac = 0
			Select @MaxBrojac = count(*) 
				from #StavkeKorekcije6666 	 
			
			Set @Fk_PoslovnaGodina_Korekcije = @Fk_PoslovnaGodina
			if 1 <> Hubie.dbo.fn_GetDaliMozeDatumPoslovnaGodina(@Sifra_preduzeca,@DatumFinKorekcije,@Fk_PoslovnaGodina_Korekcije)
				begin
					Select top 1 @Fk_PoslovnaGodina_Korekcije = Fk_PoslovnaGodina 
						from Hubie.dbo.fn_VratiPoslovneGodineUPeriodu(@Sifra_Preduzeca,@DatumFinKorekcije,@DatumFinKorekcije)
					if @@Rowcount = 0
						begin
							if @SpoljnaTransakcija = 0 and @@Trancount > 0
								rollback tran
							Raiserror('Nije definisana poslovna godina za fin.korekciju !',17,1)
							return 1
						end
				end
			
			Set @broj_Dokumenta = null
			Select @broj_Dokumenta = MAX(D2.Broj_Dokumenta)
				from rt_Dokument D 
				inner join rt_Dokument_2 d2 
				on (D.Pk_Id = D2.Fk_dokument)
			where D.Fk_Poslovna_Godina = @Fk_PoslovnaGodina_Korekcije
			  and D.Neaktivnost = 0
			  and D.Fk_VrstaDokument = @Fk_VrstaDokumentFinKorekcije
			  and d2.fk_Id_fk_st_28_1 = @Fk_OrgJed
			  and d2.fk_st_28_1 = 139
			Set @broj_Dokumenta = IsNull(@broj_Dokumenta,0) + 1

			insert into rt_DOkument(Neaktivnost, Fk_Poslovna_Godina, FK_ST_42,Fk_VrstaDokument, Datum_Dokumenta, Storniran, K_Ins, K_Upd)
			Select 0,@Fk_PoslovnaGodina_Korekcije,@Fk_St_42_FinKorekcije,@Fk_VrstaDokumentFinKorekcije,@DatumFinKorekcije,0,@Kor_Id,@Kor_Id
			if @@Error <> 0
				begin
					if @SpoljnaTransakcija = 0 and @@Trancount > 0
						rollback tran
					return 1
				end
			Set @Fk_DOkument_OUT = scope_identity()

			insert into rt_Dokument_2(Fk_dokument, fk_st_28_1, fk_Id_fk_st_28_1,Broj_Dokumenta, fk_st_28_2, fk_Id_fk_st_28_2, fk_radnik1, Azuriran,
							Automatsko_formiranje, fk_Veza_dok1, Iskontiran, broj_Dostavnice, Datum_dostavnice, Datum_Valute, k_ins, k_upd, RegBrVozila,
							VozacImePrezime, VozacBrojLK, VozacJMBG, Rabat, Fk_PartnerIsporuka,fk_st_28_3, fk_Id_fk_st_28_3)
			Select @Fk_DOkument_OUT, fk_st_28_1, fk_Id_fk_st_28_1,@broj_Dokumenta, fk_st_28_2, fk_Id_fk_st_28_2, @Fk_Radnik, 0,
				1, @Fk_DokumentOtpremnice, 0, broj_Dostavnice, null as Datum_dostavnice, @Datum_Valute_Korekcija, @Kor_Id, @Kor_Id, RegBrVozila,
				VozacImePrezime, VozacBrojLK, VozacJMBG, Rabat, @Fk_PartnerIsporuka,fk_st_28_3, fk_Id_fk_st_28_3
				from rt_Dokument_2 D2 (nolock)
			where D2.Fk_dokument = @Fk_DokumentOtpremnice
			if @@Error <> 0
				begin
					if @SpoljnaTransakcija = 0 and @@Trancount > 0
						rollback tran
					return 1
				end

			if @Komentar is not null
				begin
					insert into rt_Dokument_2_u(fk_Dokument_2, jezik_id, Komentar_1, k_ins, k_upd)
					Select @Fk_DOkument_OUT,@Jezik_Id,@Komentar,@Kor_Id,@Kor_Id
					if @@Error <> 0
						begin
							if @SpoljnaTransakcija = 0 and @@Trancount > 0
								rollback tran
							return 1
						end
				end
	
			exec sp_PrepisDokumentPodatakSaDokumentaNaDokument @Sifra_Preduzeca = @Sifra_Preduzeca,
																				@Kor_Id = @Kor_Id,
																				@Fk_DokumentSource = @Fk_DokumentOtpremnice,
																				@Fk_DokumentDestination = @Fk_DOkument_OUT,
																				@DaliRadimUpdate = 0,
																				@DodatniPodatak = null,
																				@DodatniPodatak1 = null,
																				@DodatniPodatak2 = null
			if @@Error <> 0
				begin
					if @SpoljnaTransakcija = 0 and @@Trancount > 0
						rollback tran
					return 1
				end

			insert into rt_DokumentGuid(IzvorniGuid,Fk_Dokument)
			Select @Guid_Izvorni,@Fk_DOkument_OUT
			if @@Error <> 0
				begin
					if @SpoljnaTransakcija = 0 and @@Trancount > 0
						rollback tran
					return 1
				end
	
			Select @brojac = 0
			Select @MaxBrojac = MAX(Pk_Id) 
				from #StavkeKorekcije6666

			while @brojac < @MaxBrojac
				begin -- MINUSNE STAVKE
					Set @brojac = @brojac + 1
					Select top 1 @tekuciZSD = Fk_ZSD,
									 @Valutacija = ValutacijaStavki,
									 @Fk_Artikal = Fk_Artikal 
						from #StavkeKorekcije6666
					where Pk_Id = @brojac
					if @@Rowcount > 0
						begin
							insert into rt_ZalihaStavkaDok(Neaktivnost, Fk_PoslovnaGodina, Fk_St_28,Fk_PK_Id_Nosioca, Fk_Artikal, Fk_ArtikalEan, Datum_TransakcijeDokumenta, Fk_Dokument, 
								Kolicina_Ulaz, Kolicina_Izlaz, Kolicina_Neutice, K_Ins, K_Upd)
							Select top 1 0,@Fk_PoslovnaGodina_Korekcije,139,@Fk_OrgJed,Fk_Artikal,Fk_ArtikalEan,@DatumFinKorekcije,@Fk_DOkument_OUT,Kolicina_Ulaz,
								Kolicina_Izlaz, Kolicina_Neutice,@Kor_Id,@Kor_Id
								from #StavkeKorekcije6666
							where Pk_Id = @brojac
							if @@Error <> 0
								begin
									if @SpoljnaTransakcija = 0 and @@Trancount > 0
										rollback tran
									return 1
								end
							Set @LastZSD = scope_Identity()

							Update #StavkeKorekcije6666
								Set Fk_ZSD_Novi = @LastZSD
							where Pk_Id = @brojac

							if @Valutacija <> 0
								begin
									insert into rt_ZalihaStavkaDokValutacija(Fk_ZalihaStavkaDok, DaniValute)
									Select top 1 Fk_ZSD_Novi, ValutacijaStavki
										from #StavkeKorekcije6666
									where Pk_Id = @brojac
									if @@Error <> 0
										begin
											if @SpoljnaTransakcija = 0 and @@Trancount > 0
												rollback tran
											return 1
										end
								end

							insert into rt_StavkaDokKalElementi(Fk_ZalihaStavkaDok, RedniBroj, FK_ST_43,  Kal_Element)
							Select @LAstZSD,SKE.RedniBroj, SKE.FK_ST_43, SKE.Kal_Element
								from rt_StavkaDokKalElementi SKE (nolock)
								left outer join #Zabranjeni43 Z
								on (SKE.FK_ST_43 = Z.Fk_St_43)
							where SKE.Fk_ZalihaStavkaDok = @tekuciZSD
								and Z.Fk_St_43 is null
							order by SKE.FK_ST_43
							if @@Error <> 0
								begin
									if @SpoljnaTransakcija = 0 and @@Trancount > 0
										rollback tran
									return 1
								end
						end
				end -- STAVKE

			Set @brojac = 0
			while @brojac < @MaxBrojacPromeneCene
				begin -- STAVKE PROMENE CENE
					Set @brojac = @brojac + 1
					Select top 1 @tekuciZSD = Fk_ZSD,
										@Valutacija = ValutacijaStavki,
										@Fk_Artikal = Fk_Artikal 
						from #PromeneCeneInsert43
					where Pk_Id = @brojac
					if @@Rowcount > 0
						begin
							insert into rt_ZalihaStavkaDok(Neaktivnost, Fk_PoslovnaGodina, Fk_St_28,Fk_PK_Id_Nosioca, Fk_Artikal, Fk_ArtikalEan, Datum_TransakcijeDokumenta, Fk_Dokument, 
								Kolicina_Ulaz, Kolicina_Izlaz, Kolicina_Neutice, K_Ins, K_Upd)
							Select top 1 0,@Fk_PoslovnaGodina_Korekcije,139,@Fk_OrgJed,Fk_Artikal,Fk_ArtikalEan,@DatumFinKorekcije,@Fk_DOkument_OUT,Kolicina_Ulaz,
								Kolicina_Izlaz, Kolicina_Neutice,@Kor_Id,@Kor_Id
								from #PromeneCeneInsert43
							where Pk_Id = @brojac
							if @@Error <> 0
								begin
									if @SpoljnaTransakcija = 0 and @@Trancount > 0
										rollback tran
									return 1
								end
							Set @LastZSD = scope_Identity()

							Update #PromeneCeneInsert43
								Set Fk_ZSD_Novi = @LastZSD
							where Pk_Id = @brojac

							if @Valutacija <> 0
								begin
									insert into rt_ZalihaStavkaDokValutacija(Fk_ZalihaStavkaDok, DaniValute)
									Select top 1 Fk_ZSD_Novi, ValutacijaStavki
										from #PromeneCeneInsert43
									where Pk_Id = @brojac
									if @@Error <> 0
										begin
											if @SpoljnaTransakcija = 0 and @@Trancount > 0
												rollback tran
											return 1
										end
								end

							insert into rt_StavkaDokKalElementi(Fk_ZalihaStavkaDok, RedniBroj, FK_ST_43,  Kal_Element)
							Select @LAstZSD,RB, Fk_St_43, Vrednost 
								from #KalkulacijePromenaCene5454545
							where Fk_ZSD = @tekuciZSD
							order by Fk_St_43
							if @@Error <> 0
								begin
									if @SpoljnaTransakcija = 0 and @@Trancount > 0
										rollback tran
									return 1
								end
										
						end
				end -- STAVKE PROMENE CENE
		end -- FIN KOREKCIJA

	if @DaliPlusnaKorekcija > 0
		begin -- PLUSNA KOREKCIJA
			Set @Fk_PoslovnaGodina_Plusne = @Fk_PoslovnaGodina
			if 1 <> Hubie.dbo.fn_GetDaliMozeDatumPoslovnaGodina(@Sifra_preduzeca,@Datum_Plusne,@Fk_PoslovnaGodina_Plusne)
				begin
					Select top 1 @Fk_PoslovnaGodina_Plusne = Fk_PoslovnaGodina 
						from Hubie.dbo.fn_VratiPoslovneGodineUPeriodu(@Sifra_Preduzeca,@Datum_Plusne,@Datum_Plusne)
					if @@Rowcount = 0
						begin
							if @SpoljnaTransakcija = 0 and @@Trancount > 0
								rollback tran
							Raiserror('Nije definisana poslovna godina za plusnu korekciju !',17,1)
							return 1
						end
				end

			while @BrojacDokCepanje < @MaxBrojacDokCepanje
				begin -- PETLJA ZA VALUTACIJU PO DOKUMENTU
					Set @BrojacDokCepanje = @BrojacDokCepanje + 1
					
					Select @brojac = 0,
							 @MaxBrojac = 0,
							 @broj_Dokumenta_Plusna = 0,
							 @TekucaValutacija = 0

					if @DaliValutacijaStavkiPlusna > 0
						begin
							Select top 1 @TekucaValutacija = ValutacijaStavki 
								from #DistValutacijePlusne454545554154
							where Pk_Id = @BrojacDokCepanje
							if @@Rowcount = 0
								begin
									Set @TekucaValutacija = 0
								end
							if @TekucaValutacija > 0
								begin
									Set @Datum_Valute_Plusna = dateadd(day,@TekucaValutacija,@Datum_Plusne)
								end
							else
								begin
									Set @Datum_Valute_Plusna = @Datum_PLusne
								end
						end
					
					Select @brojac = min(Pk_Id)
						from #StavkePlusne6666 	 
					where RB_Dokumenta = @BrojacDokCepanje
					Set @brojac = @brojac - 1

					Select @MaxBrojac = max(Pk_Id)
						from #StavkePlusne6666 	 
					where RB_Dokumenta = @BrojacDokCepanje

					Select @broj_Dokumenta_Plusna = MAX(D2.Broj_Dokumenta)
						from rt_Dokument D 
						inner join rt_Dokument_2 d2 
						on (D.Pk_Id = D2.Fk_dokument)
					where D.Fk_Poslovna_Godina = @Fk_PoslovnaGodina_Plusne
					  and D.Neaktivnost = 0
					  and D.Fk_VrstaDokument = @Fk_VrstaPlusnaKorekcija
					  and d2.fk_Id_fk_st_28_1 = @Fk_OrgJed
					  and d2.fk_st_28_1 = 139
					Set @broj_Dokumenta_Plusna = IsNull(@broj_Dokumenta_Plusna,0) + 1

					insert into rt_DOkument(Neaktivnost, Fk_Poslovna_Godina, FK_ST_42,Fk_VrstaDokument, Datum_Dokumenta, Storniran, K_Ins, K_Upd)
					Select 0,@Fk_PoslovnaGodina_Plusne,@Fk_St_42_PLusnaKorekcija,@Fk_VrstaPlusnaKorekcija,@Datum_PLusne,0,@Kor_Id,@Kor_Id
					if @@Error <> 0
						begin
							if @SpoljnaTransakcija = 0 and @@Trancount > 0
								rollback tran
							return 1
						end
					Set @Fk_DOkument_OUT_PlusnaKorekcija = scope_identity()
					insert into #kreiranaDokumentaPlusneKorekcije54455555(Fk_Dokument)
					Select @Fk_DOkument_OUT_PlusnaKorekcija

					insert into rt_Dokument_2(Fk_dokument, fk_st_28_1, fk_Id_fk_st_28_1,Broj_Dokumenta, fk_st_28_2, fk_Id_fk_st_28_2, fk_radnik1, Azuriran,
									Automatsko_formiranje, fk_Veza_dok2, Iskontiran, broj_Dostavnice, Datum_dostavnice, Datum_Valute, k_ins, k_upd, RegBrVozila,
									VozacImePrezime, VozacBrojLK, VozacJMBG, Rabat, Fk_PartnerIsporuka,fk_st_28_3, fk_Id_fk_st_28_3)
					Select @Fk_DOkument_OUT_PlusnaKorekcija, fk_st_28_1, fk_Id_fk_st_28_1,@broj_Dokumenta_Plusna, fk_st_28_2, fk_Id_fk_st_28_2, @Fk_Radnik, 0,
						1, @Fk_DokumentOtpremnice, 0, broj_Dostavnice, null as Datum_dostavnice, @Datum_Valute_Plusna, @Kor_Id, @Kor_Id, RegBrVozila,
						VozacImePrezime, VozacBrojLK, VozacJMBG, Rabat, @Fk_PartnerIsporuka,fk_st_28_3, fk_Id_fk_st_28_3
						from rt_Dokument_2 D2 (nolock)
					where D2.Fk_dokument = @Fk_DokumentOtpremnice
					if @@Error <> 0
						begin
							if @SpoljnaTransakcija = 0 and @@Trancount > 0
								rollback tran
							return 1
						end
					
					if @Komentar is not null
						begin
							insert into rt_Dokument_2_u(fk_Dokument_2, jezik_id, Komentar_1, k_ins, k_upd)
							Select @Fk_DOkument_OUT_PlusnaKorekcija,@Jezik_Id,@Komentar,@Kor_Id,@Kor_Id
							if @@Error <> 0
								begin
									if @SpoljnaTransakcija = 0 and @@Trancount > 0
										rollback tran
									return 1
								end
						end
	
					exec sp_PrepisDokumentPodatakSaDokumentaNaDokument @Sifra_Preduzeca = @Sifra_Preduzeca,
																						@Kor_Id = @Kor_Id,
																						@Fk_DokumentSource = @Fk_DokumentOtpremnice,
																						@Fk_DokumentDestination = @Fk_DOkument_OUT_PlusnaKorekcija,
																						@DaliRadimUpdate = 0,
																						@DodatniPodatak = null,
																						@DodatniPodatak1 = null,
																						@DodatniPodatak2 = null
					if @@Error <> 0
						begin
							if @SpoljnaTransakcija = 0 and @@Trancount > 0
								rollback tran
							return 1
						end

					insert into rt_DokumentGuid(IzvorniGuid,Fk_Dokument)
					Select @Guid_Izvorni,@Fk_DOkument_OUT_PlusnaKorekcija
					if @@Error <> 0
						begin
							if @SpoljnaTransakcija = 0 and @@Trancount > 0
								rollback tran
							return 1
						end
	
					while @brojac < @MaxBrojac
						begin -- STAVKE
							Set @brojac = @brojac + 1
							Select top 1 @tekuciZSD = Fk_ZSD,
											 @Valutacija = ValutacijaStavki,
											 @Fk_Artikal = Fk_Artikal 
								from #StavkePlusne6666
							where Pk_Id = @brojac
							  and RB_Dokumenta = @BrojacDokCepanje
							if @@Rowcount > 0
								begin
									insert into rt_ZalihaStavkaDok(Neaktivnost, Fk_PoslovnaGodina, Fk_St_28,Fk_PK_Id_Nosioca, Fk_Artikal, Fk_ArtikalEan, Datum_TransakcijeDokumenta, Fk_Dokument, 
										Kolicina_Ulaz, Kolicina_Izlaz, Kolicina_Neutice, K_Ins, K_Upd)
									Select top 1 0,@Fk_PoslovnaGodina_Plusne,139,@Fk_OrgJed,Fk_Artikal,Fk_ArtikalEan,@Datum_Plusne,@Fk_DOkument_OUT_PlusnaKorekcija,Kolicina_Ulaz,
										Kolicina_Izlaz, Kolicina_Neutice,@Kor_Id,@Kor_Id
										from #StavkePlusne6666
									where Pk_Id = @brojac
									if @@Error <> 0
										begin
											if @SpoljnaTransakcija = 0 and @@Trancount > 0
												rollback tran
											return 1
										end
									Set @LastZSD = scope_Identity()

									Update #StavkePlusne6666
										Set Fk_ZSD_Novi = @LastZSD
									where Pk_Id = @brojac

									if @Valutacija <> 0
										begin
											insert into rt_ZalihaStavkaDokValutacija(Fk_ZalihaStavkaDok, DaniValute)
											Select top 1 Fk_ZSD_Novi, ValutacijaStavki
												from #StavkePlusne6666
											where Pk_Id = @brojac
											if @@Error <> 0
												begin
													if @SpoljnaTransakcija = 0 and @@Trancount > 0
														rollback tran
													return 1
												end
										end

									if @tekuciZSD > 0
										begin
											insert into rt_StavkaDokKalElementi(Fk_ZalihaStavkaDok, RedniBroj, FK_ST_43,  Kal_Element)
											Select @LAstZSD,SKE.RedniBroj, SKE.FK_ST_43, SKE.Kal_Element
												from rt_StavkaDokKalElementi SKE (nolock)
												left outer join #Zabranjeni43 Z
												on (SKE.FK_ST_43 = Z.Fk_St_43)
											where SKE.Fk_ZalihaStavkaDok = @tekuciZSD
											  and Z.Fk_St_43 is null
											order by SKE.FK_ST_43
											if @@Error <> 0
												begin
													if @SpoljnaTransakcija = 0 and @@Trancount > 0
														rollback tran
													return 1
												end
										end
									else
										begin -- OVDE IDE INSERT
											insert into rt_StavkaDokKalElementi(Fk_ZalihaStavkaDok, RedniBroj, FK_ST_43,  Kal_Element)
											Select @LAstZSD,K.RB, K.FK_ST_43, K.Vrednost
												from #KalkulacijeSve5454545 K (nolock)
												left outer join #Zabranjeni43 Z
												on (K.Fk_St_43 = Z.Fk_St_43)
											where K.Fk_Artikal = @Fk_Artikal
											  and Z.Fk_St_43 is null
											order by K.FK_ST_43
											if @@Error <> 0
												begin
													if @SpoljnaTransakcija = 0 and @@Trancount > 0
														rollback tran
													return 1
												end
										end -- OVDE IDE INSERT
								end
						end -- STAVKE
					if @MaxBrojacPromeneCene > 0
						begin
							Set @brojac = 0
							while @brojac < @MaxBrojacPromeneCene
								begin -- STAVKE PROMENE CENE
									Set @brojac = @brojac + 1
									Select top 1 @tekuciZSD = Fk_ZSD,
													 @Valutacija = ValutacijaStavki,
													 @Fk_Artikal = Fk_Artikal 
										from #PromeneCeneInsert43
									where Pk_Id = @brojac
									  and RB_Dokumenta = @BrojacDokCepanje
									if @@Rowcount > 0
										begin
											insert into rt_ZalihaStavkaDok(Neaktivnost, Fk_PoslovnaGodina, Fk_St_28,Fk_PK_Id_Nosioca, Fk_Artikal, Fk_ArtikalEan, Datum_TransakcijeDokumenta, Fk_Dokument, 
												Kolicina_Ulaz, Kolicina_Izlaz, Kolicina_Neutice, K_Ins, K_Upd)
											Select top 1 0,@Fk_PoslovnaGodina_Plusne,139,@Fk_OrgJed,Fk_Artikal,Fk_ArtikalEan,@Datum_Plusne,@Fk_DOkument_OUT_PlusnaKorekcija,Kolicina_Ulaz,
												Kolicina_Izlaz, Kolicina_Neutice,@Kor_Id,@Kor_Id
												from #PromeneCeneInsert43
											where Pk_Id = @brojac
											if @@Error <> 0
												begin
													if @SpoljnaTransakcija = 0 and @@Trancount > 0
														rollback tran
													return 1
												end
											Set @LastZSD = scope_Identity()

											Update #PromeneCeneInsert43
												Set Fk_ZSD_Novi = @LastZSD
											where Pk_Id = @brojac

											if @Valutacija <> 0
												begin
													insert into rt_ZalihaStavkaDokValutacija(Fk_ZalihaStavkaDok, DaniValute)
													Select top 1 Fk_ZSD_Novi, ValutacijaStavki
														from #PromeneCeneInsert43
													where Pk_Id = @brojac
													if @@Error <> 0
														begin
															if @SpoljnaTransakcija = 0 and @@Trancount > 0
																rollback tran
															return 1
														end
												end

											insert into rt_StavkaDokKalElementi(Fk_ZalihaStavkaDok, RedniBroj, FK_ST_43,  Kal_Element)
											Select @LAstZSD,RB,Fk_St_43,Vrednost
												from #KalkulacijePromenaCene5454545 (nolock)
											where Fk_ZSD = @tekuciZSD
											order by Fk_St_43 
											if @@Error <> 0
												begin
													if @SpoljnaTransakcija = 0 and @@Trancount > 0
														rollback tran
													return 1
												end
										end
								end -- STAVKE PROMENE CENE
						end
				end -- PETLJA ZA VALUTACIJU PO DOKUMENTU
		end -- PLUSNA KOREKCIJA
	
	if @DaliSelect = 1
		begin
			if object_id('tempdb..#DokumentaOutput6556') is not null drop table #DokumentaOutput6556
			CREATE TABLE #DokumentaOutput6556
			(
				Fk_Dokument bigint primary key clustered,
				Opis_Dokumenta nvarchar(200),
				AkojeInsert0AkojeDelete1 int default -1,
				Fk_Partner int,
				Fk_OrgJed int,
				FK_VrstaDokument int,
				BrojDokumenta bigint,
				DatumDokumenta datetime,
				Stari_Pk_Id_Dokumenta bigint,
				Rezervisano numeric(18,2)				
			)

			if @Fk_DOkument_OUT > 0 and @DaliKorekcija > 0
				begin
					insert into #DokumentaOutput6556(Fk_Dokument, Opis_Dokumenta,Rezervisano)
					Select @Fk_DOkument_OUT as Fk_DOkument,
							 Hubie.dbo.fn_GetDokumentPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_DOkument_OUT) as Opis_Dokumenta,
							 0

					if (Hubie.dbo.fn_GetModelSwapaBonitetaFakturaOtpremnicaZaOJ(@Sifra_preduzeca,0,@Fk_OrgJed,@Fk_VrstaKorekcija,'','') > 0)
						begin
							Update DD
								Set Fk_Partner = D2.fk_Id_fk_st_28_2,
									 Fk_OrgJed = D2.fk_Id_fk_st_28_1,
									 FK_VrstaDokument = D.Fk_VrstaDokument,
									 BrojDokumenta = D2.Broj_Dokumenta,
									 DatumDokumenta = D.Datum_Dokumenta,
									 Stari_Pk_Id_Dokumenta = D.Pk_Id,
									 Rezervisano = 0,
									 AkojeInsert0AkojeDelete1 = 0
								from #DokumentaOutput6556 DD
								inner join rt_Dokument D (nolock)
								on (D.Pk_Id = DD.Fk_Dokument)
								inner join rt_Dokument_2 D2 (nolock)
								on (D.Pk_Id = D2.Fk_dokument)
							where D.Pk_Id = @Fk_DOkument_OUT
					
							if 1 <> Hubie.dbo.fn_GetDaLiCentrala(@Sifra_Preduzeca)
								begin
									if 1 = Hubie.dbo.fn_GetDaliASPReplikacija(@Sifra_Preduzeca)
										begin
											Select top 1 @Sifra_Lokacija = L.Sifra
												from s_PreduzeceParam PP (nolock)
												inner join s_Preduzece P (nolock)
												on (P.Pk_Id = PP.FK_Preduzece and P.S_Neaktivan = 0 and P.Sifra = @Sifra_Preduzeca)
												inner join m_Lokacija L (nolock)
												on (PP.Fk_Lokacija = L.Pk_Id)
											if @@rowcount > 0	
												begin
													Update #DokumentaOutput6556
														Set Stari_Pk_Id_Dokumenta =  @Sifra_Lokacija * convert(bigint,1000000000) + Fk_Dokument
													where Fk_Dokument = @Fk_DOkument_OUT
												end
										end
									else
										begin
											Update #DokumentaOutput6556
												Set Stari_Pk_Id_Dokumenta = Hubie_Dist.dbo.fn_FormirajOdlazniIdMilijarda(Fk_Dokument)
											where Fk_Dokument = @Fk_DOkument_OUT
										end
								end
							
							Set @Rezervisano = null
							Select @Rezervisano = SUM( (IsNull(ZSD.Kolicina_Izlaz,0) + IsNull(ZSD.Kolicina_Neutice,0) - IsNull(ZSD.Kolicina_Ulaz,0))  * SKE.Kal_Element)
								from rt_ZalihaStavkaDok ZSD (nolock)
								inner join rt_StavkaDokKalElementi SKE (nolock)
								on (ZSD.Pk_Id = SKE.Fk_ZalihaStavkaDok and SKE.FK_ST_43 = 288)
							where ZSD.Fk_Dokument = @Fk_DOkument_OUT
							  and ZSD.Neaktivnost = 0

							Update #DokumentaOutput6556
								Set Rezervisano = round(IsNull(@Rezervisano,0),2)
							where Fk_Dokument = @Fk_DOkument_OUT
						end
				end

			if @Fk_DOkument_OUT > 0 and @DaliFinKorekcijaNabavnogDela > 0
				begin
					insert into #DokumentaOutput6556(Fk_Dokument, Opis_Dokumenta,Rezervisano)
					Select @Fk_DOkument_OUT as Fk_DOkument,
							 Hubie.dbo.fn_GetDokumentPrikaz(@Sifra_Preduzeca,@Jezik_Id,@Fk_DOkument_OUT) as Opis_Dokumenta,
							 0

					if (Hubie.dbo.fn_GetModelSwapaBonitetaFakturaOtpremnicaZaOJ(@Sifra_preduzeca,0,@Fk_OrgJed,@Fk_VrstaDokumentFinKorekcije,'','') > 0)
						begin
							Update DD
								Set Fk_Partner = D2.fk_Id_fk_st_28_2,
									 Fk_OrgJed = D2.fk_Id_fk_st_28_1,
									 FK_VrstaDokument = D.Fk_VrstaDokument,
									 BrojDokumenta = D2.Broj_Dokumenta,
									 DatumDokumenta = D.Datum_Dokumenta,
									 Stari_Pk_Id_Dokumenta = D.Pk_Id,
									 Rezervisano = 0,
									 AkojeInsert0AkojeDelete1 = 0
								from #DokumentaOutput6556 DD
								inner join rt_Dokument D (nolock)
								on (D.Pk_Id = DD.Fk_Dokument)
								inner join rt_Dokument_2 D2 (nolock)
								on (D.Pk_Id = D2.Fk_dokument)
							where D.Pk_Id = @Fk_DOkument_OUT
					
							if 1 <> Hubie.dbo.fn_GetDaLiCentrala(@Sifra_Preduzeca)
								begin
									if 1 = Hubie.dbo.fn_GetDaliASPReplikacija(@Sifra_Preduzeca)
										begin
											Select top 1 @Sifra_Lokacija = L.Sifra
												from s_PreduzeceParam PP (nolock)
												inner join s_Preduzece P (nolock)
												on (P.Pk_Id = PP.FK_Preduzece and P.S_Neaktivan = 0 and P.Sifra = @Sifra_Preduzeca)
												inner join m_Lokacija L (nolock)
												on (PP.Fk_Lokacija = L.Pk_Id)
											if @@rowcount > 0	
												begin
													Update #DokumentaOutput6556
														Set Stari_Pk_Id_Dokumenta =  @Sifra_Lokacija * convert(bigint,1000000000) + Fk_Dokument
													where Fk_Dokument = @Fk_DOkument_OUT
												end
										end
									else
										begin
											Update #DokumentaOutput6556
												Set Stari_Pk_Id_Dokumenta = Hubie_Dist.dbo.fn_FormirajOdlazniIdMilijarda(Fk_Dokument)
											where Fk_Dokument = @Fk_DOkument_OUT
										end
								end
							
							Set @Rezervisano = null
							Select @Rezervisano = SUM( (IsNull(ZSD.Kolicina_Izlaz,0) + IsNull(ZSD.Kolicina_Neutice,0) - IsNull(ZSD.Kolicina_Ulaz,0))  * SKE.Kal_Element)
								from rt_ZalihaStavkaDok ZSD (nolock)
								inner join rt_StavkaDokKalElementi SKE (nolock)
								on (ZSD.Pk_Id = SKE.Fk_ZalihaStavkaDok and SKE.FK_ST_43 = 288)
							where ZSD.Fk_Dokument = @Fk_DOkument_OUT
							  and ZSD.Neaktivnost = 0

							Update #DokumentaOutput6556
								Set Rezervisano = round(IsNull(@Rezervisano,0),2)
							where Fk_Dokument = @Fk_DOkument_OUT
						end
				end

			if @Fk_DOkument_OUT_PlusnaKorekcija > 0
				begin
					insert into #DokumentaOutput6556(Fk_Dokument, Rezervisano)
					Select Fk_Dokument,0
						from #kreiranaDokumentaPlusneKorekcije54455555
					
					if (Hubie.dbo.fn_GetModelSwapaBonitetaFakturaOtpremnicaZaOJ(@Sifra_preduzeca,0,@Fk_OrgJed,@Fk_VrstaPlusnaKorekcija,'','') > 0)
						begin
							Update DD
								Set Fk_Partner = D2.fk_Id_fk_st_28_2,
									 Fk_OrgJed = D2.fk_Id_fk_st_28_1,
									 FK_VrstaDokument = D.Fk_VrstaDokument,
									 BrojDokumenta = D2.Broj_Dokumenta,
									 DatumDokumenta = D.Datum_Dokumenta,
									 Stari_Pk_Id_Dokumenta = D.Pk_Id,
									 Rezervisano = 0,
									 AkojeInsert0AkojeDelete1 = 0
								from #DokumentaOutput6556 DD
								inner join rt_Dokument D (nolock)
								on (D.Pk_Id = DD.Fk_Dokument)
								inner join rt_Dokument_2 D2 (nolock)
								on (D.Pk_Id = D2.Fk_dokument)
								inner join #kreiranaDokumentaPlusneKorekcije54455555 K
								on (DD.Fk_Dokument = K.Fk_Dokument)
								
							if 1 <> Hubie.dbo.fn_GetDaLiCentrala(@Sifra_Preduzeca)
								begin
									if 1 = Hubie.dbo.fn_GetDaliASPReplikacija(@Sifra_Preduzeca)
										begin
											Select top 1 @Sifra_Lokacija = L.Sifra
												from s_PreduzeceParam PP (nolock)
												inner join s_Preduzece P (nolock)
												on (P.Pk_Id = PP.FK_Preduzece and P.S_Neaktivan = 0 and P.Sifra = @Sifra_Preduzeca)
												inner join m_Lokacija L (nolock)
												on (PP.Fk_Lokacija = L.Pk_Id)
											if @@rowcount > 0	
												begin
													Update DD
														Set Stari_Pk_Id_Dokumenta =  @Sifra_Lokacija * convert(bigint,1000000000) + DD.Fk_Dokument
														from #DokumentaOutput6556 DD
														inner join #kreiranaDokumentaPlusneKorekcije54455555 K
														on (DD.Fk_Dokument = K.Fk_Dokument)
												end
										end
									else
										begin
											Update DD 
												Set Stari_Pk_Id_Dokumenta = Hubie_Dist.dbo.fn_FormirajOdlazniIdMilijarda(DD.Fk_Dokument)
												from #DokumentaOutput6556 DD
												inner join #kreiranaDokumentaPlusneKorekcije54455555 K
												on (DD.Fk_Dokument = K.Fk_Dokument)
										end
								end

							-- SAD JOS REZERVACIJE
							insert into #DokumentaVrednost45454555(Fk_Dokument,Vrednost)
							Select DD.Fk_Dokument,SUM( (IsNull(ZSD.Kolicina_Izlaz,0) + IsNull(ZSD.Kolicina_Neutice,0) - IsNull(ZSD.Kolicina_Ulaz,0))  * SKE.Kal_Element)
								from #KreiranaDokumentaPlusneKorekcije54455555 DD
								inner join rt_ZalihaStavkaDok ZSD (nolock)
								on (DD.Fk_Dokument = ZSD.Fk_Dokument and ZSD.Neaktivnost = 0)
								inner join rt_StavkaDokKalElementi SKE (nolock)
								on (ZSD.Pk_Id = SKE.Fk_ZalihaStavkaDok and SKE.FK_ST_43 = 288)
							group by DD.Fk_Dokument

							Update DD
								Set Rezervisano = round(V.Vrednost,2)
								from #DokumentaOutput6556 DD
								inner join #DokumentaVrednost45454555 V
								on (DD.Fk_Dokument = V.Fk_Dokument)

							Update #DokumentaOutput6556	
								Set Rezervisano = IsNull(Rezervisano,0)
						end
				end
			
			Update #DokumentaOutput6556
				Set Opis_Dokumenta = Hubie.dbo.fn_GetDokumentPrikaz(@Sifra_Preduzeca,@Jezik_Id,Fk_Dokument)

			Select * from #DokumentaOutput6556
		end

	if @Fk_DOkument_OUT > 0
		begin
			if IsNull(@DalifinkorekcijaNabavnogDela,0) < 1
				begin
					exec @Rez = sp_InsertDokumentAmbalazaZR_Automatski @sifra_preduzeca = @sifra_preduzeca,
																						@jezik_id = @jezik_id, 
																						@kor_id = @kor_id, 
																						@fk_dokument = @Fk_DOkument_OUT
					if @@Error <> 0 or @Rez <> 0 
						begin
							if @SpoljnaTransakcija = 0 and @@Trancount > 0
								rollback tran
							Raiserror('Neuspesno zaduzenje\razduzenje ambalaze !',17,1)
							return 1
						end
				end

			Select top 1 @Fk_PoslovnaGodina = Fk_Poslovna_Godina 
				from rt_Dokument (nolock)
			where Pk_Id = @Fk_DOkument_OUT

			exec @Rez = sp_ObradaDokumenata @sifra_preduzeca = @Sifra_Preduzeca,
													  @Kor_id = @Kor_Id,
													  @Fk_Poslovna_Godina = @Fk_PoslovnaGodina,
													  @fk_Dokument = @Fk_DOkument_OUT,
													  @DaliZakljucan = 0,
													  @VrstaObrade = 0
			if @@Error <> 0 or @Rez <> 0
				begin
					if @SpoljnaTransakcija = 0 and @@Trancount > 0
						rollback tran
					Raiserror('Greska prilikom obrade dokumenta !',17,1)
					return 1
				end
		end
	
	if @Fk_DOkument_OUT_PlusnaKorekcija > 0
		begin
			Set @BrojacDokCepanje = 0
			while @BrojacDokCepanje < @MaxBrojacDokCepanje
				begin
					Set @BrojacDokCepanje = @BrojacDokCepanje + 1
					Select top 1 @Fk_DOkument_OUT_PlusnaKorekcija = Fk_Dokument		
						from #KreiranaDokumentaPlusneKorekcije54455555
					where Pk_Id = @BrojacDokCepanje

					exec @Rez = sp_InsertDokumentAmbalazaZR_Automatski @sifra_preduzeca = @sifra_preduzeca,
																						@jezik_id = @jezik_id, 
																						@kor_id = @kor_id, 
																						@fk_dokument = @Fk_DOkument_OUT_PlusnaKorekcija
					if @@Error <> 0 or @Rez <> 0 
						begin
							if @SpoljnaTransakcija = 0 and @@Trancount > 0
								rollback tran
							Raiserror('Neuspesno zaduzenje\razduzenje ambalaze !',17,1)
							return 1
						end
					
					Select top 1 @Fk_PoslovnaGodina = Fk_Poslovna_Godina 
						from rt_Dokument (nolock)
					where Pk_Id = @Fk_DOkument_OUT_PlusnaKorekcija

					exec @Rez = sp_ObradaDokumenata @sifra_preduzeca = @Sifra_Preduzeca,
															  @Kor_id = @Kor_Id,
															  @Fk_Poslovna_Godina = @Fk_PoslovnaGodina,
															  @fk_Dokument = @Fk_DOkument_OUT_PlusnaKorekcija,
															  @DaliZakljucan = 0,
															  @VrstaObrade = 0
					if @@Error <> 0 or @Rez <> 0
						begin
							if @SpoljnaTransakcija = 0 and @@Trancount > 0
								rollback tran
							Raiserror('Greska prilikom obrade dokumenta !',17,1)
							return 1
						end
				end
		end
	
	-- OVDE IDE POVEZIVANJE AMBALAZE,AKO IMA POTREBE
	if exists
	(
		Select top 1 *
			from #DokumentaOtpremniceAmbalaze45454545
	)
		begin
			insert into #VrsteDokumenataAmabalazeKorekcija45454545(Fk_VrstaDokument)
			Select Pk_Id
				from s_VrstaDokument
			where Pk_Id = Hubie.dbo.fn_GetVrstaDokumentZaduzenjeRazduzenjeAmbalze(@sifra_preduzeca,@Fk_VrstaKorekcija,@SifraVOJ,1)
			UNION
			Select Pk_Id
				from s_VrstaDokument
			where Pk_Id = Hubie.dbo.fn_GetVrstaDokumentZaduzenjeRazduzenjeAmbalze(@sifra_preduzeca,@Fk_VrstaKorekcija,@SifraVOJ,0)
			if @@Rowcount > 0
				begin
					insert into #DokumentaKorekcijeAmbalaze45454545(Fk_Dokument)
					Select D.Pk_Id
						from rt_Dokument_2 D2 (nolock)
						inner join rt_Dokument D (nolock)
						on (D.Pk_Id = D2.Fk_dokument)
						inner join #VrsteDokumenataAmabalazeKorekcija45454545 VD
						on (D.Fk_VrstaDokument = VD.Fk_VrstaDokument)
					where D2.fk_veza_dok1 = @Fk_DOkument_OUT
					  and D.Neaktivnost = 0
					if @@Rowcount > 0
						begin
							insert into rt_Dokument_PU(S_Neaktivan, Fk_Veza_Dok1,Fk_Veza_Dok2, Obradjen, K_Ins, K_Upd)
							Select 0,O.Fk_Dokument,K.Fk_Dokument,1,@Kor_Id,@Kor_Id
								from #DokumentaOtpremniceAmbalaze45454545 O
								cross join #DokumentaKorekcijeAmbalaze45454545 K
							where K.Fk_Dokument <> O.Fk_Dokument
							UNION
							Select 0,@Fk_DokumentOtpremnice,K.Fk_Dokument,1,@Kor_Id,@Kor_Id
								from #DokumentaKorekcijeAmbalaze45454545 K
							if @@Error <> 0
								begin
									if @SpoljnaTransakcija = 0 and @@Trancount > 0
										rollback tran
									Raiserror('Greska prilikom upisivanja veze dokumenata ambalaze !',17,1)
									return 1
								end
						end
				end
		end

	if @SpoljnaTransakcija = 0 and @@Trancount > 0
		COMMIT
	
	--if @DaliSelect > 0
	--	begin
	--		Update #DokumentaOutput6556
	--			Set Opis_Dokumenta = Hubie.dbo.fn_GetDokumentPrikaz(@Sifra_Preduzeca,@Jezik_Id,Fk_Dokument)

	--		Select * from #DokumentaOutput6556
	--	end

	return 0
END

GO

