IF (EXISTS (select proc_name from sysprocedure where LCase(proc_name)=LCase('VaucherDisc'))) THEN Drop procedure VaucherDisc END IF GO Create procedure VaucherDisc(inout @ArticleNumber integer,in @Currency integer,inout @TotalSumForVaucher1 decimal(12,2),in @ContractNo1 integer) begin declare @NightsOrGuests integer; declare @BrojHora integer; declare @Broi integer; declare @BroiVuz integer; declare @BroiDeca integer; declare @TotalAddSum decimal(12,2); declare @Deposit decimal(12,2); declare @DiskSum decimal(12,6); declare @mnsign integer; declare @TotalNights integer; set @TotalAddSum=0; set @DiskSum=0; set @mnsign=1; select sum(GrandTotal) into @TotalSumForVaucher1 from #VaucherArticles where RowType=3; select IntStojnost into @NightsOrGuests from Registers where RegisterName='ChooseNightsOrGuests'; message '@NightsOrGuests='||@NightsOrGuests; select(sum(Adult)+sum(Child)) into @BrojHora from #VaucherArticles; message '@BrojHora='||@BrojHora; set @BroiVuz=0; set @BroiDeca=0; set @Broi=0; select sum(Adult) into @Broi from #VaucherArticles; set @BroiVuz=@Broi; select sum(Child) into @Broi from #VaucherArticles; set @BroiDeca=@Broi; message '@BroiVuz='||@BroiVuz; message '@BroiDeca='||@BroiDeca; for f3 as curs3 scroll cursor for select DiskForContractNo as @ServNo, DiskName as @ArtName, DiskPersent as @TotDisk, sign as @sign, FreeSum as @FreeSum, ServiceCount as @fSrvCouns, ServiceCount as @SrvCouns from OtherDiskForContract where ContractNo=@ContractNo1 do if(@TotDisk<>0) then // ako e na procent set @DiskSum=(@TotalSumForVaucher1*@TotDisk)/100; message 'Step1 @DiskSum='||@DiskSum; message '@TotalSumForVaucher1='||@TotalSumForVaucher1; message '@TotDisk='||@TotDisk else set @DiskSum=@FreeSum end if ; if @sign='+' then set @mnsign=1 else set @mnsign=-1 end if ; if(@TotDisk=0) then // ako e na nostuvki, ne e na procent select sum(TotalNights) into @SrvCouns from #VaucherArticles where RowType=1; message '@SrvCouns-Safa='||@SrvCouns; if((@mnsign*@DiskSum*@SrvCouns)<>0) then if @NightsOrGuests=0 then // na nostuvki insert into #VaucherArticles(ArticleNumber,VaucherN,VaucherNum, VaucherSeason,VaucherBoard,VaucherRoomType, VaucherBedType,Measure,Adult, Child,Nights,TotalNights, SinglePrice, GrandTotal, ArticleName, CreditNo,Discount,ServiceNo, Currency,TranslateName,TranslateSeason, TranslateBed,RowType,ForVaucherN) values(@ArticleNumber,0,'', '','','', '','απ.',null, null,null,@SrvCouns*@fSrvCouns, @DiskSum, @mnsign*@DiskSum*@SrvCouns, @ArtName, 0,@TotDisk,@ServNo, @Currency,@ArtName,null, null,2,0); set @TotalAddSum=@TotalAddSum+(@mnsign*@DiskSum*@SrvCouns); message 'STEP1='||(@mnsign*@DiskSum*@SrvCouns) else // na gosti insert into #VaucherArticles(ArticleNumber,VaucherN,VaucherNum, VaucherSeason,VaucherBoard,VaucherRoomType, VaucherBedType,Measure,Adult, Child,Nights,TotalNights, SinglePrice, GrandTotal, ArticleName, CreditNo,Discount,ServiceNo, Currency,TranslateName,TranslateSeason, TranslateBed,RowType,ForVaucherN) values(@ArticleNumber,0,'', '','','', '','απ.',@BroiVuz, @BroiDeca,null,null, @DiskSum, @mnsign*@DiskSum*(@BroiVuz+@BroiDeca), @ArtName, 0,@TotDisk,@ServNo, @Currency,@ArtName,null, null,2,0); set @TotalAddSum=@TotalAddSum+(@mnsign*@DiskSum*(@BroiVuz+@BroiDeca)); message 'STEP2='||(@mnsign*@DiskSum*@BrojHora) end if ; set @ArticleNumber=@ArticleNumber+1 end if else // ako e na Percent if @NightsOrGuests=0 then insert into #VaucherArticles(ArticleNumber,VaucherN,VaucherNum, VaucherSeason,VaucherBoard,VaucherRoomType, VaucherBedType,Measure,Adult, Child,Nights,TotalNights, SinglePrice,GrandTotal,ArticleName, CreditNo,Discount,ServiceNo, Currency,TranslateName,TranslateSeason, TranslateBed,RowType,ForVaucherN) values(@ArticleNumber,0,'', '','','', '','απ.',null, null,null,@mnsign*@SrvCouns, 0,@mnsign*@DiskSum,@ArtName, 0,@TotDisk,@ServNo, @Currency,@ArtName,null, null,2,0); set @TotalAddSum=@TotalAddSum+(@mnsign*@DiskSum*@SrvCouns); message 'STEP3='||(@mnsign*@DiskSum*@SrvCouns) else insert into #VaucherArticles(ArticleNumber,VaucherN,VaucherNum, VaucherSeason,VaucherBoard,VaucherRoomType, VaucherBedType,Measure,Adult, Child,Nights,TotalNights, SinglePrice,GrandTotal,ArticleName, CreditNo,Discount,ServiceNo, Currency,TranslateName,TranslateSeason, TranslateBed,RowType,ForVaucherN) values(@ArticleNumber,0,'', '','','', '','απ.',null, null,null,null, 0,@mnsign*@DiskSum*(@BroiVuz+@BroiDeca),@ArtName, 0,@TotDisk,@ServNo, @Currency,@ArtName,null, null,2,0); set @TotalAddSum=@TotalAddSum+(@mnsign*@DiskSum*(@BroiVuz+@BroiDeca)) end if ; set @ArticleNumber=@ArticleNumber+1 end if end for; //Smqta GrandTotal na svobodnite uslugi i vmykva prazen red if @TotalAddSum<>0 then insert into #VaucherArticles(ArticleNumber,VaucherN,VaucherNum, VaucherSeason,VaucherBoard,VaucherRoomType, VaucherBedType,Measure,Adult, Child,Nights,TotalNights, SinglePrice,GrandTotal,ArticleName, CreditNo,Discount,ServiceNo, Currency,TranslateName,TranslateSeason, TranslateBed,RowType,ForVaucherN) values(@ArticleNumber,0,null, null,null,null, null,'απ.',null, null,null,null, null,@TotalAddSum,null, null,null,null, null,null,null, null,4,0); set @ArticleNumber=@ArticleNumber+1 end if end //[31.05.2005] Safa @fSrvCouns