PyAr / asoc_members

Aplicación web para la gestión de membresías de la Asociación Civil
MIT License
14 stars 23 forks source link

Crear un comando que mande recordatorio de vencimiento de cuotas #48

Open facundobatista opened 5 years ago

facundobatista commented 5 years ago

El script debe recibir un mes como parámetro, y tiene que sacar todos los miembros que NO tienen débito automático, y si la ultima cuota que tienen cargada es del mes recibido, mandarles un mail.

El mail es algo como "te recordamos que la última cuota que tenés paga de la AC es la del mes tanto, y tenés todas estas opciones para seguir pagando".

Después pondremos un crontab los últimos días del mes o los primeros del siguiente, y sale solo.

dmascialino commented 5 years ago

Estuve leyendo el código y no me queda claro: a) débito automático es un objeto de PaymentStrategy creado en la DB de producción? o b) las 2 plataformas (Todo pago y Mercado pago) son debito automático; o ...

gracias

facundobatista commented 5 years ago

No hay una plataforma que sea débito automático per se.

El PaymentStrategy es una forma de relacionar un pago externo con el sistema. Cuando pagás por transferencia o todopago, agarramos un paymentstrategy relacionado con tu patron y ya (porque sacamos el patron de forma sencilla a partir del DNI, ver comando pay si te interesa profundizar).

Pero cuando tenemos que relacionar pagos automáticos ("recurrentes") relacionamos la info que nos da Mercadopago a través del id_in_platform, y de ahí sacamos el patron/member para pasar las cuotas).

Habiendo dicho todo eso, me parece que aclaré un poco el escenario, pero no tengo idea si contesté tu pregunta... :)

dmascialino commented 5 years ago

Bueno, leyendo los modelos no encuentro como seleccionar "todos los miembros que NO tienen débito automático". Se puede?

facundobatista commented 5 years ago

Sí!

Primero agarrá todas las estrategias de pago que NO son de MercadoPago: PaymentStrategy.objects.exclude(platform=PaymentStrategy.MERCADO_PAGO).all()

Cada uno de esos objetos tiene un Patron. Y un patron puede actuar sobre muchos beneficiarios: .patron.beneficiary.all()