Modelo de suscripción OpenCart (x meses)

Estoy configurando un sitio de comercio electrónico utilizando OpenCart y quiero ofrecer suscripciones. Concretamente 3/6/12 suscripciones meses. NO estoy interesado en la facturación recurrente (soy consciente de que hay módulos para PayPal y Authorize.net). Quiero que los usuarios paguen una vez por adelantado. ¿Esto se traduce a 3 pseudo-productos desde un punto de vista de configuración? Supongo que esto es factible, hasta ahora, solo con la configuración del producto. 3 productos, cada uno con un precio.

Aquí viene la parte difícil. Por cada mes que los usuarios han pagado, tienen acceso para pedir un producto, solo una vez al mes, dentro de su "ciclo de facturación". Entonces, si un usuario paga una suscripción de 3 meses el 23/5:

él puede obtener un producto en el período 23 / 5-22 / 6,uno en 23 / 6-22 / 7, yuno en 23 / 7-22 / 8

Un usuario no debería poder pedir más de un producto por mes, y tampoco debería poder obtener ningún producto después del 22/8, a menos que renueve su suscripción. Además, sería increíble si pudiera tener un trabajo cron, verificando si un usuario ha utilizado su suscripción para el mes actual, y enviar un tipo de correo electrónico de recordatorio "Hey, obtenga su producto para este mes".

Este es mi primer proyecto OpenCart, he revisado la documentación y he buscado mucho en Google, he jugado con una instalación local, y estoy tratando de averiguar si lo que estoy pidiendo es posible sin modificar el código del núcleo, me gustaría evitar eso Sin embargo, si no hay otra manera, entiendo que OpenCart es un marco MVC (+ L (idioma)), pero no he encontrado ninguna documentación sólida sobre cómo personalizar su funcionalidad, solo bits y piezas para requisitos específicos.

Si es posible, me gustaría escribir lo que tengo en mente, por favor, avise si suena bien:

Me gustaría agregar una entidad más (objeto / modelo) para almacenar la suscripción, el usuario al que pertenece, la fecha de inicio y finalización y si se ha utilizado. Básicamente, una suscripción es un pedido normal y me gustaría que se almacenara como tal, solo necesito mantener algunos campos más. Como dije, necesito hacer dos verificaciones:¿Ha utilizado el usuario su suscripción para el mes actual? Para esto, estaba pensando en tener un campo de bandera "Usado", que se puede restablecer con un trabajo cron, cada vez que un usuario llega a su fecha de facturación. (en nuestro ejemplo 23/6, 23/7). Alternativamente, podría agregar 3 entradas, una para cada ciclo de facturación y actualizarlas en consecuencia.¿Ha expirado la suscripción? Pude comprobar contra la fecha de caducidad de la suscripción.

No tengo idea de cómo conectar esta funcionalidad, durante el proceso de pago o cómo comenzar a implementar esto.

He pasado por el foro y he buscado mucho en Google, pero todavía no he encontrado una respuesta. Soy un desarrollador experimentado de Grails / Java EE, así que soy bastante técnico en caso de que este post sea demasiado técnico :-)

¿Suena factible lo anterior, y estoy en el camino correcto?

Aclamaciones,
Iraklis

Respuestas a la pregunta(1)

Su respuesta a la pregunta