al final para solucionarlo he replanteado todo y parece que ahora funciona correctamente con un nuevo código....