Así que estoy atascado. Estoy trabajando en un sistema de crédito con vencimientos. Similar a las millas de tarjetas de crédito, pero no exactamente. Por cierto, lo siento por el libro que tengo por delante, pero necesitaba agregar detalles suficientes para ayudar a obtener una imagen completa.Necesita ayuda con el algoritmo de caducidad del crédito
Lo que necesito es un sistema donde un usuario acumula créditos para realizar actividades. Pero también pueden gastar estos créditos en actividades. Los créditos deben vencer después de 30 días si no se utilizan. Parece que estoy atascado en cómo calcular esto con precisión en un lote que se ejecutará todas las noches. Cualquier idea en cualquier idioma sería muy apreciada ya que parezco estar atascado en un pequeño detalle que no puedo resolver. Este es un ejemplo de los datos:
7/1: 5 - usuario se registra
7/2: 5 - usuario interactúa con el sistema de
7/2: -3 - user actividad compras
7/3: +5 - el usuario interactúa con el sistema
En este punto, el usuario ha recibido 15 créditos y ha gastado 3. Dejándolo con un total de 12 créditos. (Al menos obtuve las matemáticas básicas: P)
Debo añadir que actualmente estamos jugando con la idea de tener dos campos: el último procesado, el próximo procesado. Por lo tanto estos valores en este momento suponiendo que era una nueva muestra encima son:
Última fecha Procesado: 7/1
próximo proceso Fecha: 8/1
Así que ahora 8/1, vuelve. El lote comienza y mira todos los créditos que tienen más de 30 días. Que en este punto es 5.
Aquí es donde comienza a ser borroso.
Luego, el sistema debe considerar todos los créditos que se han gastado en los últimos 30 días para ver si están utilizando algún crédito. Porque solo deben caducar si no se han usado. Entonces, hay 3. Entonces deduzco al usuario 2 créditos porque esa es la diferencia de los créditos obtenidos con más de 30 días y lo que se gastó. Así que termino el lote y establezco las fechas correspondientes para el día siguiente. Ahora, suponiendo que no hayan pasado más, empiezo el cálculo de los créditos obtenidos con más de 30 años, que son 5 y los créditos gastados, que de nuevo es 3. Pero obviamente no quiero considerar los 3 créditos que consideré ayer. ¿Cuál es un buen enfoque para no incluir esos 3 créditos nuevamente para su consideración?
Ahí es donde estoy atascado.
Estamos pensando en escribir un registro de débito para los créditos vencidos, de modo que podamos rastrearlos, pero nos cuesta trabajo ver cómo puedo usarlo en este cálculo.
Si ha leído hasta aquí, gracias. Si incluso hace algún esfuerzo en la respuesta, como mínimo, le daré un voto por el esfuerzo.
EDITAR:
Ok @Greg mencionó algo que olvidé de abordar. La idea de poner una bandera en los créditos considerados. Un punto válido pero no uno que puede funcionar debido a la siguiente situación:
Digamos que en un día en particular, un usuario gasta 10 créditos. Pero los créditos vencidos que el lote está considerando solo se acumularon a 5. Bueno, aún debería tener 5 créditos restantes para que no hayan expirado porque pasó más de un solo vencimiento. Entonces, la bandera no funcionaría porque nos habríamos salteado esos 5 créditos adicionales. Espero que tenga sentido?
Siento que este es el enfoque con el que he estado tratando de trabajar y parece que no funciona. ¿Puedes encontrar un ejemplo para demostrar esto? – spinon