apyb / associados

Controle de associados a Associação PythonBrasil
https://associacao.python.org.br/
105 stars 50 forks source link

Avisos de renovação #5

Closed petry closed 11 years ago

petry commented 12 years ago

Enviar avisos de renovação com 30, 15 e 7 dias de antecedência do término.

elyezer commented 12 years ago

A forma como pensei em implementar esse envio de emails seria criando um cron job que iria executar um management command diariamente e enviar os emails para os usuário que estiverem nos prazos de expiração especificados.

Posso ficar responsável por essa issue.

gilsondev commented 12 years ago

O Celery seria bom nesse caso.

mondaini commented 12 years ago

Imaginei o celery também sem nem ter terminado de ler a issue toda. Essa issue já foi feita?

osantana commented 11 years ago

A implementação do @elyezer é mais simples e resolve bem a questão.

Alterei o status para high priority porque precisamos dela no primeiro release.

petry commented 11 years ago

podemos usar essa cara aqui

https://blog.heroku.com/archives/2011/11/12/heroku_scheduler_add_on_now_available/

o que acham?

cadu-leite commented 11 years ago

no heroku tem cron ou algo precido ? parece que tem, mas custa $$

EDITANDO ---- https://addons.heroku.com/scheduler - free unlimited

osantana commented 11 years ago

Passou a ser gratuito de uns tempos pra cá... é esse heroku scheduler mesmo.

Já adicionei na app associados.heroku.com

elyezer commented 11 years ago

Alguém está implementando essa issue?

petry commented 11 years ago

Se no esta assinado por ninguém, nao esta :)

elyezer commented 11 years ago

Eu posso fazer ela, porém não consigo assinar a tarefa.

Já tenho um código escrito, mas estou com uma dúvida:

O associado poderá renovar antes da hora? Ou seja, ter dois pagamentos um pagamento que expira dia 06/02/2013 e outro que expira dia 5/02/2014. Ou seja, se estou analisando os avisos que vou ter que mandar hoje, eu não deveria notificar esse associado já que a associação dele vai até 2014.

osantana commented 11 years ago

Assumindo que "proximo_pgto = data_do_ultimo_pagamento + 1 ano"

O job vai rodar 1 vez por dia e enviar emails para todos os usuários 'WHERE today() IN (proximo_pgto - 30dias, proximo_pgto - 7dias, proximo_pgto)'

petry commented 11 years ago

@osantana, é necessário definir também qual é o conteudodo email que o usuário vai receber

osantana commented 11 years ago

Isso é fácil. Um e-mail simples:

-------8<--------

Subject: [Associação Python Brasil] Aviso de renovação

Olá Fulano de Tal,

Esse e-mail é um lembrete de que faltam X dias para o vencimento da anuidade referente à sua associação.

Para efetuar a sua renovação é só seguir o link abaixo:

http://associados.python.org.br/...

Vale lembrar que apenas os membros em dia com sua anuidade pode participar das assembléias da Associação Python Brasil bem como outros direitos garantidos a todos os membros (ex. descontos para inscrições de eventos organizados pela associação).

Caso você já tenha efetuado o pagamento pedimos que desconsidere esse aviso.

Caso tenha alguma dúvida é só entrar em contato conosco através do e-mail: contato@python.org.br.

Obrigado, Equipe da Associação Python Brasil

PS. O sistema de controle de associados está em fase de implantação. Caso tenha encontrado algum problema pedimos a gentileza de nos avisar através do mesmo endereço de e-mail: contato@python.org.br.

--------8<----------

Subject: [Associação Python Brasil] Anuidade vencida

Olá Fulano de Tal,

Gostaríamos de informá-lo que a anuidade referente à sua associação venceu hoje (DATA).

Você pode renová-la a qualquer momento. Para isso é só seguir o link abaixo:

http://associados.python.org.br/...

Vale lembrar que apenas os membros em dia com sua anuidade pode participar das assembléias da Associação Python Brasil bem como outros direitos garantidos a todos os membros (ex. descontos para inscrições de eventos organizados pela associação).

Caso você já tenha efetuado o pagamento pedimos que desconsidere esse aviso.

Caso tenha alguma dúvida é só entrar em contato conosco através do e-mail: contato@python.org.br.

Obrigado, Equipe da Associação Python Brasil

PS. O sistema de controle de associados está em fase de implantação. Caso tenha encontrado algum problema pedimos a gentileza de nos avisar através do mesmo endereço de e-mail: contato@python.org.br.

-------------8<------------------

osantana commented 11 years ago

Estive pensando na regra de negócio que coloquei acima. Talvez o correto seja:

proximo_pagto = XX/YY/ZZZZ

XX = dia do primeiro pagamento (data da associação) YY = mês do primeiro pagamento (data da associação) ZZZZ = ano do último pagamento + 1

Concordam?

elyezer commented 11 years ago

Considerando renovação de domínios que tem duração de um ano o que vejo é:

XX - 1 dia da data YY ZZZZ + 1

Quanto aos avisos de renovação serão 30, 15 e 7 dias antes de terminar. Além disso terá o aviso de que a associação expirou. Correto?

osantana commented 11 years ago

Isso mesmo...

elyezer commented 11 years ago

Obrigado pelos esclarecimentos.

Hoje a noite devo mandar o pull request.

elyezer commented 11 years ago

Faltam duas coisas para eu terminar a issue:

Posso ter no código o endereço de contato da associação?

Qual a url para renovar a associação? Pelo que vi no código seria a payment?

Tenho uma observação, quanto ao formato da data, vamos definir no settings ou devo adicionar o filtro date no template que gera a mensagem do email?

cadu-leite commented 11 years ago

Oi Elyezer, vou dar meu pitaco aqui ... 1 - coloca o formato no settings, depois se alguém achar que precisa de outros retiramos e fazemos no template. 2 - endereço da apyb. num rola uma var também no settings ? faz o trem funcionar e depois acertamos os pontos menores.

elyezer commented 11 years ago

Ótimo, só perguntei para ver se mais alguém concordava em deixar no settings.

petry commented 11 years ago

:+1: para as dicas do cadu! :)

petry commented 11 years ago

adicionei o comando no scheduler do heroku