Reto 17: Los desvelos de Luzdivina [Experto]

En esta sección plantearemos distintos retos para todos aquellos que lo quieran intentar resolver y mejorar su conocimiento de Access ;-)
Avatar de Usuario
Administrador
Administrador
Mensajes: 196
Registrado: Sab Oct 24, 2015 12:55 pm

Reto 17: Los desvelos de Luzdivina [Experto]

Mensajepor Administrador » Dom Sep 09, 2018 1:29 pm

¡Hola a todos los foreros y foreras!

Tras el parón veraniego, venimos con fuerzas renovadas y os traemos un reto un poco más complicado de lo que viene siendo habitual en los últimos meses ... ;)

Imagen

Nuestra exnovia del instituto, Luzdivina Centella, con la que aún mantenemos una buena relación, nos llamó el otro día para pedirnos ayuda con un problema que tiene en su pequeña empresa de energía Luzyfer Energía, S.L.:

Luxdivina escribió:Como sabrás, mi marido Fernando y yo hemos montado una compañía distribuidora de energía eléctrica y tenemos entre nuestros clientes al Ayuntamiento de Calatayud.

Cada mes se le gira una factura por cada suministro que nos tiene contratado (alumbrados públicos, edificios...), en total 100 facturas/mes.

Como los pagos nos los realiza en función de sus posibilidades presupuestarias, y el encargado de hacer los pagos es un poco “vaguete”, realizan abonos que no tienen por qué corresponder con el total mensual pero no nos detallan a qué facturas corresponden esos abonos, con el problema que eso nos supone para cuadrar las facturas abonadas y pendientes…

Por tanto, necesitamos un sistema para identificar fácilmente las facturas a las que pueden corresponder esos ingresos y poder saldar la deuda, sin tener que hacerlo “a ojo”. ¿Podrás echarnos una manita, por los buenos viejos tiempos?


Por tanto, a partir de la BD que se proporciona (una pequeña fracción de la que manejan en Luzyfer Energía, S.L.) se pretende conseguir un sistema que busque todas las posibles combinaciones de facturas del Ayuntamiento de Calatayud que estén pendientes de cobro y que sumen un importe dado.

Por ejemplo, si el ayuntamiento tiene estas facturas pendientes:
TablaEjemplo.png
TablaEjemplo.png (31.87 KiB) Visto 1315 veces

Y nos hacen un ingreso de 400 €, lo que se pretende es obtener un listado como cualquiera de los siguientes:
Resultados.png
Resultados.png (4.51 KiB) Visto 1315 veces

Es decir, un listado en el que se vean los identificadores de registro o los números de facturas cuyo importe total suma esos 400 €, para que Luz o Fer puedan decidir a qué facturas imputan el pago.
Utilizad cualquier separador que consideréis oportuno, no tenéis por qué usar el signo + o la contrabarra obligatoriamente.

Por último, mencionar que este reto tiene una duración "especial" de casi 3 meses, tanto por la complejidad del reto como por haberlo lanzado con algo de retaso. Esto significa que tenéis hasta el 25 de noviembre de 2018 para presentar vuestras propuestas (¡que no sea por falta de tiempo!... :lol: :lol: :lol: )

Un saludo y ¡a por ello!
La Administración de Dudas Access Foro

emiliove
Colaborador
Reto04
Mensajes: 352
Registrado: Lun Nov 23, 2015 4:05 pm

Re: Reto 17: Los desvelos de Luzdivina [Experto]

Mensajepor emiliove » Mar Sep 11, 2018 12:02 am

Hola
Interesante, siempre va a existir coincidencia o si alguna vez el ayuntamiento de Calatayud se equivoca en el pago numero cambiado etc. ¡que procede?

Ya nos dices, saludos.

Avatar de Usuario
Administrador
Administrador
Mensajes: 196
Registrado: Sab Oct 24, 2015 12:55 pm

Re: Reto 17: Los desvelos de Luzdivina [Experto]

Mensajepor Administrador » Mar Sep 11, 2018 8:52 am

Hola Emilio!

Mira que os gusta rizar el rizo... :lol: El reto ya tiene complicación bastante como para encima querer complicarlo...

Lo que se pide es que se busque la coincidencia exacta con la cantidad ingresada, lógicamente, si no hay coincidencia, no se debe mostrar nada (y ya se encargará Luz o Fer de llamar al ayuntamiento para arreglar la incidencia).

Hasta aquí lo que pedimos para superar el reto, pero, si tú o algún otro tiene ganas de más, y por ejemplo, en caso de no haber coincidencia exacta, mostrar todas las facturas que más se aproximen a esa cantidad ingresada, no vamos a ser nosotros los que os digamos que no lo hagáis... ;)

Saludos!
La Administración de Dudas Access Foro

JTrilloJ
Nivel 3
Reto06
Mensajes: 52
Registrado: Mar Dic 01, 2015 3:27 pm

Re: Reto 17: Los desvelos de Luzdivina [Experto]

Mensajepor JTrilloJ » Jue Sep 13, 2018 3:07 pm

Hola Sr. Administrador:
Partiendo de>> "....se pretende conseguir un sistema que busque todas las posibles combinaciones de facturas del Ayuntamiento de Calatayud que estén pendientes de cobro y que sumen un importe dado.

Si no estoy errado en unos primeros sondeos que he realizado, me salen los siguientes datos, con todas las Fras pendiente del Ayto.
Con 400 € >> 376 Combinaciones. He comprobado unas 50 aprox
Con 1000 € >> 25.837 Combinaciones. He comprobado unas 50 aprox
No tengo aún la operativa de comprobación automática de todas las combinaciones.

Ignoro si vosotros habeis hecho cálculos previos, pero si se cumplen esos datos Luzdivina en lugar de tener desvelos tendría pesadillas y definitivamente se apagaría. Evidentemente no pretendo que deis ideas de solución, sino que si voy mal encaminado, simplemente me comentéis (evidentemente si queréis y podéis)>>Jacinto: Vas errado.
Mis saludos >> Jacinto

Avatar de Usuario
Administrador
Administrador
Mensajes: 196
Registrado: Sab Oct 24, 2015 12:55 pm

Re: Reto 17: Los desvelos de Luzdivina [Experto]

Mensajepor Administrador » Vie Sep 14, 2018 1:11 pm

Primeramente, disculpa la tardanza en contestar, pero estuvimos re-comprobando a mano las posibles combinaciones y eso lleva tiempo.... :P


No vas mal encaminado, sin embargo...

JTrilloJ escribió:Con 1000 € >> 25.837 Combinaciones.


...pocas nos parecen... Con nuestra solución (si no está errada, que pudiera ser) sale alguna más, y todas las que salen, comprobadas... :lol: :lol:

Aprovechamos el mensaje para añadir una aclaración al enunciado, por si no quedó claro con el ejemplo de los 400 €:
Con los datos de ejemplo, teníamos 3 combinaciones de facturas que suman esos 400 € de ingreso, las de los Ids:
3 / 4 / 16
8 / 9 / 14 / 21
9 /21 /24

Obviamente buscamos en la solución combinaciones únicas de registros / facturas, sin importar el orden en que se muestren. Esto quiere decir que si una solución muestra como resultado:
3 / 4 / 16
4 / 3 / 16
3 / 16 / 4
16 / 4 / 3
...
8 / 9 / 14 / 21
8 / 14 / 9 / 21
...
9 /21 /24
...

será considerada no válida.
La Administración de Dudas Access Foro

JTrilloJ
Nivel 3
Reto06
Mensajes: 52
Registrado: Mar Dic 01, 2015 3:27 pm

Re: Reto 17: Los desvelos de Luzdivina [Experto]

Mensajepor JTrilloJ » Vie Sep 14, 2018 2:18 pm

Gracias: Se nota que voy perdiendo reflejos.
Mis saludos >> Jacinto

JTrilloJ
Nivel 3
Reto06
Mensajes: 52
Registrado: Mar Dic 01, 2015 3:27 pm

Re: Reto 17: Los desvelos de Luzdivina [Experto]

Mensajepor JTrilloJ » Vie Sep 14, 2018 7:05 pm

Rectificación:
Yo citaba en mi mensaje >> 1000 € >>>25837 combinaciones.
Revisando mis datos y para no confundir a lectores y posibles participantes los cálculos son>>
800 € >> 25836 Combinaciones. Son las goteras de la edad.
Mis saludos a todos > Jacinto

Avatar de Usuario
Administrador
Administrador
Mensajes: 196
Registrado: Sab Oct 24, 2015 12:55 pm

Re: Reto 17: Los desvelos de Luzdivina [Experto]

Mensajepor Administrador » Jue Nov 29, 2018 7:58 pm

¡Muy buenas tardes a tod@s!

Luzdivina y Fernando ya revisaron las soluciones presentadas a su problema, y están asombrados de lo bien que funcionan. Tras comentarlo con ellos, y analizarlas un poco por nuestra parte, he aquí los resultados:

Con matrícula de honor tenemos la solución de pitxiku, que además de funcionar perfectamente y cumplir con los requisitos del reto, ofrece una serie de extras, a saber:
.- Personalización búsquedas: por fecha, importe o nº factura
.- Personalización búsquedas: limitar a una dirección o usar todas
.- Límite de resultados: por cantidad, tiempo o ambos
.- Muestra los datos de facturas de cada combinación para trabajar con ellas

Además, queremos destacar el uso de clases para trabajar con las facturas y el uso de colecciones para acelerar el proceso. Si hacéis la prueba y comparáis los tiempos de respuesta usando una colección y un recordset directamente, veréis que es mucho más rápido con colecciones...

Y con un aprobado "raspadillo" tenemos la solución de JTrilloJ, sobre la que queremos destacar cosas buenas y otras no tan buenas...XD
.- Incluye como extra la limitación de resultados
.- Es, con diferencia, la solución más rápida en calcular todas las combinaciones.
.- El informe para mostrar los resultados, sin embargo, tarda mucho en abrir y consume muchos recursos del sistema, por la forma que que rellena cada linea de facturas. Además, Sveinbjorn se encontró en que a partir de un cierto número de combinaciones, el informe da error...
.- En cuanto a la búsqueda de combinaciones, si nos quedamos solo con lo "visual" (el informe), hay que decir que no siempre ofrece la solución correcta, pues al diseñarlo "a mano" (y la consulta subyacente) limitado a 12 facturas, si se da la circunstancia de que hay 13 o más combinaciones, pues obviamente el informe deja facturas sin mostrar, y la suma total no es la buscada.
Por ejemplo, si buscamos las combinaciones que sumen 800 € hay 2 combinaciones que necesitan 13 facturas para sumarlos, y con esta propuesta, se ve esto (el pantallazo está hecho sobre el informe filtrado):
Suma incorrecta.png

En la tabla sí se muestran todas las combinaciones correctamente.

Y esta es nuestra solución, que como mencionamos en los comentarios de la misma, ya tiene unos cuantos meses y probablemente a día de hoy lo hubiéramos resuelto de otra forma...

La tabla de combinaciones que hemos manejado (y que coincide con las 3 soluciones, por lo que entendemos que está bien... :roll: ) es ésta:
Resultados.png
Resultados.png (4.88 KiB) Visto 656 veces


=================================================================================

Para terminar, queremos anunciar que dada la escasa participación en los últimos retos, el tiempo y esfuerzo que supone ingeniar retos nuevos, solucionarlos y corregirlos, unido a circunstancias personales que nos impiden dedicar todo el tiempo que querríamos a Access, vamos a "finiquitar" esta sección del foro.

Fueron unos años estupendos, con los que aprendimos un montón de cosas que desconocíamos, formas diferentes de solucionar un mismo problema, y a pesar de todo el curro que nos hemos pegado, nos hemos divertido un montón. Esperamos que vosotros os hayáis divertido también con ellos y que hayáis aprendido alguna que otra cosilla sobre nuestro querido Access, que al final era el objetivo de todo esto.

Al igual que Alonso y su retirada de la F-1, queremos dejar abierta una puerta a nuevos retos en dos circunstancias:
1º/ Si algún usuario quieres plantear un reto, como en su día Horus o javiteran, va a poder seguir haciéndolo según lo explicado aquí: viewtopic.php?f=17&t=823
2º/ Que por cualquier circunstancia nos encontremos con algo que nos parezca interesante y nos decidamos a crear un reto sobre ese tema.

Muchísimas gracias a todos los que participásteis en alguno de los retos por dedicarnos un ratito de vuestro tiempo.
La Administración de Dudas Access Foro


Volver a “El Reto de NkSv”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado