расчет периода предложения по подписке - PullRequest
0 голосов
/ 23 апреля 2010

Я поддерживаю веб-приложение, которое работает с какими-то подписками. Пользователи могут продлить свои подписки за 2 месяца до истечения срока действия (не ранее этого). Иногда пользователь не продлевает до истечения срока действия и получает льготный период, который составляет 3 месяца. Теперь он может продлить эти 3 месяца льготного периода.

Теперь проблемная часть. В предыдущих транзакциях запросов на продление я должен показать период действия предложения для этого конкретного запроса (период начала и окончания подписки, если обновление было предоставлено). Все довольно просто, если пользователь продлевает срок действия до истечения срока, но я не могу разобраться, если есть льготный период, особенно когда истекает срок подписки в последние месяцы года. Кроме того, иногда подсчеты выходят из строя, когда подписка заканчивается в январе или феврале.

Все это происходит потому, что период предложения нигде не сохраняется вместе с приложением (я не знаю, почему). поэтому, если подписка заканчивается 20 октября 2008 г., а заявка на возобновление подана 16 января 2009 г. (из-за льготного периода), период предложения должен быть с 21 октября 2008 г. по 20 октября 2009 г.

Как рассчитать правильный период предложения на основе даты подачи заявки на продление для старых заявок на продление?

РЕДАКТИРОВАТЬ: - Сейчас 2010 год, предположим, что пользователь просматривает прошлую транзакцию с 2009 года, когда он отправил запрос на продление подписки с 21-10-2008 до 20-10-2009. Но у него есть льготный период и он просил возобновить 16 января 2010 года. Поскольку я не храню данные с 21-10-2008 по 20-10-2009, я должен подсчитать, что это было с 21-10-2008 по 20-10-2009, когда запрос был зарегистрирован. И вот тут у меня проблемы.

1 Ответ

0 голосов
/ 25 апреля 2010

@ TheVillageIdiot,

(A)> Сейчас 2010,
Все идет нормально . , ,

(B)> предположим, что пользователь просматривает прошлую транзакцию 2009 года,
Да, я с тобой. , ,

(C)> когда он подал запрос на продление подписки с 21-10-2008 до 20-10-2009.
Таким образом, вы можете увидеть где-нибудь в базе данных или в файле журнала, что подписка была с 21-10-2008 по 20-10-2009, верно?

(D)> Но у него есть льготный период и он просил возобновить его 16 января 2010 года.
Хорошо. Но эта дата транзакции (16-01-2010) не должна иметь значения для фактического начала и конца подписки. Это является частью ограничения на то, когда может произойти «обновление». (Другая часть ограничения - это 2 месяца до истечения срока действия, о котором вы упоминали ранее.) Поэтому вам никогда не нужно учитывать, когда обновленный человек узнает даты начала и окончания подписки.

(E)> Поскольку я не храню где-либо с 21-10-2008 по 20-10-2009
Подождите, тогда как в (С) вы знаете, что подписка была с 10/08 по 10/09 ????

(F)> Я должен подсчитать, что это было с 21-10-2008 по 20-10-2009, когда запрос был зарегистрирован. И вот тут у меня проблемы.
Да, если вы не храните его где-нибудь; Я не понимаю, как вы узнали бы, что это было с 21-10-2008 по 20-10-2009 или с 25-10-2008 по 24-10-2009 или с 21-10-1908 по 20-10-1909.

Я действительно думаю, что выше в части (C) у вас должны быть где-то даты начала и окончания подписки, и, как я прокомментировал (D), вы должны иметь возможность игнорировать, когда была сделана фактическая транзакция запроса на обновление, чтобы вычислить начало следующего семестра.


Хорошо, теперь я собираюсь предположить, что у вас действительно нет даты начала и окончания подписки для прошлых подписок, сохраненных где-то. (В это мне очень трудно поверить.)

Вот возможный ответ на ваш вопрос:

У вас есть текущая дата истечения срока действия клиента (в противном случае вы бы не знали, когда начинать предыдущее двухмесячное окно обновления или трехмесячное льготное окно). Таким образом, учитывая текущую дату окончания подписки, вы можете работать в обратном направлении год за годом. Таким образом, вы сможете восстановить все прошлые подписки клиента.

Тем не менее, существует проблема, связанная с тем, что если клиент не смог продлить подписку в течение льготного периода, возможно, новая подписка началась с разрывом во времени по сравнению с предыдущей.
В любом случае, дважды проверьте, чтобы убедиться, что нет никакого способа определить дату начала и окончания подписки. Я думаю, вы где-нибудь их найдете и сможете поместить в свою базу данных.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...