Re: ¿Error en el cálculo de las participaciones que han de venderse?
Ghost, analizando un poco más el problema, creo que está en que ordenas por fecha de antigüedad y buscas entre todas las partidas de participaciones que aún no se hayan vendido completamente.
No sé cómo lo haces internamente (las fórmulas que usas) pero creo que la solución está en restringir la búsqueda.
Me explico.
Cada partida de participaciones comprada o trapasada de entrada tiene una fecha de operación y una fecha de antigüedad.
Si es una compra con dinero nuevo, la antigüedad de la partida es la misma que la fecha de operación (la fecha de compra).
Si es un traspaso la fecha de antigüedad es la correspondiente a cuando se compraron las participaciones en el fondo de origen (la que metemos como fecha en "De traspaso") ¿no es así?
Cuando vendemos o hacemos un traspaso de salidad, parece que lo que haces es buscar la partida de participaciones más antigua que aún no esté marcada como vendida (que queden participaiones "vivas") ordenando todas por fecha de antigüedad.
En casos como el mencionado, donde la venta se hace antes del traspaso, resulta que las participaciones más antiguas son las traspasadas de entrada en una fecha posterior a la fecha de venta.
La solución creo yo sería añadir un filtro buscando las participaciones vivas más antiguas (partidas con menor fecha de antigüedad) pero restringiéndolas a las partidas que tengan una fecha de operación anterior a la fecha de operación de la venta o traspaso de salida.
Añadir un filtro vamos (ya digo que no sé cómo haces eso exactamente de manera interna, pero en una consulta sql sería where fecha operación < "fecha operación de la operación de venta traspaso de salida").
En el ejemplo anterior sería filtrar las participaciones con fecha de operación anterior a 27/01/2014, cuando queremos anotar la segunda operación (la de venta).