IF (EXISTS(Select * from sys.sysprocedure where LCase(proc_name) = LCase('ChangeBookPrice'))) THEN Drop procedure ChangeBookPrice END IF GO create procedure DBA.ChangeBookPrice( in @RegNo integer,in @RoomPrice decimal(12,2),in @PriceCurrency integer,in @PriceKind integer,in @KodAdmin integer,in @HasPayed integer ) /* This procedure changes Price of one row in Book if there are not Payed Lodgings or else inserts new record with New Price */ begin atomic declare @NewRegNO integer; declare @SaleId integer; declare @OldPrice numeric(12,4); declare @OldPriceKindName varchar(50); declare @NewPriceKindName varchar(50); declare @OldPriceKind integer; // set @SaleID = (select ID from SaleOrders where GuestNum = (select Guest from Book where RegNum = @RegNo)); if @HasPayed = 0 then select Price,PriceKind into @OldPrice,@OldPriceKind from Book where RegNum = @RegNo; update Book set Price = @RoomPrice,KodCurrency = @PriceCurrency,PriceKind = @PriceKind where RegNum = @RegNo; call InsertPackage(@RegNo); if(@OldPrice = @RoomPrice) and(@OldPriceKind = @PriceKind) then return end if; call FillSaleOrderLines_MoveOrChangePrice(@RegNo,@RegNo,@SaleId) else //Ako ima plateni noshtuvki se razdelia na dva zapisa for f as curs scroll cursor for select DateReg+PayedLodgings as @NewDateReg,NumLodgings-PayedLodgings as @NewNumLodgings,Room as @Room, Guest as @Guest,WhoPays as @WhoPays,GroupPays as @GroupPays,ContractPays as @ContractPays from Book where RegNum = @RegNo do //vmukva nov zapis v Book set @NewRegNo = GetCounter('BookCounter'); message 'Ok' type info to console; insert into Book( RegNum,Datereg,NumLodgings,PayedLodgings,Payed,Staying,PriceKind,KodAdmin,Room,Price, Guest,WhoPays,KodCurrency,GroupPays,ContractPays,IsRest ) values( @NewRegNo,@NewDateReg,@NewNumLodgings,0,0,1,@PriceKind,@KodAdmin,@Room,@RoomPrice,@Guest,@WhoPays, @PriceCurrency,@GroupPays,@ContractPays,0 ) ; //Updejtvva staria zapis update Book set NumLodgings = PayedLodgings,Staying = 2 where RegNum = @RegNo end for; call InsertPackage(@NewRegNo); if(@OldPrice = @RoomPrice) and(@OldPriceKind = @PriceKind) then return end if; call FillSaleOrderLines_MoveOrChangePrice(@RegNo,@NewRegNo,@SaleId) end if; set @OldPriceKindName = (select Description from PriceKinds where PriceKind = @OldPriceKind); set @NewPriceKindName = (select Description from PriceKinds where PriceKind = @PriceKind); insert into LogFile( UserN,Tip,LogText ) values( @KodAdmin,15,String('Променена цена/ценоразпис на гост ',(select Guest from Book where RegNum = @RegNo),' от ',FormatNum(@OldPrice,'0.00'),'(',@OldPriceKindName,')',' на ',FormatNum(@RoomPrice,'0.00'),'(',@NewPriceKindName,')') ) end //[v 2008.12.12 MON] Nixon - dobaveno e da smenia cenorazpisa ako niama plateni