El LOCATE siempre busca desde el principio, para buscar registros a continuación (igual condición a partir del primero) se debe usar CONTINUE.
SELECT Ventas_Movimientos
LOCATE FOR idProducto = _idProducto AND idPrecio == _idPrecio
IF FOUND()
El problema es que después de la última condición, tenías un ; que debería desencadenarte un error de código. Como has seleccionado la tabla, no hace hacer referencia con . a los campos de los mimos, y en el caso de variables de memoria con igual nombre, usas m.nombrevariable.
Otra forma de resolver tu problema (si tuvieras más de un registro) es usar un SCAN
SELECT Ventas_Movimientos
SET ORDER TO TAG xIdProducto && como es una "supuesta" clave primaria debes tener un indice por dicho campo
SET NEAR ON && Activo posicionamiento cercano.
SEEK idProducto && úbico por indice el registro con clave igual o lo mas parecida
SCAN REST FOR idProducto = _idproducto AND idPrecio = _idPrecio
NOTE que acá están los registros filtrados
ENDSCAN
Saludos: Miguel, La Pampa (RA)
Larga Prosperidad y Fuerza
Que el acompañamiento les de vida
P.D: Vo'y a tener que dejar de brindar con anticipación.