IF (EXISTS(Select * from sys.sysprocedure where LCase(proc_name) = LCase('ShouldShowService'))) THEN Drop procedure ShouldShowService END IF GO create function DBA.ShouldShowService(in @CreditNo integer,in @IsMonthly tinyint,in @SumDiff real,in @RegDate date) returns tinyint begin declare @IsForPeriod tinyint; declare @D1 date; declare @D2 date; declare @DF date; //dateForfeit declare @rez tinyint; set @IsForPeriod=1; set @D1=(select Stoinost from SvoServiceCreditsStn where Glava = @CreditNo and Svoistvo = 2); set @D2=(select Stoinost from SvoServiceCreditsStn where Glava = @CreditNo and Svoistvo = 3); if @D1 is null or @D2 is null then set @IsForPeriod=0 end if; if @IsForPeriod = 0 then if @RegDate <= bvrData2 and @RegDate >= bvrData1 then if @IsMonthly = 0 then set @rez=1 else if @SumDiff = 0 then set @rez=1 else set @rez=0 end if end if else set @rez=0 end if else if DateIntersection(bvrData1,bvrData2,@D1,@D2) = 0 then set @rez=0 else if @IsMonthly = 0 then set @rez=1 else if @SumDiff = 0 then set @rez=1 else set @rez=0 end if end if end if end if; if ((select Service from ServiceCredits where CreditNo = @CreditNo) = (select intStojnost from Registers where RegisterName = 'ForfeitService')) and (exists (select Stoinost from SvoServiceCreditsStn where Glava = @CreditNo and Svoistvo = 4)) and (exists (select Stoinost from SvoServiceCreditsStn where Glava = @CreditNo and Svoistvo = 5)) then set @DF=cast('01.' || (select Stoinost from SvoServiceCreditsStn where Glava = @CreditNo and Svoistvo = 4) || '.' || (select Stoinost from SvoServiceCreditsStn where Glava = @CreditNo and Svoistvo = 5) as date); if @DF <= bvrData2 and @DF >= bvrData1 then set @rez=1 else set @rez=0 end if end if; return(@rez) end --Dobrin 12.02.2009 Created za spravka Registrirani uslugi. Vryshta 1 ako trqbva da se pokaje uslugata i 0 ako ne trqbva