Claramente este es un problema logistico, que se resuelve utilizando un marcador de fechas, el cual puede ser, un campo de identificacion o la fecha.
Suponiendo que tu tabla de lotes es de la siguiente forma...
Nro_Lote Producto Cantidad
678 20354 100
679 30531 115
680 45796 132
681 68694 247
682 30531 147
683 68694 249
684 20354 286
685 30531 328
686 45796 614
687 68694 365
688 30531 620
689 68694 713
690 30531 819
Entonces tu codigo para rebajar productos es de la siguiente estructura...
vCodigo <- Almacena el codigo del producto a rebajar
vRebaja <- Almacena la cantidad a rebajar del lote
Buscar registros del producto, ordenados por lote
vSigue = 1
Mientras Existan Registros y vSigue=1 entonces
vCantidad <- Valor del campo "Cantidad" recuperado de la consulta
Si vRebaja > Cantidad entonces
vLote <- Valor del campo "Lote" recuperado de la consulta
Eliminar el registro lotes, donde Nro_Lote=vLote
vRebaja = vRebaja - vCantidad
Si No
Sigue = 0
Fin Si
Recorrer siguiente registro
Fin Si