= Procedura zmiany daty lub godziny wydania gazety = '''Definicje:''' {{{ $regularIssueDate - normalna data zamknięcia wydania (2.03.2013 17:00 wt) $changeIssueDate - zmieniona data wydania (1.03.2013 17:00 pon) $nextIssueDate - data kolejnego poprawnego wydania (9.03.2013 17:00 wt) }}} Należy znaleźć: 1. '''Ogłoszenia które normalnie wygasną przed 17:00, we wtorek - one nie powinny iść do tego poniedziałkowego wydania''' {{{ select * from ads where enddate > '$changeIssueDate' and enddate < '$regularIssueDate ' and status = 1 and magazinepromotion > 0 }}} Te ogłoszenia wyłączamy 2. '''Ogłoszenia które normalnie wygasną przed 17:00 we wtorek ale mają przedłużenia - one powinny pójść''' {{{ select * from orderitems i join orders o on o.id = i.orderid where productid in ( select id from ads where enddate > '$changeIssueDate' and enddate < '$regularIssueDate' and status = 1 ) and i.startdate >= '$regularIssueDate' and i.magazinepromotion > 0 and o.status <> 4 }}} Należy aktywować przedłużenia, a więc w OrderItems odpowiednio zmodyfikować start oraz end date i uruchomić na team city task activate. 3. '''Ogłoszenia, które nie są aktywne w poniedziałek, ale włączą się jeszcze przed 17:00 we wtorek.''' {{{ select * from orderitems i join orders o on o.id = i.orderid where o.status <> 4 and i.startdate >= '$changeIssueDate' and startdate < '$regularIssueDate' and subscriptionpromotion is null and i.magazinepromotion > 0 }}} Należy aktywować ogłoszenia, a więc w OrderItems odpowiednio zmodyfikować start oraz end date i uruchomić na team city task activate. 4. '''Należy pamiętać aby przesunąć zamówienia abonamentowe z poprzedniego tygodnia, tak aby utworzyły się zamówienia bieżące.''' 5. '''Ogłoszenia zamieszczone między $changeIssueDate a $regularIssueDate należy przedłużyć.''' {{{ select * from ads where status = 1 and magazinepromotion > 0 and startdate > $changeIssueDate and startdate < $regularIssueDate }}} Krótkie wyjaśnienie: zamykamy wydanie w poniedziałek 1 marca o 17:00, klient zamieszcza ogłoszenie 2 marca na jedna emisje (wtorek) o 9:00 (to ogłoszenie wygaśnie 9 marca o 9:00), a powinno pojść do gazety 9 marca 17:00. DECLARE @regularIssueDate DATETIME SET @regularIssueDate = '2013-12-24 17:00' DECLARE @changeIssueDate DATETIME SET @changeIssueDate = '2013-12-20 16:00' declare @ads as table (adid integer) declare @ads2 as table (adid integer, orderitemId integer) '''Ogłoszenia które normalnie wygasną przed 17:00 we wtorek ale mają przedłużenia - one powinny pójść''' insert into @ads select productid from orderitems i join orders o on o.id = i.orderid where productid in ( select id from ads where enddate > @changeIssueDate and enddate < @regularIssueDate and status = 1 ) and i.startdate >= @changeIssueDate and i.startdate < @regularIssueDate and i.magazinepromotion > 0 and o.status <> 4 '''Ogłoszenia które maja start miedzy zmieniona data wydania a stara 17:00 we wtorek - one powinny pójść''' insert into @ads2 select productid, i.id from orderitems i join orders o on o.id = i.orderid where o.status <> 4 and i.startdate >= @changeIssueDate and startdate < @regularIssueDate and subscriptionpromotion is null and i.magazinepromotion > 0 select * from @ads select * from @ads2 '''Ogłoszenia które normalnie wygasną przed 17:00, we wtorek - one nie powinny iść do tego poniedziałkowego wydania''' select currentorderitem as oi, customerid as cid , * from ads where enddate > @changeIssueDate and enddate < @regularIssueDate and status = 1 and magazinepromotion > 0 and (id not in (select adid from @ads) or id not in (select adid from @ads2)) order by currentorderitem desc '''Edycja ogloszen - wstrzymanie ogloszen ktore wygasna przed stara data wydania - wykluczajac przedluzenia i te rozpoczynajace sie miedzy pon a wtorkiem''' update ads set status=5 where enddate > @changeIssueDate and enddate < @regularIssueDate and status = 1 and magazinepromotion > 0 and (id not in (select adid from @ads) or id not in (select adid from @ads2)) select * from ads where status=5 update ads set status=1 where status=5