if exists (select * from SYSTRIGGERS where LCase(trigname)=lcase('TrigServiceCreditsUpd')) then drop trigger TrigServiceCreditsUpd end if GO if exists (select * from SYSTRIGGERS where LCase(trigname)=lcase('TrigSrvCredChanged')) then drop trigger TrigSrvCredChanged end if GO if (select count(*) from sys.syscolumns where tname='ServiceCredits' and cname='SpaGuestTypeFlag')=0 then alter table ServiceCredits Add SpaGuestTypeFlag integer default 0; update ServiceCredits set SpaGuestTypeFlag=0; end if GO COMMENT ON COLUMN ServiceCredits.SpaGuestTypeFlag is ' 0 gosta e ot Guests 1 gosta e ot SpaGuest ' GO if (select count(*) from sys.syscolumns where tname='ServiceCredits' and cname='SPaReservationFk')=0 then alter table ServiceCredits Add SPaReservationFk integer default -1; update ServiceCredits set SPaReservationFk=-1; end if GO COMMENT ON COLUMN ServiceCredits.SPaReservationFk is 'sochi kam SpaReservation za da se slediata smetkite na spa gostite -1 ne sa smetki na spa' GO if exists (select * from SYSTRIGGERS where LCase(trigname)=lcase('TrigChangeWhoPeyServ')) then drop trigger TrigChangeWhoPeyServ end if GO CREATE TRIGGER "TrigChangeWhoPeyServ" after insert order 1 on "DBA".ServiceCredits referencing new as ServiceNew for each row begin declare tipv char; declare Ktr integer; declare FlagIsService integer; declare SerName char(30); select max(ServiceName) into SerName from Services where ServiceNo=ServiceNew.Service; if(((select count(*) from Admin where AdminGroup=0 and AdminNo=ServiceNew.KodAdmin)>0) and(ServiceNew.SumCredit<0)) then update ServiceCredits set SumCredit=(-1)*ServiceNew.SumCredit,NumberServices=(-1)*ServiceNew.NumberServices where ServiceCredits.CreditNo=ServiceNew.CreditNo end if ; set FlagIsService=0; select TipVaulcher,Contract into TipV, Ktr from guests where GuestNum=ServiceNew.GuestNo; if TipV='I' then update ServiceCredits set ContractPays=Ktr,WhoPays=0 where ServiceCredits.CreditNo=ServiceNew.CreditNo; end if ; if TipV='A' and ServiceNew.Service=15 then update ServiceCredits set ContractPays=Ktr,WhoPays=0 where ServiceCredits.CreditNo=ServiceNew.CreditNo; end if ; select count(ServiceNo) into FlagIsService from ServicesForContract where ContractNo=Ktr and ServiceNo=ServiceNew.Service; if((Ktr<>0) and(FlagIsService>0) and (ServiceNew.SPaReservationFk=-1)) then if ServiceNew.WhoPays<>0 then update ServiceCredits set ContractPays=Ktr,WhoPays=0 where ServiceCredits.CreditNo=ServiceNew.CreditNo; end if; if((select count(*) from Admin where AdminGroup=0 and AdminNo=ServiceNew.KodAdmin)>0) then call CalcBalanceContract(ServiceNew.ContractPays); end if; end if; end GO Create trigger TrigServiceCreditsUpd after insert,update order 2 on "DBA".ServiceCredits referencing old as SCOLD new as ServiceCreditsNew for each row begin declare @Date date; set @Date=FloatToDate(ServiceCreditsNew.DateCredit); update ServiceCredits set DateCreditDt=@Date where CreditNo=ServiceCreditsNew.CreditNo; call SaveDateRate(ServiceCreditsNew.KodCurrency,@Date) end //[v 00.05.25] GO create trigger TrigSrvCredChanged after update order 3 on "DBA".ServiceCredits referencing old as SCOLD new as SCNEW for each row begin atomic declare @GuestName varchar(40); declare @GuestNameFrom varchar(40); declare @AdminName varchar(10); declare @ServiceName varchar(40); // if SCOLD.WhoPays<>0 then call CalcBalance(SCOLD.WhoPays) end if ; if SCNEW.WhoPays<>0 then call CalcBalance(SCNEW.WhoPays) end if ; if SCOLD.ContractPays<>0 then call CalcBalanceContract(SCOLD.ContractPays) end if ; if SCNEW.ContractPays<>0 then call CalcBalanceContract(SCNEW.ContractPays) end if ; select ShortName into @AdminName from Admin where AdminNo=SCNEW.KodAdmin; if(SCNEW.WhoPays<>SCOLD.WhoPays) and(SCNEW.WhoPays<>0) then select "Name" into @GuestName from Guests where GuestNum=SCNEW.WhoPays; select ServiceName into @ServiceName from Services where ServiceNo=SCNEW.Service; update Guests set History=History||'('||current date||'/'||current time||' / '||@AdminName||') Прехвърлена услуга "' ||@ServiceName||'" към гост "'||@GuestName||'"'||"char"(13) where GuestNum=SCOLD.WhoPays; //Promenia i historyto na gosta, na koito se prehvurlia select "Name" into @GuestNameFrom from Guests where GuestNum=SCOLD.WhoPays; update Guests set History=History||'('||current date||'/'||current time||' / '||@AdminName||') Прехвърлена услуга "' ||@ServiceName||'" от гост "'||@GuestNameFrom||'"'||"char"(13) where GuestNum=SCNEW.WhoPays end if // Prehvyrliane na platenite smetki kym Gost No 1 kogato Hotela se izpolzva // samo za otchitane na PBXLog: /*if SCNEW.NumberServices<=SCNEW.PayedServices then update ServiceCredits set WhoPays=1 where CreditNo=SCNEW.CreditNo end if*/ end //[v 00.05.23]